将 Linux EC2 实例无缝加入您的 AD Connector 目录 - AWS Directory Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

将 Linux EC2 实例无缝加入您的 AD Connector 目录

此过程无缝地将 Linux EC2 实例联接到您的 AD Connector 目录。

支持以下 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 和 Red Hat Enterprise Linux 7 之前的分发版不支持无缝域加入功能。

Prerequisites

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

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

您可以通过 AD Connector 将 Linux 计算机无缝地加入到本地 Active Directory 域。为此,您必须创建具有创建计算机账户权限的用户账户,以便将计算机加入域。如果您愿意,可以使用您的 AD Connector 服务账户。或者,您可以使用任何其他具有足够权限的账户将计算机加入域。虽然 Domain Admins 或其他组的成员可能拥有足够的权限将计算机加入域,但我们不建议使用这些权限。作为最佳实践,我们建议您使用具有将计算机加入域所需的最小权限的服务账户。

要委派将计算机加入域所需的具有最低权限的账户,您可以运行以下 PowerShell 命令。您必须从安装了 安装 Active Directory 管理工具 的已加入域的 Windows 计算机运行这些命令。此外,您必须使用有权修改计算机 OU 或容器上的权限的账户。命令设置权限,以允许服务账户在域的默认计算机容器中创建计算机对象。PowerShell如果您更喜欢使用图形用户界面 (GUI),则可以使用向您的服务账户委派权限中所述的手动过程。

$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),则可以使用手动过程在向您的服务账户委派权限中介绍。

创建用于存储域服务账户的密钥

您可以使用 AWS Secrets Manager 存储域服务账户。

创建密钥并存储域服务账户信息

  1. 登录 AWS 管理控制台,并通过以下网址打开 AWS Secrets Manager 控制台:https://console.aws.amazon.com/secretsmanager/

  2. 选择存储新密钥

  3. 存储新密钥页面上,执行以下操作:

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

    2. 指定要存储在密钥中的键/值对下,执行以下操作:

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

        注意

        您必须完全按原样输入 awsSeamlessDomainUsername。确保没有任何前导或末尾空格。否则域加入将会失败。

      2. 选择添加行

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

        注意

        您必须完全按原样输入 awsSeamlessDomainPassword。确保没有任何前导或末尾空格。否则域加入将会失败。

      4. 选择加密密钥下,从菜单中选择 DefaultEncryptionKey。当您选择此选项时,Secrets Manager 始终会加密密钥,并免费向您提供该密钥。您也可以选择您自己创建的密钥。

      5. 选择 Next (下一步)

  4. 密钥名称下,按照以下格式输入包含您的目录 ID 的密钥名称:aws/directory-services/d-xxxxxxxxx/seamless-domain-join。此名称将用于检索应用程序中的密钥。

    注意

    您必须完全按原样输入 aws/directory-services/d-xxxxxxxxx/seamless-domain-join,但将 d-xxxxxxxxxxxx 替换为您的目录 ID。确保没有前导或末尾空格。否则域加入将会失败。

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

  6. 配置自动轮换部分,选择禁用自动轮换,然后选择下一步

  7. 检查设置,然后选择保存,以保存更改。Secrets Manager 控制台将返回到您账户中的密钥列表,该列表现已包含新的密钥。

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

创建所需的 IAM 策略和角色

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

创建 Secrets Manager IAM 读取策略

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

创建 Secrets Manager IAM 读取策略

  1. 以有权创建 IAM 策略的用户身份登录 AWS 管理控制台。然后,通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Policies

  3. 选择 Create policy

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

    注意

    确保将 Resource ARN 替换为您之前创建的密钥的实际 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. 完成后,选择查看策略验证 IAM 策略语法报告任何语法错误。

  6. 查看策略页面上,输入策略名称,如 SM-Secret-Linux-DJ-d-xxxxxxxxxx-Read。查看摘要部分,了解策略授予的权限。选择创建策略以保存更改。新策略将显示在托管策略列表中,并已可以附加到身份。

注意

建议您为每个密钥创建一个策略。这样做可以确保实例只能访问相应的密钥,最大限度地降低单个实例受损所造成的影响。

创建 LinuxEC2DomainJoin 角色

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

创建 LinuxEC2DomainJoin 角色

  1. 以有权创建 IAM 策略的用户身份登录 AWS 管理控制台。然后,通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Roles

  3. 在内容窗格中,选择创建策略

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

  5. 选择使用案例下,选择 EC2,然后选择下一步:权限

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

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

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

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

    注意

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

  7. 选择下一步: 标签

  8. (可选)添加一个或多个标签键值对,以组织、跟踪或控制对该角色的访问。然后选择 Next: Review

  9. 角色名称旁边,输入新角色的名称,如 LinuxEC2DomainJoin 或您喜欢的其他名称。

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

  11. 选择创建角色

无缝加入 Linux EC2 实例

由于您已配置了所有先决条件任务,因此可以使用以下过程无缝加入您的 Linux EC2 实例。

无缝加入您的 Linux EC2 实例

  1. 登录到 AWS 管理控制台,然后通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择 Launch Instance

  4. 步骤 1 页面上,选择适当的 Amazon 系统映像所对应的选择

    注意

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

  5. Step 2 (步骤 2) 页面上,选择合适的实例类型,然后选择 Next: Configure Instance Details (下一步: 配置实例详细信息)

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

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

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

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

    4. 对于 Domain join directory (域加入目录),从列表中选择您的域。

    5. 对于 IAM 角色,请选择您之前在先决条件部分步骤 2:创建 LinuxEC2DomainJoin 角色中创建的 IAM 角色。

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

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

  9. 步骤 7 页面上,选择启动,选择密钥对,然后选择启动实例

注意

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