将亚马逊 EC2 Linux 实例无缝加入共享的微软 Amazon 托管 AD - Amazon Directory Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将亚马逊 EC2 Linux 实例无缝加入共享的微软 Amazon 托管 AD

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

先决条件

您需要先完成以下操作,然后才能将 Amazon EC2 Linux 实例无缝加入共享的 Microsoft Amazon 托管 AD:

第 1 步:在账户 2 中创建 Linux EC2 DomainJoin 角色

在此步骤中,您将使用 IAM 控制台创建 IAM 角色,用于在登录时加入您的 EC2 Linux 实例的域名Account 2

创建 Linux EC2 DomainJoin 角色
  1. 使用 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在左侧导航窗格中的访问管理下,选择角色

  3. Roles(角色)页面上,选择 Create role(创建角色)。

  4. 选择受信任实体的类型 下,选择 Amazon 服务

  5. 在 “用例” 下,选择 EC2,然后选择 “下一步

  6. 对于筛选策略,执行以下操作:

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

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

    3. 添加这些策略后,选择创建角色

      注意

      AmazonSSMDirectoryServiceAccess提供将实例加入的权限 Active Directory 由... 管理 Amazon Directory Service。 AmazonSSMManagedInstanceCore提供了使用所需的最低权限 Amazon Systems Manager。有关创建具有这些权限的角色的更多信息,以及您可以分配给 IAM 角色的其他权限和策略的信息,请参阅《Amazon Systems Manager 用户指南》中的为 Systems Manager 配置所需的实例权限

  7. 角色名称字段中,输入新角色的名称,如 LinuxEC2DomainJoin 或您喜欢的其他名称。

  8. (可选)对于角色描述,请输入描述。

  9. (可选)步骤 3:添加标签下选择添加新标签以添加标签。标签键值对用于组织、跟踪或控制此角色的访问权限。

  10. 选择 Create role(创建角色)。

第 2 步:创建跨账户资源访问权限以共享 Amazon Secrets Manager 机密

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

要允许账户中的用户访问另一个账户中的 Amazon Secrets Manager 密钥,您必须在资源策略和身份策略中同时允许访问权限。这种类型的访问权限称为跨账户资源访问权限

这种类型的访问权限不同于授予 Secrets Manager 密钥所在账户中的身份访问权限。您还必须允许身份使用密钥加密的 Amazon Key Management Service(KMS)密钥。此权限是必要的,因为您不能使用 Amazon 托管密钥 (aws/secretsmanager) 进行跨账户访问。相反,您需要使用您创建的 KMS 密钥加密密钥,然后向其中附加密钥政策。要更改密钥的加密密钥,请参阅修改 Amazon Secrets Manager 密钥

注意

根据您使用的密钥 Amazon Secrets Manager,会收取与之相关的费用。有关当前完整定价列表,请参阅 Amazon Secrets Manager 定价。你可以使用 Secrets Manager 创建的来免费加密你的秘密。 Amazon 托管式密钥 aws/secretsmanager如果您创建自己的 KMS 密钥来加密您的密钥,则按当前 Amazon KMS 费率向您 Amazon 收费。有关更多信息,请参阅Amazon Key Management Service 定价

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

将资源策略附加到 Account 1 中的密钥
  1. 打开 Secrets Manager 控制台,网址为https://console.aws.amazon.com/secretsmanager/

  2. 从密钥列表中,选择您在先决条件期间创建的密钥

  3. 密钥的详细信息页面概述选项卡下,向下滚动到资源权限

  4. 选择编辑权限

    1. 在策略字段中输入以下策略。以下策略允许EC2DomainJoin中的 Linux Account 2 访问中的密钥Account 1。将 ARN 值替换为您在步骤 1 中创建的 LinuxEC2DomainJoin 角色 Account 2 的 ARN 值。要使用此策略,请参阅将权限策略附加到 Amazon Secrets Manager 密钥

      { { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account2:role/LinuxEC2DomainJoin" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
将语句添加到 Account 1 中 KMS 密钥的密钥政策中
  1. 打开 Secrets Manager 控制台,网址为https://console.aws.amazon.com/secretsmanager/

  2. 在左侧导航栏中,选择客户管理型密钥

  3. 客户管理型密钥页面上,选择您创建的密钥。

  4. 密钥详细信息页面上,导航到密钥政策,然后选择编辑

  5. 以下密钥政策语句允许 Account 2 中的 ApplicationRole 使用 Account 1 中的 KMS 密钥来解密 Account 1 中的密钥。要使用此语句,请将其添加到 KMS 密钥的密钥策略中。有关更多信息,请参阅更改密钥政策

    { { "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/ 打开 IAM 控制台。

  2. 在左侧导航窗格中的访问管理下,选择策略

  3. 选择 Create Policy (创建策略)。在策略编辑器中,选择 JSON

  4. 以下策略允许 Account 2 中的 ApplicationRole 访问 Account 1 中的密钥,并通过使用同样位于 Account 1 中的加密密钥来解密密钥值。您可以在 Secrets Manager 控制台的密钥详细信息页面的密钥 ARN 下方找到您的密钥 ARN。或者,您可以调用 describe-secret 以识别密钥的 ARN。将资源 ARN 替换为密钥 ARN 和 Account 1 的资源 ARN。要使用此策略,请参阅将权限策略附加到 Amazon Secrets Manager 密钥

    { { "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "SecretARN" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Describekey" ], "Resource": "arn:aws:kms:Region:Account1:key/Your_Encryption_Key" } ] }
  5. 选择下一步,然后选择保存更改

  6. Attach a resource policy to the secret in Account 1中查找并选择您在 Account 2 中创建的角色。

  7. 添加权限下,选择附加策略

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

第 3 步:无缝加入 Linux 实例

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

无缝加入 Linux 实例
  1. 登录 Amazon Web Services Management Console 并打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

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

  3. EC2 控制面板启动实例部分,选择启动实例

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

  5. (可选)选择 “添加其他标签” 以添加一个或多个标签键值对,以组织、跟踪或控制此 EC2 实例的访问权限。

  6. 应用程序和操作系统映像(Amazon 机器映像)部分中,选择您想要启动的 Linux AMI。

    注意

    使用的 AMI 必须具有 Amazon Systems Manager (SSM 代理)版本 2.3.1644.0 或更高版本。要通过从该 AMI 启动实例来检查 AMI 中已安装的 SSM Agent 版本,请参阅获取当前安装的 SSM Agent 版本。如果您需要升级 SSM 代理,请参阅在 Linux EC2 实例上安装和配置 SSM 代理。

    SSM 在将 Linux 实例加入时使用该aws:domainJoin插件 Active Directory 域。该插件将 Linux 实例的主机名更改为 EC2 AMAZ-XXXXXXX 格式。有关 aws:domainJoin 的更多信息,请参阅《Amazon Systems Manager 用户指南》中的 Amazon Systems Manager 命令文档插件参考

  7. 实例类型部分,从实例类型下拉列表中选择要使用的实例类型。

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

    重要

    这是您保存私有密钥文件的唯一机会。

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

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

    有关如何连接到互联网网关的更多信息,请参阅《Amazon VPC 用户指南》中的使用互联网网关连接到互联网

  11. 自动分配公有 IP 下,选择启用

    有关公有和私有 IP 地址的更多信息,请参阅亚马逊 EC2 用户指南中的亚马逊 EC2 实例 IP 地址

  12. 对于防火墙(安全组)设置,您可以使用默认设置或进行更改以满足您的需求。

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

  14. 选择高级详细信息部分,从域加入目录下拉列表中选择您的域。

    注意

    选择域加入目录后,您可能会看到:

    选择域加入目录时出现错误消息。您现有的 SSM 文档存在错误。

    如果 EC2 启动向导识别出具有意外属性的现有 SSM 文档,则会出现此错误。您可以执行以下操作之一:

    • 如果您之前编辑过 SSM 文档并且属性符合预期,请选择关闭并继续启动 EC2 实例,不做任何更改。

    • 选择“在此处删除现有 SSM 文档”链接以删除 SSM 文档。这将允许创建包含正确属性的 SSM 文档。SSM 文档将在您启动 EC2 实例时自动创建。

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

  16. 选择启动实例

注意

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