

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建 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 管理控制台。

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 和公有访问路由（如果未指定 VPC）。
   + 一个 AWS Managed Microsoft AD。
   + 已加入 AD 并可用于管理目录的 Amazon EC2 实例。

1. 在**快速创建堆栈**页面的**参数**部分，输入以下参数的密码：
   + **AdminPassword**
   + **ReadOnlyPassword**
   + **UserPassword**

   记下这些密码。本教程后面将会用到这些密码。

1. 对于 **DomainName**，输入 **corp.example.com**。

1. 在**密钥对**中，输入 Amazon EC2 密钥对的名称。

1. 在页面底部选中各个框以确认各项访问功能。

1. 选择**创建堆栈**。

1.  CloudFormation 堆栈达到`CREATE_COMPLETE`状态后，选择堆栈的 “**输出**” 选项卡。记下输出资源名称， IDs 因为您需要在以后的步骤中使用它们。输出提供了创建集群所需的信息。  
![\[显示在 AWS 管理控制台中创建的堆栈输出的示意图。\]](http://docs.aws.amazon.com/zh_cn/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>

为目录服务创建在不同可用区中具有两个子网的 VPC 以及 AWS Managed Microsoft AD。

### 创建 AD
<a name="tutorials_05_multi-user-ad-step1-manual-ad"></a>

**注意**  
目录和域名是 `corp.example.com`。短名称是 `CORP`。
在脚本中更改 `Admin` 密码。
创建 Active Directory (AD) 至少需要 15 分钟。

使用以下 Python 脚本在您的本地 AWS 区域创建 VPC、子网和 AD 资源。将此文件另存为 `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"
}
```

记下输出资源名称和 IDs。您将在后面的步骤中用到它们。

脚本完成后，继续执行下一步。

### 创建 Amazon EC2 实例
<a name="tutorials_05_multi-user-ad-step1-manual-instance"></a>

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

1. 登录到 AWS 管理控制台。

1. 如果您没有附加步骤 4 中列出的策略的角色，请打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。否则，请跳至步骤 5。

1. 创建`ResetUserPassword`政策，将红色突出显示的内容替换为您的 AWS 区域 ID、账户 ID 和您为创建 AD 而运行的脚本输出中的目录 ID。

   ResetUserPassword

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

1. 创建附加了以下策略的 IAM 角色。
   + AWS 托管策略 [Amazon SSMManaged InstanceCore](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore)
   + AWS 托管策略 [Amazon SSMDirectory ServiceAccess](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. 在**应用程序和操作系统映像**中，选择最近的 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 管理控制台。

1. 如果您没有附加步骤 4 中列出的策略的角色，请打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。否则，请跳至步骤 5。

1. 创建 `ResetUserPassword` 策略。将红色突出显示的内容替换为您的 AWS 区域 ID、 AWS 账户 ID 和您为创建 Active Directory (AD) 而运行的脚本输出中的目录 ID。

   ResetUserPassword

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

1. 创建附加了以下策略的 IAM 角色。
   + AWS 托管策略 [Amazon SSMManaged InstanceCore](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore)
   + AWS 托管策略 [Amazon SSMDirectory ServiceAccess](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. 在**应用程序和操作系统映像**中，选择最近的 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 领域。**

   运行以下命令连接到实例。

   ```
   $ 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. 

**安装必要的软件并加入该领域。**

   ```
   $ 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:
   ```

   如果上述操作成功，您就加入到了该领域，并可以继续下一步操作。

### 向 AD 中添加用户
<a name="tutorials_05_multi-user-ad-step1-manual-join-add-users"></a>

1. 

**创建 ReadOnlyUser 和其他用户。**

   在此步骤中，您将使用在前一步中安装的 [adcli](https://www.mankier.com/package/adcli) 和 [openldap-clients](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>

记下资源 IDs。您将在后面的步骤中用到它们。

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) 中的步骤操作。