

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

# 将亚马逊 EC2 Linux 实例无缝加入共享的 Amazon 托管微软 AD
<a name="seamlessly_join_linux_to_shared_MAD"></a>

在此过程中，将 Amazon EC2 Linux 实例无缝加入共享的 Amazon Managed Microsoft AD 为此，您需要在要启动 EC2 Linux 实例的账户的 EC2 实例角色中创建 IA Amazon Secrets Manager M 读取策略。该账户在此过程中被称为 `Account 2`。此实例将使用从另一个账户（称为 `Account 1`）共享的 Amazon Managed Microsoft AD。

## 先决条件
<a name="seamlessly_join_linux_to_shared_MAD_prereqs"></a>

您需要先完成以下操作，然后才能将 Amazon EC2 Linux 实例无缝加入共享的 Amazon 托管 Microsoft AD：
+ [教程：共享您的 Amazon 托管 Microsoft AD 目录以实现无缝加入 EC2 域名](ms_ad_tutorial_directory_sharing.md)教程中的步骤 1 到 3。本教程将引导你设置网络和共享 Amazon 托管 Microsoft AD。
+ [将亚马逊 EC2 Linux 实例无缝加入你的 Amazon 托管微软 AD 活动目录](seamlessly_join_linux_instance.md)中概述了此过程。

## 步骤 1：在账户 2 中创建 Linux EC2 DomainJoin 角色
<a name="seamlessly_join_linux_to_shared_MAD_step_1"></a>

在此步骤中，您可以使用 IAM 控制台创建用于在登录 `Account 2` 时通过域加入 EC2 Linux 实例的 IAM 角色。

**创建 Linux EC2 DomainJoin 角色**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 打开 IAM 控制台。

1. 在左侧导航窗格中的**访问管理**下，选择**角色**。

1. 在 **Roles**（角色）页面上，选择 **Create role**（创建角色）。

1. 在 **选择受信任实体的类型** 下，选择 **Amazon 服务**。

1. 在**使用案例**下，选择 **EC2**，然后选择**下一步**。

1. 对于**筛选策略**，执行以下操作：

   1. 输入 `AmazonSSMManagedInstanceCore`。然后在列表中选择该项目的复选框。

   1. 输入 `AmazonSSMDirectoryServiceAccess`。然后在列表中选择该项目的复选框。

   1. 添加这些策略后，选择**创建角色**。
**注意**  
`AmazonSSMDirectoryServiceAccess`提供将实例加入由管理的 Active Directory 的权限 Amazon Directory Service。 `AmazonSSMManagedInstanceCore`提供了使用所需的最低权限 Amazon Systems Manager。有关创建具有这些权限的角色的更多信息，以及您可以分配给 IAM 角色的其他权限和策略的信息，请参阅《Amazon Systems Manager 用户指南》**中的[为 Systems Manager 配置所需的实例权限](https://docs.amazonaws.cn/systems-manager/latest/userguide/setup-instance-permissions.html)。

1. 在**角色名称**字段中，输入新角色的名称，如 `LinuxEC2DomainJoin` 或您喜欢的其他名称。

1. *（可选）*对于**角色描述**，请输入描述。

1. *（可选）*在**步骤 3：添加标签**下选择**添加新标签**以添加标签。标签键值对用于组织、跟踪或控制此角色的访问权限。

1. 选择**创建角色**。

## 步骤 2：创建跨账户资源访问权限以共享 Amazon Secrets Manager 机密
<a name="seamlessly_join_linux_to_shared_MAD_step_2"></a>

下一节是需要满足的其他要求，才能将 EC2 Linux 实例与共享的 Amazon 托管 Microsoft AD 无缝连接。这些要求包括创建资源策略并将其附加到相应的服务和资源。

要允许账户中的用户访问另一个账户中的 Amazon Secrets Manager 密钥，您必须在资源策略和身份策略中同时允许访问权限。这种类型的访问权限称为[跨账户资源访问权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

这种类型的访问权限不同于授予 Secrets Manager 密钥所在账户中的身份访问权限。您还必须允许身份使用密钥加密的 [Amazon Key Management Service](https://docs.amazonaws.cn/kms/latest/developerguide/overview.html)（KMS）密钥。此权限是必要的，因为您不能使用 Amazon 托管密钥 (`aws/secretsmanager`) 进行跨账户访问。相反，您需要使用您创建的 KMS 密钥加密密钥，然后向其中附加密钥策略。要更改密钥的加密密钥，请参阅[修改 Amazon Secrets Manager 密钥](https://docs.amazonaws.cn/secretsmanager/latest/userguide/manage_update-secret.html)。

**注意**  
根据您使用的密钥 Amazon Secrets Manager，会收取与之相关的费用。有关当前完整定价列表，请参阅 [Amazon Secrets Manager 定价](https://www.amazonaws.cn/secrets-manager/pricing/)。你可以使用 Secrets Manager 创建的来免费加密你的秘密。 Amazon 托管式密钥 `aws/secretsmanager`如果您创建自己的 KMS 密钥来加密您的密钥，则按当前 Amazon KMS 费率向您 Amazon 收费。有关更多信息，请参阅[Amazon Key Management Service 定价](https://www.amazonaws.cn/kms/pricing/)。

以下步骤允许您创建资源策略，使用户能够将 EC2 Linux 实例无缝加入共享的 Amazon 托管 Microsoft AD。

**将资源策略附加到 Account 1 中的密钥**

1. 打开 Secrets Manager 控制台，网址为[https://console.aws.amazon.com/secretsmanager/](https://console.amazonaws.cn/secretsmanager/)。

1. 从密钥列表中，选择您在[先决条件](#seamlessly_join_linux_to_shared_MAD_prereqs)期间创建的**密钥**。

1. 在**密钥的详细信息页面**的**概述**选项卡下，向下滚动到**资源权限**。

1. 选择**编辑权限**。

   1. 在策略字段中输入以下策略。以下策略允许EC2DomainJoin中的 **Linux** `Account 2` 访问中的密钥`Account 1`。将 ARN 值替换为您在[步骤 1](#seamlessly_join_linux_to_shared_MAD_step_1) 中创建的 `LinuxEC2DomainJoin` 角色 `Account 2` 的 ARN 值。要使用此策略，请参阅[将权限策略附加到 Amazon Secrets Manager 密钥](https://docs.amazonaws.cn/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)。

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

****  

     ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "AWS": "{{arn:aws:iam::123456789012:role/LinuxEC2DomainJoin}}"
           },
           "Action": "secretsmanager:GetSecretValue",
           "Resource": "*"
         }
       ]
     }
     ```

------

**将语句添加到 Account 1 中 KMS 密钥的密钥政策中**

1. 打开 Secrets Manager 控制台，网址为[https://console.aws.amazon.com/secretsmanager/](https://console.amazonaws.cn/secretsmanager/)。

1. 在左侧导航栏中，选择**客户管理型密钥**。

1. 在**客户管理型密钥**页面上，选择您创建的密钥。

1. 在**密钥详细信息**页面上，导航到**密钥政策**，然后选择**编辑**。

1. 以下密钥政策语句允许 `Account 2` 中的 `ApplicationRole` 使用 `Account 1` 中的 KMS 密钥来解密 `Account 1` 中的密钥。要使用此语句，请将其添加到 KMS 密钥的密钥策略中。有关更多信息，请参阅[更改密钥策略](https://docs.amazonaws.cn/kms/latest/developerguide/key-policy-modifying.html)。

   ```
   {
   {
     "Effect": "Allow",
     "Principal": {
       "AWS": "{{arn:aws:iam::Account2:role/ApplicationRole}}"
     },
     "Action": [
       "kms:Decrypt",
       "kms:DescribeKey"
     ],
     "Resource": "*"
   }
   ```

**为 Account 2 中的身份创建身份策略**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 打开 IAM 控制台。

1. 在左侧导航窗格中的**访问管理**下，选择**策略**。

1. 选择 **Create Policy (创建策略)**。在**策略编辑器**中，选择 **JSON**。

1. 以下策略允许 `Account 2` 中的 `ApplicationRole` 访问 `Account 1` 中的密钥，并通过使用同样位于 `Account 1` 中的加密密钥来解密密钥值。您可以在 Secrets Manager 控制台的**密钥详细信息**页面的**密钥 ARN** 下方找到您的密钥 ARN。或者，您可以调用 [describe-secret](https://docs.amazonaws.cn/cli/latest/reference/secretsmanager/describe-secret.html) 以识别密钥的 ARN。将资源 ARN 替换为密钥 ARN 和 `Account 1` 的资源 ARN。要使用此策略，请参阅[将权限策略附加到 Amazon Secrets Manager 密钥](https://docs.amazonaws.cn/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "secretsmanager:GetSecretValue",
         "Resource": "arn:aws:secretsmanager:{{us-east-1}}:{{111122223333{{:secret:}}secretName-AbCdEf}}"
       },
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt",
           "kms:Describekey"
         ],
         "Resource": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{Your_Encryption_Key}}"
       }
     ]
   }
   ```

------

1. 选择**下一步**，然后选择**保存更改**。

1. 在[Attach a resource policy to the secret in Account 1](#step1ResourcePolicy)中查找并选择您在 `Account 2` 中创建的角色。

1. 在**添加权限**下，选择**附加策略**。

1. 在搜索栏中，找到您在[Add a statement to the key policy for the KMS key in Account 1](#step2KeyPolicy)中创建的策略，并选择将该策略添加到角色的框。然后选择**添加权限**。

## 步骤 3：无缝加入 Linux 实例
<a name="seamlessly_join_linux_to_shared_MAD_prereqs_step_3"></a>

现在，您可以使用以下步骤将您的 EC2 Linux 实例无缝加入共享的 Amazon 托管 Microsoft AD。

**无缝加入 Linux 实例**

1. 登录 Amazon Web Services 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)。

1. 从导航栏的区域选择器中，选择与现有目录 Amazon Web Services 区域 相同的目录。

1. 在 **EC2 控制面板**的**启动实例**部分，选择**启动实例**。

1. 在**启动实例**页面的**名称和标签**部分下，输入您要用于 Linux EC2 实例的名称。

1.  *（可选）*选择**添加其他标签**，添加一个或多个标签键值对，以组织、跟踪或控制此 EC2 实例的访问权限。

1. 在**应用程序和操作系统映像（Amazon 机器映像）**部分中，选择您想要启动的 Linux AMI。
**注意**  
使用的 AMI 必须具有 Amazon Systems Manager （SSM 代理）版本 2.3.1644.0 或更高版本。要通过从该 AMI 启动实例来检查 AMI 中已安装的 SSM Agent 版本，请参阅[获取当前安装的 SSM Agent 版本](https://docs.amazonaws.cn/systems-manager/latest/userguide/ssm-agent-get-version.html)。如果您需要升级 SSM Agent，请参阅[在适用于 Linux 的 EC2 实例上安装和配置 SSM Agent](https://docs.amazonaws.cn/systems-manager/latest/userguide/sysman-install-ssm-agent.html)。  
SSM 在将 Linux 实例加入 Active Directory 域时使用 `aws:domainJoin` 插件。该插件将 Linux 实例的主机名更改为 EC2 AMAZ-{{XXXXXXX}} 格式。有关 `aws:domainJoin` 的更多信息，请参阅《Amazon Systems Manager 用户指南》**中的 [Amazon Systems Manager 命令文档插件参考](https://docs.amazonaws.cn//systems-manager/latest/userguide/documents-command-ssm-plugin-reference.html#aws-domainJoin)。

1. 在**实例类型**部分，从**实例类型**下拉列表中选择要使用的实例类型。

1. 在**密钥对（登录）**部分，您可以选择创建新密钥对，或从现有密钥对中进行选择。要创建新的密钥对，请选择**新建新密钥对**。输入密钥对的名称，然后为**密钥对类型**和**私钥文件格式**选择一个选项。要以可与 OpenSSH 一起使用的格式保存私钥，请选择 **pem**。要以可与 PuTTY 一起使用的格式保存私钥，请选择 **ppk**。选择**创建密钥对**。您的浏览器会自动下载私有密钥文件。将私有密钥文件保存在安全位置。
**重要**  
这是您保存私有密钥文件的唯一机会。

1. 在**启动实例**页面的**网络设置**部分下，选择**编辑**。从 **VPC – *必需***下拉列表中选择创建目录的 **VPC**。

1. 从**子网**下拉列表中选择 VPC 中的其中一个公有子网。选择的子网必须将所有外部流量都路由到互联网网关。否则将无法远程连接到实例。

   有关如何连接到互联网网关的更多信息，请参阅《Amazon VPC 用户指南》**中的[使用互联网网关连接到互联网](https://docs.amazonaws.cn//vpc/latest/userguide/VPC_Internet_Gateway.html)。

1. 在**自动分配公有 IP** 下，选择**启用**。

   有关公共和私有 IP 寻址的更多信息，请参阅《Amazon EC2 用户指南》**中的 [Amazon EC2 实例 IP 寻址](https://docs.amazonaws.cn/AWSEC2/latest/WindowsGuide/using-instance-addressing.html)。

1. 对于**防火墙（安全组）**设置，您可以使用默认设置或进行更改以满足您的需求。

1. 对于**配置存储**设置，您可以使用默认设置或进行更改以满足您的需求。

1. 选择**高级详细信息**部分，从**域加入目录**下拉列表中选择您的域。
**注意**  
选择域加入目录后，您可能会看到：  

![选择域加入目录时出现错误消息。您现有的 SSM 文档存在错误。](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/images/SSM-Error-Message.png)

当 EC2 启动向导识别到某个现有 SSM 文档包含意外属性时，会发生此错误。您可以执行以下操作之一：  
如果您之前编辑了 SSM 文档且属性为预期属性，请选择关闭并继续启动 EC2 实例，不做任何更改。
选择“在此处删除现有 SSM 文档”链接以删除 SSM 文档。这将允许创建包含正确属性的 SSM 文档。启动 EC2 实例时，将自动创建 SSM 文档。

1. 对于 **IAM 实例配置文件**，请选择您之前在先决条件部分**步骤 2：创建 Linux EC2 DomainJoin 角色中创建的 IAM 角色**。

1. 选择**启动实例**。

**注意**  
如果您要使用 SUSE Linux 进行无缝域加入，则需要重新启动才能进行身份验证。要从 Linux 终端重启 SUSE，请键入 **sudo reboot**。