

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AD 인프라 생성
<a name="tutorials_05_multi-user-ad-step1"></a>

*자동* 탭을 선택하여 CloudFormation 빠른 생성 템플릿을 사용하여 Active Directory(AD) 인프라를 생성합니다.

수동** 탭을 선택하여 AD 인프라를 수동으로 생성합니다.

## 자동
<a name="tutorials_05_multi-user-ad-step1-automated"></a>

1.  AWS Management Console에 로그인합니다.

1. [CloudFormation 빠른 생성(리전 us-east-1)](https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/create/review?stackName=pcluster-ad&templateURL=https://us-east-1-aws-parallelcluster.s3.amazonaws.com/templates/1-click/ad-integration.yaml)을 열어 CloudFormation 콘솔에서 다음 리소스를 생성합니다.
   + VPC가 지정되지 않은 경우 서브넷 2개와 퍼블릭 액세스를 위한 라우팅이 있는 VPC.
   +  AWS Managed Microsoft AD.
   + 디렉터리를 관리하는 데 사용할 수 있는 AD에 조인된 Amazon EC2 인스턴스.

1. **빠른 스택 생성** 페이지 **파라미터** 섹션에서 다음 파라미터의 암호를 입력합니다.
   + **AdminPassword**
   + **ReadOnlyPassword**
   + **UserPassword**

   암호를 기록해 둡니다. 이 자습서 뒷부분에서 이 정보가 필요합니다.

1. **DomainName**에는 **corp.example.com**을 입력합니다.

1. **Keypair**에는 Amazon EC2 키 페어의 이름을 입력합니다.

1. 페이지 하단에서 각 액세스 기능이 필요함을 확인하는 확인란을 선택합니다.

1. **스택 생성**을 선택합니다.

1. CloudFormation 스택이 `CREATE_COMPLETE` 상태에 도달한 후 스택의 **출력** 탭을 선택합니다. 출력 리소스 이름과 ID는 이후 단계에서 사용해야 하므로 기록해 두세요. 출력은 클러스터를 생성하는 데 필요한 정보를 제공합니다.  
![\[AWS Management Console에서 생성된 스택 출력을 보여주는 다이어그램.\]](http://docs.aws.amazon.com/ko_kr/parallelcluster/latest/ug/images/ad-cfn.png)

1. [(선택 사항)AD 사용자 및 그룹 관리](tutorials_05_multi-user-ad-step2.md) 연습을 완료하려면 디렉터리 ID가 필요합니다. **리소스**를 선택하고 아래로 스크롤하여 디렉터리 ID를 기록해 둡니다.

1. [(선택 사항)AD 사용자 및 그룹 관리](tutorials_05_multi-user-ad-step2.md) 또는 [클러스터 생성](tutorials_05_multi-user-ad-step3.md)에서 계속하세요.

## 수동
<a name="tutorials_05_multi-user-ad-step1-manual"></a>

다양한 가용 영역 및 AWS Managed Microsoft AD에 있는 두 개의 서브넷으로 디렉터리 서비스용 VPC를 생성합니다.

### AD 생성
<a name="tutorials_05_multi-user-ad-step1-manual-ad"></a>

**참고**  
디렉터리 및 도메인 이름은 `corp.example.com`입니다. 짧은 이름은 `CORP`입니다.
스크립트에서 `Admin` 암호를 변경합니다.
Active Directory(AD)를 생성하는 데 최소 15분이 걸립니다.

다음 Python 스크립트를 사용하여 로컬에서 VPC, 서브넷 및 AD 리소스를 생성합니다 AWS 리전. 이 파일을 `ad.py`로 저장하고 실행하세요.

```
import boto3
import time
from pprint import pprint

vpc_name = "PclusterVPC"
ad_domain = "corp.example.com"
admin_password = "asdfASDF1234"

ec2 = boto3.client("ec2")
ds = boto3.client("ds")
region = boto3.Session().region_name

# Create the VPC, Subnets, IGW, Routes
vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
vpc_id = vpc["VpcId"]
time.sleep(30)
ec2.create_tags(Resources=[vpc_id], Tags=[{"Key": "Name", "Value": vpc_name}])
subnet1 = ec2.create_subnet(VpcId=vpc_id, CidrBlock="10.0.0.0/17", AvailabilityZone=f"{region}a")["Subnet"]
subnet1_id = subnet1["SubnetId"]
time.sleep(30)
ec2.create_tags(Resources=[subnet1_id], Tags=[{"Key": "Name", "Value": f"{vpc_name}/subnet1"}])
ec2.modify_subnet_attribute(SubnetId=subnet1_id, MapPublicIpOnLaunch={"Value": True})
subnet2 = ec2.create_subnet(VpcId=vpc_id, CidrBlock="10.0.128.0/17", AvailabilityZone=f"{region}b")["Subnet"]
subnet2_id = subnet2["SubnetId"]
time.sleep(30)
ec2.create_tags(Resources=[subnet2_id], Tags=[{"Key": "Name", "Value": f"{vpc_name}/subnet2"}])
ec2.modify_subnet_attribute(SubnetId=subnet2_id, MapPublicIpOnLaunch={"Value": True})
igw = ec2.create_internet_gateway()["InternetGateway"]
ec2.attach_internet_gateway(InternetGatewayId=igw["InternetGatewayId"], VpcId=vpc_id)
route_table = ec2.describe_route_tables(Filters=[{"Name": "vpc-id", "Values": [vpc_id]}])["RouteTables"][0]
ec2.create_route(RouteTableId=route_table["RouteTableId"], DestinationCidrBlock="0.0.0.0/0", GatewayId=igw["InternetGatewayId"])
ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsSupport={"Value": True})
ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsHostnames={"Value": True})

# Create the Active Directory
ad = ds.create_microsoft_ad(
    Name=ad_domain,
    Password=admin_password,
    Description="ParallelCluster AD",
    VpcSettings={"VpcId": vpc_id, "SubnetIds": [subnet1_id, subnet2_id]},
    Edition="Standard",
)
directory_id = ad["DirectoryId"]

# Wait for completion
print("Waiting for the directory to be created...")
directories = ds.describe_directories(DirectoryIds=[directory_id])["DirectoryDescriptions"]
directory = directories[0]
while directory["Stage"] in {"Requested", "Creating"}:
    time.sleep(3)
    directories = ds.describe_directories(DirectoryIds=[directory_id])["DirectoryDescriptions"]
    directory = directories[0]
    
dns_ip_addrs = directory["DnsIpAddrs"]

pprint({"directory_id": directory_id,
        "vpc_id": vpc_id,
        "subnet1_id": subnet1_id,
        "subnet2_id": subnet2_id,
        "dns_ip_addrs": dns_ip_addrs})
```

다음은 Python 스크립트의 출력 예제입니다.

```
{
  "directory_id": "d-abcdef01234567890",
  "dns_ip_addrs": ["192.0.2.254", "203.0.113.237"],
  "subnet1_id": "subnet-021345abcdef6789",
  "subnet2_id": "subnet-1234567890abcdef0",
  "vpc_id": "vpc-021345abcdef6789"
}
```

출력 리소스 이름 및 ID를 적어 두세요. 이후 단계에서 사용하게 됩니다.

스크립트가 완료되면 다음 단계를 계속합니다.

### Amazon EC2 인스턴스 생성
<a name="tutorials_05_multi-user-ad-step1-manual-instance"></a>

------
#### [ New Amazon EC2 console ]

1.  AWS Management Console에 로그인합니다.

1. 첨부된 4단계에 나열된 정책에 해당하는 역할이 없는 경우 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 여세요. 그렇지 않으면 5단계로 건너뛰세요.

1. `ResetUserPassword` 정책을 생성하여 빨간색으로 강조 표시된 콘텐츠를 AD를 생성하기 위해 실행한 스크립트 출력의 AWS 리전 ID, 계정 ID 및 디렉터리 ID로 바꿉니다.

   ResetUserPassword

   ```
   {
          "Statement": [
           {
               "Action": [
                   "ds:ResetUserPassword"
               ],
               "Resource": "arn:aws:ds:region-id:123456789012:directory/d-abcdef01234567890",
               "Effect": "Allow"
           }
       ]
   }
   ```

1. 다음과 같은 정책을 연결하여 IAM 역할을 생성합니다.
   + AWS 관리형 정책 [AmazonSSMManagedInstanceCore](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore)
   + AWS 관리형 정책 [AmazonSSMDirectoryServiceAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess)
   + ResetUserPassword 정책

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. **Amazon EC2 대시보드**에서 **인스턴스 시작**을 선택하세요.

1. **애플리케이션 및 OS 이미지**에서 최신 Amazon Linux 2 AMI를 선택합니다.

1. **인스턴스 유형**에서 t2.micro를 선택합니다.

1. **키 페어(로그인)**에서 키 페어를 선택합니다.

1. **네트워크 설정**에서 **편집**을 선택합니다.

1. **VPC**에서 디렉터리 VPC를 선택합니다.

1. 아래로 스크롤하여 **고급 세부 정보**를 선택합니다.

1. **고급 세부 정보**의 **도메인 가입 디렉터리**에서 **corp.example.com**을 선택합니다.

1. **IAM 인스턴스 프로파일**에서 1단계에서 생성한 역할 또는 4단계에서 나열된 정책이 연결된 역할을 선택합니다.

1. **요약**에서 **인스턴스 시작**을 선택합니다.

1. 인스턴스 ID(예: i-1234567890abcdef0)를 기록하고 인스턴스 시작이 완료될 때까지 기다립니다.

1. 인스턴스가 시작된 후 이어서 다음 단계를 수행합니다.

------
#### [ Old Amazon EC2 console ]

1.  AWS Management Console에 로그인합니다.

1. 첨부된 4단계에 나열된 정책에 해당하는 역할이 없는 경우 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 여세요. 그렇지 않으면 5단계로 건너뛰세요.

1. `ResetUserPassword` 정책을 생성합니다. 빨간색으로 강조 표시된 콘텐츠를 Active Directory(AD)를 생성하기 위해 실행한 스크립트 출력의 AWS 리전 ID, AWS 계정 ID 및 디렉터리 ID로 바꿉니다.

   ResetUserPassword

   ```
   {
           "Statement": [
               {
                   "Action": [
                       "ds:ResetUserPassword"
                   ],
                   "Resource": "arn:aws:ds:region-id:123456789012:directory/d-abcdef01234567890",
                   "Effect": "Allow"
               }
           ]
        }
   ```

1. 다음과 같은 정책을 연결하여 IAM 역할을 생성합니다.
   + AWS 관리형 정책 [AmazonSSMManagedInstanceCore](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore)
   + AWS 관리형 정책 [AmazonSSMDirectoryServiceAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess)
   + ResetUserPassword 정책

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. **Amazon EC2 대시보드**에서 **인스턴스 시작**을 선택하세요.

1. **애플리케이션 및 OS 이미지**에서 최신 Amazon Linux 2 AMI를 선택합니다.

1. **인스턴스 유형**에서 t2.micro를 선택합니다.

1. **키 페어(로그인)**에서 키 페어를 선택합니다.

1. **네트워크 설정**에서 **편집**을 선택합니다.

1. **네트워크 설정**, **VPC**에서 디렉터리 VPC를 선택합니다.

1. 아래로 스크롤하여 **고급 세부 정보**를 선택합니다.

1. **고급 세부 정보**의 **도메인 가입 디렉터리**에서 **corp.example.com**을 선택합니다.

1. **고급 세부 정보**, **인스턴스 프로파일**에서 1단계에서 생성한 역할 또는 4단계에서 나열한 정책이 연결된 역할을 선택합니다.

1. **요약**에서 **인스턴스 시작**을 선택합니다.

1. 인스턴스 ID(예:i-1234567890abcdef0) 를 메모하고 인스턴스 시작이 완료될 때까지 기다립니다.

1. 인스턴스가 시작된 후 이어서 다음 단계를 수행합니다.

------

### 인스턴스를 AD에 조인합니다.
<a name="tutorials_05_multi-user-ad-step1-manual-join"></a>

1. 

**인스턴스에 연결하고 `admin`로서 AD Realm에 조인하세요.**

   인스턴스에 연결하고 다음 명령을 실행합니다.

   ```
   $ INSTANCE_ID="i-1234567890abcdef0"
   ```

   ```
   $ PUBLIC_IP=$(aws ec2 describe-instances \
   --instance-ids $INSTANCE_ID \
   --query "Reservations[0].Instances[0].PublicIpAddress" \
   --output text)
   ```

   ```
   $ ssh -i ~/.ssh/keys/keypair.pem ec2-user@$PUBLIC_IP
   ```

1. 

**필요한 소프트웨어를 설치하고 Realm에 조인하세요.**

   ```
   $ sudo yum -y install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python
   ```

1. 

**관리자 암호를 `admin` 암호로 바꿉니다.**

   ```
   $ ADMIN_PW="asdfASDF1234"
   ```

   ```
   $ echo $ADMIN_PW | sudo realm join -U Admin corp.example.com
   Password for Admin:
   ```

   위의 방법이 성공하면 Realm에 조인되어 다음 단계를 진행할 수 있습니다.

### AD에 사용자 추가
<a name="tutorials_05_multi-user-ad-step1-manual-join-add-users"></a>

1. 

**ReadOnlyUser 및 추가 사용자를 생성합니다.**

   이 단계에서는 이전 단계에서 설치한 [adcli](https://www.mankier.com/package/adcli) 및 [openldap-client](https://www.mankier.com/package/openldap-clients) 도구를 사용합니다.

   ```
   $ echo $ADMIN_PW | adcli create-user -x -U Admin --domain=corp.example.com --display-name=ReadOnlyUser ReadOnlyUser
   ```

   ```
   $ echo $ADMIN_PW | adcli create-user -x -U Admin --domain=corp.example.com --display-name=user000 user000
   ```

1. 사용자가 생성되었는지 확인합니다.****

   디렉터리 DNS IP 주소는 Python 스크립트의 출력입니다.

   ```
   $ DIRECTORY_IP="192.0.2.254"
   ```

   ```
   $ ldapsearch -x -h $DIRECTORY_IP -D Admin -w $ADMIN_PW -b "cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com"
   ```

   ```
   $ ldapsearch -x -h $DIRECTORY_IP -D Admin -w $ADMIN_PW -b "cn=user000,ou=Users,ou=CORP,dc=corp,dc=example,dc=com"
   ```

   기본적으로 `ad-cli`를 사용하여 사용자를 생성하면 해당 사용자는 비활성화됩니다.

1. 

**로컬 시스템에서 사용자 암호 재설정 및 활성화:******

   Amazon EC2 인스턴스에서 로그아웃합니다.
**참고**  
`ro-p@ssw0rd`는에서 `ReadOnlyUser`가져온의 암호입니다 AWS Secrets Manager.
`user-p@ssw0rd`는 클러스터에 연결(`ssh`)할 때 제공되는 클러스터 사용자의 암호입니다.

   `directory-id`는 Python 스크립트의 출력입니다.

   ```
   $ DIRECTORY_ID="d-abcdef01234567890"
   ```

   ```
   $ aws ds reset-user-password \
   --directory-id $DIRECTORY_ID \
   --user-name "ReadOnlyUser" \
   --new-password "ro-p@ssw0rd" \
   --region "region-id"
   ```

   ```
   $ aws ds reset-user-password \
   --directory-id $DIRECTORY_ID \
   --user-name "user000" \
   --new-password "user-p@ssw0rd" \
   --region "region-id"
   ```

1. Secrets Manager 보안 암호에 암호를 추가합니다.****

   이제를 생성하고 암호를 `ReadOnlyUser` 설정했으므로가 로그인을 검증하는 데 AWS ParallelCluster 사용하는 보안 암호에 저장합니다.

   Secrets Manager를 사용하여 `ReadOnlyUser`의 암호를 값으로 보관할 새 보안 암호를 생성합니다. 보안 암호 값 형식은 JSON 형식이 아닌 일반 텍스트만 사용해야 합니다. 향후 단계를 위해 보안 암호 ARN을 기록해 두세요.

   ```
   $ aws secretsmanager create-secret --name "ADSecretPassword" \
   --region region_id \
   --secret-string "ro-p@ssw0rd" \
   --query ARN \
   --output text
   arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234
   ```

### 인증서 검증(권장)이 포함된 LDAPS 설정
<a name="tutorials_05_multi-user-ad-step1-manual-ldaps"></a>

리소스 ID를 기록해 두세요. 이후 단계에서 사용하게 됩니다.

1. 

**로컬에서 도메인 인증서를 생성합니다.**

   ```
   $ PRIVATE_KEY="corp-example-com.key"
   CERTIFICATE="corp-example-com.crt"
   printf ".\n.\n.\n.\n.\ncorp.example.com\n.\n" | openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout $PRIVATE_KEY -days 365 -out $CERTIFICATE
   ```

1. 

**인증서를 Secrets Manager에 저장하여 나중에 클러스터 내에서 검색할 수 있도록 합니다.**

   ```
   $ aws secretsmanager create-secret --name example-cert \
     --secret-string file://$CERTIFICATE \
     --region region-id
   {
     "ARN": "arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-123abc",
     "Name": "example-cert",
     "VersionId": "14866070-092a-4d5a-bcdd-9219d0566b9c"
   }
   ```

1. Amazon EC2 인스턴스를 AD 도메인에 조인하기 위해 생성한 IAM 역할에 다음 정책을 추가합니다.

   `PutDomainCertificateSecrets`

   ```
   {
       "Statement": [
           {
               "Action": [
                   "secretsmanager:PutSecretValue"
               ],
               "Resource": [
                   "arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-123abc"
               ],
               "Effect": "Allow"
           }
       ]
   }
   ```

1. 

**인증서를 AWS Certificate Manager (ACM)로 가져옵니다.**

   ```
   $ aws acm import-certificate --certificate fileb://$CERTIFICATE \
     --private-key fileb://$PRIVATE_KEY \
     --region region-id
   {
     "CertificateArn": "arn:aws:acm:region-id:123456789012:certificate/343db133-490f-4077-b8d4-3da5bfd89e72"
   }
   ```

1. 

**Active Directory 엔드포인트 앞에 배치되는 로드 밸런서를 생성합니다.**

   ```
   $ aws elbv2 create-load-balancer --name CorpExampleCom-NLB \
     --type network \
     --scheme internal \
     --subnets subnet-1234567890abcdef0 subnet-021345abcdef6789 \
     --region region-id
   {
     "LoadBalancers": [
       {
         "LoadBalancerArn": "arn:aws:elasticloadbalancing:region-id:123456789012:loadbalancer/net/CorpExampleCom-NLB/3afe296bf4ba80d4",
         "DNSName": "CorpExampleCom-NLB-3afe296bf4ba80d4.elb.region-id.amazonaws.com",
         "CanonicalHostedZoneId": "Z2IFOLAFXWLO4F",
         "CreatedTime": "2022-05-05T12:56:55.988000+00:00",
         "LoadBalancerName": "CorpExampleCom-NLB",
         "Scheme": "internal",
         "VpcId": "vpc-021345abcdef6789",
         "State": {
           "Code": "provisioning"
          },
          "Type": "network",
          "AvailabilityZones": [
            {
              "ZoneName": "region-idb",
              "SubnetId": "subnet-021345abcdef6789",
              "LoadBalancerAddresses": []
            },
            {
              "ZoneName": "region-ida",
              "SubnetId": "subnet-1234567890abcdef0",
              "LoadBalancerAddresses": []
            }
          ],
          "IpAddressType": "ipv4"
       }   
     ]
   }
   ```

1. 

**Active Directory 엔드포인트를 대상으로 하는 대상 그룹을 만드세요.**

   ```
   $ aws elbv2 create-target-group --name CorpExampleCom-Targets --protocol TCP \
     --port 389 \
     --target-type ip \
     --vpc-id vpc-021345abcdef6789 \
     --region region-id
   {
     "TargetGroups": [
       {
         "TargetGroupArn": "arn:aws:elasticloadbalancing:region-id:123456789012:targetgroup/CorpExampleCom-Targets/44577c583b695e81",
         "TargetGroupName": "CorpExampleCom-Targets",
         "Protocol": "TCP",
         "Port": 389,
         "VpcId": "vpc-021345abcdef6789",
         "HealthCheckProtocol": "TCP",
         "HealthCheckPort": "traffic-port",
         "HealthCheckEnabled": true,
         "HealthCheckIntervalSeconds": 30,
         "HealthCheckTimeoutSeconds": 10,
         "HealthyThresholdCount": 3,
         "UnhealthyThresholdCount": 3,
         "TargetType": "ip",
         "IpAddressType": "ipv4"
       }
     ]
   }
   ```

1. 

**Active Directory(AD) 엔드포인트를 대상 그룹에 등록합니다.**

   ```
   $ aws elbv2 register-targets --target-group-arn arn:aws:elasticloadbalancing:region-id:123456789012:targetgroup/CorpExampleCom-Targets/44577c583b695e81 \
     --targets Id=192.0.2.254,Port=389 Id=203.0.113.237,Port=389 \
     --region region-id
   ```

1. 

**인증서를 사용하여 LB 리스너를 생성합니다.**

   ```
   $ aws elbv2 create-listener --load-balancer-arn arn:aws:elasticloadbalancing:region-id:123456789012:loadbalancer/net/CorpExampleCom-NLB/3afe296bf4ba80d4 \
     --protocol TLS \
     --port 636 \
     --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region-id:123456789012:targetgroup/CorpExampleCom-Targets/44577c583b695e81 \
     --ssl-policy ELBSecurityPolicy-TLS-1-2-2017-01 \
     --certificates CertificateArn=arn:aws:acm:region-id:123456789012:certificate/343db133-490f-4077-b8d4-3da5bfd89e72 \
     --region region-id
     "Listeners": [
     {
       "ListenerArn": "arn:aws:elasticloadbalancing:region-id:123456789012:listener/net/CorpExampleCom-NLB/3afe296bf4ba80d4/a8f9d97318743d4b",
       "LoadBalancerArn": "arn:aws:elasticloadbalancing:region-id:123456789012:loadbalancer/net/CorpExampleCom-NLB/3afe296bf4ba80d4",
       "Port": 636,
       "Protocol": "TLS",
       "Certificates": [
         {
           "CertificateArn": "arn:aws:acm:region-id:123456789012:certificate/343db133-490f-4077-b8d4-3da5bfd89e72"
          }
        ],
        "SslPolicy": "ELBSecurityPolicy-TLS-1-2-2017-01",
        "DefaultActions": [
          {
            "Type": "forward",
            "TargetGroupArn": "arn:aws:elasticloadbalancing:region-id:123456789012:targetgroup/CorpExampleCom-Targets/44577c583b695e81",
            "ForwardConfig": {
              "TargetGroups": [
                {
                   "TargetGroupArn": "arn:aws:elasticloadbalancing:region-id:123456789012:targetgroup/CorpExampleCom-Targets/44577c583b695e81"
                 }
               ]
             }
           }
         ]
       }
     ]
   }
   ```

1. 

**클러스터 VPC 내에서 도메인을 검색할 수 있도록 호스팅 영역을 생성합니다.**

   ```
   $ aws route53 create-hosted-zone --name corp.example.com \
     --vpc VPCRegion=region-id,VPCId=vpc-021345abcdef6789 \
     --caller-reference "ParallelCluster AD Tutorial"
   {
     "Location": "https://route53.amazonaws.com/2013-04-01/hostedzone/Z09020002B5MZQNXMSJUB",
     "HostedZone": {
       "Id": "/hostedzone/Z09020002B5MZQNXMSJUB",
       "Name": "corp.example.com.",
       "CallerReference": "ParallelCluster AD Tutorial",
       "Config": {
            "PrivateZone": true
       },
       "ResourceRecordSetCount": 2
     },
     "ChangeInfo": {
       "Id": "/change/C05533343BF3IKSORW1TQ",
       "Status": "PENDING",
       "SubmittedAt": "2022-05-05T13:21:53.863000+00:00"
     },
     "VPC": {
       "VPCRegion": "region-id",
       "VPCId": "vpc-021345abcdef6789"
     }
   }
   ```

1. 

**다음 콘텐츠가 포함된 `recordset-change.json`라는 이름의 파일을 추가합니다. `HostedZoneId`는 로드 밸런서의 표준 호스팅 영역 ID입니다.**

   ```
   {
     "Changes": [
       {
         "Action": "CREATE",
         "ResourceRecordSet": {
           "Name": "corp.example.com",
           "Type": "A",
           "Region": "region-id",
           "SetIdentifier": "example-active-directory",
           "AliasTarget": {
             "HostedZoneId": "Z2IFOLAFXWLO4F",
             "DNSName": "CorpExampleCom-NLB-3afe296bf4ba80d4.elb.region-id.amazonaws.com",
             "EvaluateTargetHealth": true
           }
         }
       }
     ]
   }
   ```

1. 

**이번에는 호스팅 영역 ID를 사용하여 레코드세트 변경 내용을 호스팅 영역에 제출합니다.**

   ```
   $ aws route53 change-resource-record-sets --hosted-zone-id Z09020002B5MZQNXMSJUB \
     --change-batch file://recordset-change.json
   {
     "ChangeInfo": {
       "Id": "/change/C0137926I56R3GC7XW2Y",
       "Status": "PENDING",
       "SubmittedAt": "2022-05-05T13:40:36.553000+00:00"
     }
   }
   ```

1. 

**다음 콘텐츠가 포함된 정책 문서 `policy.json`을 생성합니다.**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "secretsmanager:GetSecretValue"
               ],
               "Resource": [
                   "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-cert-abc123"
               ],
               "Effect": "Allow"
           }
       ]
   }
   ```

------

1. 

**다음 콘텐츠가 포함된 `policy.json`라는 정책 문서를 생성합니다.**

   ```
   $ aws iam create-policy --policy-name ReadCertExample \
     --policy-document file://policy.json
   {
     "Policy": {
       "PolicyName": "ReadCertExample",
       "PolicyId": "ANPAUUXUVBC42VZSI4LDY",
       "Arn": "arn:aws:iam::123456789012:policy/ReadCertExample-efg456",
       "Path": "/",
       "DefaultVersionId": "v1",
       "AttachmentCount": 0,
       "PermissionsBoundaryUsageCount": 0,
       "IsAttachable": true,
       "CreateDate": "2022-05-05T13:42:18+00:00",
       "UpdateDate": "2022-05-05T13:42:18+00:00"
     }
   }
   ```

1. [(선택 사항)AD 사용자 및 그룹 관리](tutorials_05_multi-user-ad-step2.md) 또는 [클러스터 생성](tutorials_05_multi-user-ad-step3.md)의 단계를 계속 따르세요.