本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Bedrock 数据自动化 (BDA) 使用加密来保护您的静态数据。这包括服务存储的蓝图、项目和提取的见解。BDA 提供两种加密数据的选项:
AWS 自有密钥-默认情况下,BDA 使用 AWS 自有密钥加密您的数据。您无法查看、管理或使用 AWS 拥有的密钥,也无法审计其使用情况。但是,无需采取任何措施或更改任何计划即可保护用于加密数据的密钥。有关更多信息,请参阅《密 AWS 钥管理服务开发者指南》中的AWS 自有密钥。
客户管理的密钥-您可以选择使用您自己管理的客户托管密钥来加密您的数据。有关 AWS KMS 密钥的更多信息,请参阅《密钥管理服务开发人员指南》 AWS 中的客户托管密钥。BDA 不支持在 Amazon Bedrock 控制台中使用的客户托管密钥,仅支持 API 操作。
Amazon Bedrock 数据自动化自动启用使用 AWS 自有密钥进行静态加密,不收取任何费用。如果您使用客户管理的密钥,则需要 AWS KMS 付费。有关定价的更多信息,请参阅 AWS KMS 定价
如何在中 Amazon Bedrock 使用补助 AWS KMS
如果您在调用 A invokeDataAutomation sync 时指定了用于加密您的 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 将无法访问由您的密钥加密的资源。
如果您在撤销授权后发起新的 invokeDataAutomation Async 调用,BDA 将重新创建授权。补助金将在30小时后由BDA发放。
创建客户托管密钥并附加密钥策略
要使用您创建和管理的密钥加密 BDA 资源,请执行以下一般步骤:
Amazon Bedrock 数据自动化资源的权限和密钥策略
创建 AWS KMS 密钥后,您可以为其附加密钥策略。以下 AWS KMS 操作用于加密 BDA 资源的密钥:
-
kms:CreateGrant — 允许 BDA 服务通过授权操作访问指定密钥,从而为客户托管 AWS KMS 密钥创建授权(需要)。 InvokeDataAutomationAsync
-
kms:DescribeKey — 提供客户管理的密钥详细信息,以便 BDA 验证密钥。
-
kms:GenerateDataKey — 提供客户管理的密钥详细信息,以允许 BDA 验证用户访问权限。
-
kms:解密 — 解密存储的密文以验证角色是否可以正确访问加密 BDA 资源的 AWS KMS 密钥。
Amazon Bedrock 数据自动化的关键政策
要使用您的客户托管密钥加密 BDA 资源,请在密钥策略中加入以下声明,并${key-id}
用您的特定值替换${account-id}
${region}
、和。 :
{
"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 应具有以下权限,${key-id}
用您的特定值替换${region}
${account-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 基岩自动化加密上下文
BDA 在所有 AWS KMS 加密操作中使用相同的加密上下文,其中密钥是aws:bedrock:data-automation-customer-account-id
,值是您的 AWS 账户 ID,以下是加密上下文的示例。
"encryptionContext": { "bedrock:data-automation-customer-account-id": "
account id
" }
使用加密上下文进行监控
当您使用对称客户托管密钥加密数据时,您还可以使用审计记录和日志中的加密上下文来识别客户托管密钥的使用情况。加密上下文还会显示在 AWS CloudTrail 或 Amazon CloudWatch 日志生成的日志中。
使用加密上下文控制对客户托管密钥的访问
您可以使用密钥策略和 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 数据自动化
当您在 Amazon Bedrock 数据自动化资源中使用 AWS KMS 客户托管密钥时,您可以使用AWS CloudTrail或Amazon CloudWatch跟踪 Amazon Bedrock 数据自动化发送到的请求 AWS KMS。以下是用于监控 Amazon Bedrock 数据自动化CreateGrant为创建主授权而调用的 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"
}