使用 Active Directory 的最佳实践
您在将适用于 NetApp ONTAP 的 Amazon FSx SVM 加入自行管理的 Microsoft Active Directory 时应考虑以下建议和指南。请注意,这些建议和指南是最佳实践,不是硬性要求。
主题
向 Amazon FSx 服务账户委托权限
请务必为 Amazon FSx 服务账户配置必要的最低权限。此外,将组织单元(OU)与其他域控制器问题分开。
要将 Amazon FSx SVM 加入您的域,请确保服务账户具有委托的权限。域管理员组的成员有足够的权限来执行此任务。但是,作为最佳实践,请使用仅具有此任务的最低执行权限的服务账户。以下过程演示如何仅将加入 FSx for ONTAP SVM 所需的权限委托给您的域。
您必须在已加入目录且已安装 Active Directory User and Computers MMC 管理单元的计算机上执行此过程。
为 Microsoft Active Directory 域创建服务账户
确保您以 Microsoft Active Directory 域的域管理员身份登录。
-
打开 Active Directory User and Computers MMC 管理单元。
在任务窗格中,展开域节点。
-
找到并打开您要修改的 OU 的上下文(右键单击)菜单,然后选择委派控制。
-
在委派控制向导页面上,选择下一步。
-
选择添加,在选定的用户和组中添加特定用户或特定组,然后选择下一步。
-
在要委派的任务页面上,选择创建要委派的自定义任务,然后选择下一步。
-
选择仅文件夹中的以下对象,然后选择计算机对象。
-
选择在此文件夹中创建选定对象和删除此文件夹中的选定对象。然后选择下一步。
-
在显示这些权限 下,确保选中常规和特定于属性。
-
在权限中,请选择以下选项:
-
重置密码
-
读取和写入账户限制
-
已验证写入 DNS 主机名
-
已验证写入服务主体名称
写入 msDS-SupportedEncryptionTypes
-
-
选择下一步,然后选择完成。
-
关闭 Active Directory User and Computers MMC 管理单元。
重要
创建 SVM 后,请勿移动 Amazon FSx 在 OU 中创建的计算机对象。这样做会导致您的 SVM 配置错误。
使用 Amazon FSx 确保 Active Directory 配置不断更新
要使 Amazon FSx SVM 一直可用,请在更改自行管理的 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 活动目录配置 和 使用 ONTAP CLI 修改 Active Directory 配置。
使用安全组限制 VPC 内的流量
要限制虚拟私有云(VPC)内的网络流量,您可以在 VPC 中实施最低权限原则。换言之,您可以将权限限制为所需的最低权限。为此,请使用安全组规则。要了解更多信息,请参阅 Amazon VPC 安全组。
为文件系统的网络接口创建出站安全组规则
为提高安全性,请考虑使用出站流量规则来配置安全组。这些规则应仅允许出站流量流向自行管理的 AD 域控制器或子网或安全组内部。将此安全组应用于与您的 Amazon FSx 文件系统的弹性网络接口关联的 VPC。要了解更多信息,请参阅 使用 Amazon VPC 进行文件系统访问控制。
使用 AWS Secrets Manager 存储 Active Directory 凭证
您可以使用 AWS Secrets Manager,以便安全地存储和管理 Microsoft Active Directory 域加入服务账户凭证。此方法无需在应用程序代码或配置文件中以明文形式存储敏感凭证,从而增强您的安全状况。
您还可以配置 IAM 策略,以管理对密钥的访问权限,并为密码设置自动轮换策略。
步骤 1:创建 KMS 密钥
创建 KMS 密钥,以在 Secrets Manager 中对 Active Directory 凭证进行加密和解密。
创建密钥
注意
对于加密密钥,请创建新密钥,而非使用 AWS 默认 KMS 密钥。确保在包含要加入 Active Directory 的 SVM 的同一区域中创建 AWS KMS key。
从 https://console.aws.amazon.com/kms 打开 AWS KMS 控制台。
-
选择创建密钥。
-
对于密钥类型,选择对称。
-
对于密钥用法,选择加密和解密。
-
对于高级选项,执行以下操作:
-
对于密钥材料源,选择 KMS。
-
对于区域性,选择单区域密钥,然后选择下一步。
-
-
选择下一步。
-
对于别名,提供 KMS 密钥的名称。
-
(可选)对于描述,提供 KMS 密钥的描述。
-
(可选)对于标签,提供 KMS 密钥的标签,然后选择下一步。
-
(可选)对于密钥管理员,提供获授权管理此密钥的 IAM 用户和角色。
-
对于密钥删除,确保选中允许密钥管理员删除此密钥复选框,然后选择下一步。
-
(可选)对于密钥用户,提供获授权在加密操作中使用此密钥的 IAM 用户和角色。选择下一步。
-
对于密钥策略,选择编辑,并在策略声明中包含以下内容以允许 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:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:*", "kms:ViaService": "secretsmanager.us-west-2.amazonaws.com", "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:fsx:us-west-2:123456789012:file-system/*" } } } -
选择完成。
注意
通过修改 Resource 和 aws:SourceArn 字段,您可以设置更精细的访问控制,以针对特定的密钥和文件系统。
步骤 2:创建 AWS Secrets Manager 密钥
创建密钥
-
通过 https://console.aws.amazon.com/secretsmanager/
打开 Secrets Manager 控制台。 -
选择存储新密钥。
-
对于密钥类型,请选择其他密钥类型。
-
对于键/值对,请执行以下操作以添加您的两个密钥:
-
对于第一个密钥,请输入
CUSTOMER_MANAGED_ACTIVE_DIRECTORY_USERNAME。 -
对于第一个密钥的值,请仅输入 AD 用户的用户名(不带域前缀)。
-
对于第二个密钥,请输入
CUSTOMER_MANAGED_ACTIVE_DIRECTORY_PASSWORD。 -
对于第二个密钥的值,请输入您在域中为 AD 用户创建的密码。
-
-
对于加密密钥,输入上一步所创建 KMS 密钥的 ARN,然后选择下一步。
-
在密钥名称中,输入一个描述性名称,以便您稍后查找自己的密钥。
-
(可选)对于描述,输入密钥名称的描述。
-
对于资源权限,选择编辑。
在权限策略中添加以下策略,以允许 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/*" } } } ] } -
(可选)您可以将 Secrets Manager 配置为自动轮换凭证。选择下一步。
-
选择完成。
步骤 1:创建 KMS 密钥
创建 KMS 密钥,以在 Secrets Manager 中对 Active Directory 凭证进行加密和解密。
要创建 KMS 密钥,请使用 AWS CLI 命令 create-key。
在此命令中,设置 --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 和区域,然后使用这些值配置密钥策略,以确保在 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/*\" } } } ] }" --query 'KeyMetadata.Arn' --output text) echo "KMS Key ARN: $KMS_KEY_ARN"
注意
通过修改 Resource 和 aws:SourceArn 字段,您可以设置更精细的访问控制,以针对特定的密钥和文件系统。
步骤 2:创建 AWS Secrets Manager 密钥
要创建用于 Amazon FSx 访问 Active Directory 的密钥,请使用 AWS CLI 命令 create-secret,并设置以下参数:
-
--name:密钥的标识符。 -
--description:密钥用途的描述。 -
--kms-key-id:您在步骤 1 中创建的 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 命令附加资源策略,并设置以下参数:
-
--secret-id:要附加策略的密钥的名称或 ARN。以下示例使用FSxSecret作为--secret-id。 -
--region:与密钥相同的 AWS 区域。 -
--resource-policy:JSON 策略文档,授予 Amazon FSx 访问密钥的权限。该策略必须包含以下内容:-
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 中所创建密钥的 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/*\" } } } ] }" echo "Resource policy attached successfully"
注意
通过修改 Resource 和 aws:SourceArn 字段,您可以设置更精细的访问控制,以针对特定的密钥和文件系统。