View a markdown version of this page

設定客戶受管金鑰政策 - Amazon Bedrock AgentCore

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定客戶受管金鑰政策

若要搭配 AWS 客服人員登錄檔使用客戶受管金鑰,您必須為呼叫委託人設定 IAM 政策,以及允許服務執行加密和解密操作的 KMS 金鑰政策。

先決條件

使用客戶受管金鑰建立登錄檔之前,請確定下列事項:

  • 您在與登錄檔相同的區域中有對稱加密 KMS AWS 金鑰。如需有關建立 KMS 金鑰的資訊,請參閱 Key Management Service 開發人員指南中的建立金鑰。 AWS

  • IAM 主體呼叫CreateRegistry具有必要的 KMS 許可。請參閱 所需的 IAM 許可。

所需的 IAM 許可

若要與加密的登錄檔互動,您必須在 KMS 金鑰上具有下列許可:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRegistryCMKAccess", "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKey", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com" } } } ] }

取代以下的值:

  • Resource — KMS 金鑰的 ARN。

  • kms:ViaService — 將 us-east-1 取代為您登錄的 AWS 區域。

kms:ViaService 條件會將許可限制為透過 AWS Agent Registry 服務提出的請求,以防止在 AWS Agent Registry 之外使用這些許可。

注意

您必須獲得授權,才能透過 IAM 政策或透過金鑰政策執行這些 KMS 動作 (請參閱 客戶自管金鑰的金鑰政策)。如果您的金鑰政策包含啟用 IAM 政策的預設金鑰政策陳述式,IAM 政策就已足夠。

客戶自管金鑰的金鑰政策

下列各節列出 AWS 客服人員登錄檔所需的 KMS 金鑰政策陳述式。將這些陳述式新增至您的 KMS 金鑰政策,以便服務和呼叫主體可以使用金鑰。當您的金鑰政策不包含啟用 IAM 政策的預設金鑰政策陳述式,或金鑰位於不同的帳戶中時,則需要新增陳述式。

重要

以下各節中的 JSON 區塊是個別政策陳述式的範例,而不是完整的金鑰政策。請勿使用它們來取代現有的 KMS 金鑰政策。相反地,根據您組織中的角色和服務連結角色來複製您需要的陳述式,並將其附加到現有金鑰政策的Statement陣列。在儲存政策之前,更新每個陳述式中的值 (帳戶 ID、區域、角色 ARN 和登錄檔 ARN),以符合您的環境。

金鑰政策應根據組織中的登錄檔角色授予許可:

  • 管理員 — 建立登錄檔和管理加密組態。需要 kms:DescribeKey、 kms:CreateGrant和加密/解密許可。

  • 發佈者或核准者 — 建立和更新登錄檔記錄 (寫入和讀取記錄描述項)。需要加密和解密許可。

  • 取用者 — 讀取登錄記錄和搜尋結果 (讀取記錄描述項)。需要解密許可。

除了角色陳述式之外,請新增 ,服務連結角色的政策陳述式以便 AWS 客服人員登錄檔可以在執行時間代表您使用金鑰。如果您使用 AWS Resource Access Manager (AWS RAM) 與 AWS 組織中的其他帳戶共用登錄檔,也請新增 透過 RAM AWS 進行組織存取的政策陳述式。

注意

如果您的角色同時寫入和讀取記錄描述項 (例如,也擷取記錄的發佈者),請授予加密和解密許可,如 所示發佈者的政策陳述式。

管理員的政策陳述式

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRegistryAdminKeyValidation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RegistryAdminRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com" } } }, { "Sid": "AllowRegistryAdminGrantCreation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RegistryAdminRole" }, "Action": [ "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com" }, "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Sid": "AllowRegistryAdminCryptoOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RegistryAdminRole" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKey", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:agent-registry:registry-arn": "arn:aws:agent-registry:us-east-1:111122223333:registry/my-registry-id" } } } ] }
  • AllowRegistryAdminKeyValidation — 允許管理員在將金鑰與登錄檔搭配使用之前驗證金鑰。

  • AllowRegistryAdminGrantCreation — 允許管理員在建立登錄檔時建立授予。kms:GrantIsForAWSResource 條件可確保 kms:CreateGrant只能在 AWS 服務代表發起人啟動授予建立時使用。

  • AllowRegistryAdminCryptoOps — 允許管理員透過加密內容對特定登錄檔的範圍進行加密和解密記錄描述項。

發佈者的政策陳述式

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRegistryPublisherCryptoOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RegistryPublisherRole" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKey", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:agent-registry:registry-arn": "arn:aws:agent-registry:us-east-1:111122223333:registry/my-registry-id" } } } ] }
  • AllowRegistryPublisherCryptoOps — 允許發佈者和核准者加密和解密記錄描述項。CreateRegistryRecord 和 需要UpdateRegistryRecord。

消費者的政策陳述式

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRegistryConsumerDecrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RegistryConsumerRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:agent-registry:registry-arn": "arn:aws:agent-registry:us-east-1:111122223333:registry/my-registry-id" } } } ] }
  • AllowRegistryConsumerDecrypt — 允許消費者解密記錄描述項。GetRegistryRecord 和 需要SearchDiscoverableRegistryRecords。

服務連結角色的政策陳述式

授予 AWS 代理程式登錄檔的服務連結角色許可,以在執行時間使用金鑰。服務使用此角色代表您加密和解密記錄描述項。

新增此陳述式需要兩個排序步驟:

  1. 首先在帳戶中建立服務連結角色。 AWS 客服人員登錄檔不會為您建立角色,您必須先自行建立角色,才能新增 KMS 金鑰政策陳述式。使用 AWS CLI:

    aws iam create-service-linked-role --aws-service-name agent-registry.amazonaws.com

    這會在 建立AWSServiceRoleForAgentRegistry角色arn:aws:iam::<account-id>:role/aws-service-role/agent-registry.amazonaws.com/AWSServiceRoleForAgentRegistry。每個帳戶只需執行此操作一次。

  2. 然後將下列陳述式新增至您的 KMS 金鑰政策。IAM 會拒絕參考尚未存在之委託人的任何金鑰政策,因此在您貼入其名稱的陳述式之前,該角色必須存在。

使用加密內容萬用字元,將陳述式範圍限定為您帳戶中的登錄檔。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRegistrySlrCryptoOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/aws-service-role/agent-registry.amazonaws.com/AWSServiceRoleForAgentRegistry" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:Encrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:agent-registry:registry-arn": "arn:aws:agent-registry:us-east-1:111122223333:registry/*" } } } ] }
  • AllowRegistrySlrCryptoOps — 允許 AWS 代理程式登錄檔的服務連結角色 (AWSServiceRoleForAgentRegistry) 代表您加密和解密記錄描述項,範圍為透過 kms:EncryptionContext:aws:agent-registry:registry-arn條件在您帳戶中的登錄檔。

透過 RAM AWS 進行組織存取的政策陳述式

如果您使用 AWS Resource Access Manager (AWS RAM) 與 AWS Organization 中的其他帳戶共用customer-managed-key-encrypted登錄檔,請新增此陳述式。它授予組織中任何主體從與其共用的登錄檔解密記錄描述項的能力。如果您不透過 RAM AWS 共用登錄檔,則不需要此陳述式。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOrganizationDecrypt", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-EXAMPLE1234" } } } ] }
  • AllowOrganizationDecrypt — 允許 AWS 組織中的任何主體從您透過 RAM AWS 共用的登錄檔解密記錄描述項。aws:PrincipalOrgID 條件會將此許可嚴格範圍限定為具名組織的成員帳戶;如果沒有相符的組織 ID,則不會"Principal": "*"授予任何許可。來電者仍需要在共用登錄檔本身上對應的服務層級 IAM 許可。

取代金鑰政策陳述式中的值

取代每個金鑰政策陳述式中的下列值:

  • Principal — 每個角色的 IAM 使用者或角色 ARN。將 111122223333 取代為您的帳戶 ID,並將角色名稱取代為實際的 IAM 角色。對於服務連結角色陳述式,請將 111122223333 取代為您的帳戶 ID;保持角色路徑和名稱 (aws-service-role/agent-registry.amazonaws.com/AWSServiceRoleForAgentRegistry),如下所示:它是固定的服務受管值。

  • kms:ViaService — 將 us-east-1 取代為您登錄的 AWS 區域。

  • kms:EncryptionContext:aws:agent-registry:registry-arn — 以登錄檔的 ARN 取代 。若要允許存取您帳戶中的所有登錄檔,請使用 StringLike搭配萬用字元:arn:aws:agent-registry:us-east-1:111122223333:registry/*。

  • aws:PrincipalOrgID — 在 AWS RAM 共用陳述式中,將 取代o-EXAMPLE1234為您的 AWS 組織 ID。您可以在 AWS Organizations 主控台中找到它,或執行 aws organizations describe-organization --query 'Organization.Id' --output text。