设置Cloud Volumes ONTAP以在 AWS 中使用客户管理的密钥
如果要将 Amazon Web Services (AWS) 加密与 Cloud Volumes ONTAP 结合使用,则需要设置 AWS Key Management Service (KMS)。
客户主密钥 (CMK) 可以由 AWS 或客户管理。它可以与 NetApp Console 和 Cloud Volumes ONTAP 位于同一 AWS 账户中,也可以位于不同的 AWS 账户(共享账户)中。AWS 仅通过 AWS Console 启用密钥管理。有关详细信息,请参阅 "AWS 密钥管理服务"。
-
确保您拥有有关 NetApp Console 代理身份和访问管理 (IAM) 角色(适用于 AWS)的信息。
-
请确保有一个有效的 CMK。
为单个帐户设置客户管理的 KMS 密钥
当控制台代理和 Cloud Volumes ONTAP 位于同一个 AWS 帐户中时,请完成以下步骤:
-
为 Console 代理的 IAM 角色授予 S3 加密权限。将 `s3:PutEncryptionConfiguration`操作添加到 IAM 角色策略:
{ "Sid": "cvoServicePolicy", "Effect": "Allow", "Action": [ "s3:PutEncryptionConfiguration" ], "Resource": "*" } -
允许 Console 代理访问客户管理的加密密钥 (CMEK)。在 AWS Console 上使用以下方法之一:
-
在 AWS Console 上,转到 KMS > Customer managed keys,然后选择您的 CMEK 密钥。
-
在*主要用户*部分,选择*添加*。
-
选择您的 Console 代理实例角色,例如,
occm-role,然后单击*添加*。 -
保存更改。
-
在 AWS Console 上,转到 KMS,然后搜索您的密钥。
-
选择*密钥策略*选项卡,然后选择*编辑*。
-
搜索允许访问密钥的语句, `AllowUseOfTheKey`并将 Console 代理角色 Amazon Resource Name (ARN) 附加到 `Principal`数组。将以下示例中的占位符替换为您的值:
-
YOUR-ACCOUNT-ID:您的 12 位 AWS 帐户 ID -
YOUR-AGENT-ROLE-NAME:Console 代理的 IAM 角色的名称{ "Sid": "AllowUseOfTheKey", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::`YOUR-ACCOUNT-ID`:role/`YOUR-AGENT-ROLE-NAME`" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:ListKeys" ], "Resource": "*" }
-
-
保存更改。
为共享帐户设置客户管理的 KMS 密钥
当 Console 代理在一个 AWS 帐户(帐户 A)中运行,且 Cloud Volumes ONTAP 部署在另一个 AWS 帐户(帐户 B)中时,请先完成帐户 A 的所有单帐户步骤,然后再完成这些步骤。
-
将 `s3:PutEncryptionConfiguration`操作添加到帐户 B 的假定角色。这是必需的,因为 FabricPool 存储桶加密调用在帐户 B 的假定角色下运行。此权限涵盖在用于分层的 S3 存储桶上启用默认加密。
{ "Sid": "cvoServicePolicy", "Effect": "Allow", "Action": [ "s3:PutEncryptionConfiguration" ], "Resource": "*" } -
如果 CMEK 密钥存储在账户 B 中,则账户 A 的代理角色需要直接访问才能使用该密钥。账户 B 中的 KMS 密钥策略授予跨账户访问权限。
-
在帐户 B 的 AWS Console 上,转到 KMS > Customer managed keys,然后选择用于 Cloud Volumes ONTAP 部署的 CMEK 密钥。
-
打开*密钥策略*选项卡并选择*编辑*。
-
添加一个语句,授予 Account A 的 IAM 角色对密钥的访问权限:
{ "Sid": "Allow use of the key from the agent account", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT-A-ID:role/`YOUR-AGENT-ROLE-NAME`" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" }帐户 B 的密钥策略控制是否可以信任帐户 A 的 Console 代理角色来使用密钥。除了帐户 A 的 IAM 策略之外,还需要此策略声明。
-
-
更新账户 A 的 Console 代理的 IAM 策略,以允许对账户 B 的密钥进行 KMS API 调用。
-
在帐户 A 的 AWS Console 上,转到 IAM > Roles,然后选择 Console 代理角色,例如,
occm-role或NetAppCloudManagerRole。 -
添加或更新帐户 B 密钥的 KMS 权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:Describe*", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant" ], "Resource": [ "arn:aws:kms:*:ACCOUNT-B-ID:key/*", "arn:aws:kms:*:ACCOUNT-B-ID:alias/*" ] } ] }帐户 B 中的密钥策略控制对密钥的访问。帐户 A 中的 IAM 策略允许 Console 代理角色进行 KMS API 调用。如果任何一个帐户缺少配置,AWS 将限制访问权限。
-
-
在帐户 B 的 CMEK 上将帐户 A 添加为允许的外部 AWS 帐户。
-
在账户 B 的 AWS KMS 控制台上,打开目标 KMS 密钥并找到 Other AWS accounts 部分。
-
选择 Add other AWS accounts 并输入 Account A 的 AWS 账户 ID。


-
-
Amazon 文档:
-
NetApp Console 文档: