將 Amazon EC2 Linux 執行個體無縫加入您的 AWS 受管 Microsoft AD 活動目錄 - AWS Directory Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 Amazon EC2 Linux 執行個體無縫加入您的 AWS 受管 Microsoft AD 活動目錄

此程序將 Amazon EC2 Linux 執行個體無縫連接到您的 AWS 受管 Microsoft AD 活動目錄。如果您需要跨多個 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 之前的發行版不支援無縫域加入功能。

如需將 Linux 執行個體無縫加入 AWS 管理 Microsoft AD 活動目錄的程序示範,請參閱下列 YouTube 影片。

必要條件

您必須先完成本節中的程序,才能設定無縫網域加入 Linux 執行個體。

選取無縫域加入服務帳戶

您可以無縫加入 Linux 電腦到 AWS 管理 Microsoft AD 活動目錄域。為此,您必須使用一個具有建立電腦帳戶許可的使用者帳戶,才能將機器加入域。儘管 AWS 委派管理員或其他群組的成員可能有足夠的權限將電腦加入域,但我們不建議這樣做。我們建議您使用具有將電腦加入域所需的最低權限的服務帳戶,這才是最佳做法。

若要將電腦加入網域所需的最低權限委派帳戶,您可以執行下列 PowerShell 命令。您必須從已加入域並安裝了 安裝適用於 AWS 受管理 Microsoft AD 的活動目錄管理工具 的 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 來儲存網域服務帳戶。

建立機密並儲存域服務帳戶資訊
  1. 請登入 AWS Management Console 並開啟 AWS Secrets Manager 主控台,網址為 https://console.aws.amazon.com/secretsmanager/

  2. 選擇 Store a new secret (存放新機密)。

  3. Store a new secret (儲存新機密) 頁面中,執行下列動作:

    1. 在「秘密類型」下,選擇「其他類型的機密」。

    2. 在「鍵/值配對」下,執行下列操作:

      1. 在第一個方塊中,輸入 awsSeamlessDomainUsername。在同一列的下一個方塊中,輸入服務帳戶的使用者名稱。例如,如果您之前使用了該 PowerShell 命令,則服務帳戶名稱將是awsSeamlessDomain

        注意

        您必須輸入完全正確的 awsSeamlessDomainUsername。確認頭尾沒有任何空格。否則域加入將會失敗。

        在「選擇密碼類型」頁面的 AWS Secrets Manager 控制台中。其他類型的密碼是在「秘密類型」下選取awsSeamlessDomainUsername的,並輸入為金鑰值。
      2. 選擇新增列

      3. 在新的一列的第一個方塊中,輸入 awsSeamlessDomainPassword。在同一列的下一個方塊中,輸入服務帳戶的密碼。

        注意

        您必須輸入完全正確的 awsSeamlessDomainPassword。確認頭尾沒有任何空格。否則域加入將會失敗。

      4. 在 [加密金鑰] 底下,保留預設值aws/secretsmanager。 AWS Secrets Manager 當您選擇此選項時,一律會加密密碼。您也可以選擇您建立的金鑰。

        注意

        根據您使用的秘密 AWS Secrets Manager,有相關費用。如需目前完整定價清單,請參閱 AWS Secrets Manager 定價

        您可以使用 Secrets Manager 建立aws/secretsmanager的 AWS 受管理金鑰來免費加密您的密鑰。如果您建立自己的 KMS 金鑰來加密密碼,請按照目前的 AWS 費 AWS KMS 率向您收費。如需詳細資訊,請參閱 AWS Key Management Service 定價

      5. 選擇下一步

  4. 密碼名稱下,使用下列格式輸入包含您目錄 ID 的密碼名稱,並以您的目錄識別碼取代 d-xxxxxxxxx

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

    這在應用程式中將用於擷取機密。

    注意

    您必須輸入完全正確的 aws/directory-services/d-xxxxxxxxx/seamless-domain-join,但需要將 d–xxxxxxxxxx 替換為目錄 ID。確認頭尾沒有任何空格。否則域加入將會失敗。

    在設定密碼頁面的 AWS Secrets Manager 主控台中。密碼名稱隨即輸入並反白顯示。
  5. 將其他所有設定保留為預設值,然後選擇下一步

  6. 針對設定自動輪換,選擇停用自動輪換,然後選擇下一步

    您可以在儲存此機密後開啟此機密的旋轉功能。

  7. 檢查設定,然後選擇儲存以儲存變更。Secrets Manager 主控台會傳回帳戶中的秘密清單,清單中包含現在的新秘密。

  8. 從清單中選擇您新建立的機密名稱,並記下 Secret ARN 值。您會在下一節中用到它。

開啟網域服務帳戶密碼的輪換

我們建議您定期輪換密碼,以改善您的安全狀態。

開啟網域服務帳戶密碼的輪換

建立必要的 IAM 政策和角色

使用下列先決條件步驟來建立自訂政策,允許您的 Secrets Manager 無縫網域加入密碼 (您之前建立) 的唯讀存取權限,以及建立新的 LinuxEC2 DomainJoin IAM 角色。

建立 Secrets Manager IAM 讀取政策

您需要使用 IAM 主控台建立一個政策,授予對 Secrets Manager 機密的唯讀存取權。

建立 Secrets Manager IAM 讀取政策
  1. 以具有建立 IAM 政策權限的使用者身分登入。 AWS Management Console 前往網址 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 在功能窗格的 [存取管理] 中,選擇 [原則]。

  3. 選擇建立政策

  4. 選擇 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" ] } ] }
  5. 完成時,選擇 Next (下一步)。政策驗證程式會回報任何語法錯誤。如需詳細資訊,請參閱驗證 IAM 政策

  6. 檢閱政策頁面上,輸入政策的名稱,例如 SM-Secret-Linux-DJ-d-xxxxxxxxxx-Read。檢閱摘要區段來查看您的政策所授予的許可。然後選擇建立政策來儲存變更。新的政策會出現在受管政策清單中,並且已準備好連接至身分。

注意

我們建議您為每個機密建立一個政策。這樣做可以確保執行個體只能存取適當的機密,並在執行個體受到入侵時將影響降至最低。

建立角色 DomainJoin

您可以使用 IAM 主控台建立將用於域加入 Linux EC2 執行個體的角色。

若要建立 Linux 角DomainJoin 色
  1. 以具有建立 IAM 政策權限的使用者身分登入。 AWS Management Console 前往網址 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 在功能窗格的 [存取管理] 下,選擇 [角色]。

  3. 在內容窗格中,選擇建立角色

  4. Select type of trusted entity (選擇可信任執行個體類型) 下,選擇 AWS service ( 服務)。

  5. 在 [使用案例] 下,選擇 [EC2],然後選擇 [下步]。

    在選取受信任實體頁面的 IAM 主控台中。 AWS 已選取服務和 EC2。
  6. 對於篩選政策,請執行下列操作:

    1. 輸入 AmazonSSMManagedInstanceCore。然後選取清單中相應項目的核取方塊。

    2. 輸入 AmazonSSMDirectoryServiceAccess。然後選取清單中相應項目的核取方塊。

    3. 輸入 SM-Secret-Linux-DJ-d-xxxxxxxxxx-Read 或您在上一個程序中建立的 IAM 政策名稱。然後選取清單中相應項目的核取方塊。

    4. 新增上面列出的三個策略之後,請選取 [建立角色]。

    注意

    AmazonSSM DirectoryServiceAccess 提供將執行個Active Directory體加入至管理的權限。 AWS Directory Service亞馬遜 SSM ManagedInstanceCore 提供了使用該服務所需的最低權限。 AWS Systems Manager 有關建立具有這些許可的角色的更多資訊,以及有關可以指派給 IAM 角色的其他許可和政策的資訊,請參閱《AWS Systems Manager 使用者指南》中的為 Systems Manager 建立 IAM 執行個體設定檔一節。

  7. 輸入新角色的名稱,例如LinuxEC2DomainJoin,在「角色名稱」欄位中輸入您偏好的名稱

  8. (選用) 針對 Role description (角色描述),輸入描述。

  9. (選擇性) 在「步驟 3:新增標籤」下方選擇「新增標籤」以新增標籤。標籤鍵值配對可用來組織、追蹤或控制此角色的存取。

  10. 選擇建立角色

無縫加入您的 Linux 執行個體

現在您已經設定了所有先決條件任務,您可以使用下列程序順暢地加入 EC2 Linux 執行個體。

無縫加入您的 Linux 執行個體
  1. 登入 AWS Management Console 並開啟 Amazon EC2 主控台,網址為 https://console.aws.amazon.com/ec2/

  2. 從導覽列的 [區域] 選取器中,選擇與現有目錄 AWS 區域 相同的選項。

  3. EC2 儀表板啟動執行個體區段中,選擇啟動執行個體

  4. 在 [啟動執行個體] 頁面的 [名稱和標籤] 區段下,輸入您想要用於 Linux EC2 執行個體的名稱。

  5. (選用) 針對新增標籤,新增一個或多個標籤鍵值對來組織、追蹤或控制對此 EC2 執行個體的存取。

  6. 應用程式和作業系統映像 (Amazon 機器映像) 區段中,選擇您要啟動的 Linux AMI。

    注意

    使用的 AMI 必須具有 AWS Systems Manager (SSM 代理程式) 2.3.1644.0 或更高版本。若要透過從 AMI 啟動執行個體來檢查 AMI 中已安裝的 SSM 代理程式版本,請參閱取得目前安裝的 SSM 代理程式版本。如需升級 SSM 代理程式,請參閱在適用於 Linux 的 EC2 執行個體上安裝和設定 SSM 代理程式

    SSM 會在將 Linux 執行個體加入Active Directory網域時使用aws:domainJoin外掛程式。外掛程式會將 Linux 執行個體的主機名稱變更為格式為 EC2AMAZ-XXXXXX 格式。如需有關的詳細資訊aws:domainJoin,請參閱AWS Systems Manager 使用指南中的指AWS Systems Manager 令文件外掛程式參考

  7. 執行個體類型區段中,從執行個體類型下拉式清單中選擇您要使用的執行個體類型。

  8. 金鑰對 (登入) 區段中,您可以選擇建立新金鑰對或從現有金鑰對中進行選擇。若要建立新的金鑰對,請選擇建立新金鑰對。輸入金鑰對的名稱,然後選取金鑰對類型私有金鑰檔案格式的選項。若要將私有金鑰儲存為可與 OpenSSH 搭配使用的格式,請選擇 .pem。若要將私有金鑰儲存為可與 PuTTY 搭配使用的格式,請選擇 .ppk。選擇建立金鑰對。您的瀏覽器會自動下載私有金鑰檔案。將私有金鑰檔案存放在安全的地方。

    重要

    這是您儲存私有金鑰檔案的唯一機會。

  9. 啟動執行個體頁面上的網路設定區段下,選擇編輯。從 VPC – required 下拉式清單中選擇在其中建立目錄的 VPC

  10. 子網路下拉式清單中選擇 VPC 中的公有子網路之一。您所選取的子網路必須將所有外部流量路由到網際網路閘道。如果沒有,則將無法從遠端連線到執行個體。

    如需有關連線至網際網路閘道的詳細資訊,請參閱《Amazon VPC 使用者指南》中的使用網際網路閘道連線至網際網路一節。

  11. 自動指派公有 IP 下,選擇啟用

    如需公有和私有 IP 地址的詳細資訊,請參閱《Amazon EC2 Windows 執行個體使用者指南》中的 Amazon EC2 執行個體 IP 地址一節。

  12. 對於防火牆 (安全群組)設定,您可以使用預設設定或根據需要進行變更。

  13. 對於設定儲存設定,您可以使用預設設定或根據需要進行變更。

  14. 選取進階詳細資訊區段,從域加入目錄下拉式清單中選取域。

    注意

    選擇網域加入目錄後,您可能會看到:

    選取網域加入目錄時出現錯誤訊息。您現有的 SSM 文件發生錯誤。

    如果 EC2 啟動精靈識別具有未預期屬性的現有 SSM 文件,就會發生此錯誤。您可以執行下列任一作業:

    • 如果您之前已編輯過 SSM 文件,且預期會有屬性,請選擇 [關閉] 並繼續啟動 EC2 執行個體而不進行任何變更。

    • 選取此處刪除現有 SSM 文件連結以刪除 SSM 文件。這將允許創建具有正確屬性的 SSM 文檔。SSM 文件會在您啟動 EC2 執行個體時自動建立。

  15. 對於 IAM 執行個體設定檔,請在先決條件部分步驟 2:建立 LinuxEC2 DomainJoin 角色中選擇先前建立的 IAM 角色。

  16. 選擇啟動執行個體

注意

如果您使用 SUSE Linux 執行無縫域加入,則需要重新啟動才能進行身分驗證。若要從 Linux 終端重新啟動 SUSE,請鍵入 sudo reboot