

# 자체 관리형 Active Directory 설정
<a name="db2-self-managed-active-directory.SettingUp"></a>

자체 관리형 AD를 설정하려면 다음 단계를 따르세요.

**Topics**
+ [1단계: AD에서 조직 단위 생성](#db2-self-managed-active-directory.SettingUp.CreateOU)
+ [2단계: AD에서 AD 도메인 서비스 계정 생성](#db2-self-managed-active-directory.SettingUp.CreateADuser)
+ [3단계: AD 도메인 서비스 계정에 제어 위임](#db2-self-managed-active-directory.SettingUp.DelegateControl)
+ [4단계: AWS KMS 키 생성](#db2-self-managed-active-directory.SettingUp.CreateKMSkey)
+ [5단계: AWS 보안 암호 생성](#db2-self-managed-active-directory.SettingUp.CreateSecret)
+ [6단계: Db2 DB 인스턴스 생성 또는 수정](#db2-self-managed-active-directory.SettingUp.CreateModify)

## 1단계: AD에서 조직 단위 생성
<a name="db2-self-managed-active-directory.SettingUp.CreateOU"></a>

**중요**  
자체 관리형 AD 도메인에 가입된 RDS for Db2 DB 인스턴스를 소유한 AWS 계정에 대해 전용 OU 및 해당 OU 범위의 서비스 자격 증명을 생성하는 것이 좋습니다. 전용 OU 및 서비스 자격 증명을 지정하면 권한 충돌을 피하고 최소 권한 원칙을 따를 수 있습니다.

**AD에서 OU를 생성하려면**

1. 도메인 관리자로 AD 도메인에 연결합니다.

1. **Active Directory 사용자 및 컴퓨터**를 열고 OU를 생성할 도메인을 선택합니다.

1. 도메인의 컨텍스트 메뉴를 열고 **새로 만들기**를 선택한 다음 **조직 단위**를 선택합니다.

1. OU 이름을 입력합니다.

1. **컨테이너가 실수로 삭제되지 않도록 보호** 확인란을 선택한 상태로 유지합니다.

1. **확인**을 선택합니다. 새 OU는 도메인 아래에 표시됩니다.

## 2단계: AD에서 AD 도메인 서비스 계정 생성
<a name="db2-self-managed-active-directory.SettingUp.CreateADuser"></a>

도메인 서비스 계정 자격 증명을 AWS Secrets Manager에서 비밀로 사용합니다.

**AD에서 AD 도메인 서비스 계정 생성**

1. **Active Directory 사용자 및 컴퓨터**를 열고 사용자를 생성할 도메인과 OU를 선택합니다.

1. **사용자**의 컨텍스트 메뉴를 열고 **새로 만들기**를 선택한 다음, **사용자**를 선택합니다.

1. 사용자의 이름, 성 및 로그온 이름을 입력합니다. **다음**을 선택합니다.

1. 사용자의 암호를 입력합니다. **다음 로그인 시 사용자가 암호를 변경해야 함**을 선택하지 마세요. **계정이 비활성화됨**을 선택하지 마세요. **다음**을 선택합니다.

1. **확인**을 선택합니다. 새 사용자는 도메인 아래에 표시됩니다.

## 3단계: AD 도메인 서비스 계정에 제어 위임
<a name="db2-self-managed-active-directory.SettingUp.DelegateControl"></a>

### 파트 A: 제어 위임 마법사를 사용하여 권한 위임
<a name="db2-self-managed-active-directory.SettingUp.DelegateControl.Wizard"></a>

**도메인의 AD 도메인 서비스 계정에 제어 권한 위임**

1. **Active Directory 사용자 및 컴퓨터** Microsoft Management Console(MMC) 스냅인을 열고 사용자를 생성할 도메인을 선택합니다.

1. 이전에 생성한 OU의 컨텍스트 메뉴를 열고 **제어 위임**을 선택합니다.

1. **제어 위임 마법사**에서 **다음**을 선택합니다.

1. **사용자 또는 그룹** 섹션에서 **추가**를 선택합니다.

1. **사용자, 컴퓨터 또는 그룹 선택** 섹션에서 생성한 AD 도메인 서비스 계정을 입력하고 **이름 확인**을 선택합니다. AD 도메인 서비스 계정 확인이 성공하면 **확인**을 선택합니다.

1. **사용자 또는 그룹** 섹션에서 AD 도메인 서비스 계정이 추가되었는지 확인하고 **다음**을 선택합니다.

1. **위임할 작업** 섹션에서 **위임할 사용자 지정 작업 생성**을 선택하고 **다음**을 선택합니다.

1. **Active Directory 객체 유형** 섹션에서:

   1. **폴더의 다음 객체만**을 선택합니다.

   1. **사용자 객체**를 선택합니다.

   1. **이 폴더에서 선택한 객체 생성**을 선택합니다.

   1. **이 폴더에서 선택한 객체 삭제**를 선택하고 **다음**을 선택합니다.

1. **권한** 섹션에서:

   1. **일반**을 선택한 상태로 유지합니다.

   1. **속성별**을 선택합니다.

   1. **특정 하위 객체 생성/삭제**를 선택합니다.

   1. **암호 재설정**을 선택합니다.

   1. **msDS-SupportedEncryptionTypes 읽기**를 선택합니다.

   1. **msDS-SupportedEncryptionTypes 쓰기**를 선택합니다.

1. **제어 위임 마법사 완료**에서 설정을 검토 및 확인한 다음 **마침**을 선택합니다.

### 파트 B: PowerShell을 사용하여 servicePrincipalName 권한 위임
<a name="db2-self-managed-active-directory.SettingUp.DelegateControl.PowerShell"></a>

제어 위임 마법사는 사용자 객체의 `servicePrincipalName` 속성을 노출하지 않습니다. 도메인 컨트롤러에서 다음 PowerShell 스크립트를 실행하여 AD 도메인 서비스 계정에 OU의 사용자 객체에 대한 `servicePrincipalName` 읽기 및 쓰기 액세스 권한을 부여합니다.

{{service-account}}를 2단계에서 생성한 AD 도메인 서비스 계정의 이름으로 바꾸고 1단계에서 생성한 OU와 일치하도록 OU의 고유 이름을 업데이트합니다.

```
$ou = "OU={{my-AD-test-OU}},DC={{my-AD-test}},DC={{my-AD}},DC={{my-domain}}"
$user = Get-ADUser "{{service-account}}"
$acl = Get-Acl "AD:\$ou"

$schemaPath = (Get-ADRootDSE).schemaNamingContext
$spnSchema = Get-ADObject -SearchBase $schemaPath -Filter {lDAPDisplayName -eq "servicePrincipalName"} -Properties schemaIDGUID
$spnGuid = New-Object Guid (,$spnSchema.schemaIDGUID)
$userGuid = New-Object Guid "bf967aba-0de6-11d0-a285-00aa003049e2"

$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
   $user.SID,
   "ReadProperty,WriteProperty",
   "Allow",
   $spnGuid,
   "Descendents",
   $userGuid
)

$acl.AddAccessRule($ace)
Set-Acl "AD:\$ou" $acl
```

권한이 올바르게 적용되었는지 확인하려면 다음 PowerShell 스크립트를 실행합니다.

```
$acl = Get-Acl "AD:\$ou"
$acl.Access | Where-Object { $_.IdentityReference -like "*{{service-account}}*" } | Format-List
```

## 4단계: AWS KMS 키 생성
<a name="db2-self-managed-active-directory.SettingUp.CreateKMSkey"></a>

KMS 키는 AWS 비밀을 암호화합니다.

**참고**  
**암호화 키**의 경우 AWS 기본 KMS 키를 사용하지 마세요. 자체 관리형 AD에 가입시키려는 RDS for Db2 DB 인스턴스가 포함된 동일한 AWS 계정에 AWS KMS 키를 생성해야 합니다.

**AWS KMS 키를 생성하는 방법**

1. AWS KMS 콘솔([https://console.aws.amazon.com/kms/](https://console.aws.amazon.com/kms/))을 엽니다. **키 생성**을 선택합니다.

1. **키 유형**에 대해 **대칭**을 선택합니다.

1. **키 사용**에서 **암호화 및 암호 해독**을 선택합니다.

1. **고급 옵션**에서 다음을 수행합니다.

   1. **키 구성 요소 오리진**에서 **KMS**를 선택합니다.

   1. **리전 구분**에서 **단일 리전 키**를 선택하고 **다음**을 선택합니다.

1. **별칭**의 경우 KMS 키의 이름을 입력합니다.

1. (선택 사항) **설명**에 KMS 키에 대한 설명을 입력합니다.

1. (선택 사항) **태그**의 경우 KMS 키에 태그를 지정하고 **다음**을 선택합니다.

1. **키 관리자**의 경우 IAM 사용자의 이름을 입력하고 선택합니다.

1. **키 삭제**의 경우 **키 관리자가 이 키를 삭제하도록 허용** 확인란을 선택한 상태로 유지하고 **다음**을 선택합니다.

1. **키 사용자**의 경우 이전 단계와 동일한 IAM 사용자를 입력하고 해당 사용자를 선택합니다. **다음**을 선택합니다.

1. 구성을 검토합니다.

1. **주요 정책**의 경우 정책 **문**에 다음을 포함하세요.

   ```
   {
       "Sid": "Allow use of the KMS key on behalf of RDS",
       "Effect": "Allow",
       "Principal": {
           "Service": [
               "rds.amazonaws.com"
           ]
       },
       "Action": "kms:Decrypt",
       "Resource": "*"
   }
   ```

1. **마침**을 클릭합니다.

## 5단계: AWS 보안 암호 생성
<a name="db2-self-managed-active-directory.SettingUp.CreateSecret"></a>

**참고**  
자체 관리형 AD에 가입시키려는 RDS for Db2 DB 인스턴스가 포함된 동일한 AWS 계정에서 비밀을 생성해야 합니다.

**보안 암호 생성**

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)에서 AWS Secrets Manager 콘솔을 엽니다. **새 보안 암호 저장(Store a new secret)**을 선택합니다.

1. **보안 암호 유형**에서 **다른 유형의 보안 암호**를 선택합니다.

1. **키/값 쌍**의 경우 2개의 키를 추가합니다.

   1. 첫 번째 키에는 `SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME`를 입력합니다.

   1. 첫 번째 키 값에는 AD 사용자의 사용자 이름(도메인 접두사 제외)만 입력합니다. 도메인 이름을 포함하면 인스턴스 생성이 실패하므로 포함하지 마세요.

   1. 두 번째 키에는 `SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD`를 입력합니다.

   1. 두 번째 키의 값으로 도메인의 AD 사용자에 대해 생성한 암호를 입력합니다.

1. **암호화 키**에는 이전 단계에서 생성한 KMS 키를 입력하고 **다음**을 선택합니다.

1. **보안 암호 이름**에는 나중에 암호를 찾는 데 도움이 되는 설명이 포함된 이름을 입력합니다.

1. (선택 사항) **설명**에 보안 암호 이름에 대한 설명을 입력합니다.

1. **리소스 권한**의 경우 **편집**을 선택합니다.

1. 권한 정책에 다음 정책을 추가합니다.
**참고**  
*혼란스러운 대리인* 문제를 피하기 위해 정책의 `aws:sourceAccount` 및 `aws:sourceArn` 조건을 사용하는 것이 좋습니다. `aws:sourceAccount`에는 AWS 계정을 사용하고 `aws:sourceArn`에는 RDS for Db2 DB 인스턴스 ARN을 사용합니다. 자세한 내용은 [교차 서비스 혼동된 대리자 문제 방지](cross-service-confused-deputy-prevention.md) 섹션을 참조하세요.

   ```
   {
       "Version":"2012-10-17",
       "Statement":
       [
           {
               "Effect": "Allow",
               "Principal":
               {
                   "Service": "rds.amazonaws.com"
               },
               "Action": "secretsmanager:GetSecretValue",
               "Resource": "*",
               "Condition":
               {
                   "StringEquals":
                   {
                       "aws:sourceAccount": "123456789012"
                   },
                   "ArnLike":
                   {
                       "aws:sourceArn": "arn:aws:rds:us-west-2:123456789012:db:*"
                   }
               }
           }
       ]
   }
   ```

1. **저장**을 선택하고 **다음**을 선택합니다.

1. **교체 설정 구성**에서 기본값을 유지하고 **다음**을 선택합니다.

1. 보안 암호 설정을 검토하고 **저장**을 선택합니다.

1. 생성한 보안 암호를 선택하고 **보안 암호 ARN**의 값을 복사합니다. 이 값은 다음 단계에서 자체 관리형 Active Directory를 설정하는 데 사용합니다.

## 6단계: Db2 DB 인스턴스 생성 또는 수정
<a name="db2-self-managed-active-directory.SettingUp.CreateModify"></a>

AWS CLI를 사용하여 RDS for Db2 DB 인스턴스를 자체 관리형 AD 도메인에 연결할 수 있습니다. 이 작업을 다음 중 한 가지 방법으로 수행할 수 있습니다.
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) CLI 명령을 사용하여 새 Db2 DB 인스턴스를 생성합니다. 지침은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 명령을 사용하여 기존 Db2 DB 인스턴스를 수정합니다. 지침은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

AWS CLI를 사용하는 경우 DB 인스턴스가 생성한 자체 관리형 AD 도메인을 사용하려면 다음과 같은 파라미터가 필요합니다.
+ `--domain-fqdn` 파라미터에는 자체 관리형 AD의 정규화된 도메인 이름(FQDN)을 사용합니다.
+ `--domain-ou` 파라미터에는 자체 관리형 AD에서 만든 OU를 사용합니다.
+ `--domain-auth-secret-arn` 파라미터에는 이전 단계에서 생성한 비밀 ARN의 값을 사용합니다.
+ `--domain-dns-ips` 파라미터에는 자체 관리형 AD용 DNS 서버의 프라이머리 및 보조 IPv4 주소를 사용합니다. 보조 DNS 서버 IP 주소가 없는 경우 프라이머리 IP 주소를 2번 입력합니다.

다음 CLI 명령은 새 RDS for Db2 DB 인스턴스를 생성하여 자체 관리형 AD 도메인에 가입시킵니다.

Linux, macOS, Unix의 경우:

```
aws rds create-db-instance \
    --db-instance-identifier {{my-DB-instance}} \
    --db-instance-class db.m6i.large \
    --allocated-storage 50 \
    --engine db2-se \
    --engine-version 11.5 \
    --master-username {{my-master-username}} \
    --master-user-password {{my-master-password}} \
    --domain-fqdn {{my_AD_domain.my_AD.my_domain}} \
    --domain-ou {{OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain}} \
    --domain-auth-secret-arn "arn:aws:secretsmanager:{{region}}:{{account-number}}:secret:{{my-AD-test-secret-123456}}" \
    --domain-dns-ips "{{10.11.12.13}}" "{{10.11.12.14}}"
```

Windows의 경우:

```
aws rds create-db-instance ^
    --db-instance-identifier {{my-DB-instance}} ^
    --db-instance-class db.m6i.large ^
    --allocated-storage 50 ^
    --engine db2-se ^
    --engine-version 11.5 ^
    --master-username {{my-master-username}} ^
    --master-user-password {{my-master-password}} ^
    --domain-fqdn {{my_AD_domain.my_AD.my_domain}} ^
    --domain-ou {{OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain}} ^
    --domain-auth-secret-arn "arn:aws:secretsmanager:{{region}}:{{account-number}}:secret:{{my-AD-test-secret-123456}}" ^
    --domain-dns-ips "{{10.11.12.13}}" "{{10.11.12.14}}"
```