Amazon Bedrock数据自动化中的加密 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Bedrock数据自动化中的加密

Amazon Bedrock数据自动化 (BDA) 使用加密来保护您的静态数据。这包括由服务存储的蓝图、项目和提取的见解。BDA 提供了两个加密数据的选项:

  1. AWS自有密钥 — 默认情况下,BDA 使用AWS自有密钥加密您的数据。您无法查看、管理或使用AWS自有密钥,也无法审核其使用情况。但是,无需采取任何措施或更改任何计划即可保护用于加密数据的密钥。有关更多信息,请参阅《密AWS钥管理服务开发者指南》中的AWS自有密钥。

  2. 客户自主管理型密钥 – 您可以选择使用您自行管理的客户自主管理型密钥来加密数据。有关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 资源,请执行以下常规步骤:

  1. (先决条件)确保您的 IAM 角色拥有 CreateKey 操作权限。

  2. 按照创建密钥中的步骤使用AWS KMS控制台或 CreateKey 操作创建客户托管密钥。

  3. 创建密钥会返回一个 ARN,您可以将其用于需要使用密钥的操作(例如,在 BDA 中创建项目或蓝图时),例如异步操作。 invokeDataAutomation

  4. 创建密钥策略并为其附加所需权限。要创建密钥策略,请按照《AWS KMS开发人员指南》中创建密钥策略中的步骤进行操作。

Amazon Bedrock数据自动化资源的权限和密钥策略

创建AWS KMS密钥后,您可以为其附加密钥策略。以下 AWS KMS 操作用于加密 BDA 资源的密钥:

  1. kms:CreateGrant — 允许 BDA 服务通过授权操作访问指定密钥,从而为客户托管AWS KMS密钥创建授权(需要)。 InvokeDataAutomationAsync

  2. kms:DescribeKey — 提供客户管理的密钥详细信息,以便 BDA 验证密钥。

  3. kms:GenerateDataKey — 提供客户管理的密钥详细信息,以允许 BDA 验证用户访问权限。

  4. kms:解密 — 解密存储的密文以验证角色是否可以正确访问加密 BDA 资源的AWS KMS密钥。

针对 Amazon Bedrock 数据自动化功能的密钥策略

要使用客户自主管理型密钥加密 BDA 资源,请在密钥策略中添加以下语句,并将 ${account-id}${region}、和 ${key-id} 替换为您的特定值:

JSON
{ "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::111122223333:role/Role" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

IAM 角色权限

用于与 BDA 交互的 IAM 角色AWS KMS应具有以下权限,${key-id}用您的特定值替换${region}${account-id}、和:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

Amazon Bedrock 自动化加密上下文

BDA 在所有加密操作中使用相同的AWS KMS加密上下文,其中密钥是aws:bedrock:data-automation-customer-account-id,值是您的AWS账户 ID。加密上下文的示例如下。

"encryptionContext": { "bedrock:data-automation-customer-account-id": "account id" }
使用加密上下文进行监控

使用对称的客户自主管理型密钥来加密您的数据时,您还可以使用审计记录和日志中的加密上下文来识别客户自主管理型密钥的使用情况。加密上下文还会显示在AWS CloudTrail或 Amazon Logs 生成的 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 CloudTrailAmazon 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" }