

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

# 使用 Active Directory 的最佳實務
<a name="self-managed-AD-best-practices"></a>

以下是將 Amazon FSx for NetApp ONTAP SVMs 加入自我管理 Microsoft Active Directory 時應考慮的一些建議和準則。請注意，這些建議做為最佳實務，但並非必要。

**Topics**
+ [將許可委派給您的 Amazon FSx 服務帳戶](#connect_delegate_privileges)
+ [使用 Amazon FSx 保持 Active Directory 組態的更新](#keep-ad-config-updated)
+ [使用安全群組限制 VPC 內的流量](#least-privilege-sg-rules)
+ [為檔案系統的網路界面建立傳出安全群組規則](#sg-rules-fsx-eni)
+ [使用 存放 Active Directory 登入資料 AWS Secrets Manager](#bp-store-ad-creds-using-secret-manager)

## 將許可委派給您的 Amazon FSx 服務帳戶
<a name="connect_delegate_privileges"></a>

請務必使用所需的最低許可來設定您提供給 Amazon FSx 的服務帳戶。此外，將組織單位 (OU) 與其他網域控制站問題分開。

若要將 Amazon FSx SVMs加入您的網域，請確定服務帳戶已委派許可。**網域管理員**群組的成員有足夠的許可來執行此任務。不過，最佳實務是使用只有執行此作業所需的最低許可的服務帳戶。下列程序示範如何僅委派將 FSx for ONTAP SVMs加入網域所需的許可。

在加入目錄且已安裝 Active Directory 使用者和電腦 MMC 嵌入式的機器上執行此程序。

**為您的 Microsoft Active Directory 網域建立服務帳戶**建立 AD 的服務帳戶

1. 請確定您以 Microsoft Active Directory 網域的網域管理員身分登入。

1. 開啟 **Active Directory 使用者和電腦 **MMC 嵌入。

1. 在任務窗格中，展開網域節點。

1. 找到並開啟您要修改之 OU 的內容 （按一下滑鼠右鍵） 選單，然後選擇**委派控制**。

1. 在**控制委派精靈**頁面上，選擇**下一步**。

1. 選擇**新增**，為**選取的使用者和群組新增特定使用者或特定群組**，然後選擇**下一步**。

1. 在 **Tasks to Delegate (要委派的任務)** 頁面上，選擇 **Create a custom task to delegate (建立要委派的自訂任務)**，然後選擇 **Next (下一步)**。

1. 選擇**僅資料夾中的下列物件**，然後選擇**電腦物件**。

1. 選擇**在此資料夾中建立選取的物件**，以及**在此資料夾中刪除選取的物件**。然後選擇**下一步**。

1. 在**顯示這些許可**下，確定已選取**一般**和**屬性特定**。

1. 針對**許可**，選擇下列項目：
   + **重設密碼**
   + **讀取和寫入帳戶限制**
   + **驗證寫入 DNS 主機名稱**
   + **驗證寫入服務主體名稱**
   + **寫入 msDS-SupportedEncryptionTypes**

1. 選擇 **Next** (下一步)，然後選擇 **Finish** (完成)。

1. 關閉 **Active Directory 使用者和電腦 **MMC 嵌入。

**重要**  
建立 SVMs 之後，請勿移動 Amazon FSx 在 OU 中建立的電腦物件。這樣做會導致您的 SVMs設定錯誤。

## 使用 Amazon FSx 保持 Active Directory 組態的更新
<a name="keep-ad-config-updated"></a>

若要持續提供 Amazon FSx SVMs，請在變更自我管理 AD 設定時更新 SVM 的自我管理 Active Directory (AD) 組態。

例如，假設您的 AD 使用以時間為基礎的密碼重設政策。在此情況下，一旦重設密碼，請務必使用 Amazon FSx 更新服務帳戶密碼。若要這樣做，請使用 Amazon FSx 主控台、Amazon FSx API 或 AWS CLI。同樣地，如果 Active Directory 網域的 DNS 伺服器 IP 地址變更，只要變更發生，就會立即使用 Amazon FSx 更新 DNS 伺服器 IP 地址。

如果更新的自我管理 AD 組態發生問題，SVM 狀態會切換到**設定錯誤**。此狀態會在主控台、API 和 CLI 的 SVM 描述旁顯示錯誤訊息和建議的動作。如果 SVM AD 組態發生問題，請務必針對組態屬性採取建議的修正動作。如果問題已解決，請確認 SVM 的狀態變更為**已建立**。

如需詳細資訊，請參閱[使用 AWS 管理主控台 AWS CLI、 和 API 更新現有的 SVM Active Directory 組態](update-svm-ad-config.md)及[使用 ONTAP CLI 修改 Active Directory 組態](manage-svm-ad-config-ontap-cli.md#using-ontap-cli-to-modify-ad)。

## 使用安全群組限制 VPC 內的流量
<a name="least-privilege-sg-rules"></a>

若要限制虛擬私有雲端 (VPC) 中的網路流量，您可以在 VPC 中實作最低權限原則。換句話說，您可以將許可限制為所需的最低許可。若要這樣做，請使用安全群組規則。如需詳細資訊，請參閱 [Amazon VPC 安全群組](limit-access-security-groups.md#fsx-vpc-security-groups)。

## 為檔案系統的網路界面建立傳出安全群組規則
<a name="sg-rules-fsx-eni"></a>

為了提高安全性，請考慮使用傳出流量規則設定安全群組。這些規則應僅允許傳出流量到您的自我管理 AD 網域控制器，或在子網路或安全群組內。將此安全群組套用至與 Amazon FSx 檔案系統彈性網路界面相關聯的 VPC。如需詳細資訊，請參閱 [使用 Amazon VPC 的檔案系統存取控制](limit-access-security-groups.md)。

## 使用 存放 Active Directory 登入資料 AWS Secrets Manager
<a name="bp-store-ad-creds-using-secret-manager"></a>

您可以使用 AWS Secrets Manager 安全地存放和管理 Microsoft Active Directory 網域聯結服務帳戶登入資料。這種方法不需要將敏感登入資料以純文字形式存放在應用程式程式碼或組態檔案中，以強化您的安全狀態。

您也可以設定 IAM 政策來管理對秘密的存取，並設定密碼的自動輪換政策。

### 將 Active Directory 登入資料存放在 AWS Secrets Manager （主控台）
<a name="bp-store-ad-creds-sm-console"></a>

#### 步驟 1：建立 KMS 金鑰
<a name="create-kms-key-console"></a>

建立 KMS 金鑰以加密和解密 Secrets Manager 中的 Active Directory 登入資料。

**建立金鑰**
**注意**  
對於**加密金鑰**，請建立新的金鑰，請勿使用 AWS 預設 KMS 金鑰。請務必 AWS KMS key 在包含您要加入 Active Directory 之 SVM 的相同區域中建立 。

1. 在 https：//https://console.aws.amazon.com/kms 開啟 AWS KMS 主控台。

1. 選擇**建立金鑰**。

1. 對於**金鑰類型**，選擇**對稱**。

1. 對於**金鑰用途**，選擇**加密和解密**。

1. 對於**進階選項**，請執行下列動作：

   1. 對於**金鑰材料來源**，選擇 **KMS**。

   1. 針對**區域性**，選擇**單一區域金鑰**，然後選擇**下一步**。

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

1. 對於**別名**，提供 KMS 金鑰的名稱。

1. (選用) 對於**描述**，提供 KMS 金鑰的描述。

1. （選用） 對於**標籤**，提供 KMS 金鑰的標籤，然後選擇**下一步**。

1. （選用） 對於**金鑰管理員**，請提供有權管理此金鑰的 IAM 使用者和角色。

1. 針對**金鑰刪除**，請保留選取**允許金鑰管理員**刪除此金鑰的方塊，然後選擇**下一步**。

1. （選用） 對於**金鑰使用者**，請提供授權在密碼編譯操作中使用此金鑰的 IAM 使用者和角色。選擇**下一步**。

1. 針對**金鑰政策**，選擇**編輯**並在政策**陳述**式中包含以下內容，以允許 Amazon FSx 使用 KMS 金鑰，然後選擇**下一步**。請務必將 *us-west-2* 取代為部署 AWS 區域 檔案系統的 ，並將 *123456789012* 取代為您的 AWS 帳戶 ID。

   ```
   {
       "Sid": "Allow FSx to use the KMS key",
       "Version": "2012-10-17", 		 	 	 
       "Effect": "Allow",
       "Principal": {
           "Service": "fsx.amazonaws.com"
       },
       "Action": [
           "kms:Decrypt",
           "kms:DescribeKey"
       ],
       "Resource": "arn:aws:kms:us-west-2:123456789012:key/*",
       "Condition": {
           "StringEquals": {
               "kms:ViaService": "secretsmanager.us-west-2.amazonaws.com",
               "aws:SourceAccount": "123456789012"
           },
           "ArnLike": {
               "aws:SourceArn": [
                   "arn:aws:fsx:us-west-2:123456789012:file-system/*",
                   "arn:aws:fsx:us-west-2:123456789012:storage-virtual-machine/fs-*/svm-*"
               ]
           }
       }
   }
   ```

1. 選擇**完成**。

**注意**  
您可以修改 `Resource`和 `aws:SourceArn` 欄位以鎖定特定秘密和檔案系統，藉此設定更精細的存取控制。

#### 步驟 2：建立 AWS Secrets Manager 秘密
<a name="create-secret-console"></a>

**若要建立機密**

1. 請開啟位於 [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 的機密管理員控制台。

1. 選擇**存放新的機密**。

1. 針對**機密類型**，選擇**其他類型的機密**。

1. 對於**金鑰/值對**，請執行下列動作來新增您的兩個金鑰：

   1. 對於第一個金鑰，輸入 `CUSTOMER_MANAGED_ACTIVE_DIRECTORY_USERNAME`。

   1. 對於第一個金鑰的值，僅輸入 AD 使用者的使用者名稱 (不含網域字首)。

   1. 對於第二個金鑰，輸入 `CUSTOMER_MANAGED_ACTIVE_DIRECTORY_PASSWORD`。

   1. 對於第二個金鑰的值，輸入您在網域上為 AD 使用者建立的密碼。

1. 對於**加密金鑰**，輸入您在上一個步驟中建立的 KMS 金鑰的 ARN，然後選擇**下一步**。

1. 對於**秘密名稱**，輸入可協助您稍後尋找密碼的描述性名稱。

1. (選用) 對於**描述**，輸入秘密名稱的描述。

1. 針對**資源許可**，選擇**編輯**。

   將下列政策新增至許可政策，以允許 Amazon FSx 使用秘密，然後選擇**下一步**。請務必將 *us-west-2* 取代為部署 AWS 區域 檔案系統的 ，並將 *123456789012* 取代為您的 AWS 帳戶 ID。

   ```
   {
       "Version": "2012-10-17", 		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "fsx.amazonaws.com"
               },
               "Action": [
                   "secretsmanager:GetSecretValue",
                   "secretsmanager:DescribeSecret"
               ],
               "Resource": "arn:aws:secretsmanager:us-west-2:123456789012:secret:*",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "123456789012"
                   },
                   "ArnLike": {
                       "aws:SourceArn": [
                           "arn:aws:fsx:us-west-2:123456789012:file-system/*",
                           "arn:aws:fsx:us-west-2:123456789012:storage-virtual-machine/fs-*/svm-*"
                       ]
                   }
               }
           }
       ]
   }
   ```

1. （選用） 您可以設定 Secrets Manager 自動輪換您的登入資料。選擇**下一步**。

1. 選擇**完成**。

### 在 AWS Secrets Manager (CLI) 中存放 Active Directory 登入資料
<a name="bp-store-ad-creds-sm-cli"></a>

#### 步驟 1：建立 KMS 金鑰
<a name="create-kms-key-cli"></a>

建立 KMS 金鑰以加密和解密 Secrets Manager 中的 Active Directory 登入資料。

若要建立 KMS 金鑰，請使用 AWS CLI 命令 [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html)。

在此命令中，設定 `--policy` 參數以指定定義 KMS 金鑰許可的金鑰政策。政策必須包含下列項目：
+ Amazon FSx 的服務主體，即 `fsx.amazonaws.com`。
+ 必要的 KMS 動作： `kms:Decrypt`和 `kms:DescribeKey`。
+ 您 AWS 區域 和 帳戶的資源 ARN 模式。
+ 限制金鑰用量的條件金鑰：
  + `kms:ViaService` 以確保請求透過 Secrets Manager 進行。
  + `aws:SourceAccount` 限制為您的帳戶。
  + `aws:SourceArn` 限制為特定 Amazon FSx 檔案系統。

下列範例會使用允許 Amazon FSx 使用金鑰進行解密和金鑰描述操作的政策來建立對稱加密 KMS 金鑰。命令會自動擷取您的 AWS 帳戶 ID 和區域，然後使用這些值設定金鑰政策，以確保 Amazon FSx、Secrets Manager 和 KMS 金鑰之間的適當存取控制。請確定您的 AWS CLI 環境與將加入 Active Directory 的 SVM 位於相同的區域。

```
# Set region and get Account ID
REGION=${AWS_REGION:-$(aws configure get region)}
ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text)

# Create Key
KMS_KEY_ARN=$(aws kms create-key --policy "{
  \"Version\": \"2012-10-17\", 		 	 	 
  \"Statement\": [
    {
      \"Sid\": \"Enable IAM User Permissions\",
      \"Effect\": \"Allow\",
      \"Principal\": {
        \"AWS\": \"arn:aws:iam::$ACCOUNT_ID:root\"
      },
      \"Action\": \"kms:*\",
      \"Resource\": \"*\"
    },
    {
      \"Sid\": \"Allow FSx to use the KMS key\",
      \"Effect\": \"Allow\",
      \"Principal\": {
        \"Service\": \"fsx.amazonaws.com\"
      },
      \"Action\": [
        \"kms:Decrypt\",
        \"kms:DescribeKey\"
      ],
      \"Resource\": \"*\",
      \"Condition\": {
        \"StringEquals\": {
          \"kms:ViaService\": \"secretsmanager.$REGION.amazonaws.com\",
          \"aws:SourceAccount\": \"$ACCOUNT_ID\"
        },
        \"ArnLike\": {
          \"aws:SourceArn\": [
            \"arn:aws:fsx:$REGION:$ACCOUNT_ID:file-system/*\",
            \"arn:aws:fsx:$REGION:$ACCOUNT_ID:storage-virtual-machine/fs-*/svm-*\"]
        }
      }
    }
  ]
}" --query 'KeyMetadata.Arn' --output text)

echo "KMS Key ARN: $KMS_KEY_ARN"
```

**注意**  
您可以修改 `Resource`和 `aws:SourceArn` 欄位以鎖定特定秘密和檔案系統，藉此設定更精細的存取控制。

#### 步驟 2：建立 AWS Secrets Manager 秘密
<a name="create-secret-cli"></a>

若要為 Amazon FSx 建立秘密以存取您的 Active Directory，請使用 AWS CLI 命令 [create-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/create-secret.html) 並設定下列參數：
+ `--name`：秘密的識別符。
+ `--description`：秘密用途的描述。
+ `--kms-key-id`：您在[步驟 1 中建立](#create-kms-key-cli)用於加密靜態秘密之 KMS 金鑰的 ARN。
+ `--secret-string`：JSON 字串，其中包含以下格式的 AD 登入資料：
  + `CUSTOMER_MANAGED_ACTIVE_DIRECTORY_USERNAME`：沒有網域字首的 AD 服務帳戶使用者名稱，例如 `svc-fsx`。**請勿**提供網域字首，例如 `CORP\svc-fsx`。
  + `CUSTOMER_MANAGED_ACTIVE_DIRECTORY_PASSWORD`：您的 AD 服務帳戶密碼
+ `--region`：建立 SVM AWS 區域 的 。如果`AWS_REGION`未設定 ，則預設為您設定的區域。

建立秘密後，使用 [put-resource-policy](https://docs.aws.amazon.com/cli/latest/reference/logs/put-resource-policy.html) 命令連接資源政策，並設定下列參數：
+ `--secret-id`：要連接政策的秘密名稱或 ARN。下列範例使用 **FSxSecret**做為 `--secret-id`。
+ `--region`：與您的秘密 AWS 區域 相同。
+ `--resource-policy`：授予 Amazon FSx 存取秘密許可的 JSON 政策文件。政策必須包含下列項目：
  + Amazon FSx 的服務主體，即 **fsx.amazonaws.com**。
  + 必要的 Secrets Manager 動作： `secretsmanager:GetSecretValue`和 `secretsmanager:DescribeSecret`。
  + 您 AWS 區域 和 帳戶的資源 ARN 模式。
  + 限制存取的下列條件金鑰：
    + `aws:SourceAccount` 限制為您的帳戶。
    + `aws:SourceArn` 限制為特定 Amazon FSx 檔案系統。

下列範例會建立具有所需格式的秘密，並連接允許 Amazon FSx 使用秘密的資源政策。此範例會自動擷取您的 AWS 帳戶 ID 和區域，然後使用這些值設定資源政策，以確保 Amazon FSx 與秘密之間的適當存取控制。

請務必將 取代`KMS_KEY_ARN`為您在[步驟 1](#create-kms-key-cli)、 和 中建立之金鑰的 ARN`CUSTOMER_MANAGED_ACTIVE_DIRECTORY_USERNAME`，`CUSTOMER_MANAGED_ACTIVE_DIRECTORY_PASSWORD`取代為您的 Active Directory 服務帳戶憑證。此外，請確認您的 AWS CLI 環境已設定為與將加入 Active Directory 的 SVM 相同的區域。

```
# Set region and get account ID
REGION=${AWS_REGION:-$(aws configure get region)}
ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text)

# Replace with your KMS key ARN from Step 1
KMS_KEY_ARN="arn:aws:kms:us-east-2:123456789012:key/1234542f-d114-555b-9ade-fec3c9200d8e"

# Replace with your Active Directory credentials
AD_USERNAME="Your_Username"  
AD_PASSWORD="Your_Password"

# Create the secret
SECRET_ARN=$(aws secretsmanager create-secret \
  --name "FSxSecret" \
  --description "Secret for FSx access" \
  --kms-key-id "$KMS_KEY_ARN" \
  --secret-string "{\"CUSTOMER_MANAGED_ACTIVE_DIRECTORY_USERNAME\":\"$AD_USERNAME\",\"CUSTOMER_MANAGED_ACTIVE_DIRECTORY_PASSWORD\":\"$AD_PASSWORD\"}" \
  --region "$REGION" \
  --query 'ARN' \
  --output text)

echo "Secret created with ARN: $SECRET_ARN"

# Attach the resource policy with proper formatting
aws secretsmanager put-resource-policy \
  --secret-id "FSxSecret" \
  --region "$REGION" \
  --resource-policy "{
    \"Version\": \"2012-10-17\", 		 	 	 
    \"Statement\": [
      {
        \"Effect\": \"Allow\",
        \"Principal\": {
          \"Service\": \"fsx.amazonaws.com\"
        },
        \"Action\": [
          \"secretsmanager:GetSecretValue\",
          \"secretsmanager:DescribeSecret\"
        ],
        \"Resource\": \"$SECRET_ARN\",
        \"Condition\": {
          \"StringEquals\": {
            \"aws:SourceAccount\": \"$ACCOUNT_ID\"
          },
          \"ArnLike\": {
            \"aws:SourceArn\": [
              \"arn:aws:fsx:$REGION:$ACCOUNT_ID:file-system/*\",
              \"arn:aws:fsx:$REGION:$ACCOUNT_ID:storage-virtual-machine/fs-*/svm-*\"]
          }
        }
      }
    ]
  }"

echo "Resource policy attached successfully"
```

**注意**  
您可以修改 `Resource`和 `aws:SourceArn` 欄位以鎖定特定秘密和檔案系統，藉此設定更精細的存取控制。