

# Aurora MySQL에 Kerberos 인증 사용
<a name="aurora-mysql-kerberos"></a>

사용자가 Aurora MySQL DB 클러스터에 접속하려고 할 때 Kerberos 인증을 사용하여 사용자를 인증할 수 있습니다. 이를 위해서는 Kerberos 인증을 위한 AWS Directory Service for Microsoft Active Directory를 사용하도록 DB 클러스터를 구성해야 합니다. AWS Directory Service for Microsoft Active Directory는 AWS Managed Microsoft AD라고도 불립니다. Directory Service에서 사용할 수 있는 기능입니다. 자세한 내용은 *AWS Directory Service 관리 가이드*의 [Directory Service란 무엇입니까?](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)를 참조하세요.

시작하려면 사용자 자격 증명을 저장할 AWS Managed Microsoft AD 디렉터리를 만듭니다. 그런 다음 Aurora MySQL DB 클러스터에 Active Directory의 도메인 및 기타 정보를 제공합니다. Aurora MySQL DB 클러스터에 대해 사용자가 인증될 때 AWS Managed Microsoft AD 디렉터리에 인증 요청이 전달됩니다.

모든 자격 증명을 동일한 디렉터리에 보관하면 시간과 노력을 절약할 수 있습니다. 이 접근 방식의 경우, 여러 DB 클러스터에 대한 자격 증명을 보관하고 관리할 수 있는 중앙 집중식 공간이 있습니다. 디렉터리를 사용하면 전체 보안 프로필을 향상할 수도 있습니다.

자체 온프레미스 Microsoft Active Directory에서 자격 증명에 액세스할 수도 있습니다. 이렇게 하려면 AWS Managed Microsoft AD 디렉터리가 온프레미스 Microsoft Active Directory를 신뢰하도록 신뢰 도메인 관계를 만듭니다. 그러면 사용자가 온프레미스 네트워크에서 워크로드에 액세스할 때와 동일한 Windows SSO(Single Sign-On) 환경을 사용하여 Aurora MySQL DB 클러스터에 액세스할 수 있습니다.

데이터베이스는 Kerberos 또는 AWS Identity and Access Management(IAM) 인증을 사용하거나, Kerberos 인증과 IAM 인증을 모두 사용할 수 있습니다. 하지만 Kerberos 및 IAM 인증은 서로 다른 인증 방법을 제공하므로, 특정 사용자는 두 가지 인증 방법 중 하나만 사용하여 데이터베이스에 로그인해야 하며 둘 다 사용할 수는 없습니다. IAM 인증에 관한 자세한 내용은 [ IAM 데이터베이스 인증](UsingWithRDS.IAMDBAuth.md) 단원을 참조하십시오.

**Contents**
+ [Aurora MySQL DB 클러스터에 대한 Kerberos 인증 개요](#aurora-mysql-kerberos-setting-up-overview)
+ [Aurora MySQL에 대한 Kerberos 인증의 제한 사항](#aurora-mysql-kerberos.limitations)
+ [Aurora MySQL DB 클러스터에 대해 Kerberos 인증 설정](aurora-mysql-kerberos-setting-up.md)
  + [1단계: AWS Managed Microsoft AD를 사용하여 디렉터리 생성](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-directory)
  + [2단계: (선택 사항) 온프레미스 Active Directory에 대한 신뢰 생성](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-trust)
  + [3단계: Amazon Aurora에서 사용할 IAM 역할 만들기](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.CreateIAMRole)
  + [4단계: 사용자 생성 및 구성](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-users)
  + [5단계: Aurora MySQL DB 클러스터 생성 또는 수정](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-modify)
  + [6단계: Kerberos 인증을 사용하는 Aurora MySQL 사용자 생성](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-logins)
    + [기존 Aurora MySQL 로그인 수정](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos.modify-login)
  + [7단계: MySQL 클라이언트 구성](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.configure-client)
  + [8단계: (선택 사항) 대소문자를 구분하지 않는 사용자 이름 비교 구성](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.case-insensitive)
+ [Kerberos 인증을 사용하여 Aurora MySQL에 연결](aurora-mysql-kerberos-connecting.md)
  + [Aurora MySQL Kerberos 로그인을 사용하여 DB 클러스터에 연결](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos-connecting.login)
  + [Aurora를 글로벌 데이터베이스를 사용하는 Kerberos 인증](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos-connecting.global)
  + [RDS for MySQL에서 Aurora MySQL로 마이그레이션](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos-connecting.rds)
  + [티켓 캐싱 방지](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos.destroy-tickets)
  + [Kerberos 인증에 대한 로깅](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos.logging)
+ [도메인에서 DB 클러스터 관리](aurora-mysql-kerberos-managing.md)
  + [도메인 멤버십 이해](aurora-mysql-kerberos-managing.md#aurora-mysql-kerberos-managing.understanding)

## Aurora MySQL DB 클러스터에 대한 Kerberos 인증 개요
<a name="aurora-mysql-kerberos-setting-up-overview"></a>

Aurora MySQL DB 클러스터에 대해 Kerberos 인증을 설정하려면 아래의 일반 단계를 완료합니다. 이러한 단계는 다음에 자세히 설명되어 있습니다.

1. AWS Managed Microsoft AD를 사용하여 AWS Managed Microsoft AD 디렉터리를 생성합니다. AWS Management Console, AWS CLI 또는 Directory Service를 사용하여 디렉터리를 생성할 수 있습니다. 자세한 내용은 *AWS Directory Service 관리 가이드*의 [AWS Managed Microsoft AD 디렉터리 생성](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started_create_directory.html)을 참조하세요.

1. 관리형 IAM 정책 `AmazonRDSDirectoryServiceAccess`를 사용하는 AWS Identity and Access Management(IAM) 역할을 생성합니다. 이 역할을 사용하여 Amazon Aurora에서 디렉터리를 호출할 수 있습니다.

   역할이 액세스를 허용하려면 AWS 리전에서 AWS 계정의 AWS Security Token Service(AWS STS) 엔드포인트를 활성화해야 합니다. AWS STS 엔드포인트는 기본적으로 모든 AWS 리전에서 활성화되어 있으므로 별도의 조치 없이 사용할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS 리전에서 AWS STS 활성화 및 비활성화](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate)를 참조하세요.

1. Microsoft Active Directory 도구를 사용하여 AWS Managed Microsoft AD 디렉터리에서 사용자를 만들고 구성합니다. Active Directory에서 사용자를 생성하는 방법에 대한 자세한 내용은 *AWS Directory Service 관리 안내서*의 [AWS 관리형 Microsoft AD에서 사용자 및 그룹 관리](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html)를 참조하세요.

1. Aurora MySQL DB 클러스터를 생성하거나 수정합니다. 생성 요청에 CLI 또는 RDS API를 사용하는 경우 `Domain` 파라미터를 사용해 도메인 식별자를 지정합니다. 디렉터리를 만들 때 생성된 `d-*` 식별자와 생성한 IAM 역할의 이름을 사용합니다.

   Kerberos 인증을 사용하도록 기존 Aurora MySQL DB 클러스터를 수정하는 경우 DB 클러스터에 대해 도메인 및 IAM 역할 파라미터를 설정합니다. 도메인 디렉터리와 동일한 VPC에서 DB 클러스터를 찾습니다.

1. Amazon RDS 기본 사용자 자격 증명을 사용하여 Aurora MySQL DB 클러스터에 연결합니다. [6단계: Kerberos 인증을 사용하는 Aurora MySQL 사용자 생성](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-logins)의 지침에 따라 Aurora MySQL 내에 데이터베이스 사용자를 생성합니다.

   이 방법으로 생성한 사용자는 Kerberos 인증을 사용하여 Aurora MySQL DB 클러스터에 로그인할 수 있습니다. 자세한 내용은 [Kerberos 인증을 사용하여 Aurora MySQL에 연결](aurora-mysql-kerberos-connecting.md) 단원을 참조하십시오.

온프레미스 또는 자체 호스팅된 Microsoft Active Directory로 Kerberos 인증을 사용하려면 *포리스트 트러스트*를 생성합니다. 포리스트 트러스트는 두 도메인 그룹 간의 트러스트 관계입니다. 단방향 또는 양방향 트러스트가 가능합니다. Directory Service를 사용하여 포리스트 신뢰를 설정하는 방법에 대한 자세한 내용은 *AWS Directory Service 관리 안내서*의 [신뢰 관계를 생성해야 하는 경우](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html)를 참조하세요.

## Aurora MySQL에 대한 Kerberos 인증의 제한 사항
<a name="aurora-mysql-kerberos.limitations"></a>

Aurora MySQL에 대한 Kerberos 인증에는 다음과 같은 제한 사항이 적용됩니다.
+ Kerberos 인증은 Aurora MySQL 버전 3.03 이상에서 지원됩니다.

  AWS 리전 지원에 대한 자세한 내용은 [Aurora MySQL을 사용하는 Kerberos 인증](Concepts.Aurora_Fea_Regions_DB-eng.Feature.KerberosAuthentication.md#Concepts.Aurora_Fea_Regions_DB-eng.Feature.KerberosAuthentication.amy) 단원을 참조하세요.
+ Aurora MySQL에서 Kerberos 인증을 사용하려면 MySQL 클라이언트 또는 커넥터가 Unix 플랫폼에서는 버전 8.0.26 이상, Windows에서는 8.0.27 이상을 사용해야 합니다. 그렇지 않으면 클라이언트 측`authentication_kerberos_client` 플러그인을 사용할 수 없으며 인증할 수 없습니다.
+ AWS Managed Microsoft AD는 Aurora MySQL에서만 지원됩니다. 하지만 Aurora MySQL DB 클러스터에 조인하여 동일한 AWS 리전의 서로 다른 계정이 소유한 Managed Microsoft AD 도메인을 공유할 수 있습니다.

  자체 온프레미스 Active Directory를 사용할 수도 있습니다. 자세한 내용은 [2단계: (선택 사항) 온프레미스 Active Directory에 대한 신뢰 생성](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-trust) 단원을 참조하십시오.
+ Kerberos를 사용하여 MySQL 클라이언트나 Windows 운영 체제의 드라이버에서 Aurora MySQL 클러스터에 연결하는 사용자를 인증하려는 경우, 기본적으로 데이터베이스 사용자 이름의 대소문자가 Active Directory에 있는 사용자의 대소문자와 일치해야 합니다. 예를 들어 Active Directory의 사용자가 `Admin`으로 표시될 경우 데이터베이스 사용자 이름도 `Admin`이어야 합니다.

  하지만 이제 `authentication_kerberos` 플러그인으로 대소문자를 구분하지 않는 사용자 이름 비교를 사용할 수 있습니다. 자세한 내용은 [8단계: (선택 사항) 대소문자를 구분하지 않는 사용자 이름 비교 구성](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.case-insensitive) 단원을 참조하십시오.
+ 기능을 켠 후에는 리더 DB 인스턴스를 재부팅하여 `authentication_kerberos` 플러그인을 설치해야 합니다.
+ `authentication_kerberos` 플러그인을 지원하지 않는 DB 인스턴스로 복제할 경우 복제가 실패할 수 있습니다.
+ Aurora 글로벌 데이터베이스에서 Kerberos 인증을 사용하려면 글로벌 데이터베이스의 모든 DB 클러스터에 대해 인증을 구성해야 합니다.
+ 도메인 이름은 62자 미만이어야 합니다.
+ Kerberos 인증을 켠 후에 DB 클러스터 포트를 수정하면 안 됩니다. 포트를 수정하면 Kerberos 인증이 더 이상 작동하지 않습니다.

# Aurora MySQL DB 클러스터에 대해 Kerberos 인증 설정
<a name="aurora-mysql-kerberos-setting-up"></a>

AWS Managed Microsoft AD를 사용하여 Aurora MySQL DB 클러스터에 대해 Kerberos 인증을 설정할 수 있습니다. Kerberos 인증을 설정하려면 다음 단계를 수행하십시오.

**Topics**
+ [1단계: AWS Managed Microsoft AD를 사용하여 디렉터리 생성](#aurora-mysql-kerberos-setting-up.create-directory)
+ [2단계: (선택 사항) 온프레미스 Active Directory에 대한 신뢰 생성](#aurora-mysql-kerberos-setting-up.create-trust)
+ [3단계: Amazon Aurora에서 사용할 IAM 역할 만들기](#aurora-mysql-kerberos-setting-up.CreateIAMRole)
+ [4단계: 사용자 생성 및 구성](#aurora-mysql-kerberos-setting-up.create-users)
+ [5단계: Aurora MySQL DB 클러스터 생성 또는 수정](#aurora-mysql-kerberos-setting-up.create-modify)
+ [6단계: Kerberos 인증을 사용하는 Aurora MySQL 사용자 생성](#aurora-mysql-kerberos-setting-up.create-logins)
+ [7단계: MySQL 클라이언트 구성](#aurora-mysql-kerberos-setting-up.configure-client)
+ [8단계: (선택 사항) 대소문자를 구분하지 않는 사용자 이름 비교 구성](#aurora-mysql-kerberos-setting-up.case-insensitive)

## 1단계: AWS Managed Microsoft AD를 사용하여 디렉터리 생성
<a name="aurora-mysql-kerberos-setting-up.create-directory"></a>

Directory Service는 AWS 클라우드에서 완전 관리형 Microsoft Active Directory를 생성합니다. AWS Managed Microsoft AD 디렉터리를 생성할 때 Directory Service에서 두 개의 도메인 컨트롤러 및 Domain Name System(DNS) 서버가 자동으로 생성됩니다. 디렉터리 서버는 VPC 내 다른 서브넷에서 생성됩니다. 이러한 중복으로 인해 장애가 발생해도 디렉터리에 액세스할 수 있습니다.

AWS Managed Microsoft AD 디렉터리를 생성하는 경우 Directory Service에서 다음 작업이 자동으로 수행됩니다.
+ VPC 내에서 Active Directory를 설정합니다.
+ 사용자 이름 `Admin`과 지정된 암호를 사용하여 디렉터리 관리자 계정을 생성합니다. 이 계정을 사용하여 디렉터리를 관리할 수 있습니다.
**참고**  
이 암호를 저장하십시오. Directory Service에서는 저장되지 않습니다. 재설정은 가능하지만 검색은 불가능합니다.
+ 디렉터리 컨트롤러에 대한 보안 그룹을 만듭니다.

AWS Managed Microsoft AD를 시작하면 AWS에서 모든 디렉터리의 객체를 포함하는 OU(조직 단위)를 생성합니다. 이 OU는 디렉터리를 만들 때 입력한 NetBIOS 이름으로 되어 있습니다. 이 OU는 AWS가 소유하고 관리하는 도메인 루트 내에 있습니다.

`Admin` 디렉터리를 사용하여 생성한 AWS Managed Microsoft AD 계정은 다음을 포함한 OU의 가장 일반적인 관리 활동에 대한 권한이 있습니다.
+ 사용자 생성, 업데이트 또는 삭제
+ 도메인(예: 파일 또는 인쇄 서버)에 리소스를 추가한 다음 OU 내의 사용자에 해당 리소스에 대한 권한 할당
+ 추가 OU 및 컨테이너 생성
+ 권한 위임
+ Active Directory 휴지통에서 삭제된 객체 복원
+ Active Directory 웹 서비스에서 AD 및 DNS Windows PowerShell 모듈 실행 

또한 `Admin` 계정은 다음 도메인 차원 활동을 수행할 권한이 있습니다.
+ DNS 구성 관리(레코드, 영역 및 전달자 추가, 제거 또는 업데이트)
+ DNS 이벤트 로그 보기
+ 보안 이벤트 로그 보기

**AWS Managed Microsoft AD으로 디렉터리를 생성하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/directoryservicev2/](https://console.aws.amazon.com/directoryservicev2/)에서 Directory Service 콘솔을 엽니다.

1. 탐색 창에서 **디렉터리**를 선택한 후 **디렉터리 설정**을 선택합니다.

1. **AWS Managed Microsoft AD**를 선택합니다. AWS Managed Microsoft AD는 현재 Amazon RDS와 함께 사용할 수 있는 유일한 옵션입니다.

1. 다음 정보를 입력합니다.  
**디렉터리 DNS 이름**  
디렉터리를 위한 정규화된 이름(예: **corp.example.com**)입니다.  
**디렉터리 NetBIOS 이름**  
디렉터리의 짧은 이름(예: **CORP**)입니다.  
**디렉터리 설명**  
(선택 사항) 디렉터리에 대한 설명입니다.  
**관리자 암호**  
디렉터리 관리자의 암호입니다. 디렉터리 생성 프로세스에서는 사용자 이름 Admin과 이 암호를 사용하여 관리자 계정을 생성합니다.  
디렉터리 관리자 암호는 "admin"이라는 단어를 포함할 수 없습니다. 암호는 대소문자를 구분하며 길이가 8\$164자 사이여야 합니다. 또한 다음 네 범주 중 세 개에 해당하는 문자를 1자 이상 포함해야 합니다.  
   + 소문자(a–z)
   + 대문자(A–Z)
   + 숫자(0–9)
   + 영숫자 외의 특수 문자(\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/)  
**[Confirm Password]**  
관리자 암호가 다시 입력됩니다.

1. **다음**을 선택합니다.

1.  **네트워킹** 섹션에 다음 정보를 입력하고 **다음**을 선택합니다.  
**VPC**  
디렉터리에 대한 VPC입니다. 이 동일한 VPC에서 Aurora MySQL 클러스터를 생성합니다.  
**서브넷**  
디렉터리 서버에 대한 서브넷입니다. 두 서브넷이 서로 다른 가용 영역에 있어야 합니다.

1. 디렉터리 정보를 검토하고 필요한 사항을 변경합니다. 정보가 올바르면 **디렉터리 생성**을 선택합니다.  
![\[생성 중 디렉터리 세부 정보 페이지\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/images/WinAuth2.png)

디렉터리를 생성하는 데 몇 분 정도 걸립니다. 디렉터리가 성공적으로 생성되면 **상태** 값이 **활성**으로 변경됩니다.

디렉터리에 대한 정보를 보려면 디렉터리 목록에서 해당 디렉터리 이름을 선택합니다. Aurora MySQL DB 클러스터를 생성하거나 수정할 때 이 값이 필요하므로 **디렉터리 ID** 값을 기록해 두십시오.

![\[디렉터리 세부 정보 페이지의 디렉터리 ID\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/images/WinAuth3.png)


## 2단계: (선택 사항) 온프레미스 Active Directory에 대한 신뢰 생성
<a name="aurora-mysql-kerberos-setting-up.create-trust"></a>

자체 온프레미스 Microsoft Active Directory를 사용하지 않으려는 경우 [3단계: Amazon Aurora에서 사용할 IAM 역할 만들기](#aurora-mysql-kerberos-setting-up.CreateIAMRole)로 건너뜁니다.

온프레미스 Active Directory로 Kerberos 인증을 사용하려면 온프레미스 Microsoft Active Directory와 AWS Managed Microsoft AD에서 만든 [1단계: AWS Managed Microsoft AD를 사용하여 디렉터리 생성](#aurora-mysql-kerberos-setting-up.create-directory) 디렉터리 간에 forest trust를 사용하여 신뢰 도메인 관계를 생성해야 합니다. 신뢰는 AWS Managed Microsoft AD 디렉터리가 온프레미스 Microsoft Active Directory를 신뢰하는 단방향일 수도 있고, 두 Active Directory가 서로를 신뢰하는 양방향일 수도 있습니다. Directory Service를 사용하여 신뢰를 설정하는 방법에 대한 자세한 내용은 *AWS Directory Service 관리 안내서*의 [신뢰 관계를 생성해야 하는 경우](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html)를 참조하세요.

**참고**  
온프레미스 Microsoft Active Directory를 사용하는 경우:  
Windows 클라이언트가 Aurora 사용자 지정 엔드포인트를 사용하여 연결할 수 없습니다. 자세한 내용은 [Amazon Aurora 엔드포인트 연결](Aurora.Overview.Endpoints.md)를 참조하세요.
[글로벌 데이터베이스](aurora-global-database.md)의 경우:  
Windows 클라이언트가 글로벌 데이터베이스의 기본 AWS 리전에 있는 인스턴스 엔드포인트 또는 클러스터 엔드포인트만 사용하여 연결할 수 있습니다.
Windows 클라이언트가 보조 AWS 리전의 클러스터 엔드포인트를 사용하여 연결할 수 없습니다.

온프레미스 Microsoft Active Directory 도메인 이름에 새로 만든 신뢰 관계에 해당하는 DNS 접미사 라우팅이 포함되어 있는지 확인합니다. 다음 스크린샷은 예를 보여줍니다.

![\[DNS 라우팅이 생성된 신뢰에 대응\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/images/kerberos-auth-trust.png)


## 3단계: Amazon Aurora에서 사용할 IAM 역할 만들기
<a name="aurora-mysql-kerberos-setting-up.CreateIAMRole"></a>

Directory Service를 호출하는 Amazon Aurora의 경우 계정에 관리형 IAM 정책 `AmazonRDSDirectoryServiceAccess`를 사용하는 AWS Identity and Access Management(IAM) 역할이 필요합니다. 이 역할을 사용하여 Aurora에서 Directory Service를 자동으로 호출할 수 있습니다.

AWS Management Console을 사용하여 DB 클러스터를 생성할 경우 `iam:CreateRole` 권한이 있으면 콘솔에서 이 역할을 자동으로 생성합니다. 이 경우 역할 이름은 `rds-directoryservice-kerberos-access-role`입니다. 그렇지 않으면 IAM 역할을 수동으로 생성해야 합니다. 이 IAM 역할을 생성할 때 `Directory Service`를 선택하고 여기에 AWS 관리형 정책인 `AmazonRDSDirectoryServiceAccess`를 연결합니다.

서비스에 대한 IAM 역할 생성에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS 서비스에 대한 권한을 위임할 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)을 참조하세요.

선택 사항으로 관리형 IAM 정책인 `AmazonRDSDirectoryServiceAccess`를 사용하는 대신 필요한 권한으로 정책을 생성할 수 있습니다. 이 경우 IAM 역할에 다음과 같은 IAM 신뢰 정책이 있어야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.amazonaws.com",
          "rds.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

또한 역할에는 다음과 같은 IAM 역할 정책도 있어야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "ds:DescribeDirectories",
        "ds:AuthorizeApplication",
        "ds:UnauthorizeApplication",
        "ds:GetAuthorizedApplicationDetails"
      ],
    "Effect": "Allow",
    "Resource": "*"
    }
  ]
}
```

------

## 4단계: 사용자 생성 및 구성
<a name="aurora-mysql-kerberos-setting-up.create-users"></a>

Active Directory Users and Computers 도구를 사용하여 사용자를 생성할 수 있습니다. 이 도구는 Active Directory Domain Services 및 Active Directory Lightweight Directory Services 도구에 포함되어 있습니다. 사용자는 디렉터리에 액세스할 수 있는 개별 사용자 또는 개체를 나타냅니다.

Directory Service 디렉터리에서 사용자를 생성하려면 Directory Service 디렉터리에 조인된 Microsoft Windows를 기반으로 한 온프레미스 또는 Amazon EC2 인스턴스를 사용합니다. 사용자를 생성할 수 있는 권한을 가진 인스턴스에 로그인해야 합니다. 자세한 내용은 *AWS Managed Microsoft AD Directory Service 관리 가이드*에서 [AWS의 사용자 및 그룹 관리](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/creating_ad_users_and_groups.html)를 참조하세요.

## 5단계: Aurora MySQL DB 클러스터 생성 또는 수정
<a name="aurora-mysql-kerberos-setting-up.create-modify"></a>

디렉터리에서 사용할 Aurora MySQL DB 클러스터를 생성하거나 수정합니다. 콘솔, AWS CLI 또는 RDS API를 사용하여 DB 클러스터를 디렉터리에 연결할 수 있습니다. 이 태스크를 다음 중 한 가지 방법으로 수행할 수 있습니다.
+ 콘솔, [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) CLI 명령 또는 [CreateDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) RDS API 작업을 사용하여 새 Aurora MySQL DB 클러스터를 생성합니다.

  지침은 [Amazon Aurora DB 클러스터 생성](Aurora.CreateInstance.md) 섹션을 참조하세요.
+ 콘솔, [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) CLI 명령 또는 [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) RDS API 작업을 사용하여 기존 Aurora MySQL DB 클러스터를 수정합니다.

  지침은 [Amazon Aurora DB 클러스터 수정](Aurora.Modifying.md) 섹션을 참조하세요.
+ 콘솔, [restore-db-cluster-from-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html) CLI 명령 또는 [RestoreDBClusterFromSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html) RDS API 작업을 사용하여 DB 스냅샷에서 Aurora MySQL DB 클러스터를 복원합니다.

  지침은 [DB 클러스터 스냅샷에서 복원](aurora-restore-snapshot.md) 섹션을 참조하세요.
+ 콘솔, [restore-db-cluster-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html) CLI 명령 또는 [RestoreDBClusterToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html) RDS API 작업을 사용하여 Aurora MySQL DB 클러스터를 특정 시점으로 복원합니다.

  지침은 [지정된 시간으로 DB 클러스터 복원](aurora-pitr.md) 섹션을 참조하세요.

Kerberos 인증은 VPC의 Aurora MySQL DB 클러스터에 대해서만 지원됩니다. DB 클러스터는 디렉터리와 동일한 VPC 또는 다른 VPC에 있을 수 있습니다. DB 클러스터의 VPC에는 디렉터리와의 아웃바운드 통신을 허용하는 VPC 보안 그룹이 있어야 합니다.

### 콘솔
<a name="aurora-mysql-kerberos-setting-up.create-modify.CON"></a>

콘솔을 사용하여 DB 클러스터를 생성, 수정 또는 복원하는 경우 [**데이터베이스 인증(Database authentication)**] 섹션에서 [**Kerberos 인증(Kerberos authentication)**]을 선택합니다. **디렉터리 찾아보기**를 선택한 다음 디렉터리를 선택하거나 **새 디렉터리 생성**을 선택합니다.

![\[DB 클러스터를 생성할 때의 Kerberos 인증 설정\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/images/kerberos-auth-create-cluster.png)


### AWS CLI
<a name="aurora-mysql-kerberos-setting-up.create-modify.CLI"></a>

콘솔, AWS CLI 또는 RDS API를 사용할 경우 DB 클러스터를 디렉터리에 연결합니다. DB 클러스터에서 생성된 도메인 디렉터리를 사용하려면 다음과 같은 파라미터가 필요합니다.
+ `--domain` 파라미터의 경우 디렉터리를 만들 때 생성된 도메인 식별자("d-\$1" 식별자)를 사용하세요.
+ `--domain-iam-role-name` 파라미터의 경우 귀하가 생성한, 관리형 IAM 정책 `AmazonRDSDirectoryServiceAccess`를 사용하는 역할을 사용하십시오.

예를 들어, 다음 CLI 명령은 디렉터리를 사용하도록 DB 클러스터를 수정합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds modify-db-cluster \
    --db-cluster-identifier mydbcluster \
    --domain d-ID \
    --domain-iam-role-name role-name
```

Windows의 경우:

```
aws rds modify-db-cluster ^
    --db-cluster-identifier mydbcluster ^
    --domain d-ID ^
    --domain-iam-role-name role-name
```

**중요**  
DB 클러스터를 수정하여 Kerberos 인증을 켜는 경우 변경 후 DB 클러스터를 재부팅합니다.

## 6단계: Kerberos 인증을 사용하는 Aurora MySQL 사용자 생성
<a name="aurora-mysql-kerberos-setting-up.create-logins"></a>

DB 클러스터는 AWS Managed Microsoft AD 도메인에 조인됩니다. 따라서 도메인 내 Active Directory 사용자에서 Aurora MySQL 사용자를 생성할 수 있습니다. 데이터베이스 권한은 이러한 사용자에서 부여 및 취소되는 표준 Aurora MySQL 권한을 통해 관리됩니다.

Active Directory 사용자가 Aurora MySQL에서 인증을 하도록 허용할 수 있습니다. 이렇게 하려면 먼저 다른 DB 클러스터의 경우와 마찬가지로 Amazon RDS 기본 사용자 자격 증명을 사용하여 MySQL DB 인스턴스에 연결합니다. 로그인한 후에는 다음과 같이 Aurora MySQL 내에서 Kerberos 인증을 활용하여 외부에서 인증된 사용자를 생성합니다.

```
CREATE USER user_name@'host_name' IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';
```
+ `user_name`을 사용자 이름으로 바꿉니다. 이제 도메인의 사용자(사람 및 애플리케이션)는 Kerberos 인증을 사용하여 도메인이 조인된 클라이언트 컴퓨터의 DB 클러스터에 연결할 수 있습니다.
+ `host_name`을 호스트 이름으로 바꿉니다. `%`를 와일드카드로 사용할 수 있습니다. 호스트 이름에 특정 IP 주소를 사용할 수도 있습니다.
+ *realm\$1name*을 도메인의 디렉터리 영역 이름으로 바꿉니다. 영역 이름은 일반적으로 DNS 도메인 이름과 동일하며 `CORP.EXAMPLE.COM`처럼 대문자로 표시됩니다. 영역이란 같은 Kerberos 키 배포 센터를 사용하는 시스템 그룹입니다.

다음 예시에서는 `Admin`이라는 이름의 데이터베이스 사용자를 생성합니다. 이 사용자는 영역 이름이 `MYSQL.LOCAL`인 Active Directory에 대해 인증합니다.

```
CREATE USER Admin@'%' IDENTIFIED WITH 'authentication_kerberos' BY 'MYSQL.LOCAL';
```

### 기존 Aurora MySQL 로그인 수정
<a name="aurora-mysql-kerberos.modify-login"></a>

다음 구문을 사용하여 Kerberos 인증을 사용하도록 기존 Aurora MySQL 로그인을 수정할 수도 있습니다.

```
ALTER USER user_name IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';
```

## 7단계: MySQL 클라이언트 구성
<a name="aurora-mysql-kerberos-setting-up.configure-client"></a>

MySQL 클라이언트를 구성하려면 다음 단계를 수행합니다.

1. 도메인을 가리키도록 `krb5.conf` 파일(또는 동등한 파일)을 생성합니다.

1. 클라이언트 호스트와 Directory Service 간에 트래픽이 흐를 수 있는지 확인합니다. Netcat과 같은 네트워크 유틸리티를 사용하여 다음을 수행합니다.
   + 포트 53의 DNS를 통한 트래픽을 확인합니다.
   + 포트 53 및 Directory Service용 포트 88 및 464를 포함하는 Kerberos의 TCP/UDP를 통한 트래픽을 확인합니다.

1. 데이터베이스 포트를 통해 클라이언트 호스트와 DB 인스턴스 간에 트래픽이 흐를 수 있는지 확인합니다. 예를 들어, `mysql`을 사용하여 데이터베이스에 연결하고 액세스합니다.

다음은 AWS Managed Microsoft AD의 샘플 `krb5.conf` 콘텐츠입니다.

```
[libdefaults]
 default_realm = EXAMPLE.COM
[realms]
 EXAMPLE.COM = {
  kdc = example.com
  admin_server = example.com
 }
[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
```

다음은 온프레미스 Microsoft Active Directory의 샘플 `krb5.conf` 콘텐츠입니다.

```
[libdefaults]
 default_realm = EXAMPLE.COM
[realms]
 EXAMPLE.COM = {
  kdc = example.com
  admin_server = example.com
 }
 ONPREM.COM = {
  kdc = onprem.com
  admin_server = onprem.com
 }
[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
 .onprem.com = ONPREM.COM
 onprem.com = ONPREM.COM  
 .rds.amazonaws.com = EXAMPLE.COM
 .amazonaws.com.rproxy.govskope.us.cn = EXAMPLE.COM
 .amazon.com = EXAMPLE.COM
```

## 8단계: (선택 사항) 대소문자를 구분하지 않는 사용자 이름 비교 구성
<a name="aurora-mysql-kerberos-setting-up.case-insensitive"></a>

기본적으로 MySQL 데이터베이스 사용자 이름의 대소문자는 Active Directory 로그인 시 이용하는 사용자 이름의 대소문자와 일치해야 합니다. 하지만 이제 `authentication_kerberos` 플러그인으로 대소문자를 구분하지 않는 사용자 이름 비교를 사용할 수 있습니다. 이렇게 하려면 `authentication_kerberos_caseins_cmp` DB 클러스터 파라미터를 `true`로 설정합니다.

**대소문자를 구분하지 않는 사용자 이름 비교를 사용하려면**

1. 사용자 지정 DB 클러스터 파라미터 그룹을 만듭니다. [Amazon Aurora에서 DB 클러스터 파라미터 그룹 생성](USER_WorkingWithParamGroups.CreatingCluster.md)의 절차를 따르십시오.

1. 새 파라미터 그룹을 편집하여 `authentication_kerberos_caseins_cmp` 값을 `true`로 설정합니다. [Amazon Aurora에서 DB 클러스터 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.ModifyingCluster.md)의 절차를 따르십시오.

1. DB 클러스터 파라미터 그룹을 Aurora MySQL DB 클러스터와 연결합니다. [Amazon Aurora에서 DB 클러스터 파라미터 그룹과 DB 클러스터 연결](USER_WorkingWithParamGroups.AssociatingCluster.md)의 절차를 따르십시오.

1. DB 클러스터를 재부팅합니다.

# Kerberos 인증을 사용하여 Aurora MySQL에 연결
<a name="aurora-mysql-kerberos-connecting"></a>

오류를 방지하려면 Unix 플랫폼에서는 버전 8.0.26 이상, Windows에서는 8.0.27 이상의 MySQL 클라이언트를 사용합니다.

## Aurora MySQL Kerberos 로그인을 사용하여 DB 클러스터에 연결
<a name="aurora-mysql-kerberos-connecting.login"></a>

Kerberos 인증을 사용하여 Aurora MySQL에 연결하려면 [6단계: Kerberos 인증을 사용하는 Aurora MySQL 사용자 생성](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-logins)의 지침에 따라 생성한 데이터베이스 사용자로 로그인해야 합니다.

명령 프롬프트에서 Aurora MySQL DB 클러스터와 연결된 엔드포인트 중 하나에 연결합니다. 암호를 입력하라는 메시지가 표시되면 해당 사용자 이름과 연결된 Kerberos 암호를 입력합니다.

Kerberos로 인증할 때 *티켓 부여 티켓*(TGT)이 없으면 새로 생성됩니다. `authentication_kerberos` 플러그인은 TGT를 사용하여 서비스 티켓을** 가져오고, 이 티켓은 Aurora MySQL 데이터베이스 서버에 제공됩니다.

MySQL 클라이언트를 사용하면 Windows 또는 Unix를 사용하는 Kerberos 인증을 통해 Aurora MySQL에 연결할 수 있습니다.

### Unix
<a name="aurora-mysql-kerberos-connecting.login.unix"></a>

다음 방법 중 하나를 사용하여 연결할 수 있습니다.
+ TGT를 수동으로 가져옵니다. 이 경우 암호를 MySQL 클라이언트에 제공할 필요가 없습니다.
+ Active Directory 로그인을 위한 암호를 MySQL 클라이언트에 직접 입력합니다.

클라이언트 측 플러그인은 MySQL 클라이언트 버전 8.0.26 이상을 위한 Unix 플랫폼에서 지원됩니다.

**TGT를 수동으로 가져와서 연결하려면**

1. 명령줄 인터페이스에서 다음 명령을 사용하여 TGT를 가져옵니다.

   ```
   kinit user_name
   ```

1. 다음 `mysql` 명령을 사용하여 DB 클러스터의 DB 인스턴스 엔드포인트에 로그인합니다.

   ```
   mysql -h DB_instance_endpoint -P 3306 -u user_name -p
   ```
**참고**  
DB 인스턴스에서 keytab을 교체하면 인증이 실패할 수 있습니다. 이 경우 `kinit`를 다시 실행하여 새 TGT를 가져옵니다.

**직접 연결하려면**

1. 명령줄 인터페이스에서 다음`mysql` 명령을 사용하여 DB 클러스터의 DB 인스턴스 엔드포인트에 로그인합니다.

   ```
   mysql -h DB_instance_endpoint -P 3306 -u user_name -p
   ```

1. Active Directory 사용자용 암호를 입력합니다.

### Windows
<a name="aurora-mysql-kerberos-connecting.login.win"></a>

Windows에서는 일반적으로 로그인 시 인증이 수행되므로 Aurora MySQL DB 클러스터에 연결하기 위해 TGT를 수동으로 가져올 필요가 없습니다. 데이터베이스 사용자 이름의 대소문자는 Active Directory에 있는 사용자 이름의 대소문자와 일치해야 합니다. 예를 들어 Active Directory의 사용자가 `Admin`으로 표시될 경우 데이터베이스 사용자 이름도 `Admin`이어야 합니다.

클라이언트 측 플러그인은 MySQL 클라이언트 버전 8.0.27 이상을 위한 Windows 플랫폼에서 지원됩니다.

**직접 연결하려면**
+ 명령줄 인터페이스에서 다음`mysql` 명령을 사용하여 DB 클러스터의 DB 인스턴스 엔드포인트에 로그인합니다.

  ```
  mysql -h DB_instance_endpoint -P 3306 -u user_name
  ```

## Aurora를 글로벌 데이터베이스를 사용하는 Kerberos 인증
<a name="aurora-mysql-kerberos-connecting.global"></a>

Aurora MySQL에 대한 Kerberos 인증이 Aurora 글로벌 데이터베이스에 대해 지원됩니다. 기본 DB 클러스터의 Active Directory를 사용하여 보조 DB 클러스터의 사용자를 인증하려면 Active Directory를 보조 AWS 리전에 복제합니다. 기본 클러스터와 동일한 도메인 ID를 사용하여 보조 클러스터에서 Kerberos 인증을 설정합니다. AWS Managed Microsoft AD 복제는 Active Directory의 Enterprise 버전에서만 지원됩니다. 자세한 내용은 AWS Directory Service 관리 안내서**의 [다중 리전 복제](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_configure_multi_region_replication.html)를 참조하세요.

## RDS for MySQL에서 Aurora MySQL로 마이그레이션
<a name="aurora-mysql-kerberos-connecting.rds"></a>

Kerberos 인증을 활성화한 상태에서 RDS for MySQL에서 Aurora MySQL로 마이그레이션한 후에는 `auth_pam` 플러그인을 사용하여 생성된 사용자가 `authentication_kerberos` 플러그인을 사용하도록 수정합니다. 예:

```
ALTER USER user_name IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';
```

## 티켓 캐싱 방지
<a name="aurora-mysql-kerberos.destroy-tickets"></a>

MySQL 클라이언트 애플리케이션이 시작될 때 유효한 TGT가 존재하지 않을 경우 애플리케이션은 TGT를 가져와 캐시할 수 있습니다. TGT가 캐시되는 것을 방지하려면 `/etc/krb5.conf` 파일에 구성 파라미터를 설정합니다.

**참고**  
이 구성은 Windows가 아닌 Unix를 실행하는 클라이언트 호스트에만 적용됩니다.

**TGT 캐싱을 방지하려면**
+ 다음과 같이 `[appdefaults]` 섹션을 `/etc/krb5.conf`에 추가합니다.

  ```
  [appdefaults]
    mysql = {
      destroy_tickets = true
    }
  ```

## Kerberos 인증에 대한 로깅
<a name="aurora-mysql-kerberos.logging"></a>

`AUTHENTICATION_KERBEROS_CLIENT_LOG` 환경 변수는 Kerberos 인증의 로깅 수준을 설정합니다. 로그를 클라이언트 측 디버깅에 사용할 수 있습니다.

허용되는 값은 1\$15입니다. 로그 메시지는 표준 오류 출력에 기록됩니다. 다음 표에는 각 로깅 수준이 설명되어 있습니다.


| 로깅 수준 | 설명 | 
| --- | --- | 
| 1 또는 설정되지 않음 | 로깅 없음 | 
| 2 | 오류 메시지 | 
| 3 | 오류 및 경고 메시지 | 
| 4 | 오류, 경고, 정보 메시지 | 
| 5 | 오류, 경고, 정보, 디버그 메시지 | 

# 도메인에서 DB 클러스터 관리
<a name="aurora-mysql-kerberos-managing"></a>

AWS CLI 또는 RDS API를 사용하여 DB 클러스터 및 DB 클러스터와 관리형 Active Directory의 관계를 관리할 수 있습니다. 예를 들어 Active Directory를 연결하여 Kerberos 인증을 활성화하고 Active Directory의 연결을 해제하여 Kerberos 인증을 끌 수 있습니다. 또한 한 Active Directory에서 외부 인증할 DB 클러스터를 다른 도메인으로 이동시킬 수 있습니다.

예를 들어 Amazon RDS API를 사용하여 다음을 수행할 수 있습니다.
+ 실패한 멤버십에 대해 Kerberos 인증 켜기를 다시 시도하려면 `ModifyDBInstance` API 작업을 사용하여 현재 멤버십의 디렉터리 ID를 지정합니다.
+ 멤버십에 대한 IAM 역할 이름을 업데이트하려면 `ModifyDBInstance` API 작업을 사용하고 현재 멤버십의 디렉터리 ID 및 새 IAM 역할을 지정합니다.
+ DB 클러스터에서 Kerberos 인증을 끄려면 `ModifyDBInstance` API 작업을 사용하여 `none`을 도메인 파라미터로 지정합니다.
+ 한 도메인에서 다른 도메인으로 DB 클러스터를 이동하려면 `ModifyDBInstance` API 작업을 사용하여 새 도메인의 도메인 식별자를 도메인 파라미터로 지정합니다.
+ 각 DB 클러스터의 멤버십을 나열하려면 `DescribeDBInstances` API 작업을 사용합니다.

## 도메인 멤버십 이해
<a name="aurora-mysql-kerberos-managing.understanding"></a>

DB 클러스터를 생성하거나 수정하고 나면 해당 클러스터는 도메인의 멤버가 됩니다. [describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) CLI 명령을 실행하여 DB 클러스터에 대한 도메인 멤버십의 상태를 확인할 수 있습니다. DB 클러스터의 상태는 다음 중 한 가지가 될 수 있습니다.
+ `kerberos-enabled` - DB 클러스터의 Kerberos 인증이 켜져 있습니다.
+  `enabling-kerberos` - AWS가 이 DB 클러스터에 대한 Kerberos 인증 켜기를 진행 중입니다.
+ `pending-enable-kerberos` - 이 DB 클러스터에 대한 Kerberos 인증 켜기가 보류 중입니다.
+ `pending-maintenance-enable-kerberos` - AWS는 예약된 다음 유지 관리 기간 동안 DB 인스턴스에 대한 Kerberos 인증을 켜려 합니다.
+ `pending-disable-kerberos` - 이 DB 클러스터에 대한 Kerberos 인증 끄기가 보류 중입니다.
+ `pending-maintenance-disable-kerberos` - AWS는 예약된 다음 유지 관리 기간 동안 DB 클러스터에 대한 Kerberos 인증을 끄려 합니다.
+ `enable-kerberos-failed` - 구성 문제로 인해 AWS가 DB 클러스터에 대해 Kerberos 인증을 켜지 못했습니다. DB 클러스터 modify 명령을 다시 실행하기 전에 구성을 확인하고 수정합니다.
+ `disabling-kerberos` - AWS가 이 DB 클러스터에 대한 Kerberos 인증 끄기를 진행 중입니다.

네트워크 연결 문제 또는 잘못된 IAM 역할로 인해 Kerberos 인증 켜기 요청이 실패할 수 있습니다. 예를 들어 DB 클러스터를 생성하거나 기존 DB 클러스터를 수정하는데 Kerberos 인증을 켜려는 시도가 실패한다고 가정합니다. 이 경우 modify 명령을 다시 실행하거나 새로 생성된 DB 클러스터를 수정하여 도메인에 조인합니다.