将 Linux EC2 实例无缝地联接到您的Amazon托管的 Microsoft AD 目录 - Amazon Directory Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将 Linux EC2 实例无缝地联接到您的Amazon托管的 Microsoft AD 目录

此过程无缝地将 Linux EC2 实例联接到Amazon托管的 Microsoft AD 目录。如果您需要跨多个域执行无缝域加入Amazon账户,您可选择启用账户目录共享.

支持以下 Linux 实例分发版和版本:

  • Amazon Linux AMI 2018.03.0

  • Amazon Linux 2(64 位 x86)

  • Red Hat Enterprise Linux 8 (HVM)(64 位 x86)

  • Ubuntu Server 18.04 LTS 和 Ubuntu Server 16.04 LTS

  • CentOS 7 x86-64

  • SUSE Linux Enterprise Server 15 SP1

注意

Ubuntu 14 和红帽企业 Linux 7 之前的发行版不支持无缝域加入功能。

先决条件

在设置无缝域加入到 Linux EC2 实例之前,您需要完成本节中的步骤。

选择您的无缝域加入服务帐户

你可以将 Linux 计算机无缝连接到Amazon托管的 Active Directory 域。为此,必须使用具有创建计算机帐户权限的用户帐户才能将计算机加入域。虽然成员Amazon委派管理员或者其他组可能拥有足够权限将计算机加入到域,我们建议不要使用这些权限。作为最佳做法,我们建议您使用具有将计算机加入到域所需的最低权限的服务帐户。

要将具有加入计算机所需的最低权限的帐户委派到域,可以运行以下 PowerShell 命令。你必须从加入域的 Windows 计算机上运行这些命令安装 Active Directory 管理工具安装。此外,您必须使用有权修改计算机 OU 或容器上的权限的帐户。PowerShell 命令设置权限,允许服务帐户在域的默认计算机容器中创建计算机对象。

$AccountName = 'awsSeamlessDomain' # DO NOT modify anything below this comment. # Getting Active Directory information. Import-Module 'ActiveDirectory' $Domain = Get-ADDomain -ErrorAction Stop $BaseDn = $Domain.DistinguishedName $ComputersContainer = $Domain.ComputersContainer $SchemaNamingContext = Get-ADRootDSE | Select-Object -ExpandProperty 'schemaNamingContext' [System.GUID]$ServicePrincipalNameGuid = (Get-ADObject -SearchBase $SchemaNamingContext -Filter { lDAPDisplayName -eq 'Computer' } -Properties 'schemaIDGUID').schemaIDGUID # Getting Service account Information. $AccountProperties = Get-ADUser -Identity $AccountName $AccountSid = New-Object -TypeName 'System.Security.Principal.SecurityIdentifier' $AccountProperties.SID.Value # Getting ACL settings for the Computers container. $ObjectAcl = Get-ACL -Path "AD:\$ComputersContainer" # Setting ACL allowing the service account the ability to create child computer objects in the Computers container. $AddAccessRule = New-Object -TypeName 'System.DirectoryServices.ActiveDirectoryAccessRule' $AccountSid, 'CreateChild', 'Allow', $ServicePrincipalNameGUID, 'All' $ObjectAcl.AddAccessRule($AddAccessRule) Set-ACL -AclObject $ObjectAcl -Path "AD:\$ComputersContainer"

如果您更喜欢使用图形用户界面 (GUI),您可以使用中描述的手动过程。向您的服务账户委派权限.

创建密码以存储域服务帐户

您可以使用Amazon Secrets Manager以存储域服务帐户。

创建密码并存储域服务帐户信息
  1. 登录到Amazon Web Services Management Console打开Amazon Secrets Manager在控制台https://console.aws.amazon.com/secretsmanager/.

  2. 选择 Store a new secret (存储新密钥)

  3. Store a new secret(存储新密钥)页面上,执行以下操作:

    1. Select secret type (选择密钥类型) 下,选择 Other type of secrets (其他密钥类型)

    2. UNDER在 secret (指定要存储在密钥中的键-值对) 下中,执行以下操作:

      1. 在第一个框中,输入awsSeamlessDomainUsername. 在同一行上,在下一个框中,输入您的服务帐户的用户名。例如,如果您之前使用 PowerShell 命令,则服务帐户名称将为awsSeamlessDomain.

        注意

        你必须输入awsSeamlessDomainUsername完全如此。确保没有任何前导或结束空格。否则,域加入将失败。

      2. 选择添加行.

      3. 在新行上,在第一个框中,输入awsSeamlessDomainPassword. 在同一行的下一个框中,输入服务帐号的密码。

        注意

        你必须输入awsSeamlessDomainPassword完全如此。确保没有任何前导或结束空格。否则,域加入将失败。

      4. UNDER选择加密密钥,选择DefaultenCryptionKey从菜单中。当您选择此选项时,Secret Secrets Manager 始终会对密码进行加密,并免费提供给您。你也可以选择自己创建的密钥。

      5. 选择 Next (下一步)

  4. UNDER密钥名称中,使用以下格式输入包含目录 ID 的密钥名称:

    aws/directory-services/d-xxxxxxxxx/seamless-domain-join

    这将用于检索应用程序中的秘密。

    注意

    你必须输入aws/directory-services/d-xxxxxxxxx/seamless-domain-join完全一样但是替换d-xxxxxxxxxxxx使用目录 ID。确保没有前导空格或结束空格。否则,域加入将失败。

  5. 将其他所有内容设置为默认值,然后选择下一步.

  6. UNDER配置自动轮换,选择禁用自动旋转选择,然后选择下一步.

  7. 查看设置,然后选择存储保存您的更改。Secrets Manager 控制台将返回您的账户中的密钥列表,并且在列表中现在包含您的新密钥。

  8. 从列表中选择你新创建的秘密名称,然后记下键 ARN值。您需要在下一节中使用该名称。

创建所需的 IAM 策略和角色

使用以下先决条件步骤创建自定义策略,允许对您的 Secret Secrets Manager 无缝域加入密钥(您之前创建的)进行只读访问,并创建新的 LinuxEC2DomainJoin IAM 角色。

创建秘 Secrets Manager IAM 读取策略

您可以使用 IAM 控制台创建一个策略,授予对 Secret Secrets Manager 钥的只读访问权限。

创建秘 Secrets Manager IAM 读取策略
  1. 登录到Amazon Web Services Management Console作为有权创建 IAM 策略的用户。然后在以下网址打开 IAM 控制台https://console.aws.amazon.com/iam/.

  2. 在导航窗格中,选择 Policies (策略)

  3. 选择创建策略

  4. 选择 JSON 选项卡,然后复制以下 JSON 策略文档中的文本。然后将其粘贴到JSON文本框。

    注意

    确保你更换ResourceARN 与您之前创建的密钥的实际 ARN 相同。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:############:secret:aws/directory-service/d-xxxxxxxxxx/seamless-domain-join-example" ] } ] }
  5. 完成后,选择 Review policy(查看策略)。策略验证程序将报告任何语法错误。有关更多信息,请参阅 。验证 IAM 策略.

  6. 在存储库的审核策略页面中,输入策略名称,例如SM-Secret-Linux-DJ-d-xxxxxxxxxx-Read. 查看摘要部分以查看您的策略授予的权限。然后选择 。创建策略保存您的更改。新策略会显示在托管策略列表中,并且现在已准备好附加到身份。

注意

我们建议您为每个密码创建一个策略。这样做可以确保实例只能访问适当的机密,并最大限度地减少实例受到攻击时的影响。

创建 linuxEC2DOMAIN 加入角色

您可以使用 IAM 控制台创建用于域加入 Linux EC2 实例的角色。

创建 linuxEC2DomainJoin 角色
  1. 登录到Amazon Web Services Management Console作为有权创建 IAM 策略的用户。然后在以下网址打开 IAM 控制台https://console.aws.amazon.com/iam/.

  2. 在导航窗格中,选择 Roles(角色)。

  3. 在内容窗格中,选择创建角色.

  4. Select type of trusted entity (选择受信任实体的类型)下,选择 Amazon service (Amazon 服务)

  5. UNDER选择使用案例选择EC2选择,然后选择后续:Permissions (下一步:权限)

  6. 适用于筛选策略中,执行以下操作:

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

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

    3. EnterSM-Secret-Linux-DJ-d-xxxxxxxxxx-Read(或者您在上一过程中创建的策略名称)。然后在列表中选中该项目的复选框。

    注意

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

  7. 选择 Next:标签

  8. (可选)添加一个或多个标签键/值对以组织、跟踪或控制该角色的访问。接下来,选择 Next (下一步)审核

  9. 在旁边Role name (角色名称),为新角色输入名称,例如LinuxEC2DomainJoin或者你喜欢的另一个名字。

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

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

无缝地加入 Linux EC2 实例

现在您已经配置了所有必备任务,可以使用以下过程无缝加入 Linux EC2 实例。

无缝地加入 Linux EC2 实例
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择 Launch Instance(启动实例)

  4. 在存储库的步骤 1选择页面,选择Select获取合适的 Amazon 系统映像 (AMI)。

    注意

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

  5. 在存储库的步骤 2页面上,选择合适的实例类型,然后选择后续:配置实例详细信息.

  6. 在存储库的步骤 3页面上,执行以下操作,然后选择:后续:Add Storage (下一步: 添加存储)

    1. 对于 Network,选择在其中创建了您的目录的 VPC。

    2. 适用于子网,在 VPC 中选择一个公有子网。选择的子网必须将所有外部流量都路由到 Internet 网关。否则将无法远程连接到实例。

    3. 对于 Auto-assign Public IP (自动分配公有 IP),选择 Enable (启用)。有关公有 IP 地址的更多信息,请参阅。Amazon EC2 实例 IP 寻址中的适用于 Windows 实例的 Amazon EC2 用户指南.

    4. 适用于域加入目录中,从列表中选择您的域。

    5. 适用于IAM 角色(以上) 选择您之前在先决条件部分创建的 IAM 角色步骤 2: 创建 linuxEC2DOMAIN 加入角色.

  7. 在两个上步骤 4步骤 5页面,保留默认设置或根据需要进行更改。然后选择 。下一步在每个上。

  8. 在存储库的步骤 6页面上,选择已配置为允许从您的网络远程访问实例的安全组。然后选择查看和启动

  9. 在存储库的步骤 7选择页面,选择启动,选择 key pair,然后选择启动实例.

注意

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