

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

# 用于知识库评测作业的数据加密
<a name="rag-evaluation-security-data"></a>

在知识库评测作业期间，Amazon Bedrock 会生成您的数据的临时副本。作业完成后，Amazon Bedrock 会删除数据。为了加密数据，Amazon Bedrock 将使用 KMS 密钥。它使用的是您指定的 KMS 密钥或 Amazon Bedrock 拥有的密钥。

Amazon Bedrock 需要以下部分中的 IAM 和 AWS KMS 权限，这样它才能使用您的 KMS 密钥来执行以下操作：
+ 解密您的数据。
+ 加密 Amazon Bedrock 创建的临时副本。

创建知识库评测作业时，您可以选择使用 Amazon Bedrock 拥有的 KMS 密钥，也可以选择使用自己的客户自主管理型密钥。如果您未指定客户自主管理型密钥，Amazon Bedrock 将默认使用其密钥。

在使用客户自主管理型密钥之前，您必须先执行以下操作：
+ 向 IAM 服务角色的策略添加所需的 IAM 操作和资源。
+ 添加所需的 KMS 密钥策略元素。
+ 创建可以与您的客户自主管理型密钥进行交互的策略。这是在单独的 KMS 密钥策略中指定的。

## 必需的策略元素
<a name="rag-evel-policy-elements"></a>

接下来部分中的 IAM 和 KMS 密钥策略包含以下必需元素：
+ `kms:Decrypt`：对于您使用 KMS 密钥加密的文件，请向 Amazon Bedrock 提供访问和解密这些文件的权限。
+ `kms:GenerateDataKey`：控制使用 KMS 密钥生成数据密钥的权限。Amazon Bedrock 使用 `GenerateDataKey` 加密为评测作业存储的临时数据。
+ `kms:DescribeKey`：提供有关 KMS 密钥的详细信息。
+ `kms:ViaService`— 条件密钥将使用 KMS 密钥限制为只能向指定 AWS 服务发出请求。您必须指定以下服务：
  + Amazon S3，因为 Amazon Bedrock 将数据的临时副本存储在 Amazon Bedrock 拥有的 Amazon S3 位置。
  + Amazon Bedrock，因为评估服务会调用 Amazon Bedrock 知识库 API 来执行知识库工作流。
+ `kms:EncryptionContext:context-key`— 此条件密钥限制了对 AWS KMS 操作的访问，因此它们仅特定于提供的[加密上下文](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html)。

## IAM 策略要求
<a name="rag-eval-iam-policies"></a>

在您要与 Amazon Bedrock 结合使用的 IAM 角色中，关联的 IAM 策略必须包含以下元素。要了解有关管理 AWS KMS 密钥的更多信息，请参阅[将 IAM 策略与一起使用 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)。

Amazon Bedrock 中的知识库评估工作使用 AWS 自有密钥。有关 AWS 自有密钥的更多信息，请参阅《*AWS Key Management Service 开发者指南》*中的[AWS 自有密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。

以下是一个示例 IAM 策略，该策略仅包含必需的 AWS KMS 操作和资源：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CustomKMSKeyProvidedToBedrockEncryption",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/*"
            ],
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": [
                        "s3.us-east-1.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Sid": "CustomKMSKeyProvidedToBedrockEvalKMS",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/*"
            ],
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:evaluationJobArn": "arn:aws:bedrock:us-east-1:123456789012:evaluation-job/*"
                }
            }
        },
        {
            "Sid": "CustomKMSKeyProvidedToBedrockKBDecryption",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/*"
            ],
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:knowledgeBaseArn": "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/*"
                }
            }
        },
        {
            "Sid": "CustomKMSKeyProvidedToBedrockKBEncryption",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/*"
            ],
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:knowledgeBaseArn": "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/*"
                },
                "StringEquals": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Sid": "CustomKMSKeyProvidedToBedrockKBGenerateDataKey",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/*"
            ],
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:CustomerAwsAccountId": "123456789012",
                    "kms:EncryptionContext:SessionId": "*"
                },
                "StringEquals": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Sid": "CustomKMSDescribeKeyProvidedToBedrock",
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/*"
            ]
        }
    ]
}
```

------

## AWS KMS 关键政策要求
<a name="rag-eval-kms-policies"></a>

每个 KMS 密钥都必须有一个密钥策略。密钥策略中的语句确定谁有权限使用 KMS 密钥以及如何使用 KMS 密钥。您还可使用 IAM 策略和授权来控制对 KMS 密钥的访问，但每个 KMS 密钥必须有一个密钥策略。

您必须向现有的 KMS 密钥策略添加以下语句。该语句为 Amazon Bedrock 提供了使用您指定的 KMS 密钥，将您的数据临时存储在 S3 存储桶中的权限。

### 为调用 CreateEvaluationJob API 的角色设置 KMS 权限
<a name="model-evaluation-kms-create-job-2"></a>

确保您的角色具有 DescribeKey GenerateDataKey、和 Decrypt 权限，这些权限用于在评估作业中使用的 KMS 密钥上创建评估作业。

KMS 密钥策略示例

```
{
    "Statement": [
       {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account-id:role/APICallingRole"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kmsDescribeKey"
            ],
            "Resource": "*"
       }
   ]
}
```

角色调用 CreateEvaluationJob API 的 IAM 策略示例

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CustomKMSKeyProvidedToBedrockEncryption",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "kms:DescribeKey"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/keyYouUse"
            ]
        }
    ]
}
```

------