使用客戶管理的 KMS 金鑰加密 AgentCore 閘道
根據預設,Gateway 會使用服務管理的 AWS Key Management Service 金鑰來加密靜態資料。不過,您可以選擇性地提供自己的客戶受管 KMS 金鑰,以便在下列情況下加密靜態資料:
-
建立閘道。
-
更新閘道的組態。
使用客戶受管金鑰可讓您更好地控制加密程序,包括能夠:
-
依照您自己的排程輪換金鑰
-
透過 IAM 政策控制對金鑰的存取
-
在不再需要金鑰時停用或刪除金鑰
-
透過 CloudWatch 日誌和 AWS CloudTrail 稽核金鑰用量
如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南。
注意
如果您選擇使用客戶受管金鑰,您必須負責管理金鑰及其許可。如果停用或刪除金鑰,或者如果 Gateway 失去使用該金鑰的許可,您將失去對加密資料的存取權。
加密 AgentCore 閘道的先決條件
在加密閘道之前,請確定您已滿足下列先決條件:
-
您可以存取 KMS 金鑰。如需建立 KMS 金鑰的資訊,請參閱建立 KMS 金鑰。
-
KMS 金鑰已連接金鑰政策,允許下列許可:
-
允許閘道服務角色執行下列動作的許可:
-
kms:創建權限
-
kms:描述金鑰
-
kms:解密
-
kms:產生資料金鑰
-
-
(如果您為閘道啟用 CloudWatch Logs) 允許 CloudWatch Logs 服務解密金鑰的許可。
如需控制 KMS 金鑰的 IAM 許可的詳細資訊,請參閱 Key Management Service 開發人員指南中的 KMS 金鑰存取和許可。 AWS
-
範例金鑰政策
下列範例政策提供加密閘道和使用加密閘道的必要許可。第四個陳述式也允許 CloudWatch Logs 記錄加密閘道的金鑰用量。政策包含符合安全最佳實務的條件金鑰。
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowServiceRoleDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/GatewayServiceRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "bedrock-agentcore.us-east-1.amazonaws.com" ] } } }, { "Sid": "AllowServiceRoleDecryptKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/GatewayServiceRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "bedrock-agentcore.us-east-1.amazonaws.com" ] }, "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore-gateway:arn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/GatewayId" } } }, { "Sid": "AllowServiceRoleCreateGrant", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/GatewayServiceRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "bedrock-agentcore.us-east-1.amazonaws.com" ], "kms:GrantConstraintType": "EncryptionContextSubset" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey" ] }, "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore-gateway:arn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/GatewayId" } } }, { "Sid": "AllowKMSDecryptionLogging", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:SourceArn": "arn:aws:logs:us-east-1:123456789012:*" } } } ] }
此政策包含下列陳述式:
-
AllowServiceRoleDescribeKKey – 如果透過 AgentCore 服務提出請求,則允許指定的委託人描述金鑰。取代下列欄位中的值:
-
Principal– 將AWS值取代為閘道服務角色的實際 ARN。 -
Condition– 在kms:ViaService陣列中,將us-east-1取代為您想要允許描述金鑰的實際 AWS 區域。
-
-
AllowServiceRoleDecryptKey – 如果透過 AgentCore 服務提出請求,且提出請求的閘道 ARN 符合
kmsEncryptionContext:aws:bedrock-agentcore-gateway-arn欄位中的閘道,則允許指定的委託人解密金鑰。取代以下的值:-
Principal– 將AWS值取代為閘道服務角色的實際 ARN。 -
Condition– 執行下列動作:-
在
kms:ViaService陣列中,將us-east-1取代為您要允許解密金鑰的實際 AWS 區域。 -
將
kmsEncryptionContext:aws:bedrock-agentcore-gateway-arn值取代為閘道的實際 ARN。
-
-
-
AllowServiceRoleCreateGrant – 如果透過 AgentCore 服務提出請求,且提出請求的閘道 ARN 符合
kmsEncryptionContext:aws:bedrock-agentcore-gateway-arn欄位中的閘道,則允許指定的委託人為金鑰建立授予。取代以下的值:-
Principal– 將AWS值取代為閘道服務角色的實際 ARN。 -
Condition– 執行下列動作:-
在
kms:ViaService陣列中,將us-east-1取代為您要允許解密金鑰的實際 AWS 區域。 -
將
kmsEncryptionContext:aws:bedrock-agentcore-gateway-arn值取代為閘道的實際 ARN (如果您想要允許)。
-
-
-
AllowKMSDecryptionLogging – 允許指定的委託人解密客戶管理的 KMS 金鑰,以透過 CloudWatch Logs 稽核金鑰用量。在
kms:EncryptionContext:SourceArn值中,將us-east-1和123456789012值取代為您的實際 AWS 區域和帳戶 ID。