設定Cloud Volumes ONTAP以在 AWS 中使用客戶管理的金鑰
如果您想要將 Amazon Web Services (AWS) 加密與 Cloud Volumes ONTAP 搭配使用,則需要設定 AWS 關鍵管理服務 (KMS)。
客戶主金鑰 (CMK) 可由 AWS 或客戶管理。它可以與 NetApp Console 和 Cloud Volumes ONTAP 位於同一 AWS 帳戶中,也可以位於不同的 AWS 帳戶(共享的帳戶)中。AWS 僅透過 AWS 主控台啟用金鑰管理。如需更多資訊,請參閱 "AWS 金鑰管理服務"。
-
請確保您已掌握有關 NetApp Console 代理程式身份識別與存取管理 (IAM) 角色的資訊,適用於 AWS。
-
確保存在有效的 CMK。
為單一帳戶設定客戶管理的 KMS 金鑰
當 Console 代理程式和 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 主控台中,前往 KMS,然後搜尋您的金鑰。
-
選擇 Key policy 索引標籤,然後選擇 Edit。
-
尋找允許存取金鑰的聲明
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 金鑰。
-
開啟 金鑰原則 索引標籤,然後選取 編輯。
-
新增一條聲明,授予帳戶 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 金鑰,找到「其他 AWS 帳戶」部分。
-
選擇 Add other AWS accounts ,然後輸入帳戶 A 的 AWS 帳戶 ID。


-
-
Amazon 文件:
-
NetApp Console 文件: