

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

# 使用 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
](#keep-ad-config-updated)
+ [

## 使用安全组限制 VPC 内的流量
](#least-privilege-sg-rules)
+ [

## 为文件系统的网络接口创建出站安全组规则
](#sg-rules-fsx-eni)
+ [

## 使用存储活动目录凭证 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 ONTAP 所需的权限委托 SVMs 给您的域。

您必须在已加入目录且已安装 Active Directory User and Computers MMC 管理单元的计算机上执行此过程。

**为 Microsoft Active Directory 域创建服务账户**为 AD 创建服务账户

1. 确保您以 Microsoft Active Directory 域的域管理员身份登录。

1. 打开 **Active Directory User and Computers** MMC 管理单元。

1. 在任务窗格中，展开域节点。

1. 找到并打开您要修改的 OU 的上下文（右键单击）菜单，然后选择**委派控制**。

1. 在**委派控制向导**页面上，选择**下一步**。

1. 选择**添加**，在**选定的用户和组**中添加特定用户或特定组，然后选择**下一步**。

1. 在**要委派的任务**页面上，选择**创建要委派的自定义任务**，然后选择**下一步**。

1. 选择**仅文件夹中的以下对象**，然后选择**计算机对象**。

1. 选择**在此文件夹中创建选定对象**和**删除此文件夹中的选定对象**。然后选择**下一步**。

1. 在**显示这些权限** 下，确保选中**常规**和**特定于属性**。

1. 在**权限**中，请选择以下选项：
   + **重置密码**
   + **读取和写入账户限制**
   + **已验证写入 DNS 主机名**
   + **已验证写入服务主体名称**
   + **写下 MSD-SupportedEncryptionTypes**

1. 选择**下一步**，然后选择**完成**。

1. 关闭 **Active Directory User and Computers** MMC 管理单元。

**重要**  
 FSx 创建计算机对象后，请勿移动 Amazon 在 OU 中创建 SVMs 的计算机对象。这样做会 SVMs 导致您的配置错误。

## 使用 Amazon 更新您的活动目录配置 FSx
<a name="keep-ad-config-updated"></a>

要使您的 Amazon 不间断地使用 FSx SVMs，请在更改自我管理 AD 设置时更新 SVM 的自我管理活动目录 (AD) 配置。

例如，假设您的 AD 使用基于时间的密码重置策略。在这种情况下，密码重置后，请务必使用Amazon更新服务账户密码 FSx。为此，请使用亚马逊 FSx 控制台、亚马逊 FSx API 或 AWS CLI。同样，如果您的 Active Directory 域的 DNS 服务器 IP 地址发生变化，则一旦发生更改，请立即使用 Amazon 更新 DNS 服务器 IP 地址 FSx。

如果更新的自行管理 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 域控制器或子网或安全组内部。将此安全组应用于与您的亚马逊 FSx 文件系统的 elastic network interface 关联的 VPC。要了解更多信息，请参阅[使用 Amazon VPC 进行文件系统访问控制](limit-access-security-groups.md)。

## 使用存储活动目录凭证 AWS Secrets Manager
<a name="bp-store-ad-creds-using-secret-manager"></a>

你可以使用 AWS Secrets Manager 安全地存储和管理你的 Microsoft Active Directory 域加入服务帐户凭据。此方法无需在应用程序代码或配置文件中以明文形式存储敏感凭证，从而增强您的安全状况。

您还可以配置 IAM 策略，以管理对密钥的访问权限，并为密码设置自动轮换策略。

### 将活动目录凭据存储在 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://console.aws.amazon.com /km AWS KMS s 处打开控制台

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. 打开 Secrets Manager 控制台，网址为[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 使用该密钥，然后选择 **Next**。请务必将替换*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)
<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 命令[创建密](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 文件系统。

以下示例创建了一个对称加密 KMS 密钥，其策略允许 Amazon FSx 使用该密钥进行解密和密钥描述操作。该命令会自动检索您的 AWS 账户 ID 和区域，然后使用这些值配置密钥策略，以确保亚马逊 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>

要为亚马逊 FSx 创建用于访问您的活动目录的密钥，请使用 c [reate-secre AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/create-secret.html) t 命令并设置以下参数：
+ `--name`：密钥的标识符。
+ `--description`：密钥用途的描述。
+ `--kms-key-id`：您在[步骤 1](#create-kms-key-cli) 中创建的 KMS 密钥 ARN，用于加密静态密钥。
+ `--secret-string`：包含 AD 凭证的 JSON 字符串，格式如下：
  + `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`：授予亚马逊访问密钥 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 和密钥之间进行适当的访问控制。

确保使用您在[步骤 1](#create-kms-key-cli) 中所创建密钥的 ARN 替换 `KMS_KEY_ARN`，并使用 Active Directory 服务账户凭证替换 `CUSTOMER_MANAGED_ACTIVE_DIRECTORY_USERNAME` 和 `CUSTOMER_MANAGED_ACTIVE_DIRECTORY_PASSWORD`。此外，请验证您的 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` 字段，您可以设置更精细的访问控制，以针对特定的密钥和文件系统。