

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

# 將 Amazon EC2 Linux 執行個體無縫加入 AWS Managed Microsoft AD Active Directory
<a name="seamlessly_join_linux_instance"></a>

此程序會將 Amazon EC2 Linux 執行個體無縫加入您的 AWS Managed Microsoft AD Active Directory。若要完成此程序，您需要建立可能會產生額外費用的 AWS Secrets Manager 秘密。如需詳細資訊，請參閱[AWS Secrets Manager 定價](https://aws.amazon.com/secrets-manager/pricing/)。

如果您需要跨多個 AWS 帳戶執行無縫網域聯結，您可以選擇啟用[目錄共用](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_directory_sharing.html)。

系統支援下列 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 影片。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/NNUtdVVZVxU?si=_0zOiXhUObcW0_Wo/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/NNUtdVVZVxU?si=_0zOiXhUObcW0_Wo)


## 先決條件
<a name="seamless-linux-prereqs"></a>

您必須先完成這些區段中的程序，才能設定 EC2 Linux 執行個體的無縫網域聯結。

### 無縫網域聯結的網路先決條件
<a name="linux-domain-join-networking-prereqs"></a>

若要無縫加入 EC2 Linux 執行個體的網域，您將需要完成下列操作：
+ 您需要下列 IAM 許可才能無縫加入 EC2 Linux 執行個體：
  + 擁有 AWS Managed Microsoft AD。如需詳細資訊，請參閱 [建立 AWS Managed Microsoft AD](ms_ad_getting_started.md#ms_ad_getting_started_create_directory)。
  + 您需要下列 IAM 許可才能無縫加入 EC2 Windows執行個體：
    + 具有下列 IAM 許可的 IAM 執行個體設定檔：
      + `AmazonSSMManagedInstanceCore`
      + `AmazonSSMDirectoryServiceAccess`
    + 將 EC2 加入 AWS Managed Microsoft AD 的使用者無縫網域需要下列 IAM 許可：
      + 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 建立的內容](ms_ad_getting_started_what_gets_created.md)。若要無縫加入 EC2 Linux 執行個體的網域，您要啟動執行個體的 VPC 應允許 AWS Managed Microsoft AD 安全群組傳入和傳出規則中允許的相同連接埠。
  + 根據您的網路安全和防火牆設定，您可能需要允許額外的傳出流量。此流量適用於 HTTPS （連接埠 443) 到下列端點：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/seamlessly_join_linux_instance.html)
+ 我們建議您使用 DNS 伺服器來解析 AWS Managed Microsoft AD 網域名稱。若要這樣做，您可以建立 DHCP 選項集。如需詳細資訊，請參閱[建立或變更 AWS Managed Microsoft AD 的 DHCP 選項集](dhcp_options_set.md)。
  + 如果您選擇不建立 DHCP 選項集，則您的 DNS 伺服器將是靜態的，並由 AWS Managed Microsoft AD 設定為 。

### 選取無縫域加入服務帳戶
<a name="seamless-linux-prereqs-select"></a>

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

若要委派具有所需最低權限的帳戶將電腦加入域，您可以執行下列 PowerShell 命令。您必須從已加入域並安裝了 [安裝 AWS Managed Microsoft AD 的 Active Directory 管理工具](ms_ad_install_ad_tools.md) 的 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)，您可以使用 [委派權限給您的服務帳戶](ad_connector_getting_started.md#connect_delegate_privileges) 中所述的手動流程。

### 建立儲存域服務帳戶的機密
<a name="-create-secrets"></a>

您可以使用 AWS Secrets Manager 來存放網域服務帳戶。如需詳細資訊，請參閱[建立 AWS Secrets Manager 秘密](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html)。

**注意**  
Secrets Manager 需支付相關費用。如需詳細資訊，請參閱*AWS Secrets Manager 《 使用者指南*》中的 [定價](https://docs.aws.amazon.com//secretsmanager/latest/userguide/intro.html#asm_pricing)。

**建立機密並儲存域服務帳戶資訊**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 的 AWS Secrets Manager 主控台。

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

1. 在 **Store a new secret** (儲存新機密) 頁面中，執行下列動作：

   1. 在**秘密類型**下，選擇**其他類型的秘密**。

   1. 在**鍵/值對**下，執行下列動作：

      1. 在第一個方塊中，輸入 **awsSeamlessDomainUsername**。在相同資料列的下一個方塊中，輸入服務帳戶的使用者名稱。例如，如果您之前使用的是 PowerShell 命令，則服務帳戶名稱將為 **awsSeamlessDomain**。
**注意**  
您必須輸入完全正確的 **awsSeamlessDomainUsername**。確認頭尾沒有任何空格。否則域加入將會失敗。  
![\[在 AWS Secrets Manager 主控台的 中，選擇秘密類型頁面。其他類型的秘密是在秘密類型下選取awsSeamlessDomainUsername，並輸入 做為索引鍵值。\]](http://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/images/secrets_manager_1.png)

      1. 選擇**新增列**。

      1. 在新的一列的第一個方塊中，輸入 **awsSeamlessDomainPassword**。在同一列的下一個方塊中，輸入服務帳戶的密碼。
**注意**  
您必須輸入完全正確的 **awsSeamlessDomainPassword**。確認頭尾沒有任何空格。否則域加入將會失敗。

      1. 在**加密金鑰下，**保留預設值 `aws/secretsmanager`。 選擇此選項時， AWS Secrets Manager 一律會加密秘密。您也可以選擇您建立的金鑰。

      1. 選擇**下一步**。

1. 在**秘密名稱**下，使用下列格式輸入包含目錄 ID 的秘密名稱，將 *d-xxxxxxxxx* 取代為您的目錄 ID：

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

   這在應用程式中將用於擷取機密。
**注意**  
您必須輸入完全正確的 **aws/directory-services/*d-xxxxxxxxx*/seamless-domain-join**，但需要將 *d–xxxxxxxxxx* 替換為目錄 ID。確認頭尾沒有任何空格。否則域加入將會失敗。  
![\[在 AWS Secrets Manager 主控台的設定秘密頁面上。已輸入秘密名稱並反白顯示。\]](http://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/images/secrets_manager_2.png)

1. 將其他所有設定保留為預設值，然後選擇**下一步**。

1. 針對**設定自動輪換**，選擇**停用自動輪換**，然後選擇**下一步**。

   您可以在存放後開啟此秘密的輪換。

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

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

### 開啟網域服務帳戶秘密的輪換
<a name="seamless-linux-prereqs-turn-on-rotation"></a>

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

**開啟網域服務帳戶秘密的輪換**
+ 遵循*AWS Secrets Manager 《 使用者指南*》中[設定 AWS Secrets Manager 秘密的自動輪換](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_turn-on-for-other.html)中的指示。

  對於步驟 5，請使用*AWS Secrets Manager 《 使用者指南*》中的輪換範本 [Microsoft Active Directory 登入](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_available-rotation-templates.html#template-AD-password)資料。

  如需協助，請參閱*AWS Secrets Manager 《 使用者指南*》中的[疑難排解 AWS Secrets Manager 輪換](https://docs.aws.amazon.com/secretsmanager/latest/userguide/troubleshoot_rotation.html)。

### 建立必要的 IAM 政策和角色
<a name="seamless-linux-prereqs-create-policy"></a>

透過下列步驟建立自訂政策，以允許對 Secrets Manager 無縫域加入機密 (您先前建立的) 進行唯讀存取，以及建立新的 LinuxEC2DomainJoin IAM 角色。

#### 建立 Secrets Manager IAM 讀取政策
<a name="seamless-linux-prereqs-create-policy-step1"></a>

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

**建立 Secrets Manager IAM 讀取政策**

1. 以具有建立 IAM 政策許可的使用者 AWS 管理主控台 身分登入 。前往網址 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，**存取管理**，選擇**政策**。

1. 選擇**建立政策**。

1. 選擇 **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"
               ]
           }
       ]
   }
   ```

1. 完成時，選擇 **Next (下一步)**。政策驗證程式會回報任何語法錯誤。如需詳細資訊，請參閱[驗證 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html)。

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

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

#### 建立 LinuxEC2DomainJoin 角色
<a name="seamless-linux-prereqs-create-policy-step2"></a>

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

**建立 LinuxEC2DomainJoin 角色**

1. 以具有建立 IAM 政策許可的使用者 AWS 管理主控台 身分登入 。前往網址 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格的**存取管理**下，選擇**角色**。

1. 在內容窗格中，選擇**建立角色**。

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

1. 在**使用案例中**，選擇 **EC2**，然後選擇**下一步**。  
![\[在 IAM 主控台中，選取信任的實體 page. AWS service 和 EC2。\]](http://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/images/iam-console-trusted-entity.png)

1. 對於**篩選政策**，請執行下列操作：

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

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

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

   1. 新增上述三個政策後，選取**建立角色**。
**注意**  
AmazonSSMDirectoryServiceAccess 提供將執行個體加入由 Directory Service管理的 Active Directory 的許可。AmazonSSMManagedInstanceCore 提供使用 AWS Systems Manager 服務所需的最低許可。有關建立具有這些許可的角色的更多資訊，以及有關可以指派給 IAM 角色的其他許可和政策的資訊，請參閱《AWS Systems Manager 使用者指南》**中的[為 Systems Manager 建立 IAM 執行個體設定檔](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)一節。

1. 在角色名稱欄位中輸入新角色的名稱，例如 **LinuxEC2DomainJoin**或您偏好的另一個**名稱**。

1. (選用) 針對 **Role description (角色描述)**，輸入描述。

1. （選用） 選擇**步驟 3：新增標籤**以新增標籤下的**新增**標籤。標籤鍵值對用於組織、追蹤或控制此角色的存取。

1. 選擇建**立角色**。

## 無縫加入您的 Linux 執行個體
<a name="seamless-linux-join-instance"></a>

**無縫加入您的 Linux 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 從導覽列中的區域選擇器中，選擇 AWS 區域 與現有目錄相同的 。

1. 在 **EC2 儀表板**的**啟動執行個體**區段中，選擇**啟動執行個體**。

1. 在**啟動執行個體**頁面**的名稱和標籤**區段下，輸入您要用於 Linux EC2 執行個體的名稱。

1.  *（選用）* 選擇**新增其他標籤**以新增一或多個標籤鍵值對，以組織、追蹤或控制此 EC2 執行個體的存取。

1. 在**應用程式和作業系統映像 (Amazon Machine Image)** 區段中，選擇您要啟動的 Linux AMI。
**注意**  
使用的 AMI 必須具有 AWS Systems Manager (SSM Agent) 2.3.1644.0 版或更新版本。若要透過從 AMI 啟動執行個體來檢查 AMI 中已安裝的 SSM 代理程式版本，請參閱[取得目前安裝的 SSM 代理程式版本](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-get-version.html)。如需升級 SSM 代理程式，請參閱[在適用於 Linux 的 EC2 執行個體上安裝和設定 SSM 代理程式](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-ssm-agent.html)。  
SSM 在將 Linux 執行個體加入 Active Directory 網域時使用 `aws:domainJoin` 外掛程式。外掛程式會將 Linux 執行個體的主機名稱變更為 EC2AMAZ-*XXXXXXX* 格式。如需 的詳細資訊`aws:domainJoin`，請參閱*AWS Systems Manager 《 使用者指南*》中的[AWS Systems Manager 命令文件外掛程式參考](https://docs.aws.amazon.com//systems-manager/latest/userguide/documents-command-ssm-plugin-reference.html#aws-domainJoin)。

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

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

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

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

   如需有關連線至網際網路閘道的詳細資訊，請參閱《Amazon VPC 使用者指南》**中的[使用網際網路閘道連線至網際網路](https://docs.aws.amazon.com//vpc/latest/userguide/VPC_Internet_Gateway.html)一節。

1. 在**自動指派公有 IP** 下，選擇**啟用**。

   如需公有和私有 IP 定址的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 執行個體 IP 定址](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/using-instance-addressing.html)。 *Amazon EC2 *

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

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

1. 選取**進階詳細資訊**區段，從**域加入目錄**下拉式清單中選取域。
**注意**  
選擇網域加入目錄後，您可能會看到：  

![\[選取網域聯結目錄時的錯誤訊息。您現有的 SSM 文件發生錯誤。\]](http://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/images/SSM-Error-Message.png)

如果 EC2 啟動精靈識別具有非預期屬性的現有 SSM 文件，就會發生此錯誤。您可以執行下列任一作業：  
如果您先前已編輯 SSM 文件，且預期屬性，請選擇關閉並繼續啟動 EC2 執行個體，而不進行任何變更。
選取此處的刪除現有 SSM 文件連結，以刪除 SSM 文件。這將允許建立具有正確屬性的 SSM 文件。當您啟動 EC2 執行個體時，系統會自動建立 SSM 文件。

1. 針對 **IAM 執行個體描述檔**，選擇您先前在先決條件區段**步驟 2：建立 LinuxEC2DomainJoin 角色中建立的 IAM 角色**。

1. 選擇**啟動執行個體**。

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