本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Bedrock Data Automation (BDA) 使用加密來保護靜態資料。這包括由 服務儲存的藍圖、專案和擷取的洞見。BDA 提供兩種加密資料的選項:
AWS 擁有的金鑰 – 根據預設,BDA 會使用 AWS 擁有的金鑰加密您的資料。您無法檢視、管理或使用 AWS 擁有的金鑰,或稽核其使用。不過,您不需要採取任何動作或變更任何程式,即可保護加密您資料的金鑰。如需詳細資訊,請參閱 Key Management Service 開發人員指南中的AWS 擁有的金鑰。 AWS
客戶受管金鑰 – 您可以選擇使用您自己管理的客戶受管金鑰來加密資料。如需 AWS KMS 金鑰的詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的客戶受管金鑰。BDA 不支援在 Amazon Bedrock 主控台中使用的客戶受管金鑰,僅適用於 API 操作。
Amazon Bedrock Data Automation 使用 AWS 自有金鑰自動啟用靜態加密,無需付費。如果您使用客戶受管金鑰,則需支付 AWS KMS 費用。如需定價的詳細資訊,請參閱 AWS KMS 定價
如何在 中使用 Amazon Bedrock 授予 AWS KMS
如果您在呼叫 invokeDataAutomationAsync 時指定用於 BDA 加密的客戶受管金鑰,則服務會透過傳送 CreateGrant 請求至 來建立與您的資源相關聯的授予 AWS KMS。此授予可讓 BDA 存取和使用您的客戶受管金鑰。
BDA 會針對下列內部操作,使用客戶受管金鑰的授予:
DescribeKey — 將請求傳送至 AWS KMS ,以確認您提供的對稱客戶受管 AWS KMS 金鑰 ID 是否有效。
GenerateDataKey 和 Decrypt:將請求傳送至 AWS KMS,以產生由客戶受管金鑰加密的資料金鑰,並解密加密的資料金鑰,以便用來加密您的 資源。
CreateGrant — 將請求傳送至 AWS KMS ,以建立包含上述操作子集 (DescribeKey、 GenerateDataKey、Decrypt) 的縮小範圍授予,以進行非同步執行操作。
您可以完整存取客戶受管 AWS KMS 金鑰。您可以依照 AWS KMS 開發人員指南中的淘汰和撤銷授予中的步驟來撤銷授予的存取權,也可以隨時修改金鑰政策來移除服務對客戶受管金鑰的存取權。如果您這樣做,BDA 將無法存取您金鑰加密的資源。
如果您在撤銷授予之後啟動新的 invokeDataAutomationAsync 呼叫,BDA 會重新建立授予。授予會在 30 小時後由 BDA 淘汰。
建立客戶受管金鑰並連接金鑰政策
若要使用您建立和管理的金鑰來加密 BDA 資源,請遵循下列一般步驟:
Amazon Bedrock Data Automation 資源的許可和金鑰政策
建立 AWS KMS 金鑰之後,您可以將金鑰政策連接至該金鑰。下列 AWS KMS 動作用於加密 BDA 資源的金鑰:
-
kms:CreateGrant – 允許 BDA 服務透過 InvokeDataAutomationAsync 所需的授予操作存取指定的 AWS KMS 金鑰,藉此為客戶受管金鑰建立授予。
-
kms:DescribeKey – 提供客戶受管金鑰詳細資訊,以允許 BDA 驗證金鑰。
-
kms:GenerateDataKey – 提供客戶受管金鑰詳細資訊,以允許 BDA 驗證使用者存取。
-
kms:Decrypt – 解密儲存的密碼文字,以驗證角色對加密 BDA 資源的 AWS KMS 金鑰具有適當的存取權。
Amazon Bedrock 資料自動化的金鑰政策
若要使用客戶受管金鑰加密 BDA 資源,請在金鑰政策中包含下列陳述式${account-id}
,並將 ${region}
、 和 取代${key-id}
為您的特定值。:
{
"Version": "2012-10-17",
"Id": "KMS key policy for a key to encrypt data for BDA resource",
"Statement": [
{
"Sid": "Permissions for encryption of data for BDA resources",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::${account-id}:role/${role}"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey",
"kms:DescribeKey",
"kms:CreateGrant"
],
"Resource": "*",
"Condition": {
"StringLike": {
"kms:ViaService": [
"bedrock.${region}.amazonaws.com"
]
}
}
}
]
}
IAM 角色許可
用於與 BDA 互動的 IAM 角色 AWS KMS 應具有下列許可,請將 ${region}
、 ${account-id}
和 取代${key-id}
為您的特定值:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt",
"kms:DescribeKey",
"kms:CreateGrant"
],
"Resource": "arn:aws:kms:${region}:${account-id}:key/${key-id}",
"Condition": {
"StringLike": {
"kms:ViaService": [
"bedrock.${region}.amazonaws.com"
]
}
}
}
}
Amazon Bedrock Automation 加密內容
BDA 在所有 AWS KMS 密碼編譯操作中使用相同的加密內容,其中金鑰為 aws:bedrock:data-automation-customer-account-id
,而 teh 值為您的 AWS 帳戶 ID,加密內容的範例如下。
"encryptionContext": { "bedrock:data-automation-customer-account-id": "
account id
" }
使用加密內容進行監控
當您使用對稱客戶受管金鑰來加密資料時,您也可以使用稽核記錄和日誌中的加密內容來識別如何使用客戶受管金鑰。加密內容也會出現在 AWS CloudTrail 或 Amazon CloudWatch Logs 產生的日誌中。
使用加密內容控制對客戶自管金鑰的存取權限
您可以將金鑰政策和 IAM 政策中的加密內容作為條件,以控制對對稱客戶受管金鑰的存取。您也可以在授予中使用加密內容條件。BDA 在授予中使用加密內容限制條件,以控制對您帳戶或區域中客戶受管金鑰的存取。授予條件會要求授予允許的操作使用指定的加密內容。
以下是授予特定加密內容之客戶受管金鑰存取權的金鑰政策陳述式範例。此政策陳述式中的條件會要求具有指定加密內容的加密內容條件。
[
{
"Sid": "Enable DescribeKey, Decrypt, GenerateDataKey",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/ExampleRole"
},
"Action": ["kms:DescribeKey", "kms:Decrypt", "kms:GenerateDataKey"],
"Resource": "*"
},
{
"Sid": "Enable CreateGrant",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/ExampleRole"
},
"Action": "kms:CreateGrant",
"Resource": "*",
"Condition": {
"StringLike": {
"kms:EncryptionContext:aws:bedrock:data-automation-customer-account-id": "111122223333"
},
"StringEquals": {
"kms:GrantOperations": ["Decrypt", "DescribeKey", "GenerateDataKey"]
}
}
}
]
監控 Amazon Bedrock Data Automation 的加密金鑰
當您使用 AWS KMS 客戶受管金鑰搭配 Amazon Bedrock Data Automation 資源時,您可以使用 AWS CloudTrail或 Amazon CloudWatch 來追蹤 Amazon Bedrock Data Automation 傳送的請求 AWS KMS。以下是 CreateGrant 監控 Amazon Bedrock Data Automation 呼叫 AWS KMS 的操作以建立主要授予的範例 AWS CloudTrail 事件:
{
"eventVersion": "1.09",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAIGDTESTANDEXAMPLE:SampleUser01",
"arn": "arn:aws:sts::111122223333:assumed-role/RoleForDataAutomation/SampleUser01",
"accountId": "111122223333",
"accessKeyId": "EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAIGDTESTANDEXAMPLE",
"arn": "arn:aws:iam::111122223333:role/RoleForDataAutomation",
"accountId": "111122223333",
"userName": "RoleForDataAutomation"
},
"attributes": {
"creationDate": "2024-05-07T21:46:28Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "bedrock.amazonaws.com"
},
"eventTime": "2024-05-07T21:49:44Z",
"eventSource": "kms.amazonaws.com",
"eventName": "CreateGrant",
"awsRegion": "us-east-1",
"sourceIPAddress": "bedrock.amazonaws.com",
"userAgent": "bedrock.amazonaws.com",
"requestParameters": {
"granteePrincipal": "bedrock.amazonaws.com",
"retiringPrincipal": "bedrock.amazonaws.com",
"keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
"constraints": {
"encryptionContextSubset": {
"aws:bedrock:data-automation-customer-account-id": "000000000000"
}
},
"operations": [
"Decrypt",
"CreateGrant",
"GenerateDataKey",
"DescribeKey"
]
},
"responseElements": {
"grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE",
"keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
},
"requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
"eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
"readOnly": false,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management"
}