本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Amazon EC2 Linux 執行個體無縫加入 AWS Managed Microsoft AD Active Directory
此程序會將 Amazon EC2 Linux 執行個體無縫加入您的 AWS Managed Microsoft AD Active Directory。若要完成此程序,您需要建立 AWS Secrets Manager 秘密,這可能會產生額外費用。如需詳細資訊,請參閱 AWS Secrets Manager 定價
如果您需要跨多個 AWS 帳戶執行無縫網域聯結,您可以選擇啟用目錄共用。
系統支援下列 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 和 8 之前的分佈不支援無縫網域聯結功能。
如需將 Linux 執行個體無縫加入 AWS Managed Microsoft AD Active Directory 的程序示範,請參閱下列 YouTube 影片。
先決條件
您必須先完成這些區段中的程序,才能設定無縫網域加入 EC2 Linux 執行個體。
無縫網域聯結的網路先決條件
若要無縫加入 EC2 Linux 執行個體的網域,您需要完成下列操作:
-
擁有 AWS Managed Microsoft AD。如需進一步了解,請參閱 建立 AWS Managed Microsoft AD。
-
您需要下列 IAM 許可才能無縫加入 EC2 Linux 執行個體:
-
擁有 AWS Managed Microsoft AD。如需進一步了解,請參閱 建立 AWS Managed Microsoft AD。
-
您需要下列 IAM 許可才能無縫加入 EC2 Windows執行個體:
-
具有下列 IAM 許可的 IAM 執行個體設定檔:
-
AmazonSSMManagedInstanceCore
-
AmazonSSMDirectoryServiceAccess
-
-
將 EC2 加入 AWS Managed Microsoft AD 的使用者無縫網域需要下列 IAM 許可:
-
AWS Directory Service 許可:
-
"ds:DescribeDirectories"
-
"ds:CreateComputer"
-
-
Amazon VPC 許可:
-
"ec2:DescribeVpcs"
-
"ec2:DescribeSubnets"
-
"ec2:DescribeNetworkInterfaces"
-
"ec2:CreateNetworkInterface"
-
"ec2:AttachNetworkInterface"
-
-
EC2 許可:
-
"ec2:DescribeInstances"
-
"ec2:DescribeImages"
-
"ec2:DescribeInstanceTypes"
-
"ec2:RunInstances"
-
"ec2:CreateTags"
-
-
AWS Systems Manager 許可:
-
"ssm:DescribeInstanceInformation"
-
"ssm:SendCommand"
-
"ssm:GetCommandInvocation"
-
"ssm:CreateBatchAssociation"
-
-
-
-
-
建立 AWS Managed Microsoft AD 時,會使用傳入和傳出規則建立安全群組。若要進一步了解這些規則和連接埠,請參閱使用 AWS Managed Microsoft AD 建立的內容。若要無縫加入 EC2 Linux 執行個體的網域,您要啟動執行個體的 VPC 應允許 AWS Managed Microsoft AD 安全群組傳入和傳出規則中允許的相同連接埠。
-
根據您的網路安全和防火牆設定,您可能需要允許額外的傳出流量。此流量適用於 HTTPS (連接埠 443) 到下列端點:
端點 角色 ec2messages.
region
.amazonaws.com使用 Session Manager 服務建立和刪除工作階段頻道。如需詳細資訊,請參閱 AWS Systems Manager 端點和配額。
ssm.
region
.amazonaws.com的端點 AWS Systems Manager Session Manager。如需詳細資訊,請參閱 AWS Systems Manager 端點和配額。
ssmmessages.
region
.amazonaws.com使用 Session Manager 服務建立和刪除工作階段頻道。如需詳細資訊,請參閱 AWS Systems Manager 端點和配額。
ds.
region
.amazonaws.com的端點 AWS Directory Service。如需詳細資訊,請參閱的區域可用性 AWS Directory Service。
secretsmanager.
region
.amazonaws.com的端點 AWS Secrets Manager。如需詳細資訊,請參閱 AWS Secrets Manager 端點和配額。
-
-
我們建議您使用 DNS 伺服器來解析 AWS Managed Microsoft AD 網域名稱。若要這樣做,您可以建立 DHCP 選項集。如需更多資訊,請參閱建立或變更 AWS Managed Microsoft AD 的 DHCP 選項集。
-
如果您選擇不建立 DHCP 選項集,則您的 DNS 伺服器將是靜態的,並由 AWS Managed Microsoft AD 設定為 。
-
選取無縫域加入服務帳戶
您可以將 Linux 電腦無縫加入 AWS Managed Microsoft AD Active Directory網域。為此,您必須使用一個具有建立電腦帳戶許可的使用者帳戶,才能將機器加入域。儘管 AWS 委派管理員或其他群組的成員可能有足夠的權限將電腦加入域,但我們不建議這樣做。我們建議您使用具有將電腦加入域所需的最低權限的服務帳戶,這才是最佳做法。
若要委派具有所需最低權限的帳戶將電腦加入域,您可以執行下列 PowerShell 命令。您必須從已加入域並安裝了 安裝 AWS Managed Microsoft AD 的 Active Directory 管理工具 的 Windows 電腦執行這些命令。此外,您必須使用有權修改電腦 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),您可以使用 委派權限給您的服務帳戶 中所述的手動流程。
建立儲存域服務帳戶的機密
您可以使用 AWS Secrets Manager 來存放網域服務帳戶。如需詳細資訊,請參閱建立 AWS Secrets Manager 秘密。
注意
Secrets Manager 需支付相關費用。如需詳細資訊,請參閱AWS Secrets Manager 《 使用者指南》中的定價。
建立機密並儲存域服務帳戶資訊
-
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/secretsmanager/
開啟 AWS Secrets Manager 主控台。 -
選擇 Store a new secret (存放新機密)。
-
在 Store a new secret (儲存新機密) 頁面中,執行下列動作:
-
在秘密類型下,選擇其他類型的秘密。
-
在鍵/值對下,執行下列動作:
-
在第一個方塊中,輸入
awsSeamlessDomainUsername
。在相同資料列的下一個方塊中,輸入服務帳戶的使用者名稱。例如,如果您之前使用的是 PowerShell 命令,則服務帳戶名稱將為awsSeamlessDomain
。注意
您必須輸入完全正確的
awsSeamlessDomainUsername
。確認頭尾沒有任何空格。否則域加入將會失敗。 -
選擇新增列。
-
在新的一列的第一個方塊中,輸入
awsSeamlessDomainPassword
。在同一列的下一個方塊中,輸入服務帳戶的密碼。注意
您必須輸入完全正確的
awsSeamlessDomainPassword
。確認頭尾沒有任何空格。否則域加入將會失敗。 -
在加密金鑰下,保留預設值
aws/secretsmanager
。 選擇此選項時, AWS Secrets Manager 一律會加密秘密。您也可以選擇您建立的金鑰。 -
選擇 Next (下一步)。
-
-
-
在秘密名稱下,使用下列格式輸入包含目錄 ID 的秘密名稱,將
d-xxxxxxxxx
取代為您的目錄 ID:aws/directory-services/
d-xxxxxxxxx
/seamless-domain-join這在應用程式中將用於擷取機密。
注意
您必須輸入完全正確的
aws/directory-services/
,但需要將d-xxxxxxxxx
/seamless-domain-joind–xxxxxxxxxx
替換為目錄 ID。確認頭尾沒有任何空格。否則域加入將會失敗。 -
將其他所有設定保留為預設值,然後選擇下一步。
-
針對設定自動輪換,選擇停用自動輪換,然後選擇下一步。
您可以在儲存此秘密之後開啟輪換。
-
檢查設定,然後選擇儲存以儲存變更。Secrets Manager 主控台會傳回帳戶中的秘密清單,清單中包含現在的新秘密。
-
從清單中選擇您新建立的機密名稱,並記下 Secret ARN 值。您會在下一節中用到它。
開啟網域服務帳戶秘密的輪換
我們建議您定期輪換秘密,以改善您的安全狀態。
開啟網域服務帳戶秘密的輪換
-
請遵循 AWS Secrets Manager 使用者指南中設定 AWS Secrets Manager 秘密的自動輪換中的指示。
對於步驟 5,請使用 AWS Secrets Manager 使用者指南中的輪換範本 Microsoft Active Directory 登入資料。
如需協助,請參閱AWS Secrets Manager 《 使用者指南》中的疑難排解 AWS Secrets Manager 輪換。
建立必要的 IAM 政策和角色
透過下列步驟建立自訂政策,以允許對 Secrets Manager 無縫域加入機密 (您先前建立的) 進行唯讀存取,以及建立新的 LinuxEC2DomainJoin IAM 角色。
建立 Secrets Manager IAM 讀取政策
您需要使用 IAM 主控台建立一個政策,授予對 Secrets Manager 機密的唯讀存取權。
建立 Secrets Manager IAM 讀取政策
-
以具有建立 IAM 政策許可的使用者 AWS Management Console 身分登入 。前往網址 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在導覽窗格中,存取管理,選擇政策。
-
選擇 建立政策。
-
選擇 JSON 標籤並從下列 JSON 政策文件複製文字。然後將其貼到 JSON 文字方塊中。
注意
請務必將區域和資源 ARN 取代為您先前建立之秘密的實際區域和 ARN。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": [ "arn:aws:secretsmanager:
us-east-1:xxxxxxxxx
:secret:aws/directory-services/d-xxxxxxxxx
/seamless-domain-join" ] } ] } -
完成時,選擇 Next (下一步)。政策驗證程式會回報任何語法錯誤。如需詳細資訊,請參閱驗證 IAM 政策。
-
在檢閱政策頁面上,輸入政策的名稱,例如
SM-Secret-Linux-DJ-
。檢閱摘要區段來查看您的政策所授予的許可。然後選擇建立政策來儲存變更。新的政策會出現在受管政策清單中,並且已準備好連接至身分。d-xxxxxxxxxx
-Read
注意
我們建議您為每個機密建立一個政策。這樣做可以確保執行個體只能存取適當的機密,並在執行個體受到入侵時將影響降至最低。
建立 LinuxEC2DomainJoin 角色
您可以使用 IAM 主控台建立將用於域加入 Linux EC2 執行個體的角色。
建立 LinuxEC2DomainJoin 角色
-
以具有建立 IAM 政策許可的使用者 AWS Management Console 身分登入 。前往網址 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在導覽窗格的存取管理下,選擇角色。
-
在內容窗格中,選擇建立角色。
-
在 Select type of trusted entity (選擇可信任執行個體類型) 下,選擇 AWS service ( 服務)。
-
在使用案例中,選擇 EC2,然後選擇下一步。
-
對於篩選政策,請執行下列操作:
-
輸入
AmazonSSMManagedInstanceCore
。然後選取清單中相應項目的核取方塊。 -
輸入
AmazonSSMDirectoryServiceAccess
。然後選取清單中相應項目的核取方塊。 -
輸入
SM-Secret-Linux-DJ-
或您在上一個程序中建立的 IAM 政策名稱。然後選取清單中相應項目的核取方塊。d-xxxxxxxxxx
-Read 新增上述三個政策後,選取建立角色。
注意
AmazonSSMDirectoryServiceAccess 提供將執行個體加入 Active Directory受管 的許可 AWS Directory Service。AmazonSSMManagedInstanceCore 提供使用 AWS Systems Manager 服務所需的最低許可。有關建立具有這些許可的角色的更多資訊,以及有關可以指派給 IAM 角色的其他許可和政策的資訊,請參閱《AWS Systems Manager 使用者指南》中的為 Systems Manager 建立 IAM 執行個體設定檔一節。
-
在角色名稱欄位中輸入新角色的名稱,例如
LinuxEC2DomainJoin
或您偏好的另一個名稱。(選用) 針對 Role description (角色描述),輸入描述。
(選用) 選擇步驟 3 下的新增標籤:新增標籤以新增標籤。 標籤鍵值對用於組織、追蹤或控制此角色的存取。
-
選擇建立角色。
無縫加入您的 Linux 執行個體
無縫加入您的 Linux 執行個體
-
登入 AWS Management Console ,並在 https://console.aws.amazon.com/ec2/
:// 開啟 Amazon EC2 主控台。 -
從導覽列中的區域選擇器中,選擇 AWS 區域 與現有目錄相同的 。
-
在 EC2 儀表板的啟動執行個體區段中,選擇啟動執行個體。
-
在啟動執行個體頁面的名稱和標籤區段下,輸入您要用於 Linux EC2 執行個體的名稱。
(選用) 選擇新增其他標籤以新增一或多個標籤鍵值對,以組織、追蹤或控制此 EC2 執行個體的存取。
-
在應用程式和作業系統映像 (Amazon Machine Image) 區段中,選擇您要啟動的 Linux AMI。
注意
使用的 AMI 必須有 AWS Systems Manager (SSM Agent) 2.3.1644.0 版或更新版本。若要透過從 AMI 啟動執行個體來檢查 AMI 中已安裝的 SSM 代理程式版本,請參閱取得目前安裝的 SSM 代理程式版本。如需升級 SSM 代理程式,請參閱在適用於 Linux 的 EC2 執行個體上安裝和設定 SSM 代理程式。
SSM 在將 Linux 執行個體加入Active Directory網域時使用
aws:domainJoin
外掛程式。外掛程式會將 Linux 執行個體的主機名稱變更為 EC2AMAZ-XXXXXXX
格式。如需 的詳細資訊aws:domainJoin
,請參閱AWS Systems Manager 《 使用者指南》中的AWS Systems Manager 命令文件外掛程式參考。 -
在執行個體類型區段中,從執行個體類型下拉式清單中選擇您要使用的執行個體類型。
-
在金鑰對 (登入) 區段中,您可以選擇建立新金鑰對或從現有金鑰對中進行選擇。若要建立新的金鑰對,請選擇建立新金鑰對。輸入金鑰對的名稱,然後選取金鑰對類型和私有金鑰檔案格式的選項。若要將私有金鑰儲存為可與 OpenSSH 搭配使用的格式,請選擇 .pem。若要將私有金鑰儲存為可與 PuTTY 搭配使用的格式,請選擇 .ppk。選擇建立金鑰對。您的瀏覽器會自動下載私有金鑰檔案。將私有金鑰檔案存放在安全的地方。
重要
這是您儲存私有金鑰檔案的唯一機會。
-
在啟動執行個體頁面上的網路設定區段下,選擇編輯。從 VPC – required 下拉式清單中選擇在其中建立目錄的 VPC。
-
從子網路下拉式清單中選擇 VPC 中的公有子網路之一。您所選取的子網路必須將所有外部流量路由到網際網路閘道。如果沒有,則將無法從遠端連線到執行個體。
如需有關連線至網際網路閘道的詳細資訊,請參閱《Amazon VPC 使用者指南》中的使用網際網路閘道連線至網際網路一節。
-
在自動指派公有 IP 下,選擇啟用。
如需公有和私有 IP 定址的詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 執行個體 IP 定址。 Amazon EC2
-
對於防火牆 (安全群組)設定,您可以使用預設設定或根據需要進行變更。
-
對於設定儲存設定,您可以使用預設設定或根據需要進行變更。
-
選取進階詳細資訊區段,從域加入目錄下拉式清單中選取域。
注意
選擇網域聯結目錄後,您可能會看到:
如果 EC2 啟動精靈識別具有非預期屬性的現有 SSM 文件,則會發生此錯誤。您可以執行下列任一作業:
如果您先前已編輯 SSM 文件,且預期屬性,請選擇關閉,然後繼續啟動 EC2 執行個體,而不進行任何變更。
選取此處的刪除現有 SSM 文件連結,以刪除 SSM 文件。這將允許建立具有正確屬性的 SSM 文件。當您啟動 EC2 執行個體時,系統會自動建立 SSM 文件。
-
針對 IAM 執行個體設定檔,選擇您先前在先決條件區段中建立的 IAM 角色 步驟 2:建立 LinuxEC2DomainJoin 角色。
-
選擇啟動執行個體。
注意
如果您使用 SUSE Linux 執行無縫域加入,則需要重新啟動才能進行身分驗證。若要從 Linux 終端重新啟動 SUSE,請鍵入 sudo reboot。