

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

# 安全性
<a name="security-overview"></a>

Amazon Bedrock 的安全性包括对您的数据、应用程序和基础设施的多层保护。

**Topics**
+ [数据保护](data-protection.md)
+ [适用于 Amazon Bedrock 的身份和访问管理](security-iam.md)
+ [用于自定义模型导入作业的 Amazon S3 存储桶跨账户访问](cross-account-access-cmi.md)
+ [Amazon Bedrock 的合规性验证](compliance-validation.md)
+ [Amazon Bedrock 中的事件响应](security-incident-response.md)
+ [Amazon Bedrock 中的故障恢复能力](disaster-recovery-resiliency.md)
+ [Amazon Bedrock 中的基础设施安全性](infrastructure-security.md)
+ [防止跨服务混淆座席](cross-service-confused-deputy-prevention.md)
+ [Amazon Bedrock 中的配置和漏洞分析](vulnerability-analysis-and-management.md)
+ [Amazon Bedrock 滥用检测](abuse-detection.md)
+ [提示注入安全](prompt-injection.md)

# 数据保护
<a name="data-protection"></a>

 AWS [分担责任模式分担责任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)适用于 Amazon Bedrock 中的数据保护。如本模型所述 AWS ，负责保护运行所有内容的全球基础架构 AWS 云。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息，请参阅[数据隐私常见问题](https://aws.amazon.com/compliance/data-privacy-faq/)。有关欧洲数据保护的信息，请参阅 *AWS Security Blog* 上的 [AWS Shared Responsibility Model and GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 博客文章。

出于数据保护目的，我们建议您保护 AWS 账户 凭证并使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 设置个人用户。这样，每个用户只获得履行其工作职责所需的权限。还建议您通过以下方式保护数据：
+ 对每个账户使用多重身份验证（MFA）。
+ 用于 SSL/TLS 与 AWS 资源通信。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 使用设置 API 和用户活动日志 AWS CloudTrail。有关使用 CloudTrail 跟踪捕获 AWS 活动的信息，请参阅《*AWS CloudTrail 用户指南》*中的[使用跟 CloudTrail 踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。
+ 使用高级托管安全服务（例如 Amazon Macie），它有助于发现和保护存储在 Amazon S3 中的敏感数据。
+ 如果您在 AWS 通过命令行界面或 API 进行访问时需要经过 FIPS 140-3 验证的加密模块，请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息，请参阅《美国联邦信息处理标准（FIPS）第 140-3 版》[https://aws.amazon.com/compliance/fips/](https://aws.amazon.com/compliance/fips/)。

强烈建议您切勿将机密信息或敏感信息（如您客户的电子邮件地址）放入标签或自由格式文本字段（如**名称**字段）。这包括您 AWS 服务 使用控制台、API 或与 Amazon Bedrock 或其他机构 AWS CLI合作时。 AWS SDKs在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 URL，强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。

Amazon Bedrock 不会存储或记录您的提示和完成。Amazon Bedrock 不会使用您的提示和完成来训练任何 AWS 模型，也不会将其分发给第三方。

Amazon Bedrock 有一个模型部署账户的概念，即 AWS 在每个提供 Amazon Bedrock 的区域，每个模型提供商都有一个这样的部署账户。这些账户由 Amazon Bedrock 服务团队拥有和运营。模型提供商无法访问这些账户。在模型提供商向模型提供商交付模型后 AWS，Amazon Bedrock 会将模型提供商的推理和训练软件的深度复制到这些账户中进行部署。模型提供商无权问这些账户，因此也无权访问 Amazon Bedrock 日志或客户提示和完成。

**Topics**
+ [数据加密](data-encryption.md)
+ [使用 Amazon VPC 和 AWS PrivateLink 保护您的数据](usingVPC.md)

# 数据加密
<a name="data-encryption"></a>

Amazon Bedrock 使用加密来保护静态数据和传输中数据。

**传输中加密**

在内部 AWS，所有传输中的网络间数据都支持 TLS 1.2 加密。

通过安全 (SSL) 连接发出对 Amazon Bedrock API 和控制台的请求。您将 AWS Identity and Access Management (IAM) 角色传递给 Amazon Bedrock，以提供代表您访问资源以进行培训和部署的权限。

**静态加密**

Amazon Bedrock 提供静态[自定义模型加密](encryption-custom-job.md)。

## 密钥管理
<a name="key-management"></a>

使用 AWS Key Management Service 来管理用于加密资源的密钥。有关更多信息，请参阅 [AWS Key Management Service 概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)。您可以使用 KMS 密钥来加密以下资源。
+ 通过 Amazon Bedrock
  + 模型自定义任务及其输出自定义模型-在控制台中创建任务期间或通过在 [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API 调用中指定`customModelKmsKeyId`字段。
  + 代理-在控制台中创建代理期间，或者在 [CreateAgent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateAgent.html)API 调用中指定`customerEncryptionKeyArn`字段。
  + 知识库的数据源提取作业-在控制台中创建知识库期间，或者通过在[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)或 [UpdateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateDataSource.html)API 调用中指定`kmsKeyArn`字段。
  + Amazon S OpenSearch ervice 中的矢量存储-在创建矢量商店期间。有关更多信息，请参阅[创建、列出和删除亚马逊 OpenSearch 服务馆藏](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-manage.html)以及[加密亚马逊 OpenSearch 服务的静态数据](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/encryption-at-rest.html)。
  + 模型评估作业 — 在控制台中创建模型评估任务或在 [CreateEvaluationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateEvaluationJob.html)API 调用` customerEncryptionKeyId`中指定密钥 ARN 时。
+ 通过 Amazon S3 — 有关更多信息，请参阅[使用带 AWS KMS 密钥的服务器端加密 (SSE-](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) KMS)。
  + 用于模型自定义的训练、验证和输出数据
  + 知识库的数据来源
+ 通过 AWS Secrets Manager — 有关更多信息，请参阅中的[秘密加密和解密 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html)
  + 第三方模型的向量存储

加密资源后，您可以通过选择资源并在控制台中查看其**详细信息**或使用以下 `Get` API 调用来查找 KMS 密钥的 ARN。
+ [GetModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_GetModelCustomizationJob.html)
+ [GetAgent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetAgent.html)
+ [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html)

# 自定义模型加密
<a name="encryption-custom-job"></a>

Amazon Bedrock 将您的训练数据与[CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)操作或[控制台](model-customization-submit.md)一起使用，创建自定义模型，该模型是 Amazon Bedrock 基础模型的微调版本。您的自定义模型由管理和存储AWS。

Amazon Bedrock 仅使用您提供的微调数据对 Amazon Bedrock 模型进行微调。Amazon Bedrock 不会将微调数据用于任何其他用途。您的训练数据不会用于训练 Titan 基础模型，也不会分发给第三方。其他使用数据，例如使用时间戳、登录的账户 IDs以及服务记录的其他信息，也不会用于训练模型。

微调作业完成后，您为进行微调而提供的训练或验证数据都不会存储在 Amazon Bedrock 中。

请注意，经过微调的模型可以在生成完成时重放部分微调数据。如果您的应用程序不应以任何形式公开微调数据，那么您应首先从训练数据中筛选掉机密数据。如果您已经错误地使用机密数据创建了自定义模型，则可以删除该自定义模型，从训练数据中筛选掉机密信息，然后创建一个新模型。

要加密自定义模型（包括复制的模型），Amazon Bedrock 为您提供了两个选项：

1. **AWS 拥有的密钥**— 默认情况下，Amazon Bedrock 使用加密自定义模型。AWS 拥有的密钥您无法查看、管理AWS 拥有的密钥、使用或审核其使用情况。但是您无需执行任何工作或更改任何计划即可保护用于加密数据的密钥。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [AWS 拥有的密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。

1. **客户托管密钥** – 您可以选择使用自行管理的客户自主管理型密钥加密自定义模型。有关更多信息AWS KMS keys，请参阅《*AWS Key Management Service开发人员指南》*中的[客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

**注意**  
Amazon Bedrock 自动启用静态加密AWS 拥有的密钥，不收取任何费用。如果您使用客户管理的密钥，则需要AWS KMS付费。有关定价的更多信息，请参阅 [AWS Key Management Service 定价](https://aws.amazon.com/kms/pricing/)。

有关的更多信息AWS KMS，请参阅《[AWS Key Management Service开发人员指南》](https://docs.aws.amazon.com/kms/latest/developerguide/)。

**Topics**
+ [Amazon Bedrock 如何使用补助金 AWS KMS](#encryption-br-grants)
+ [了解如何创建客户自主管理型密钥以及如何为其附加密钥策略](#encryption-key-policy)
+ [自定义模型和复制模型的权限和密钥策略](#encryption-cm-statements)
+ [监控 Amazon Bedrock 服务的加密密钥](#encryption-monitor-key)
+ [训练、验证和输出数据的加密](#encryption-custom-job-data)

## Amazon Bedrock 如何使用补助金 AWS KMS
<a name="encryption-br-grants"></a>

如果您指定客户托管密钥来加密自定义模型以进行模型自定义或模型复制任务，Amazon Bedrock 会通过向发送[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)请求来代表您创建与该自定义模型关联**的主要** KMS [授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)。AWS KMS此授权允许 Amazon Bedrock 访问和使用您的客户自主管理型密钥。中的赠款AWS KMS用于让 Amazon Bedrock 访问客户账户中的 KMS 密钥。

Amazon Bedrock 需要主授权，才能将客户自主管理型密钥用于以下内部操作：
+ 向发送[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)请求，AWS KMS以验证您在创建任务时输入的对称客户托管 KMS 密钥 ID 是否有效。
+ 向发送[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)和[解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)请求，AWS KMS以生成由您的客户托管密钥加密的数据密钥并解密加密的数据密钥，以便它们可用于加密模型工件。
+ 向发送[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)请求，使用上述操作的子集（`DescribeKey`、、`Decrypt`）创建限定范围的次要授权`GenerateDataKey`，用于异步执行模型自定义、模型复制或预配置吞吐量创建。AWS KMS
+ Amazon Bedrock 在创建补助金时指定了退休委托人，因此该服务可以发送请求。[RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)

您拥有对客户托管AWS KMS密钥的完全访问权限。您可以按照 [AWS Key Management Service开发人员指南](https://docs.aws.amazon.com/kms/latest/developerguide/)的[停用和撤销授权](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete)中的步骤撤销授权，也可以通过修改[密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)随时删除服务对您的客户自主管理型密钥的访问权限。这样一来，Amazon Bedrock 将无法访问由您的密钥加密的自定义模型。

### 自定义模型的主授权和二级授权的生命周期
<a name="encryption-primary-secondary-grants"></a>
+ **主授权**的使用期限较长，只要相关的自定义模型仍在使用，它就会一直处于有效状态。删除自定义模型后，相应的主授权将自动停用。
+ **二级授权**的使用期限较短。一旦 Amazon Bedrock 代表客户执行的操作完成，它们就会自动停用。例如，模型复制任务完成后，允许 Amazon Bedrock 对复制的自定义模型进行加密的二级授权将立即停用。

## 了解如何创建客户自主管理型密钥以及如何为其附加密钥策略
<a name="encryption-key-policy"></a>

要使用您创建和管理的密钥对AWS资源进行加密，请执行以下常规步骤：

1. （先决条件）确保您的 IAM 角色拥有[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)操作权限。

1. 按照[创建密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)中的步骤，使用AWS KMS控制台或[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)操作创建客户托管密钥。

1. 创建密钥时会返回密钥的 `Arn`，您可以将其用于需要使用密钥的操作（例如，[提交模型自定义作业](model-customization-submit.md)或[运行模型推理](inference-invoke.md)时）。

1. 创建密钥策略并为其附加所需权限。要创建密钥策略，请按照《AWS Key Management Service开发人员指南》中[创建密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html)中的步骤进行操作。

## 自定义模型和复制模型的权限和密钥策略
<a name="encryption-cm-statements"></a>

创建 KMS 密钥后，您可以为其附加密钥策略。密钥策略是[基于资源的策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)，您可以将其附加到客户自主管理型密钥上，用于控制对密钥的访问权限。每个客户托管式密钥必须只有一个密钥策略，其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时，可以指定密钥策略。您可以随时修改密钥策略，但在更改在整个 AWS KMS 中可用之前可能会出现短暂的延迟。有关更多信息，请参阅[https://docs.aws.amazon.com/kms/latest/developerguide/](https://docs.aws.amazon.com/kms/latest/developerguide/)《AWS Key Management Service 开发人员指南》中的[管理对客户托管密钥的访问](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#managing-access)。

以下 KMS [操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html#awskeymanagementservice-actions-as-permissions)用于加密自定义模型和复制模型的密钥：

1. k@@ [ms: CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) — 允许 Amazon Bedrock 服务委托人通过授权[操作访问指定的 KMS 密钥，从而为客户托管密钥创建授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)。有关授权的更多信息，请参阅 [AWS Key Management Service 开发人员指南](https://docs.aws.amazon.com/kms/latest/developerguide/)中的 [Grants in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)。
**注意**  
Amazon Bedrock 还设置了停用主体，并将在不再需要授权后自动停用授权。

1. [kms: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) — 提供客户托管的密钥详细信息以允许 Amazon Bedrock 验证密钥。

1. [kms: GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) — 提供客户托管的密钥详细信息以允许 Amazon Bedrock 验证用户访问权限。Amazon Bedrock 会将生成的加密文字与自定义模型一起存储，用作对自定义模型用户的额外验证检查。

1. [kms: decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) – 解密存储的加密文字，以验证角色是否有适当权限访问加密自定义模型的 KMS 密钥。

作为最佳安全实践，我们建议您添加 k [ms: ViaService](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-via-service) 条件密钥，以限制对 Amazon Bedrock 服务的访问密钥。

虽然一个密钥只能附加一个密钥策略，但您可以通过在策略的 `Statement` 字段的列表中添加语句，将多个语句附加到密钥策略。

以下语句与加密自定义模型和复制模型有关：

### 加密模型
<a name="encryption-key-policy-encrypt"></a>

要使用您的客户自主管理型密钥加密自定义模型或复制的模型，请在密钥策略中包含以下语句，以允许加密模型。在 `Principal` 字段中，将您要允许加密和解密密钥的账户添加到 `AWS` 子字段映射的列表中。如果您使用`kms:ViaService`条件键，则可以为每个区域添加一行，或者使用*\$1*代替*\$1\$1region\$1*来允许所有支持 Amazon Bedrock 的区域。

```
{
    "Sid": "PermissionsEncryptDecryptModel",
    "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"
            ] 
        }
    }
}
```

### 允许访问加密模型
<a name="encryption-key-policy-decrypt"></a>

要允许访问使用 KMS 密钥加密的模型，请在密钥策略中加入以下语句以允许解密密钥。在 `Principal` 字段中，将您要允许解密密钥的账户添加到 `AWS` 子字段映射的列表中。如果您使用`kms:ViaService`条件键，则可以为每个区域添加一行，或者使用*\$1*代替*\$1\$1region\$1*来允许所有支持 Amazon Bedrock 的区域。

```
{
    "Sid": "PermissionsDecryptModel",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::${account-id}:role/${role}"
        ]
    },
    "Action": [
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringLike": {
            "kms:ViaService": [
                "bedrock.${region}.amazonaws.com"
            ] 
        }
    }
}
```

要了解您需要创建的密钥策略，请展开与您的使用案例相对应的部分：

### 设置用于加密自定义模型的密钥权限
<a name="encryption-cm"></a>

如果您计划使用 KMS 密钥对自定义模型进行加密，那么该密钥的密钥策略将取决于您的使用案例。展开与您的使用案例相对应的部分：

#### 用于自定义模型的角色和用于调用模型的角色相同
<a name="encryption-cm-custom-invoke-same"></a>

如果用于调用自定义模型的角色与用于自定义模型的角色相同，则您只需使用 [加密模型](#encryption-key-policy-encrypt) 中的语句。在以下策略模板的 `Principal` 字段中，将您要允许自定义和调用自定义模型的账户添加到 `AWS` 子字段映射的列表中。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PermissionsCustomModelKey",
    "Statement": [
        {
            "Sid": "PermissionsEncryptCustomModel",
            "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"
                    ]
                }
            }
        }
    ]
}
```

------

#### 用于自定义模型的角色和用于调用模型的角色不同
<a name="encryption-custom-invoke-different"></a>

如果用于调用自定义模型的角色与用于自定义模型的角色不同，您需要同时使用 [加密模型](#encryption-key-policy-encrypt) 和 [允许访问加密模型](#encryption-key-policy-decrypt) 中的语句。按如下方式修改以下策略模板中的语句：

1. 第一条语句允许加密和解密密钥。在 `Principal` 字段中，将您要允许自定义自定义模型的账户添加到 `AWS` 子字段映射的列表中。

1. 第二条语句仅允许对密钥进行解密。在 `Principal` 字段中，将您要仅允许调用自定义模型的账户添加到 `AWS` 子字段映射的列表中。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PermissionsCustomModelKey",
    "Statement": [
        {
            "Sid": "PermissionsEncryptCustomModel",
            "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"
                    ]
                }
            }
        },
        {
            "Sid": "PermissionsDecryptModel",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/Role"
                ]
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

### 设置用于复制自定义模型的密钥权限
<a name="encryption-copy"></a>

当您复制自己拥有或已共享给的模型时，您可能需要管理最多两个密钥策略：

#### 用于加密复制模型的密钥的密钥策略
<a name="encryption-copied-model-key-policy"></a>

如果您计划使用 KMS 密钥对复制模型进行加密，那么该密钥的密钥策略将取决于您的使用案例。展开与您的使用案例相对应的部分：

##### 用于复制模型的角色和用于调用模型的角色相同
<a name="encryption-copied-model-copy-invoke-same"></a>

如果用于调用复制模型的角色与用于创建模型复制的角色相同，则您只需使用 [加密模型](#encryption-key-policy-encrypt) 中的语句。在以下策略模板的 `Principal` 字段中，将您要允许复制和调用复制模型的账户添加到 `AWS` 子字段映射的列表中。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PermissionsCopiedModelKey",
    "Statement": [
        {
            "Sid": "PermissionsEncryptCopiedModel",
            "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"
                    ]
                }
            }
        }
    ]
}
```

------

##### 用于复制模型的角色与用于调用模型的角色不同
<a name="encryption-copied-model-copy-invoke-different"></a>

如果用于调用复制模型的角色与用于创建模型复制的角色不同，您需要同时使用 [加密模型](#encryption-key-policy-encrypt) 和 [允许访问加密模型](#encryption-key-policy-decrypt) 中的语句。按如下方式修改以下策略模板中的语句：

1. 第一条语句允许加密和解密密钥。在 `Principal` 字段中，将您要允许创建复制模型的账户添加到 `AWS` 子字段映射的列表中。

1. 第二条语句仅允许对密钥进行解密。在 `Principal` 字段中，将您要仅允许调用复制模型的账户添加到 `AWS` 子字段映射的列表中。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PermissionsCopiedModelKey",
    "Statement": [
        {
            "Sid": "PermissionsEncryptCopiedModel",
            "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"
                    ]
                }
            }
        },
        {
            "Sid": "PermissionsDecryptCopiedModel",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/Role"
                ]
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

#### 对要复制的源模型进行加密的密钥策略
<a name="encryption-copy-source-model-key-policy"></a>

如果您要复制的源模型是使用 KMS 密钥加密的，请将 [允许访问加密模型](#encryption-key-policy-decrypt) 中的语句附加到用于加密源模型的密钥策略中。此语句允许模型复制角色对用于加密源模型的密钥进行解密。在以下策略模板的 `Principal` 字段中，将您要允许复制源模型的账户添加到 `AWS` 子字段映射的列表中。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PermissionsSourceModelKey",
    "Statement": [
        {
            "Sid": "PermissionsDecryptModel",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/Role"
                ]
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

## 监控 Amazon Bedrock 服务的加密密钥
<a name="encryption-monitor-key"></a>

当您将AWS KMS客户托管密钥与您的 Amazon Bedrock 资源一起使用时，您可以使用[AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)或 [Amazon CloudWatch Logs 来跟踪 Amaz](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) on Bedrock 向其发送的请求。AWS KMS

以下是 Amazon Bedrock [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)为创建主拨款而调用的监控 KMS 操作的示例AWS CloudTrail事件：

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:SampleUser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/RoleForModelCopy/SampleUser01",
        "accountId": "111122223333",
        "accessKeyId": "EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/RoleForModelCopy",
                "accountId": "111122223333",
                "userName": "RoleForModelCopy"
            },
            "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",
        "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"
}
```

## 训练、验证和输出数据的加密
<a name="encryption-custom-job-data"></a>

当您使用 Amazon Bedrock 运行模型自定义作业时，需要将输入文件存储在您的 Amazon S3 存储桶中。任务完成后，Amazon Bedrock 会将输出指标文件存储在您在创建任务时指定的 S3 存储桶中，并将生成的自定义模型项目存储在由控制的 S3 存储桶中。AWS

输出文件使用 S3 存储桶的加密配置进行加密。这些文件是使用 [SSE-S3 服务器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)或 [AWS KMS KMS SSE-KMS 加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)进行加密的，具体取决于您对 S3 存储桶的设置。

# 导入的自定义模型的加密
<a name="encryption-import-model"></a>

Amazon Bedrock 支持通过两种方式创建自定义模型，这两种方式使用了相同的加密方法。您的自定义模型由以下人员管理和存储AWS：
+ **自定义模型导入作业** – 用于导入自定义的开源基础模型（如 Mistral AI 或 Llama 模型）。
+ **创建自定义模型** — 用于导入你在 A SageMaker I 中自定义的 Amazon Nova 模型。

对于自定义模型的加密，Amazon Bedrock 提供了以下选项：
+ **AWS自有密钥** — 默认情况下，Amazon Bedrock 使用AWS自有密钥对导入的自定义模型进行加密。您无法查看、管理或使用AWS自有密钥，也无法审核其使用情况。但是，无需采取任何措施或更改任何计划即可保护用于加密数据的密钥。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [AWS 拥有的密钥](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#aws-owned-cmk)。
+ **客户托管密钥 (CMK)** — 您可以通过选择客户托管密钥 (CMK) 来选择在现有AWS拥有的加密密钥之上添加第二层加密。您可以创建、拥有和管理自己的客户自主管理型密钥。

   由于您可以完全控制这层加密，因此可以执行以下任务：
  + 建立和维护密钥策略
  + 创建和维护 IAM 策略和授权
  + 启用和禁用密钥策略
  + 轮换密钥加密材料
  + 添加标签
  + 创建密钥别名
  + 计划密钥删除

  有关更多信息，请参阅《AWS Key Management Service Developer Guide》**中的 [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

**注意**  
对于您导入的所有自定义模型，Amazon Bedrock 会使用AWS自有密钥自动启用静态加密，从而免费保护客户数据。如果您使用客户管理的密钥，则需要AWS KMS付费。有关定价的更多信息，请参阅 [AWS Key Management Service 定价](https://docs.aws.amazon.com/)。

## Amazon Bedrock 如何使用补助金 AWS KMS
<a name="import-model-kms-grants"></a>

如果您指定客户自主管理型密钥来加密导入的模型。Amazon Bedrock 通过向发送[CreateGrant](https://docs.aws.amazon.com//kms/latest/APIReference/API_CreateGrant.html)申请，代表您创建与导入模型相关**的主要AWS KMS**[授权](https://docs.aws.amazon.com/)。AWS KMS此授权允许 Amazon Bedrock 访问和使用您的客户自主管理型密钥。中的赠款AWS KMS用于让 Amazon Bedrock 访问客户账户中的 KMS 密钥。

Amazon Bedrock 需要主授权，才能将客户自主管理型密钥用于以下内部操作：
+ 向发送[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)请求，AWS KMS以验证您在创建任务时输入的对称客户托管 KMS 密钥 ID 是否有效。
+ 向发送[GenerateDataKey](https://docs.aws.amazon.com//kms/latest/APIReference/API_GenerateDataKey.html)和[解密](https://docs.aws.amazon.com//kms/latest/APIReference/API_Decrypt.html)请求，AWS KMS以生成由您的客户托管密钥加密的数据密钥并解密加密的数据密钥，以便它们可用于加密模型工件。
+ 向发送[CreateGrant](https://docs.aws.amazon.com//kms/latest/APIReference/API_CreateGrant.html)请求AWS KMS，使用上述操作的子集（`DescribeKey`、、`GenerateDataKey``Decrypt`）创建限定范围的次要授权，用于异步执行模型导入和按需推理。
+ Amazon Bedrock 在创建补助金时指定了退休委托人，因此该服务可以发送请求。[RetireGrant](https://docs.aws.amazon.com//kms/latest/APIReference/API_RetireGrant.html)

您拥有对客户托管AWS KMS密钥的完全访问权限。您可以按照《AWS Key Management Service 开发人员指南》**的[停用和撤销授权](https://docs.aws.amazon.com//kms/latest/developerguide/grant-manage.html#grant-delete)中的步骤撤销授权，也可以通过修改密钥策略随时删除服务对您的客户自主管理型密钥的访问权限。这样一来，Amazon Bedrock 将无法访问由您的密钥加密的导入模型。

### 自定义导入模型的主授权和二级授权的生命周期
<a name="import-model-kms-grants-lifecycle"></a>
+ **主授权**的使用期限较长，只要相关的自定义模型仍在使用，它就会一直处于有效状态。删除自定义导入模型后，相应的主授权将自动停用。
+ **二级授权**的使用期限较短。一旦 Amazon Bedrock 代表客户执行的操作完成，它们就会自动停用。例如，自定义模型导入作业完成后，允许 Amazon Bedrock 对导入模型进行加密的二级授权将立即停用。

# 使用客户自主管理型密钥（CMK）
<a name="import-model-using-cmk"></a>

如果您计划使用客户自主管理型密钥来加密您的自定义导入模型，请完成以下步骤：

1. 使用 AWS Key Management Service 创建客户自主管理型密钥。

1. 附加一个[基于资源的策略](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_identity-vs-resource.html)，允许指定角色创建和使用自定义导入的模型。

**创建客户托管密钥**

首先确保您拥有 `CreateKey` 的权限。然后按照[创建密钥](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)中的步骤在AWS KMS控制台或 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)API 操作中创建客户托管密钥。确保创建对称加密密钥。

创建密钥时会返回密钥的 `Arn` 值，在使用自定义模型导入功能导入自定义模型时，您可以使用该密钥作为 `importedModelKmsKeyId `。

**创建密钥策略并将其附加到客户自主管理型密钥上**

密钥策略是[基于资源的策略](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_identity-vs-resource.html)，您可以将其附加到客户自主管理型密钥上，以控制对密钥的访问权限。每个客户托管式密钥必须只有一个密钥策略，其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时，可以指定密钥策略。您可以随时修改密钥策略，但在更改在整个 AWS KMS 中可用之前可能会出现短暂的延迟。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[管理对客户托管密钥的访问权限](https://docs.aws.amazon.com//kms/latest/developerguide/control-access-overview.html#managing-access)。

**对导入的自定义模型进行加密**

要使用您的客户托管密钥对导入的自定义模型进行加密，您必须在密钥策略中包含以下AWS KMS操作：
+ k@@ [ms: CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) — 允许 Amazon Bedrock 服务委托人通过授权[操作访问指定的 KMS 密钥，从而为客户托管密钥创建授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)。有关使用授权的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [Grants in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)。
**注意**  
Amazon Bedrock 还设置了停用主体，并将在不再需要授权后自动停用授权。
+ [kms: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) — 提供客户托管的密钥详细信息以允许 Amazon Bedrock 验证密钥。
+ [kms: GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) — 提供客户托管的密钥详细信息以允许 Amazon Bedrock 验证用户访问权限。Amazon Bedrock 会将生成的加密文字与导入的自定义模型一起存储，用作对导入的自定义模型用户的额外验证检查。
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)：解密存储的加密文字，以验证角色是否有适当权限访问加密导入的自定义模型的 KMS 密钥。

以下是一个策略示例，您可以将该密钥附加到用于加密导入模型的角色的密钥上：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "KMS key policy for a key to encrypt an imported custom model",
    "Statement": [
        {
            "Sid": "Permissions for model import API invocation role",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/role"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**解密已加密的导入自定义模型**

如果您要导入的自定义模型已被其他客户自主管理型密钥加密，则必须为同一角色添加 `kms:Decrypt` 权限，如以下策略所示：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "KMS key policy for a key that encrypted a custom imported model",
    "Statement": [
        {
            "Sid": "Permissions for model import API invocation role",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/role"
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# 监控 Amazon Bedrock 服务的加密密钥
<a name="import-model-monitor-encryption-keys"></a>

当您将AWS KMS客户托管密钥与您的 Amazon Bedrock 资源一起使用时，您可以使用[AWS CloudTrail](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-user-guide.html)或 [Amazon CloudWatch Logs 来跟踪 Amaz](https://docs.aws.amazon.com//AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) on Bedrock 向其发送的请求。AWS KMS

以下是 Amazon Bedrock [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)为创建主拨款而调用的监控AWS KMS操作的示例AWS CloudTrail事件：

```
{
"eventVersion": "1.09",
    "userIdentity": {
"type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:SampleUser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/RoleForModelImport/SampleUser01",
        "accountId": "111122223333",
        "accessKeyId": "EXAMPLE",
        "sessionContext": {
"sessionIssuer": {
"type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/RoleForModelImport",
                "accountId": "111122223333",
                "userName": "RoleForModelImport"
            },
            "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",
        "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"
}
```

按照[创建策略](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-overview.html)中的步骤，将以下基于资源的策略附加到 KMS 密钥。该策略包含两个语句。

1. 角色对模型自定义构件进行加密的权限。将导入 ARNs 的自定义模型构建器角色添加到该`Principal`字段。

1. 角色在推理中使用导入的自定义模型的权限。将导入 ARNs 的自定义模型用户角色添加到该`Principal`字段。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "KMS Key Policy",
    "Statement": [
        {
            "Sid": "Permissions for imported model builders",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/role"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Permissions for imported model users",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/role"
            },
            "Action": "kms:Decrypt",
            "Resource": "*"
        }
    ]
}
```

------

# Amazon Bedrock数据自动化中的加密
<a name="encryption-bda"></a>

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

1. AWS自有密钥 — 默认情况下，BDA 使用AWS自有密钥加密您的数据。您无法查看、管理或使用AWS自有密钥，也无法审核其使用情况。但是，无需采取任何措施或更改任何计划即可保护用于加密数据的密钥。有关更多信息，请参阅《[密AWS钥管理服务开发者指南》中的AWS自](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)有密钥。

1.  客户自主管理型密钥 – 您可以选择使用您自行管理的客户自主管理型密钥来加密数据。有关AWS KMS密钥的更多信息，请参阅《密[钥管理服务开发人员指南》AWS中的客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。BDA 不支持在 Amazon Bedrock 控制台中使用客户自主管理型密钥，仅支持在 API 操作中使用。

Amazon Bedrock数据自动化自动启用使用AWS自有密钥进行静态加密，不收取任何费用。如果您使用客户管理的密钥，则需要AWS KMS付费。有关定价的更多信息，请参阅AWS KMS[定价](https://aws.amazon.com/kms/pricing/)。

## 如何在中Amazon Bedrock使用补助 AWS KMS
<a name="encryption-bda-grants"></a>

 如果您在调用 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 停用。

## 创建客户自主管理型密钥并附加密钥策略
<a name="encryption-bda-creating-keys"></a>

 要使用自己创建和管理的密钥加密 BDA 资源，请执行以下常规步骤：

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

1.  按照[创建密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)中的步骤使用AWS KMS控制台或 CreateKey 操作创建客户托管密钥。

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

1.  创建密钥策略并为其附加所需权限。要创建密钥策略，请按照《AWS KMS开发人员指南》中[创建密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-create.html)中的步骤进行操作。

## Amazon Bedrock数据自动化资源的权限和密钥策略
<a name="encryption-bda-key-policies.title"></a>

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

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

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

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

1.  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 自动化加密上下文
<a name="encryption-bda-context"></a>

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数据自动化
<a name="encryption-bda-monitoring"></a>

 当您在Amazon Bedrock数据自动化资源中使用AWS KMS客户托管密钥时，您可以使用[AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)或[Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)跟踪Amazon Bedrock数据自动化发送到的请求AWS KMS。以下是用于监控Amazon Bedrock数据自动化[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)为创建主授权而调用的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"
}
```

# 代理资源的加密
<a name="encryption-agents-new"></a>

默认情况下，静态数据加密有助于降低保护敏感数据的操作开销和复杂性。同时，它还支持构建符合严格加密合规性和监管要求的安全应用程序。

Amazon Bedrock 使用默认的 AWS 拥有的密钥自动加密代理的信息。这包括控制面板和会话数据。您无法查看、管理或审计对 AWS 拥有的密钥的使用。有关更多信息，请参阅 [AWS 拥有的密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。

虽然您无法禁用此加密层，但您可以选择使用客户自主管理型密钥而不是 AWS 拥有的密钥来加密代理的信息。Amazon Bedrock 支持使用您可以创建、拥有和管理的对称客户自主管理型密钥，而非使用默认的 AWS 拥有的加密功能。有关更多信息，请参阅[客户自主管理型密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

**重要**  
Amazon Bedrock 会自动使用 AWS 拥有的密钥来加密您代理的会话信息，且不收取任何费用。
使用客户自主管理型密钥会产生 AWS KMS 费用。有关定价的更多信息，请参阅 [AWS Key Management Service 定价](https://aws.amazon.com/kms/pricing/)。
如果您是在 2025 年 1 月 22 日*之前*创建的代理，并且想要使用客户自主管理型密钥来加密代理资源，请按照[加密 2025 年 1 月 22 日之前创建的代理的代理资源](encryption-agents.md)中的说明进行操作。

# 使用客户自主管理型密钥（CMK）加密代理资源
<a name="cmk-agent-resources"></a>

您可以随时创建客户自主管理型密钥，使用在构建代理时提供的以下代理信息，来加密您的代理信息。

**注意**  
以下代理资源仅针对 2025 年 1 月 22 日之后创建的代理进行加密。


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/cmk-agent-resources.html)

要创建客户自主管理型密钥，请使用以下步骤：

1. 使用 AWS Key Management Service创建客户自主管理型密钥。

1. 创建密钥策略并附加到客户自主管理型密钥上

## 创建客户托管密钥
<a name="create-cmk-agent"></a>

您可以使用管理控制台创建对称客户托管密钥，或者。 AWS AWS Key Management Service APIs

 首先确保您拥有 `CreateKey` 权限，然后按照《AWS Key Management Service 开发人员指南》**中有关[创建对称的客户自主管理型密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)的步骤进行操作。

**密钥策略** – 密钥策略控制对客户自主管理型密钥的访问。每个客户托管式密钥必须只有一个密钥策略，其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时，可以指定密钥策略。有关更多信息，请参阅**《AWS Key Management Service 开发人员指南》中的[管理对客户自主管理型密钥的访问](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)。

如果您在 2025 年 1 月 22 日之后创建了代理，并且希望使用客户自主管理型密钥来加密代理的信息，请确保调用代理 API 操作的用户或角色在密钥策略中具有以下权限：
+ [kms: GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) — 返回一个唯一的对称数据密钥以供在 AWS KMS 之外使用。
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) – 解密已通过 KMS 密钥加密的加密文字。

创建密钥时会返回密钥的 `Arn`，在创建代理时，您可以将其用作 `customerEncryptionKeyArn`。

## 创建密钥策略并将其附加到客户自主管理型密钥上
<a name="attach-policy-agent"></a>

如果您使用客户自主管理型密钥加密代理资源，则必须设置基于身份的策略和基于资源的策略，以允许 Amazon Bedrock 代表您加密和解密代理资源。

**基于身份的政策**

将以下基于身份的策略附加到有权代表您加密和解密代理资源的代理 APIs 的 IAM 角色或用户。此策略验证发出 API 调用的用户是否拥有 AWS KMS 权限。将 `${region}`、`${account-id}`、`${agent-id}` 和 `${key-id}` 替换为相应值。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EncryptAgents",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent/${agent-id}"
                }
            }
        }
    ]
}
```

------

**基于资源的政策**

*仅*当您在创建操作组时将 Amazon S3 中的架构加密，才会将以下基于资源的策略附加到您的密 AWS KMS 钥。对于任何其他使用案例，您无需附加基于资源的策略。

要附加以下基于资源的策略，请根据需要更改权限范围，并使用相应的值替换 `${region}`、`${account-id}`、`${agent-id}` 和 `${key-id}`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Allow account root to modify the KMS key, not used by Amazon Bedrock.",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}"
        },
        {
            "Sid": "Allow Amazon Bedrock to encrypt and decrypt Agent resources on behalf of authorized users",
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent/${agent-id}"
                }
            }
        }
    ]
}
```

------

## 更改客户自主管理型密钥
<a name="change-cmk"></a>

当更改与*草稿*代理关联的客户托管密钥或从客户托管密钥切换到自有密钥时，Amazon Bedrock 代理不支持对 AWS 版本控制代理进行重新加密。只有*草稿*资源的数据才会使用新密钥重新加密。

对于有版本控制的代理，如果将其用于提供生产数据，请确保您没有删除或移除该代理的任何密钥的权限。

要查看和验证某个版本正在使用的密钥，请调用[GetAgentVersion](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_GetAgentVersion.html)并在响应`customerEncryptionKeyArn`中查看。

# 使用客户自主管理型密钥（CMK）加密代理会话
<a name="ltm-permissions"></a>

如果您已经为代理启用内存，并且使用客户自主管理型密钥加密代理会话，则必须配置以下密钥政策，并调用身份 IAM 权限来配置您的客户自主管理型密钥。

**客户自主管理型密钥策略**

Amazon Bedrock 使用这些权限生成加密的数据密钥，然后使用生成的密钥来加密代理内存。Amazon Bedrock 还需要权限，重新加密生成的具有不同加密上下文的数据密钥。当客户自主管理型密钥在另一个客户自主管理型密钥或服务拥有的密钥之间切换时，也会使用重新加密权限。有关更多信息，请参阅[分层密钥环](https://docs.aws.amazon.com//database-encryption-sdk/latest/devguide/use-hierarchical-keyring.html)。

使用相应的值替换 `$region`、`account-id` 和 `${caller-identity-role}`。

```
{
    "Version": "2012-10-17",		 	 	 
    {
        "Sid": "Allow access for bedrock to enable long term memory",
        "Effect": "Allow",
        "Principal": {
            "Service": [
                "bedrock.amazonaws.com",
            ],
        },
        "Action": [
            "kms:GenerateDataKeyWithoutPlainText",
            "kms:ReEncrypt*"
        ],
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "$account-id"
            },
            "ArnLike": {
                "aws:SourceArn": "arn:aws:bedrock:$region:$account-id:agent-alias/*"
            }
        }
        "Resource": "*"
    },
    {
        "Sid": "Allow the caller identity control plane permissions for long term memory",
        "Effect": "Allow", 
        "Principal": {
            "AWS": "arn:aws:iam::${account-id}:role/${caller-identity-role}"
        },
        "Action": [
            "kms:GenerateDataKeyWithoutPlainText",
            "kms:ReEncrypt*"
        ],
        "Resource": "*",
        "Condition": {
            "StringLike": {
                "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:${region}:${account-id}:agent-alias/*"
            }
        }
    },
    {
        "Sid": "Allow the caller identity data plane permissions to decrypt long term memory",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::${account-id}:role/${caller-identity-role}"
        },
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": "*",
        "Condition": {
            "StringLike": {
                "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:${region}:${account-id}:agent-alias/*",
                "kms:ViaService": "bedrock.$region.amazonaws.com" 
            }
        }
    }
}
```

**用于加密和解密代理内存的 IAM 权限**

以下是身份调用代理 API 为启用了内存的代理配置 KMS 密钥时所需的 IAM 权限。Amazon Bedrock 代理使用这些权限来确保来电者身份被授权拥有上述密钥策略中提及的 APIs 管理、训练和部署模型的权限。对于调用代理 APIs ，Amazon Bedrock 代理使用呼叫者身份的`kms:Decrypt`权限来解密内存。

使用相应的值替换 `$region`、`account-id` 和 `${key-id}`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AgentsControlPlaneLongTermMemory",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKeyWithoutPlaintext", 
                "kms:ReEncrypt*"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent-alias/*"
                }
            }
        },
        {
            "Sid": "AgentsDataPlaneLongTermMemory",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent-alias/*"
                }
            }
        }
    ]
}
```

------

# 面向代理的预防性安全最佳实践
<a name="security-best-practice-agents"></a>

以下针对 Amazon Bedrock 的最佳实践可以帮助预防安全事故：

**使用安全连接**

请务必使用加密连接，例如以 `https://` 开头的连接，以确保敏感信息在传输过程中的安全。

**对资源访问实施最低权限**

当您为 Amazon Bedrock 资源创建自定义策略时，只授予执行任务所需的权限。建议最开始只授予最低权限，然后根据需要授予其他权限，则样会更加安全。实施最低权限访问对于减小风险以及可能由错误或恶意攻击造成的影响至关重要。有关更多信息，请参阅 [适用于 Amazon Bedrock 的身份和访问管理](security-iam.md)。

**请勿在任何包含客户数据的代理资源中包含 PII**

创建、更新和删除代理资源时（例如，使用时 [CreateAgent](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_CreateAgent.html)），请勿在任何不支持使用客户管理密钥的字段中包含个人身份信息 (PII)，例如操作组名称和知识库名称。有关支持使用客户自主管理型密钥的字段列表，请参阅[使用客户自主管理型密钥（CMK）加密代理资源](cmk-agent-resources.md)

# 加密 2025 年 1 月 22 日之前创建的代理的代理资源
<a name="encryption-agents"></a>

**重要**  
如果您是在 2025 年 1 月 22 日*之后*创建的代理，请按照[代理资源的加密](encryption-agents-new.md)中的说明进行操作。

Amazon Bedrock 会加密代理的会话信息。默认情况下，Amazon Bedrock 使用AWS托管密钥对这些数据进行加密。或者，您可以使用客户托管式密钥来加密代理构件。

有关更多信息AWS KMS keys，请参阅《*AWS Key Management Service开发人员指南》*中的[客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

如果使用自定义 KMS 密钥加密与代理的会话，则必须设置以下基于身份的策略和基于资源的策略，以允许 Amazon Bedrock 代表您加密和解密代理资源。

1. 将以下基于身份的策略附加到具有 `InvokeAgent` 调用权限的 IAM 角色或用户。此策略会验证发出 `InvokeAgent` 调用的用户是否具有 KMS 权限。将 *\$1\$1region\$1*、*\$1\$1account-id\$1*、*\$1\$1agent-id\$1* 和 *\$1\$1key-id\$1* 替换为相应值。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EncryptDecryptAgents",
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id",
               "Condition": {
                   "StringEquals": {
                       "kms:EncryptionContext:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent/agent-id"
                   }
               }
           }
       ]
   }
   ```

------

1. 将以下基于资源的策略附加到 KMS 密钥。根据需要更改权限的范围。将 *\$1\$1region\$1*、*\$1\$1account-id\$1*、*\$1\$1agent-id\$1* 和 *\$1\$1key-id\$1* 替换为相应值。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowRootModifyKMSKey",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::123456789012:root"
               },
               "Action": "kms:*",
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId"
           },
           {
               "Sid": "AllowBedrockEncryptAgent",
               "Effect": "Allow",
               "Principal": {
                   "Service": "bedrock.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId",
               "Condition": {
                   "StringEquals": {
                       "kms:EncryptionContext:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent/AgentId"
                   }
               }
           },
           {
               "Sid": "AllowRoleEncryptAgent",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::123456789012:role/Role"
               },
               "Action": [
                   "kms:GenerateDataKey*",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId"
           },
           {
               "Sid": "AllowAttachmentPersistentResources",
               "Effect": "Allow",
               "Principal": {
                   "Service": "bedrock.amazonaws.com"
               },
               "Action": [
                   "kms:CreateGrant",
                   "kms:ListGrants",
                   "kms:RevokeGrant"
               ],
               "Resource": "*",
               "Condition": {
                   "Bool": {
                       "kms:GrantIsForAWSResource": "true"
                   }
               }
           }
       ]
   }
   ```

------

# Amazon Bedrock 流资源加密
<a name="encryption-flows"></a>

Amazon Bedrock 始终加密您的静态数据。默认情况下，Amazon Bedrock 使用 AWS 托管式密钥对这些数据进行加密。或者，您也可以使用客户自主管理型密钥对数据进行加密。

有关更多信息AWS KMS keys，请参阅《*AWS Key Management Service开发人员指南》*中的[客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

如果您使用自定义 KMS 密钥来加密数据，则必须设置以下基于身份的策略和基于资源的策略，以允许 Amazon Bedrock 代表您加密和解密数据。

1. 将以下基于身份的策略附加到具有 Amazon Bedrock 流 API 调用权限的 IAM 角色或用户。此策略会验证发出 Amazon Bedrock 流调用的用户是否具有 KMS 权限。将 *\$1\$1region\$1*、*\$1\$1account-id\$1*、*\$1\$1flow-id\$1* 和 *\$1\$1key-id\$1* 替换为相应值。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EncryptFlow",
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}",
               "Condition": {
                   "StringEquals": {
                       "kms:EncryptionContext:aws:bedrock-flows:arn": "arn:aws:bedrock:us-east-1:123456789012:flow/${flow-id}",
                       "kms:ViaService": "bedrock.us-east-1.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. 将以下基于资源的策略附加到 KMS 密钥。根据需要更改权限的范围。将*\$1IAM-USER/ROLE-ARN\$1*、、*\$1\$1region\$1**\$1\$1account-id\$1*、和*\$1\$1flow-id\$1*，*\$1\$1key-id\$1*替换为相应的值。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowRootModifyKMSId",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::123456789012:root"
               },
               "Action": "kms:*",
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId"
           },
           {
               "Sid": "AllowRoleUseKMSKey",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::123456789012:role/RoleName"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}",
               "Condition": {
                   "StringEquals": {
                       "kms:EncryptionContext:aws:bedrock-flows:arn": "arn:aws:bedrock:us-east-1:123456789012:flow/FlowId",
                       "kms:ViaService": "bedrock.us-east-1.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. 对于[流执行](flows-create-async.md)，请将以下基于身份的策略附加到[具有创建和管理流权限的服务角色](flows-permissions.md)。此策略验证您的服务角色是否具有AWS KMS权限。将 *region*、*account-id*、*flow-id* 和 *key-id* 替换为相应值。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EncryptionFlows",
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id",
               "Condition": {
                   "StringEquals": {
                       "kms:EncryptionContext:aws:bedrock-flows:arn": "arn:aws:bedrock:us-east-1:123456789012:flow/flow-id",
                       "kms:ViaService": "bedrock.us-east-1.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

# 知识库资源的加密
<a name="encryption-kb"></a>

Amazon Bedrock 会加密与知识库相关的资源。默认情况下，Amazon Bedrock 使用自有密钥对这些数据进行加 AWS密。或者，您可以使用客户托管式密钥对模型构件进行加密。

支持使用 KMS 密钥进行加密的过程如下：
+ 提取数据来源时的临时数据存储
+ 如果您让 Amazon Bedrock 设置矢量数据库，则会将信息传递给 OpenSearch 服务部门
+ 查询知识库

知识库使用的下列资源也可以使用 KMS 密钥进行加密。如果加密这些资源，则需要添加权限以解密 KMS 密钥。
+ 存储在 Amazon S3 存储桶中的数据来源
+ 第三方向量存储

有关更多信息 AWS KMS keys，请参阅《*AWS Key Management Service 开发人员指南》*中的[客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

**注意**  
Amazon Bedrock 知识库使用 TLS 加密与第三方数据来源连接器和向量存储（提供商允许并支持传输中的 TLS 加密）进行通信。

**Topics**
+ [加密数据提取期间的临时数据存储](#encryption-kb-ingestion)
+ [对传递给 Amazon OpenSearch 服务的信息进行加密](#encryption-kb-oss)
+ [传递到 Amazon S3 Vectors 的信息的加密](#encryption-kb-s3-vector)
+ [加密知识库检索](#encryption-kb-runtime)
+ [解密您在 Amazon S3 中的数据源的 AWS KMS 密钥的权限](#encryption-kb-ds)
+ [解密包含知识库的矢量存储的 AWS Secrets Manager 密钥的权限](#encryption-kb-3p)
+ [带加密功能的 Bedrock 数据自动化 (BDA) 权限 AWS KMS](#encryption-kb-bda)

## 加密数据提取期间的临时数据存储
<a name="encryption-kb-ingestion"></a>

在为知识库设置数据提取作业时，可以使用自定义 KMS 密钥加密作业。

要允许在摄取数据源的过程中为临时数据存储创建 AWS KMS 密钥，请将以下策略附加到您的 Amazon Bedrock 服务角色。将示例值替换为您自己的 AWS 区域、账户 ID 和 AWS KMS 密钥 ID。

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

****  

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

------

## 对传递给 Amazon OpenSearch 服务的信息进行加密
<a name="encryption-kb-oss"></a>

如果您选择让 Amazon Bedrock 在亚马逊 OpenSearch 服务中为您的知识库创建矢量存储，Amazon Bedrock 可以将您选择的 KMS 密钥传递给亚马逊 OpenSearch 服务进行加密。要了解有关亚马逊 OpenSearch 服务加密的更多信息，请参阅[亚马逊 OpenSearch 服务中的加密](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-encryption.html)。

## 传递到 Amazon S3 Vectors 的信息的加密
<a name="encryption-kb-s3-vector"></a>

如果您选择让 Amazon Bedrock 在 Amazon S3 Vectors 中为知识库创建 S3 向量存储桶和向量索引，Amazon Bedrock 可以将您选择的 KMS 密钥传递到 Amazon S3 Vectors 以进行加密。要了解有关 Amazon S3 Vectors 中的加密的更多信息，请参阅[使用 Amazon S3 Vectors 进行加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-bucket-encryption.html)。

## 加密知识库检索
<a name="encryption-kb-runtime"></a>

您可以使用 KMS 密钥加密在查询知识库时生成响应的会话。为此，请在发出请求时在`kmsKeyArn`字段中包含 KMS 密钥的 ARN。[RetrieveAndGenerate](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)附上以下策略，将示例值替换为您自己的 AWS 区域、账户 ID 和 AWS KMS 密钥 ID，以允许 Amazon Bedrock 加密会话上下文。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id"
        }
    ]
}
```

------

## 解密您在 Amazon S3 中的数据源的 AWS KMS 密钥的权限
<a name="encryption-kb-ds"></a>

您将知识库的数据来源存储在 Amazon S3 存储桶中。要对这些静态文档进行加密，您可以使用 Amazon S3 SSE-S3 服务器端加密选项。通过此选项，将使用由 Amazon S3 服务管理的服务密钥为对象加密。

有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[使用采用 Amazon S3 托管加密密钥的服务器端加密 (SSE-S3) 保护数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)。

如果您使用自定义 AWS KMS 密钥加密了 Amazon S3 中的数据源，请将以下策略附加到您的 Amazon Bedrock 服务角色，以允许 Amazon Bedrock 解密您的密钥。将示例值替换为您自己的 AWS 区域、账户 ID 和 AWS KMS 密钥 ID。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "KMS:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/key-id"
            ],
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": [
                        "s3.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

## 解密包含知识库的矢量存储的 AWS Secrets Manager 密钥的权限
<a name="encryption-kb-3p"></a>

如果包含知识库的矢量存储配置了 AWS Secrets Manager 密钥，则可以按照中的密钥加密[和解密中的步骤使用自定义密 AWS KMS 钥对密钥进行加密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html)。 AWS Secrets Manager

如果您这样做，请将以下策略附加到 Amazon Bedrock 服务角色，以允许它将密钥解密。将示例值替换为您自己的 AWS 区域、账户 ID 和 AWS KMS 密钥 ID。

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

****  

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

------

## 带加密功能的 Bedrock 数据自动化 (BDA) 权限 AWS KMS
<a name="encryption-kb-bda"></a>

使用 BDA 使用客户管理的 AWS KMS 密钥处理多模式内容时，除了标准权限之外，还需要其他权限。 AWS KMS 

将以下策略附加到您的 Amazon Bedrock 服务角色，以允许 BDA 处理加密的多媒体文件。将示例值替换为您自己的 AWS 区域、账户 ID 和 AWS KMS 密钥 ID。

```
{
    "Sid": "KmsPermissionStatementForBDA",
    "Effect": "Allow",
    "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt",
        "kms:DescribeKey",
        "kms:CreateGrant"
    ],
    "Resource": "arn:aws:kms:region:account-id:key/key-id",
    "Condition": {
        "StringEquals": {
            "aws:ResourceAccount": "account-id",
            "kms:ViaService": "bedrock.region.amazonaws.com"
        }
    }
}
```

BDA 特有的权限包括`kms:DescribeKey`和`kms:CreateGrant`操作，BDA 需要这些权限才能处理加密的音频、视频和图像文件。

# 使用 Amazon VPC 和 AWS PrivateLink 保护您的数据
<a name="usingVPC"></a>

要控制对数据的访问，我们建议您使用通过 [Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) 创建的虚拟私有云（VPC）。使用 VPC，您可以保护数据并通过 [VPC 流日志](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)来监控进出 AWS 作业容器的所有网络流量。

您可以对 VPC 进行配置，确保数据无法通过互联网访问，然后使用 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) 创建 VPC 接口端点以建立与数据的私有连接，从而进一步保护您的数据。

下面列出了 Amazon Bedrock 的一些功能，您可以在这些功能中使用 VPC 来保护您的数据：
+ 模型自定义 – [（可选）使用 VPC 保护模型自定义作业](custom-model-job-access-security.md#vpc-model-customization)
+ 批量推理 – [使用 VPC 保护批量推理作业](batch-vpc.md)
+ Amazon Bedrock 知识库 – [使用接口端点（AWS PrivateLink）访问 Amazon OpenSearch 无服务器](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html)

## 设置 VPC
<a name="create-vpc"></a>

您可以使用[默认 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html)，也可以按照[开始使用 Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html) 和[创建 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) 中的指南创建新的 VPC。

创建 VPC 时，我们建议您对端点路由表使用默认的 DNS 设置，以便解析标准 Amazon S3 URL（例如 `http://s3-aws-region.amazonaws.com/training-bucket`）。

以下主题介绍如何借助 AWS PrivateLink 设置 VPC 端点，以及使用 VPC 保护对 S3 文件的访问的示例应用场景。

**Topics**
+ [设置 VPC](#create-vpc)
+ [使用接口 VPC 端点（AWS PrivateLink）在 VPC 和 Amazon Bedrock 之间创建私有连接](vpc-interface-endpoints.md)
+ [（示例）使用 VPC 限制对 Amazon S3 数据的访问](vpc-s3.md)

# 使用接口 VPC 端点（AWS PrivateLink）在 VPC 和 Amazon Bedrock 之间创建私有连接
<a name="vpc-interface-endpoints"></a>

您可以使用 AWS PrivateLink 在您的 VPC 和 Amazon Bedrock 之间创建私有连接。您可以像在您的 VPC 中一样访问 Amazon Bedrock，无需使用互联网网关、NAT 设备、VPN 连接或 Direct Connect 连接。VPC 中的实例不需要公有 IP 地址即可访问 Amazon Bedrock。

您可以通过创建由 AWS PrivateLink提供支持的*接口端点*来建立此私有连接。我们将在您为接口端点启用的每个子网中创建一个端点网络接口。这些是请求者托管式网络接口，用作发往 Amazon Bedrock 的流量的入口点。

有关更多信息，请参阅*AWS PrivateLink 指南 AWS PrivateLink*中的[AWS 服务 通过访问](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)。

## Amazon Bedrock VPC 端点注意事项
<a name="vpc-endpoint-considerations"></a>

在为 Amazon Bedrock 设置接口端点之前，请查看《AWS PrivateLink 指南》中的[注意事项](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints)**。

Amazon Bedrock 支持通过 VPC 端点进行以下 API 调用。


****  

| 类别 | 端点后缀 | 
| --- | --- | 
| [Amazon Bedrock 控制面板 API 操作](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Amazon_Bedrock.html) | bedrock | 
| [Amazon Bedrock 运行时 API 操作](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Amazon_Bedrock_Runtime.html) | bedrock-runtime | 
| 亚马逊 Bedrock Mantle API 操作 | bedrock-mantle | 
| [Amazon Bedrock 代理构建时 API 操作](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html) | bedrock-agent | 
| [Amazon Bedrock 代理运行时 API 操作](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock_Runtime.html) | bedrock-agent-runtime | 

**可用区**

Amazon Bedrock 和 Amazon Bedrock 代理端点在多个可用区可用。

## 为 Amazon Bedrock 创建接口端点
<a name="vpc-endpoint-create"></a>

您可以使用亚马逊 VPC 控制台或 AWS Command Line Interface (AWS CLI) 为 Amazon Bedrock 创建接口终端节点。有关更多信息，请参阅《AWS PrivateLink 指南》**中的[创建接口端点](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws)。

使用以下任一服务名称为 Amazon Bedrock 创建接口端点：
+ `com.amazonaws.region.bedrock`
+ `com.amazonaws.region.bedrock-runtime`
+ `com.amazonaws.region.bedrock-mantle`
+ `com.amazonaws.region.bedrock-agent`
+ `com.amazonaws.region.bedrock-agent-runtime`

在创建端点后，您可以选择启用私有 DNS 主机名。在创建 VPC 端点时，通过在 VPC 控制台中选择启用私有 DNS 名称，可启用此设置。

如果为接口端点启用私有 DNS，则可以使用区域的默认 DNS 名称向 Amazon Bedrock 发出 API 请求。以下示例显示了默认区域 DNS 名称的格式。
+ `bedrock.region.amazonaws.com`
+ `bedrock-runtime.region.amazonaws.com`
+ `bedrock-mantle.region.api.aws`
+ `bedrock-agent.region.amazonaws.com`
+ `bedrock-agent-runtime.region.amazonaws.com`

## 为接口端点创建端点策略
<a name="vpc-endpoint-policy"></a>

端点策略是一种 IAM 资源，您可以将其附加到接口端点。默认端点策略提供通过接口端点访问 Amazon Bedrock 的完全访问权限。要控制允许从 VPC 访问 Amazon Bedrock 的访问权限，请将自定义端点策略附加到接口端点。

端点策略指定以下信息：
+ 可执行操作的主体（AWS 账户、IAM 用户和 IAM 角色）。
+ 可执行的操作。
+ 可对其执行操作的资源。

有关更多信息，请参阅《AWS PrivateLink 指南》**中的[使用端点策略控制对服务的访问权限](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

**示例：适用于 Amazon Bedrock 操作的 VPC 端点策略**  
以下是自定义端点策略的示例。当将该基于资源的策略附加到接口端点时，它会向所有主体授予对所有资源执行所列 Amazon Bedrock 操作的访问权限。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Principal": "*",
         "Effect": "Allow",
         "Action": [
            "bedrock:InvokeModel",
            "bedrock:InvokeModelWithResponseStream"
         ],
         "Resource":"*"
      }
   ]
}
```

------

**示例：亚马逊 Bedrock Mantle 操作的 VPC 终端节点策略**  
以下是自定义端点策略的示例。当您将此基于资源的策略附加到接口终端节点时，它会向所有委托人授予所有资源上列出的 Amazon Bedrock Mantle 操作的访问权限。

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Principal": "*",
         "Effect": "Allow",
         "Action": [
            "bedrock-mantle:CreateInference"
         ],
         "Resource":"*"
      }
   ]
}
```

# （示例）使用 VPC 限制对 Amazon S3 数据的访问
<a name="vpc-s3"></a>

您可以使用 VPC 来限制对 Amazon S3 存储桶中的数据的访问。为了进一步提高安全性，您可以将 VPC 配置为无法访问互联网，并使用 AWS PrivateLink为其创建一个端点。您还可以通过将基于资源的策略附加到 VPC 端点或 S3 存储桶来限制访问。

**Topics**
+ [创建 Amazon S3 VPC 端点](#vpc-s3-create)
+ [（可选）使用 IAM 策略限制对 S3 文件的访问](#vpc-policy-rbp)

## 创建 Amazon S3 VPC 端点
<a name="vpc-s3-create"></a>

如果您将 VPC 配置为无法访问互联网，则需要创建一个 [Amazon S3 VPC 端点](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html)，以允许模型自定义作业访问存储训练和验证数据以及将存储模型构件的 S3 存储桶。

按照[创建适用于 Amazon S3 的网关端点](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#create-gateway-endpoint-s3)中的步骤操作，创建 S3 VPC 端点。

**注意**  
如果您的 VPC 不使用默认 DNS 设置，则需要通过配置终端节点路由表来确保训练作业中数据位置的解析。 URLs 有关 VPC 端点路由表的信息，请参阅[网关端点路由](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpce-gateway.html#vpc-endpoints-routing)。

## （可选）使用 IAM 策略限制对 S3 文件的访问
<a name="vpc-policy-rbp"></a>

您可以使用[基于资源的策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)来更严格地控制对 S3 文件的访问。您可以使用以下基于资源的策略类型的任意组合。
+ **端点策略** – 您可以将端点策略附加到 VPC 端点，以通过 VPC 端点限制访问。默认端点策略允许您的 VPC 中的任何用户或服务完全访问 Amazon S3。在创建端点时或创建端点后，您可以选择将基于资源的策略附加到端点以添加限制，例如仅允许端点访问特定存储桶或仅允许特定 IAM 角色访问端点。有关示例，请参阅[编辑 VPC 端点策略](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#edit-vpc-endpoint-policy-s3)。

  下面是您可以附加到 VPC 端点的示例策略，以仅允许该端点访问您指定的存储桶。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "RestrictAccessToTrainingBucket",
              "Effect": "Allow",
              "Principal": "*",
              "Action": [
                  "s3:GetObject",
                  "s3:ListBucket"
              ],
              "Resource": [
                  "arn:aws:s3:::bucket",
                  "arn:aws:s3:::bucket/*"
              ]
          }
      ]
  }
  ```

------
+ **存储桶策略** – 您可以将存储桶策略附加到 S3 存储桶，以限制对 S3 存储桶的访问。要创建存储桶策略，请按照[使用存储桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)中的步骤操作。要将访问限制为来自 VPC 的流量，您可以使用条件键来指定 VPC、VPC 端点或 VPC 的 IP 地址。[你可以使用 [aws: SourceVPC、aws: SourceVPC](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpc)[E 或 aws: 条件密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpce)。VpcSourceIp](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-vpcsourceip)

  下面是您可以附加到 S3 存储桶的示例策略，以拒绝所有流向该存储桶的流量，除非流量来自 VPC。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "RestrictAccessToOutputBucket",
              "Effect": "Deny",
              "Principal": "*",
              "Action": [
                  "s3:GetObject",
                  "s3:PutObject",
                  "s3:ListBucket"
              ],
              "Resource": [
                  "arn:aws:s3:::bucket",
                  "arn:aws:s3:::bucket/*"
              ],
              "Condition": {
                  "StringNotEquals": {
                      "aws:sourceVpc": "vpc-11223344556677889"
                  }
              }
          }
      ]
  }
  ```

------

  有关更多示例，请参阅[使用存储桶策略控制访问](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#bucket-policies-s3)。

# 适用于 Amazon Bedrock 的身份和访问管理
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) AWS 服务 可帮助管理员安全地控制对 AWS 资源的访问权限。IAM 管理员控制谁可以*通过身份验证*（登录）和*获得授权*（拥有权限）以使用 Amazon Bedrock 资源。您可以使用 IAM AWS 服务 ，无需支付额外费用。

**Topics**
+ [受众](#security_iam_audience)
+ [使用身份进行身份验证](#security_iam_authentication)
+ [使用策略管理访问](#security_iam_access-manage)
+ [Amazon Bedrock 如何与 IAM 搭配使用](security_iam_service-with-iam.md)
+ [Amazon Bedrock 基于身份的策略示例](security_iam_id-based-policy-examples.md)
+ [管理项目上的 IAM 策略](security-iam-projects.md)
+ [AWS Amazon Bedrock 的托管政策](security-iam-awsmanpol.md)
+ [服务角色](security-iam-sr.md)
+ [配置对 Amazon S3 存储桶的访问权限](s3-bucket-access.md)
+ [Amazon Bedrock 身份和访问问题排查](security_iam_troubleshoot.md)

## 受众
<a name="security_iam_audience"></a>

您的使用方式 AWS Identity and Access Management (IAM) 因您的角色而异：
+ **服务用户**：如果您无法访问功能，请从管理员处请求权限（请参阅[Amazon Bedrock 身份和访问问题排查](security_iam_troubleshoot.md)）
+ **服务管理员**：确定用户访问权限并提交权限请求（请参阅[Amazon Bedrock 如何与 IAM 搭配使用](security_iam_service-with-iam.md)）
+ **IAM 管理员**：编写用于管理访问权限的策略（请参阅[Amazon Bedrock 基于身份的策略示例](security_iam_id-based-policy-examples.md)）

## 使用身份进行身份验证
<a name="security_iam_authentication"></a>

身份验证是您 AWS 使用身份凭证登录的方式。您必须以 IAM 用户身份进行身份验证 AWS 账户根用户，或者通过担任 IAM 角色进行身份验证。

您可以使用来自身份源的证书 AWS IAM Identity Center （例如（IAM Identity Center）、单点登录身份验证或 Google/Facebook 证书，以联合身份登录。有关登录的更多信息，请参阅《AWS 登录 用户指南》**中的[如何登录您的 AWS 账户](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

对于编程访问， AWS 提供 SDK 和 CLI 来对请求进行加密签名。有关更多信息，请参阅*《IAM 用户指南》*中的[适用于 API 请求的AWS 签名版本 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。

### AWS 账户 root 用户
<a name="security_iam_authentication-rootuser"></a>

 创建时 AWS 账户，首先会有一个名为 AWS 账户 *root 用户的*登录身份，该身份可以完全访问所有资源 AWS 服务 和资源。我们强烈建议不要使用根用户进行日常任务。有关需要根用户凭证的任务，请参阅《IAM 用户指南》**中的[需要根用户凭证的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### 联合身份
<a name="security_iam_authentication-federated"></a>

作为最佳实践，要求人类用户使用与身份提供商的联合身份验证才能 AWS 服务 使用临时证书进行访问。

*联合身份是指*来自您的企业目录、Web 身份提供商的用户 Directory Service ，或者 AWS 服务 使用来自身份源的凭据进行访问的用户。联合身份代入可提供临时凭证的角色。

要集中管理访问权限，建议使用。 AWS IAM Identity Center有关更多信息，请参阅《AWS IAM Identity Center 用户指南》**中的[什么是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

### IAM 用户和群组
<a name="security_iam_authentication-iamuser"></a>

*[IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)*是对某个人员或应用程序具有特定权限的一个身份。建议使用临时凭证，而非具有长期凭证的 IAM 用户。有关更多信息，请参阅 *IAM 用户指南*[中的要求人类用户使用身份提供商的联合身份验证才能 AWS 使用临时证书进行访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)。

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)指定一组 IAM 用户，便于更轻松地对大量用户进行权限管理。有关更多信息，请参阅*《IAM 用户指南》*中的 [IAM 用户使用案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)。

### IAM 角色
<a name="security_iam_authentication-iamrole"></a>

*[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)*是具有特定权限的身份，可提供临时凭证。您可以通过[从用户切换到 IAM 角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或调用 AWS CLI 或 AWS API 操作来代入角色。有关更多信息，请参阅《IAM 用户指南》**中的[担任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

IAM 角色对于联合用户访问、临时 IAM 用户权限、跨账户访问、跨服务访问以及在 Amazon EC2 上运行的应用程序非常有用。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 使用策略管理访问
<a name="security_iam_access-manage"></a>

您可以 AWS 通过创建策略并将其附加到 AWS 身份或资源来控制中的访问权限。策略定义了与身份或资源关联时的权限。 AWS 在委托人提出请求时评估这些政策。大多数策略都以 JSON 文档的 AWS 形式存储在中。有关 JSON 策略文档的更多信息，请参阅*《IAM 用户指南》*中的 [JSON 策略概述](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理员使用策略，通过定义哪个**主体**可以在什么**条件**下对哪些**资源**执行哪些**操作**来指定谁有权访问什么。

默认情况下，用户和角色没有权限。IAM 管理员创建 IAM 策略并将其添加到角色中，然后用户可以担任这些角色。IAM 策略定义权限，与执行操作所用的方法无关。

### 基于身份的策略
<a name="security_iam_access-manage-id-based-policies"></a>

基于身份的策略是您附加到身份（用户、组或角色）的 JSON 权限策略文档。这些策略控制身份可以执行什么操作、对哪些资源执行以及在什么条件下执行。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[使用客户管理型策略定义自定义 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

基于身份的策略可以是*内联策略*（直接嵌入到单个身份中）或*托管策略*（附加到多个身份的独立策略）。要了解如何在托管策略和内联策略之间进行选择，请参阅*《IAM 用户指南》*中的[在托管策略与内联策略之间进行选择](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

### 基于资源的策略
<a name="security_iam_access-manage-resource-based-policies"></a>

基于资源的策略是附加到资源的 JSON 策略文档。示例包括 IAM *角色信任策略*和 Amazon S3 *存储桶策略*。在支持基于资源的策略的服务中，服务管理员可以使用它们来控制对特定资源的访问。您必须在基于资源的策略中[指定主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

基于资源的策略是位于该服务中的内联策略。您不能在基于资源的策略中使用 IAM 中的 AWS 托管策略。

### 其他策略类型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支持其他策略类型，这些策略类型可以设置更常见的策略类型授予的最大权限：
+ **权限边界** – 设置基于身份的策略可以授予 IAM 实体的最大权限。有关更多信息，请参阅《 IAM 用户指南》**中的 [IAM 实体的权限边界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服务控制策略 (SCPs)**-在中指定组织或组织单位的最大权限 AWS Organizations。有关更多信息，请参阅《AWS Organizations 用户指南》**中的[服务控制策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **资源控制策略 (RCPs)**-设置账户中资源的最大可用权限。有关更多信息，请参阅《*AWS Organizations 用户指南》*中的[资源控制策略 (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
+ **会话策略** – 在为角色或联合用户创建临时会话时，作为参数传递的高级策略。有关更多信息，请参阅《IAM 用户指南》**中的[会话策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多个策略类型
<a name="security_iam_access-manage-multiple-policies"></a>

当多个类型的策略应用于一个请求时，生成的权限更加复杂和难以理解。要了解在涉及多种策略类型时如何 AWS 确定是否允许请求，请参阅 *IAM 用户指南*中的[策略评估逻辑](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

# Amazon Bedrock 如何与 IAM 搭配使用
<a name="security_iam_service-with-iam"></a>

在使用 IAM 管理对 Amazon Bedrock 的访问之前，您应该了解哪些 IAM 功能可与 Amazon Bedrock 搭配使用。






**可与 Amazon Bedrock 搭配使用的 IAM 功能**  

| IAM 功能 | Amazon Bedrock 支持 | 
| --- | --- | 
|  [基于身份的策略](#security_iam_service-with-iam-id-based-policies)  |   是  | 
|  [基于资源的策略](#security_iam_service-with-iam-resource-based-policies)  |   否   | 
|  [策略操作](#security_iam_service-with-iam-id-based-policies-actions)  |   是  | 
|  [策略资源](#security_iam_service-with-iam-id-based-policies-resources)  |   是  | 
|  [策略条件键](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   是  | 
|  [ACLs](#security_iam_service-with-iam-acls)  |   否   | 
|  [ABAC（策略中的标签）](#security_iam_service-with-iam-tags)  |   是  | 
|  [临时凭证](#security_iam_service-with-iam-roles-tempcreds)  |   是  | 
|  [主体权限](#security_iam_service-with-iam-principal-permissions)  |   是  | 
|  [服务角色](#security_iam_service-with-iam-roles-service)  |   是  | 
|  [服务关联角色](#security_iam_service-with-iam-roles-service-linked)  |   否   | 

要全面了解 Amazon Bedrock 和其他 AWS 服务如何与大多数 IAM 功能配合使用，请参阅 IAM *用户指南中与 IAM* [配合使用的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

## Amazon Bedrock 基于身份的策略
<a name="security_iam_service-with-iam-id-based-policies"></a>

**支持基于身份的策略：**是

基于身份的策略是可附加到身份（如 IAM 用户、用户组或角色）的 JSON 权限策略文档。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[使用客户管理型策略定义自定义 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

通过使用 IAM 基于身份的策略，您可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。要了解可在 JSON 策略中使用的所有元素，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素引用](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

### Amazon Bedrock 基于身份的策略示例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



要查看 Amazon Bedrock 基于身份的策略示例，请参阅[Amazon Bedrock 基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## Amazon Bedrock 基于资源的策略
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**支持基于资源的策略：**否 

基于资源的策略是附加到资源的 JSON 策略文档。基于资源的策略的示例包括 IAM *角色信任策略*和 Amazon S3 *存储桶策略*。在支持基于资源的策略的服务中，服务管理员可以使用它们来控制对特定资源的访问。对于在其中附加策略的资源，策略定义指定主体可以对该资源执行哪些操作以及在什么条件下执行。您必须在基于资源的策略中[指定主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。委托人可以包括账户、用户、角色、联合用户或 AWS 服务。

要启用跨账户访问，您可以将整个账户或其他账户中的 IAM 实体指定为基于资源的策略中的主体。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## Amazon Bedrock 的策略操作
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**支持策略操作：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

JSON 策略的 `Action` 元素描述可用于在策略中允许或拒绝访问的操作。在策略中包含操作以授予执行关联操作的权限。



要查看 Amazon Bedrock 操作的列表，请参阅《服务授权参考》**中的 [Amazon Bedrock 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions)。

Amazon Bedrock 中的策略操作在操作前使用以下前缀：

```
bedrock
```

要在单个语句中指定多项操作，请使用逗号将它们隔开。

```
"Action": [
   "bedrock:action1",
   "bedrock:action2"
]
```





要查看 Amazon Bedrock 基于身份的策略示例，请参阅[Amazon Bedrock 基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## Amazon Bedrock 的策略资源
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**支持策略资源：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Resource` JSON 策略元素指定要向其应用操作的一个或多个对象。作为最佳实践，请使用其 [Amazon 资源名称（ARN）](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)指定资源。对于不支持资源级权限的操作，请使用通配符 (\$1) 指示语句应用于所有资源。

```
"Resource": "*"
```

要查看 Amazon Bedrock 资源类型及其列表 ARNs，请参阅《*服务授权*参[考》中的 Amazon Bedrock 定义](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies)的资源。要了解您可以使用哪些操作指定每个资源的 ARN，请参阅 [Amazon Bedrock 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions)。





某些 Amazon Bedrock API 操作支持多个资源。例如，[AssociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_AssociateAgentKnowledgeBase.html) 访问 *AGENT12345* 和 *KB12345678*，因此主体必须具有访问这两项资源的权限。要在单个语句中指定多个资源，请 ARNs 用逗号分隔。

```
"Resource": [
   "arn:aws:bedrock:aws-region:111122223333:agent/AGENT12345",
   "arn:aws:bedrock:aws-region:111122223333:knowledge-base/KB12345678"
]
```

要查看 Amazon Bedrock 基于身份的策略示例，请参阅[Amazon Bedrock 基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## Amazon Bedrock 的策略条件键
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**支持特定于服务的策略条件键：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Condition` 元素根据定义的条件指定语句何时执行。您可以创建使用[条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)（例如，等于或小于）的条件表达式，以使策略中的条件与请求中的值相匹配。要查看所有 AWS 全局条件键，请参阅 *IAM 用户指南*中的[AWS 全局条件上下文密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

要查看 Amazon Bedrock 条件键的列表，请参阅《服务授权参考》**中的 [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)。要了解您可以对哪些操作和资源使用条件键，请参阅 [Amazon Bedrock 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions)。

所有 Amazon Bedrock 操作均支持使用 Amazon Bedrock 模型作为资源的条件键。

要查看 Amazon Bedrock 基于身份的策略示例，请参阅[Amazon Bedrock 基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## ACLs 在 Amazon Bedrock 中
<a name="security_iam_service-with-iam-acls"></a>

**支持 ACLs：**否 

访问控制列表 (ACLs) 控制哪些委托人（账户成员、用户或角色）有权访问资源。 ACLs 与基于资源的策略类似，尽管它们不使用 JSON 策略文档格式。

## ABAC 与 Amazon Bedrock
<a name="security_iam_service-with-iam-tags"></a>

**支持 ABAC（策略中的标签）：**是

基于属性的访问权限控制（ABAC）是一种授权策略，该策略基于称为标签的属性来定义权限。您可以将标签附加到 IAM 实体和 AWS 资源，然后设计 ABAC 策略以允许在委托人的标签与资源上的标签匹配时进行操作。

要基于标签控制访问，您需要使用 `aws:ResourceTag/key-name``aws:RequestTag/key-name` 或 `aws:TagKeys` 条件键在策略的[条件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中提供标签信息。

如果某个服务对于每种资源类型都支持所有这三个条件键，则对于该服务，该值为**是**。如果某个服务仅对于部分资源类型支持所有这三个条件键，则该值为**部分**。

有关 ABAC 的更多信息，请参阅《IAM 用户指南》**中的[使用 ABAC 授权定义权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。要查看设置 ABAC 步骤的教程，请参阅《IAM 用户指南》**中的[使用基于属性的访问权限控制（ABAC）](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)。

## 将临时凭证与 Amazon Bedrock 搭配使用
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**支持临时凭证：**是

临时证书提供对 AWS 资源的短期访问权限，并且是在您使用联合身份或切换角色时自动创建的。 AWS 建议您动态生成临时证书，而不是使用长期访问密钥。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)和[使用 IAM 的。AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)

## Amazon Bedrock 的跨服务主体权限
<a name="security_iam_service-with-iam-principal-permissions"></a>

**支持转发访问会话（FAS）：**是

 转发访问会话 (FAS) 使用调用主体的权限 AWS 服务，再加上 AWS 服务 向下游服务发出请求的请求。有关发出 FAS 请求时的策略详情，请参阅[转发访问会话](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)。

## Amazon Bedrock 的服务角色
<a name="security_iam_service-with-iam-roles-service"></a>

**支持服务角色：**是

 服务角色是由一项服务担任、代表您执行操作的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息，请参阅《IAM 用户指南》**中的[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**警告**  
更改服务角色的权限可能会破坏 Amazon Bedrock 的功能。仅在 Amazon Bedrock 提供相关指导时编辑服务角色。

## Amazon Bedrock 的服务相关角色
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**支持服务相关角色：**否 

 服务相关角色是一种链接到的服务角色。 AWS 服务服务可以代入代表您执行操作的角色。服务相关角色出现在您的中 AWS 账户 ，并且归服务所有。IAM 管理员可以查看但不能编辑服务关联角色的权限。

# Amazon Bedrock 基于身份的策略示例
<a name="security_iam_id-based-policy-examples"></a>

默认情况下，用户和角色没有创建或修改 Amazon Bedrock 资源的权限。要授予用户对所需资源执行操作的权限，IAM 管理员可以创建 IAM 策略。

要了解如何使用这些示例 JSON 策略文档创建基于 IAM 身份的策略，请参阅《IAM 用户指南》**中的[创建 IAM 策略（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

有关 Amazon Bedrock 定义的操作和资源类型（包括每种资源类型的格式）的详细信息，请参阅《*服务授权*参考》中的 [Amazon Bedrock 的操作、资源和条件密钥](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html)。 ARNs 

**Topics**
+ [策略最佳实践](#security_iam_service-with-iam-policy-best-practices)
+ [使用 Amazon Bedrock 控制台](#security_iam_id-based-policy-examples-console)
+ [允许用户查看他们自己的权限](#security_iam_id-based-policy-examples-view-own-permissions)
+ [拒绝对基础模型推理的访问权限](#security_iam_id-based-policy-examples-deny-inference)
+ [允许用户调用预置模型](#security_iam_id-based-policy-examples-perform-actions-pt)
+ [Amazon Bedrock 代理基于身份的策略示例](security_iam_id-based-policy-examples-agent.md)

## 策略最佳实践
<a name="security_iam_service-with-iam-policy-best-practices"></a>

基于身份的策略确定某个人是否可以创建、访问或删除您账户中的 Amazon Bedrock 资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时，请遵循以下指南和建议：
+ **开始使用 AWS 托管策略并转向最低权限权限** — 要开始向用户和工作负载授予权限，请使用为许多常见用例授予权限的*AWS 托管策略*。它们在你的版本中可用 AWS 账户。我们建议您通过定义针对您的用例的 AWS 客户托管策略来进一步减少权限。有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[工作职能的AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **应用最低权限**：在使用 IAM 策略设置权限时，请仅授予执行任务所需的权限。为此，您可以定义在特定条件下可以对特定资源执行的操作，也称为*最低权限许可*。有关使用 IAM 应用权限的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的策略和权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 策略中的条件进一步限制访问权限**：您可以向策略添加条件来限制对操作和资源的访问。例如，您可以编写策略条件来指定必须使用 SSL 发送所有请求。如果服务操作是通过特定 AWS 服务的（例如）使用的，则也可以使用条件来授予对服务操作的访问权限 CloudFormation。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素：条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 验证您的 IAM 策略，以确保权限的安全性和功能性**：IAM Access Analyzer 会验证新策略和现有策略，以确保策略符合 IAM 策略语言（JSON）和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议，以帮助您制定安全且功能性强的策略。有关更多信息，请参阅《IAM 用户指南》**中的[使用 IAM Access Analyzer 验证策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重身份验证 (MFA**)-如果 AWS 账户您的场景需要 IAM 用户或根用户，请启用 MFA 以提高安全性。若要在调用 API 操作时需要 MFA，请将 MFA 条件添加到您的策略中。有关更多信息，请参阅《IAM 用户指南》**中的[使用 MFA 保护 API 访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

有关 IAM 中的最佳实操的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 使用 Amazon Bedrock 控制台
<a name="security_iam_id-based-policy-examples-console"></a>

要访问 Amazon Bedrock 控制台，您必须拥有一组最低权限。这些权限必须允许您列出和查看有关您 AWS 账户的 Amazon Bedrock 资源的详细信息。如果创建比必需的最低权限更为严格的基于身份的策略，对于附加了该策略的实体（用户或角色），控制台将无法按预期正常运行。

对于仅调用 AWS CLI 或 AWS API 的用户，您无需为其设置最低控制台权限。相反，只允许访问与其尝试执行的 API 操作相匹配的操作。

为确保用户和角色仍然可以使用 Amazon Bedrock 控制台，还需要将 Amazon Bedrock [AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockFullAccess)或[AmazonBedrockReadOnly](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockReadOnly) AWS 托管策略附加到实体。有关更多信息，请参阅《IAM 用户指南》**中的[为用户添加权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)。

## 允许用户查看他们自己的权限
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

该示例说明了您如何创建策略，以允许 IAM 用户查看附加到其用户身份的内联和托管式策略。此策略包括在控制台上或使用 AWS CLI 或 AWS API 以编程方式完成此操作的权限。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## 拒绝对基础模型推理的访问权限
<a name="security_iam_id-based-policy-examples-deny-inference"></a>

要防止用户调用基础模型，您需要直接拒绝对调用模型的 API 操作的访问权限。以下示例说明了基于身份的策略，该策略拒绝对在特定模型上运行推理的访问权限。此策略可用作服务控制策略（SCP）来控制组织内模型访问权限。

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

****  

```
{
          "Version":"2012-10-17",		 	 	 
          "Statement": {
              "Sid": "DenyInference",
              "Effect": "Deny",
              "Action": [
                  "bedrock:InvokeModel",
                  "bedrock:InvokeModelWithResponseStream",
                  "bedrock:CreateModelInvocationJob"
               ],
              "Resource": "arn:aws:bedrock:*::foundation-model/model-id"
          }
      }
```

------

要拒绝对所有基础模型的推理访问权限，请使用 `*` 作为模型 ID。在 `InvokeModel` 被拒绝时，系统会自动阻止其他操作，例如 `Converse` 和 `StartAsyncInvoke`。有关型号列表 IDs，请参见 [Amazon Bedrock 中支持的根基模型](models-supported.md)

## 允许用户调用预置模型
<a name="security_iam_id-based-policy-examples-perform-actions-pt"></a>

以下是一项示例策略，您可以将其附加到 IAM 角色，以允许该角色在模型推理中使用预置模型。例如，您可以将该策略附加到仅具有使用预置模型的权限的角色。该角色将无法管理或查看关于预调配吞吐量的信息。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ProvisionedThroughputModelInvocation",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:InvokeModelWithResponseStream"
            ],
            "Resource": "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/my-provisioned-model"
        }
    ]
}
```

------

# Amazon Bedrock 代理基于身份的策略示例
<a name="security_iam_id-based-policy-examples-agent"></a>

选择一个主题，查看可以附加到 IAM 角色的 IAM 策略示例，以便为 [使用人工智能代理在应用程序中自动执行任务](agents.md) 中的操作预置权限。

**Topics**
+ [Amazon Bedrock 代理所需的权限](#iam-agents-ex-all)
+ [允许用户查看关于代理的信息并调用代理](#security_iam_id-based-policy-examples-perform-actions-agent)
+ [控制对服务层的访问权限](#security_iam_id-based-policy-examples-service-tiers)

## Amazon Bedrock 代理所需的权限
<a name="iam-agents-ex-all"></a>

要让 IAM 身份能够使用 Amazon Bedrock 代理，您必须为其配置必要的权限。您可以附加[AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockFullAccess)策略以向该角色授予适当的权限。

要将权限限制为仅用于 Amazon Bedrock 代理中的操作，请将以下基于身份的策略附加到 IAM 角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AgentPermissions",
            "Effect": "Allow",
            "Action": [  
                "bedrock:ListFoundationModels",
                "bedrock:GetFoundationModel",
                "bedrock:TagResource", 
                "bedrock:UntagResource", 
                "bedrock:ListTagsForResource", 
                "bedrock:CreateAgent", 
                "bedrock:UpdateAgent", 
                "bedrock:GetAgent", 
                "bedrock:ListAgents", 
                "bedrock:DeleteAgent",
                "bedrock:CreateAgentActionGroup", 
                "bedrock:UpdateAgentActionGroup", 
                "bedrock:GetAgentActionGroup", 
                "bedrock:ListAgentActionGroups", 
                "bedrock:DeleteAgentActionGroup",
                "bedrock:GetAgentVersion",
                "bedrock:ListAgentVersions", 
                "bedrock:DeleteAgentVersion",
                "bedrock:CreateAgentAlias", 
                "bedrock:UpdateAgentAlias",               
                "bedrock:GetAgentAlias",
                "bedrock:ListAgentAliases",
                "bedrock:DeleteAgentAlias",
                "bedrock:AssociateAgentKnowledgeBase",
                "bedrock:DisassociateAgentKnowledgeBase",
                "bedrock:ListAgentKnowledgeBases",
                "bedrock:GetKnowledgeBase",
                "bedrock:ListKnowledgeBases",
                "bedrock:PrepareAgent",
                "bedrock:InvokeAgent",
                "bedrock:AssociateAgentCollaborator",
                "bedrock:DisassociateAgentCollaborator",
                "bedrock:GetAgentCollaborator",
                "bedrock:ListAgentCollaborators",
                "bedrock:UpdateAgentCollaborator"
            ],
            "Resource": "*"
        }
    ]   
}
```

------

您可以通过省略[操作](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions)或指定[资源](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-resources)和[条件键](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys)来进一步限制权限。IAM 身份可以对特定资源调用 API 操作。例如，[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateAgent.html) 操作只能用于代理资源，[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) 操作只能用于别名资源。对于不在特定资源类型上使用的 API 操作（例如 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateAgent.html)），请将 `Resource` 指定为 \$1。如果您指定的 API 操作无法用于策略中指定的资源，Amazon Bedrock 将返回错误。

## 允许用户查看关于代理的信息并调用代理
<a name="security_iam_id-based-policy-examples-perform-actions-agent"></a>

以下是您可以附加到 IAM 角色的示例策略，以允许该角色查看有关代理的信息或编辑具有 ID 的代理，*AGENT12345*以及使用该 ID 与其别名进行交互*ALIAS12345*。例如，您可以将该策略附加到仅具有对代理进行问题排查和更新的权限的角色。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetAndUpdateAgent",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetAgent",
                "bedrock:UpdateAgent"
            ],
            "Resource": "arn:aws:bedrock:us-east-1:123456789012:agent/AgentId"
        },
        {
            "Sid": "InvokeAgent",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeAgent"
            ],
            "Resource": "arn:aws:bedrock:us-east-1:123456789012:agent-alias/AgentId/AgentAliasId"
        }
    ]
}
```

------

## 控制对服务层的访问权限
<a name="security_iam_id-based-policy-examples-service-tiers"></a>

Amazon Bedrock 服务等级为推理请求提供不同级别的处理优先级和定价。默认情况下，所有服务级别（优先级、默认和弹性）都可供拥有适当的 Bedrock 权限的用户使用，遵循允许名单方法，即除非明确限制，否则将授予访问权限。

但是，组织可能希望控制其用户可以访问哪些服务层以管理成本或强制执行使用政策。您可以通过使用带有`bedrock:ServiceTier`条件密钥的 IAM 策略来实施访问限制，以拒绝对特定服务层的访问。这种方法使您可以精细控制哪些团队成员可以使用高级服务等级（例如 “优先级”）或成本优化级别（例如 “flex”）。

以下示例显示了一个基于身份的策略，该策略拒绝访问所有服务层。当你想阻止用户指定任何服务等级，迫使他们使用系统默认行为时，这种类型的策略非常有用：

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "bedrock:InvokeModel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "bedrock:ServiceTier": ["reserved", "priority", "default", "flex"]
                }
            }
        }
    ]
}
```

您可以通过修改`bedrock:ServiceTier`条件值自定义此策略，使其仅拒绝对特定服务层的访问。例如，要在允许 “默认” 和 “弹性” 的同时仅拒绝高级 “优先级” 级别，则只能`["priority"]`在条件中指定。这种灵活的方法允许您实施与组织的成本管理和运营要求相一致的使用策略。有关服务等级的更多信息，请参阅[用于优化性能和成本的服务分层](service-tiers-inference.md)。

# 管理项目上的 IAM 策略
<a name="security-iam-projects"></a>

Amazon Bedrock Projects 支持直接 IAM 策略附件，允许您在项目资源级别管理访问控制。这为管理 IAM 用户和角色的策略提供了一种替代方案。

## 了解项目级 IAM 政策
<a name="security-iam-projects-understanding"></a>

项目级 IAM 策略允许您：
+ **集中访问控制**：直接对项目资源定义权限
+ **简化管理**：无需修改个别 user/role 策略即可更新访问权限
+ **轻松审计**：在一个地方查看项目的所有权限
+ **委托管理**：允许项目所有者管理其项目的访问权限

## 将 IAM 策略附加到项目
<a name="security-iam-projects-attaching"></a>

### 附加策略以授予访问权限
<a name="security-iam-projects-attach-grant"></a>

将 IAM 策略直接附加到项目以授予权限：

```
import boto3
import json

iam = boto3.client('iam', region_name='us-east-1')

project_arn = "arn:aws:bedrock-mantle:us-east-1:123456789012:project/proj_abc123"

# Define the identity-based policy document
policy_document = {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowTeamAlphaAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock-mantle:ListTagsForResources",
                "bedrock-mantle:GetProject"
            ],
            "Resource": project_arn
        }
    ]
}

policy_json = json.dumps(policy_document)

# Create a managed policy
create_response = iam.create_policy(
    PolicyName="TeamAlphaAccessPolicy",
    PolicyDocument=policy_json,
    Description="Grants Team Alpha read access to the Bedrock project"
)

policy_arn = create_response['Policy']['Arn']
print(f"Policy created: {policy_arn}")

# Attach the policy to alice (IAM user)
iam.attach_user_policy(
    UserName="alice",
    PolicyArn=policy_arn
)
print("Policy attached to alice")

# Attach the policy to bob (IAM user)
iam.attach_user_policy(
    UserName="bob",
    PolicyArn=policy_arn
)
print("Policy attached to bob")

# Attach the policy to TeamAlphaRole (IAM role)
iam.attach_role_policy(
    RoleName="TeamAlphaRole",
    PolicyArn=policy_arn
)
print("Policy attached to TeamAlphaRole")
```

### 向团队授予完全项目访问权限
<a name="security-iam-projects-full-access"></a>

允许团队拥有管理和使用项目的完全访问权限：

```
import boto3
import json

iam = boto3.client('iam', region_name='us-east-1')

project_arn = "arn:aws:bedrock-mantle:us-east-1:123456789012:project/proj_abc123"

# Identity-based policy — no Principal block needed
policy_document = {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "FullProjectAccess",
            "Effect": "Allow",
            "Action": "bedrock-mantle:*",
            "Resource": project_arn
        }
    ]
}

# Create a managed policy
create_response = iam.create_policy(
    PolicyName="DataScienceFullAccess",
    PolicyDocument=json.dumps(policy_document),
    Description="Grants DataScienceTeamRole full access to the Bedrock project"
)

policy_arn = create_response['Policy']['Arn']
print(f"Policy created: {policy_arn}")

# Attach to the DataScienceTeamRole
iam.attach_role_policy(
    RoleName="DataScienceTeamRole",
    PolicyArn=policy_arn
)

print("Full access policy attached to DataScienceTeamRole")
```

### 授予 只读访问权限
<a name="security-iam-projects-readonly"></a>

附上仅允许查看项目详细信息和发出推理请求的策略：

```
import boto3
import json

iam = boto3.client('iam', region_name='us-east-1')

project_arn = "arn:aws:bedrock-mantle:us-east-1:123456789012:project/proj_abc123"

# Identity-based policy — no Principal block needed
policy_document = {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock-mantle:CreateInference",
                "bedrock-mantle:GetProject",
                "bedrock-mantle:ListProjects",
                "bedrock-mantle:ListTagsForResources"
            ],
            "Resource": project_arn
        }
    ]
}

# Create a managed policy
create_response = iam.create_policy(
    PolicyName="ReadOnlyAccessPolicy",
    PolicyDocument=json.dumps(policy_document),
    Description="Grants viewer1 and viewer2 read-only access to the Bedrock project"
)

policy_arn = create_response['Policy']['Arn']
print(f"Policy created: {policy_arn}")

# Attach to viewer1
iam.attach_user_policy(
    UserName="viewer1",
    PolicyArn=policy_arn
)
print("Policy attached to viewer1")

# Attach to viewer2
iam.attach_user_policy(
    UserName="viewer2",
    PolicyArn=policy_arn
)
print("Policy attached to viewer2")
```







# AWS Amazon Bedrock 的托管政策
<a name="security-iam-awsmanpol"></a>

要向用户、群组和角色添加权限，使用 AWS 托管策略比自己编写策略要容易得多。创建仅为团队提供所需权限的 [IAM 客户管理型策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)需要时间和专业知识。要快速入门，您可以使用我们的 AWS 托管策略。这些策略涵盖常见使用案例，可在您的 AWS 账户中使用。

有关 AWS 托管策略的列表，请参阅[AWS 托管策略](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/policy-list.html)参考中的 AWS 托管策略。有关 AWS 托管策略的更多信息，请参阅 *IAM 用户指南*中的[AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

AWS 服务维护和更新 AWS 托管策略。您无法更改 AWS 托管策略中的权限。服务偶尔会向 AWS 托管式策略添加额外权限以支持新特征。此类更新会影响附加策略的所有身份（用户、组和角色）。当启动新特征或新操作可用时，服务最有可能会更新 AWS 托管式策略。服务不会从 AWS 托管策略中移除权限，因此策略更新不会破坏您的现有权限。

此外，还 AWS 支持跨多个服务的工作职能的托管策略。例如，**ReadOnlyAccess** AWS 托管策略提供对所有 AWS 服务和资源的只读访问权限。当服务启动一项新功能时， AWS 会为新操作和资源添加只读权限。有关工作职能策略的列表和说明，请参阅 *IAM 用户指南*中的[适用于工作职能的AWS 托管式策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。

**Topics**
+ [AWS 托管策略： AmazonBedrockFullAccess](#security-iam-awsmanpol-AmazonBedrockFullAccess)
+ [AWS 托管策略： AmazonBedrockReadOnly](#security-iam-awsmanpol-AmazonBedrockReadOnly)
+ [AWS 托管策略： AmazonBedrockLimitedAccess](#security-iam-awsmanpol-AmazonBedrockLimitedAccess)
+ [AWS 托管策略： AmazonBedrockMarketplaceAccess](#security-iam-awsmanpol-AmazonBedrockMarketplaceAccess)
+ [AWS 托管策略： AmazonBedrockMantleFullAccess](#security-iam-awsmanpol-AmazonBedrockMantleFullAccess)
+ [AWS 托管策略： AmazonBedrockMantleReadOnly](#security-iam-awsmanpol-AmazonBedrockMantleReadOnly)
+ [AWS 托管策略： AmazonBedrockMantleInferenceAccess](#security-iam-awsmanpol-AmazonBedrockMantleInferenceAccess)
+ [Amazon Bedrock 更新了托 AWS 管政策](#security-iam-awsmanpol-updates)

## AWS 托管策略： AmazonBedrockFullAccess
<a name="security-iam-awsmanpol-AmazonBedrockFullAccess"></a>

您可以将[AmazonBedrockFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonBedrockFullAccess.html)策略附加到您的 IAM 身份，以授予管理权限，允许用户创建、读取、更新和删除 Amazon Bedrock 资源。

**权限详细信息**

该策略包含以下权限：
+  `ec2`（Amazon Elastic Compute Cloud）— 允许描述 VPCs、子网和安全组的权限。
+  `iam`（Ident AWS ity and Access Management）— 允许委托人传递角色，但仅允许将带有 “Amazon Bedrock” 的 IAM 角色传递给 Amazon Bedrock 服务。对于 Amazon Bedrock 操作，这些权限仅限于 `bedrock.amazonaws.com`。
+  `kms`（AWS 密钥管理服务）-允许委托人描述 AWS KMS 密钥和别名。
+  `bedrock` (Amazon Bedrock) – 允许主体读取和写入 Amazon Bedrock 控制面板和运行时服务中的所有操作。
+  `sagemaker`（Amazon SageMaker AI）— 允许委托人访问客户账户中的亚马逊 SageMaker AI 资源，该账户是亚马逊 Bedrock Marketplace 功能的基础。

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

****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Sid": "BedrockAll",
             "Effect": "Allow",
             "Action": [
                 "bedrock:*"
             ],
             "Resource": "*"
         },
         {
             "Sid": "DescribeKey",
             "Effect": "Allow",
             "Action": [
                 "kms:DescribeKey"
             ],
             "Resource": "arn:*:kms:*:::*"
         },
         {
             "Sid": "APIsWithAllResourceAccess",
             "Effect": "Allow",
             "Action": [
                 "iam:ListRoles",
                 "ec2:DescribeVpcs",
                 "ec2:DescribeSubnets",
                 "ec2:DescribeSecurityGroups"
             ],
             "Resource": "*"
         },
         {
             "Sid": "MarketplaceModelEndpointMutatingAPIs",
             "Effect": "Allow",
             "Action": [
                 "sagemaker:CreateEndpoint",
                 "sagemaker:CreateEndpointConfig",
                 "sagemaker:CreateModel",
                 "sagemaker:DeleteEndpoint",
                 "sagemaker:UpdateEndpoint"
             ],
             "Resource": [
                 "arn:aws:sagemaker:*:*:endpoint/*",
                 "arn:aws:sagemaker:*:*:endpoint-config/*",
                 "arn:aws:sagemaker:*:*:model/*"
             ],
             "Condition": {
                 "StringEquals": {
                     "aws:CalledViaLast": "bedrock.amazonaws.com",
                     "aws:ResourceTag/sagemaker-sdk:bedrock": "compatible"
                 }
             }
         },
         {
             "Sid": "MarketplaceModelEndpointAddTagsOperations",
             "Effect": "Allow",
             "Action": [
                 "sagemaker:AddTags"
             ],
             "Resource": [
                 "arn:aws:sagemaker:*:*:endpoint/*",
                 "arn:aws:sagemaker:*:*:endpoint-config/*",
                 "arn:aws:sagemaker:*:*:model/*"
             ],
             "Condition": {
                 "ForAllValues:StringEquals": {
                     "aws:TagKeys": [
                         "sagemaker-sdk:bedrock",
                         "bedrock:marketplace-registration-status",
                         "sagemaker-studio:hub-content-arn"
                     ]
                 },
                 "StringLike": {
                     "aws:RequestTag/sagemaker-sdk:bedrock": "compatible",
                     "aws:RequestTag/bedrock:marketplace-registration-status": "registered",
                     "aws:RequestTag/sagemaker-studio:hub-content-arn": "arn:aws:sagemaker:*:aws:hub-content/SageMakerPublicHub/Model/*"
                 }
             }
         },
         {
             "Sid": "MarketplaceModelEndpointDeleteTagsOperations",
             "Effect": "Allow",
             "Action": [
                 "sagemaker:DeleteTags"
             ],
             "Resource": [
                 "arn:aws:sagemaker:*:*:endpoint/*",
                 "arn:aws:sagemaker:*:*:endpoint-config/*",
                 "arn:aws:sagemaker:*:*:model/*"
             ],
             "Condition": {
                 "ForAllValues:StringEquals": {
                     "aws:TagKeys": [
                         "sagemaker-sdk:bedrock",
                         "bedrock:marketplace-registration-status",
                         "sagemaker-studio:hub-content-arn"
                     ]
                 },
                 "StringLike": {
                     "aws:ResourceTag/sagemaker-sdk:bedrock": "compatible",
                     "aws:ResourceTag/bedrock:marketplace-registration-status": "registered",
                     "aws:ResourceTag/sagemaker-studio:hub-content-arn": "arn:aws:sagemaker:*:aws:hub-content/SageMakerPublicHub/Model/*"
                 }
             }
         },
         {
             "Sid": "MarketplaceModelEndpointNonMutatingAPIs",
             "Effect": "Allow",
             "Action": [
                 "sagemaker:DescribeEndpoint",
                 "sagemaker:DescribeEndpointConfig",
                 "sagemaker:DescribeModel",
                 "sagemaker:DescribeInferenceComponent",
                 "sagemaker:ListEndpoints",
                 "sagemaker:ListTags"
             ],
             "Resource": [
                 "arn:aws:sagemaker:*:*:endpoint/*",
                 "arn:aws:sagemaker:*:*:endpoint-config/*",
                 "arn:aws:sagemaker:*:*:model/*"
             ],
             "Condition": {
                 "StringEquals": {
                     "aws:CalledViaLast": "bedrock.amazonaws.com"
                 }
             }
         },
         {
             "Sid": "MarketplaceModelEndpointInvokingOperations",
             "Effect": "Allow",
             "Action": [
                 "sagemaker:InvokeEndpoint",
                 "sagemaker:InvokeEndpointWithResponseStream"
             ],
             "Resource": [
                 "arn:aws:sagemaker:*:*:endpoint/*"
             ],
             "Condition": {
                 "StringEquals": {
                     "aws:CalledViaLast": "bedrock.amazonaws.com",
                     "aws:ResourceTag/sagemaker-sdk:bedrock": "compatible"
                 }
             }
         },
         {
             "Sid": "DiscoveringMarketplaceModel",
             "Effect": "Allow",
             "Action": [
                 "sagemaker:DescribeHubContent"
             ],
             "Resource": [
                 "arn:aws:sagemaker:*:aws:hub-content/SageMakerPublicHub/Model/*",
                 "arn:aws:sagemaker:*:aws:hub/SageMakerPublicHub"
             ]
         },
         {
             "Sid": "AllowMarketplaceModelsListing",
             "Effect": "Allow",
             "Action": [
                 "sagemaker:ListHubContents"
             ],
             "Resource": "arn:aws:sagemaker:*:aws:hub/SageMakerPublicHub"
         },
         {
             "Sid": "PassRoleToSageMaker",
             "Effect": "Allow",
             "Action": [
                 "iam:PassRole"
             ],
             "Resource": [
                 "arn:aws:iam::*:role/*SageMaker*ForBedrock*"
             ],
             "Condition": {
                 "StringEquals": {
                     "iam:PassedToService": [
                         "sagemaker.amazonaws.com",
                         "bedrock.amazonaws.com"
                     ]
                 }
             }
         },
         {
             "Sid": "PassRoleToBedrock",
             "Effect": "Allow",
             "Action": [
                 "iam:PassRole"
             ],
             "Resource": "arn:aws:iam::*:role/*AmazonBedrock*",
             "Condition": {
                 "StringEquals": {
                     "iam:PassedToService": [
                         "bedrock.amazonaws.com"
                     ]
                 }
             }
         },
         {
             "Sid": "MarketplaceOperationsFromBedrockFor3pModels",
             "Effect": "Allow",
             "Action": [
                 "aws-marketplace:Subscribe",
                 "aws-marketplace:ViewSubscriptions",
                 "aws-marketplace:Unsubscribe"
             ],
             "Resource": "*",
             "Condition": {
                 "StringEquals": {
                     "aws:CalledViaLast": "bedrock.amazonaws.com"
                 }
             }
         }
     ]
 }
```

------

## AWS 托管策略： AmazonBedrockReadOnly
<a name="security-iam-awsmanpol-AmazonBedrockReadOnly"></a>

您可以将[AmazonBedrockReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonBedrockReadOnly.html)策略附加到您的 IAM 身份，以授予查看 Amazon Bedrock 中所有资源的只读权限。

## AWS 托管策略： AmazonBedrockLimitedAccess
<a name="security-iam-awsmanpol-AmazonBedrockLimitedAccess"></a>

您可以将[AmazonBedrockLimitedAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonBedrockLimitedAccess.html)策略附加到您的 IAM 身份，以允许其访问 Amazon Bedrock 服务、 AWS KMS 密钥管理、网络资源以及第三方基础模型的 AWS Marketplace 订阅。此策略包括以下语句：
+ `BedrockAPIs` 语句使您可以在 Amazon Bedrock 中执行多项操作，包括：
  + 向 Amazon Bedrock 服务发出 API 请求时传递 Amazon Bedrock API 密钥。
  + 描述有关资源的信息。
  + 创建资源（护栏、模型、作业）。
  + 创建和完善自动推理策略（创建、构建、完善和测试策略）。
  + 删除资源。
  + 在所有资源上调用模型。
+ `DescribeKey` 语句在密钥策略允许的情况下，让您可以查看有关所有区域和账户的 KMS 密钥的信息。
+ `APIsWithAllResourceAccess` 语句让您可以：
  + 列出 IAM 角色。
  + 描述所有资源中的 Amazon VPC 资源（VPCs、子网和安全组）。
+ `MarketplaceOperationsFromBedrockFor3pModels` 语句使您能够：
  + 订阅 AWS Marketplace 产品/服务。
  + 查看订阅。
  + 取消订阅 AWS Marketplace 产品/服务。
**注意**  
条件键 `aws:CalledViaLast` 将这些操作限制为只能通过 Amazon Bedrock 服务调用进行。

## AWS 托管策略： AmazonBedrockMarketplaceAccess
<a name="security-iam-awsmanpol-AmazonBedrockMarketplaceAccess"></a>

您可以将[AmazonBedrockMarketplaceAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonBedrockMarketplaceAccess.html)策略附加到您的 IAM 身份，使其能够管理和使用集成了 A SageMaker I 的 Amazon Bedrock 商城模型终端节点。此策略包括以下语句：
+ `BedrockMarketplaceAPIs` 使您能够对所有资源，在 Amazon Bedrock 中创建、删除、注册、取消注册和更新 Marketplace 端点。
+ 该`MarketplaceModelEndpointMutatingAPIs`声明允许您在指定资源上创建和管理 SageMaker AI 终端节点、端点配置和模型。
  + 使用 `aws:CalledViaLast` 条件键确保这些操作只能在通过 Bedrock 进行调用时执行。
  + 使用 `aws:ResourceTag/sagemaker-sdk:bedrock` 条件键确保仅对标记为与 Amazon Bedrock 兼容的资源执行这些操作。
+ 该`MarketplaceModelEndpointAddTagsOperations`声明允许在指定资源上向 SageMaker AI 终端节点、端点配置和模型添加特定标签。
  + 使用 `aws:TagKeys` 条件键来限制可以添加哪些标签
  + 使用 `aws:RequestTag/*` 条件键确保标签值与指定的模式相匹配
+ 该`MarketplaceModelEndpointDeleteTagsOperations`语句允许从指定资源上的 SageMaker AI 端点、端点配置和模型中删除特定标签。
  + 使用 `aws:TagKeys` 条件键限制可以删除哪些标签
  + 使用 `aws:ResourceTag/*` 条件键确保删除的标签与指定的模式相匹配
+ 该`MarketplaceModelEndpointNonMutatingAPIs`语句允许查看和描述指定资源上的 SageMaker AI 端点、端点配置和模型。
  + 使用 `aws:CalledViaLast` 条件键确保这些操作只能通过 Amazon Bedrock 服务执行
+ 该`MarketplaceModelEndpointInvokingOperations`语句允许在指定资源上调用 SageMaker AI 终端节点。
  + 使用 `aws:CalledViaLast` 条件键确保这些操作只能通过 Amazon Bedrock 服务执行
  + 使用 `aws:ResourceTag/sagemaker-sdk:bedrock` 条件键确保仅对与 Bedrock 兼容的资源执行操作
+ 该`DiscoveringMarketplaceModel`声明允许描述指定资源上的 SageMaker AI 中心内容。
+ 该`AllowMarketplaceModelsListing`声明允许列出指定资源上的 SageMaker AI Hub 内容。
+ 该`PassRoleToSageMaker`声明允许将指定资源上的 IAM 角色传递给 A SageMaker I 和 Amazon Bedrock。
  + 使用 `iam:PassedToService` 条件键确保角色仅传递给指定的服务。
+ `PassRoleToBedrock` 语句允许在指定资源上，将特定 IAM 角色传递给 Amazon Bedrock。
  + 使用 `iam:PassedToService` 条件键确保这些角色仅传递给 Amazon Bedrock 服务。

## AWS 托管策略： AmazonBedrockMantleFullAccess
<a name="security-iam-awsmanpol-AmazonBedrockMantleFullAccess"></a>

您可以将[AmazonBedrockMantleFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonBedrockMantleFullAccess.html)策略附加到您的 IAM 身份，以授予对所有 Amazon Bedrock Mantle 操作的完全访问权限。

**权限详细信息**

该策略包含以下权限：
+ `bedrock-mantle`（Amazon Bedrock Mantle）— 允许委托人完全访问亚马逊 Bedrock Mantle 服务中的所有操作。

## AWS 托管策略： AmazonBedrockMantleReadOnly
<a name="security-iam-awsmanpol-AmazonBedrockMantleReadOnly"></a>

您可以将[AmazonBedrockMantleReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonBedrockMantleReadOnly.html)策略附加到您的 IAM 身份，以授予查看 Amazon Bedrock Mantle 资源和使用不记名令牌调用的只读权限。

**权限详细信息**

该策略包含以下权限：
+ `bedrock-mantle`（Amazon Bedrock Mantle）— 允许委托人获取和列出 Amazon Bedrock Mantle 项目资源，并使用不记名令牌调用进行身份验证。

## AWS 托管策略： AmazonBedrockMantleInferenceAccess
<a name="security-iam-awsmanpol-AmazonBedrockMantleInferenceAccess"></a>

您可以将[AmazonBedrockMantleInferenceAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonBedrockMantleInferenceAccess.html)策略附加到您的 IAM 身份，以授予在 Amazon Bedrock Mantle 模型上运行推理的权限。

**权限详细信息**

该策略包含以下权限：
+ `bedrock-mantle`（Amazon Bedrock Mantle）— 允许委托人获取和列出 Amazon Bedrock Mantle 项目资源、创建推理请求以及使用不记名令牌调用进行身份验证。

## Amazon Bedrock 更新了托 AWS 管政策
<a name="security-iam-awsmanpol-updates"></a>

查看自该服务开始跟踪这些更改以来，Amazon Bedrock AWS 托管政策更新的详细信息。要获得有关此页面更改的自动提示，请订阅 [《Amazon Bedrock 用户指南》的文档历史记录](doc-history.md) 上的 RSS 源。


| 更改 | 描述 | 日期 | 
| --- | --- | --- | 
|  [AmazonBedrockMantleFullAccess](#security-iam-awsmanpol-AmazonBedrockMantleFullAccess) - 新策略  |  亚马逊 Bedrock 增加了一项新政策，授予对所有亚马逊 Bedrock Mantle 运营的完全访问权限。  | 2025年12月3日 | 
|  [AmazonBedrockMantleReadOnly](#security-iam-awsmanpol-AmazonBedrockMantleReadOnly)：新策略  |  亚马逊 Bedrock 添加了一项新政策，授予对亚马逊 Bedrock Mantle 资源的只读访问权限。  | 2025年12月3日 | 
|  [AmazonBedrockMantleInferenceAccess](#security-iam-awsmanpol-AmazonBedrockMantleInferenceAccess)：新策略  |  亚马逊 Bedrock 添加了一项新政策，授予对亚马逊 Bedrock Mantle 模型的推理访问权限。  | 2025年12月3日 | 
|  [AmazonBedrockFullAccess](#security-iam-awsmanpol-AmazonBedrockFullAccess) - 更新的策略  |  Amazon Bedrock 更新了 AmazonBedrockFullAccess 托管策略，默认情况下允许访问所有无服务器基础模型。  | 2025 年 7 月 14 日 | 
|  [AmazonBedrockMarketplaceAccess](#security-iam-awsmanpol-AmazonBedrockLimitedAccess)：新策略  |  亚马逊 Bedrock 添加了一项新政策，授予客户通过 A SageMaker I 终端节点访问亚马逊 Bedrock Marketplace 基础模型的权限。  | 2025 年 6 月 13 日 | 
|  [AmazonBedrockLimitedAccess](#security-iam-awsmanpol-AmazonBedrockLimitedAccess)：新策略  |  Amazon Bedrock 添加了一项新策略，用于向客户授予访问 Amazon Bedrock 中核心操作的基本权限。  | 2025 年 6 月 13 日 | 
|  [AmazonBedrockFullAccess](#security-iam-awsmanpol-AmazonBedrockFullAccess) - 更新的策略  |  Amazon Bedrock 更新了 AmazonBedrockFullAccess 托管政策，授予客户创建、读取、更新和删除亚马逊 Bedrock Marketplace 资源的必要权限。这包括管理底层亚马逊 A SageMaker I 资源的权限，因为它们是亚马逊 Bedrock Marketplace 功能的基础。  | 2024 年 12 月 4 日 | 
|  [AmazonBedrockReadOnly](#security-iam-awsmanpol-AmazonBedrockReadOnly) - 更新的策略  |  亚马逊 Bedrock 更新了 AmazonBedrockReadOnly 托管政策，授予客户阅读亚马逊 Bedrock Marketplace 资源的必要权限。这包括管理底层亚马逊 A SageMaker I 资源的权限，因为它们是亚马逊 Bedrock Marketplace 功能的基础。  | 2024 年 12 月 4 日 | 
|  [AmazonBedrockReadOnly](#security-iam-awsmanpol-AmazonBedrockReadOnly) - 更新的策略  |  Amazon Bedrock 更新了 AmazonBedrockReadOnly 政策，增加了自定义模型导入的只读权限。  | 2024 年 10 月 18 日 | 
|  [AmazonBedrockReadOnly](#security-iam-awsmanpol-AmazonBedrockReadOnly) - 更新的策略  |  Amazon Bedrock 添加了对推理配置文件的只读权限。  | 2024 年 8 月 27 日 | 
|  [AmazonBedrockReadOnly](#security-iam-awsmanpol-AmazonBedrockReadOnly) - 更新的策略  |  亚马逊 Bedrock 更新了 AmazonBedrockReadOnly 政策，将亚马逊 Bedrock Guardrails、Amazon Bedrock 模型评估和亚马逊 Bedrock Batch 推理的只读权限包括在内。  | 2024 年 8 月 21 日 | 
|  [AmazonBedrockReadOnly](#security-iam-awsmanpol-AmazonBedrockReadOnly) - 更新的策略  |  Amazon Bedrock 增加了对批量推理（模型调用作业）的只读权限。  | 2024 年 8 月 21 日 | 
|   [AmazonBedrockReadOnly](#security-iam-awsmanpol-AmazonBedrockReadOnly) - 更新的策略   |  Amazon Bedrock 更新了 AmazonBedrockReadOnly 政策，增加了亚马逊 Bedrock 定制模型导入的只读权限。  | 2024 年 9 月 3 日 | 
|  [AmazonBedrockFullAccess](#security-iam-awsmanpol-AmazonBedrockFullAccess)：新策略  |  Amazon Bedrock 添加了一项新策略，授予用户创建、读取、更新和删除资源的权限。  | 2023 年 12 月 12 日 | 
|  [AmazonBedrockReadOnly](#security-iam-awsmanpol-AmazonBedrockReadOnly)：新策略  |  Amazon Bedrock 添加了一项新策略，授予用户对所有操作的只读权限。  | 2023 年 12 月 12 日 | 
|  Amazon Bedrock 已开启跟踪更改  |  Amazon Bedrock 开始跟踪其 AWS 托管政策的变更。  | 2023 年 12 月 12 日 | 

# 服务角色
<a name="security-iam-sr"></a>

Amazon Bedrock 使用 [IAM 服务角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)来支持某些功能，以便让 Amazon Bedrock 代表您执行任务。

控制台会自动为支持的功能创建服务角色。

您还可以创建自定义服务角色并根据您的特定应用场景定制附加的权限。如果您使用控制台，可以选择此角色，而不是让 Amazon Bedrock 为您创建一个角色。

要设置自定义服务角色，请执行以下一般步骤。

1. 按照创建角色中的步骤[创建角色以向 AWS 服务委派权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

1. 附加**信任策略**。

1. 附加相关的**基于身份的权限**。

**重要**  
设置 `iam:PassRole` 权限时，请确保用户所传递角色的权限不会超过您希望该用户拥有的权限。例如，Alice 不允许在自定义模型上执行 `bedrock:InvokeModel`。如果 Alice 可以将角色传递给 Amazon Bedrock 来创建对该自定义模型的评估，则服务可以在运行任务时代表 Alice 调用该模型。

请参阅以下链接，进一步了解与设置服务角色权限相关的 IAM 概念。
+ [AWS 服务角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)
+ [基于身份的策略和基于资源的策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)
+ [在 Lambda 中使用基于资源的策略](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)
+ [AWS 全局条件上下文密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)
+ [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)

选择一个主题，进一步了解特定功能的服务角色。

**Topics**
+ [为批量推理创建自定义服务角色](batch-iam-sr.md)
+ [为模型自定义创建服务角色](model-customization-iam-role.md)
+ [为导入预训练模型创建服务角色](model-import-iam-role.md)
+ [为 Amazon Bedrock 代理创建服务角色](agents-permissions.md)
+ [为 Amazon Bedrock 知识库创建服务角色](kb-permissions.md)
+ [在 Amazon Bedrock 中为 Amazon Bedrock 流创建服务角色](flows-permissions.md)
+ [模型评估作业的服务角色要求](model-evaluation-security-service-roles.md)

# 为批量推理创建自定义服务角色
<a name="batch-iam-sr"></a>

要使用自定义服务角色来进行批量推理，而不是 Amazon Bedrock 在中自动为您创建的角色AWS 管理控制台，请按照创建角色[向服务委派权限中的步骤创建一个 IAM 角色并附加以下权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。AWS

**Topics**
+ [信任关系](#batch-iam-sr-trust)
+ [批量推理服务角色的基于身份的权限。](#batch-iam-sr-identity)

## 信任关系
<a name="batch-iam-sr-trust"></a>

以下信任策略允许 Amazon Bedrock 担任此角色并提交和管理批量推理作业。根据需要*values*更换。该策略在 `Condition` 字段中包含了可选的条件键（参阅 [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)和 [AWS 全局条件上下文键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)），建议您将其作为最佳安全实践使用。

**注意**  
出于安全考虑，最佳做法是在创建完特定的批量推理作业 IDs 后，将其替换为特定的批量推理作业。*\$1*

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:bedrock:us-east-1:123456789012:model-invocation-job/*"
                }
            }
        }
    ]
}
```

------

## 批量推理服务角色的基于身份的权限。
<a name="batch-iam-sr-identity"></a>

以下主题描述并提供了权限策略示例，根据您的使用案例，您可能需要将这些策略附加到自定义批量推理服务角色。

**Topics**
+ [（必需）访问 Amazon S3 中输入和输出数据的权限](#batch-iam-sr-s3)
+ [（可选）使用推理配置文件运行批量推理的权限](#batch-iam-sr-ip)

### （必需）访问 Amazon S3 中输入和输出数据的权限
<a name="batch-iam-sr-s3"></a>

要允许服务角色访问包含输入数据的 Amazon S3 存储桶以及用于写入输出数据的存储桶，请向服务角色附加以下策略。必要*values*时更换。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
         "Sid": "S3Access",
         "Effect": "Allow",
         "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:ListBucket"
         ],
         "Resource": [
            "arn:aws:s3:::${InputBucket}",
            "arn:aws:s3:::${InputBucket}/*",
            "arn:aws:s3:::${OutputBucket}",
            "arn:aws:s3:::${OutputBucket}/*"
         ],
         "Condition": {
            "StringEquals": {
                "aws:ResourceAccount": [
                    "123456789012"
                ]
            }
         }
        }
    ]
}
```

------

### （可选）使用推理配置文件运行批量推理的权限
<a name="batch-iam-sr-ip"></a>

要使用推理配置文件运行批量[推理，除了推理配置文件](inference-profiles.md)中每个区域的模型外AWS 区域，服务角色还必须有权在中调用推理配置文件。

对于使用跨区域（系统定义）的推理配置文件进行调用的权限，请针对附加到您的服务角色的权限策略，使用以下策略作为模板：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossRegionInference",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:inference-profile/${InferenceProfileId}",
                "arn:aws:bedrock:us-east-1::foundation-model/${ModelId}",
                "arn:aws:bedrock:us-east-1::foundation-model/${ModelId}"
            ]
        }
    ]
}
```

------

对于调用应用程序推理配置文件的权限，请为附加到您的服务角色的权限策略使用以下策略作为模板：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ApplicationInferenceProfile",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/${InferenceProfileId}",
                "arn:aws:bedrock:us-east-1::foundation-model/${ModelId}",
                "arn:aws:bedrock:us-east-1::foundation-model/${ModelId}"
            ]
        }
    ]
}
```

------

# 为模型自定义创建服务角色
<a name="model-customization-iam-role"></a>

要使用自定义角色而不是 Amazon Bedrock 自动创建的角色进行模型定制，请按照创建角色[向AWS服务委派权限中的步骤创建一个 IAM 角色并附加以下权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。
+ 信任关系
+ 访问 S3 中的训练数据和验证数据以及将输出数据写入 S3 的权限
+ （可选）如果您使用 KMS 密钥加密以下任何资源，则还有解密密钥的权限（请参阅[自定义模型加密](encryption-custom-job.md)）
  + 模型自定义作业或生成的自定义模型
  + 用于模型自定义作业的训练、验证和输出数据

**Topics**
+ [信任关系](#model-customization-iam-role-trust)
+ [访问训练文件和验证文件以及在 S3 中写入输出文件的权限](#model-customization-iam-role-s3)
+ [（可选）使用跨区域推理配置文件创建蒸馏作业的权限](#customization-iam-sr-ip)

## 信任关系
<a name="model-customization-iam-role-trust"></a>

以下策略允许 Amazon Bedrock 担任此角色并执行模型自定义作业。下面所示为您可以使用的示例策略。

您可以选择使用带有 `Condition` 字段的一个或多个全局条件上下文键来限制权限范围，以防止[跨服务混淆代理](cross-service-confused-deputy-prevention.md)。有关更多信息，请参阅 [AWS 全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。
+ 将 `aws:SourceAccount` 值设置为您的账户 ID。
+ （可选）使用 `ArnEquals` 或 `ArnLike` 条件将范围限制为账户 ID 中特定的模型自定义作业。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:bedrock:us-east-1:111122223333:model-customization-job/*"
                }
            }
        }
    ]
}
```

------

## 访问训练文件和验证文件以及在 S3 中写入输出文件的权限
<a name="model-customization-iam-role-s3"></a>

附加以下策略，以允许角色访问训练数据和验证数据以及向其中写入输出数据的存储桶。将 `Resource` 列表中的值替换为您实际的存储桶名称。

要限制对存储桶中特定文件夹的访问，请在您的文件夹路径中添加 `s3:prefix` 条件键。您可以按照[示例 2：获取存储桶中具有特定前缀的对象列表](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html#condition-key-bucket-ops-2)中的**用户策略**示例操作 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::training-bucket",
                "arn:aws:s3:::training-bucket/*",
                "arn:aws:s3:::validation-bucket",
                "arn:aws:s3:::validation-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::output-bucket",
                "arn:aws:s3:::output-bucket/*"
            ]
        }
    ]
}
```

------

## （可选）使用跨区域推理配置文件创建蒸馏作业的权限
<a name="customization-iam-sr-ip"></a>

要在提炼作业中为教师模型使用跨区域推理配置文件，除了推理配置文件中每个区域的模型外AWS 区域，服务角色还必须有权在中调用推理配置文件。

对于使用跨区域（系统定义）的推理配置文件进行调用的权限，请针对附加到您的服务角色的权限策略，使用以下策略作为模板：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossRegionInference",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:inference-profile/${InferenceProfileId}",
                "arn:aws:bedrock:us-east-1::foundation-model/${ModelId}",
                "arn:aws:bedrock:us-east-1::foundation-model/${ModelId}"
            ]
        }
    ]
}
```

------

# 为导入预训练模型创建服务角色
<a name="model-import-iam-role"></a>

要使用自定义角色导入模型，您可以创建一个 IAM 服务角色并附加以下权限。有关如何在 IAM 中创建服务角色的信息，请参阅[创建向AWS服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

这些权限同时适用于以下两种将模型导入 Amazon Bedrock 的方法：
+ **自定义模型导入作业** – 用于导入自定义的开源基础模型（如 Mistral AI 或 Llama 模型）。有关更多信息，请参阅 [使用自定义模型导入功能将自定义的开源模型导入 Amazon Bedrock 中](model-customization-import-model.md)。
+ **创建自定义模型**-用于导入在 SageMaker AI 中经过微调的Amazon Nova模型。有关更多信息，请参阅 [导入 SageMaker 经过人工智能训练的 Amazon Nova 模型](import-with-create-custom-model.md)。

**Topics**
+ [信任关系](#model-import-iam-role-trust)
+ [对 Amazon S3 中的模型文件的访问权限](#model-import-iam-role-s3)

## 信任关系
<a name="model-import-iam-role-trust"></a>

以下策略允许 Amazon Bedrock 代入此角色并执行模型导入操作。下面所示为您可以使用的示例策略。

您可以选择使用带有 `Condition` 字段的一个或多个全局条件上下文键来限制权限范围，以防止[跨服务混淆代理](cross-service-confused-deputy-prevention.md)。有关更多信息，请参阅 [AWS 全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。
+ 将 `aws:SourceAccount` 值设置为您的账户 ID。
+ （可选）使用 `ArnEquals` 或 `ArnLike` 条件将范围限制为账户中的特定操作。以下示例限制对自定义模型导入作业的访问权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:bedrock:us-east-1:111122223333:model-import-job/*"
                }
            }
        }
    ]
}
```

------

## 对 Amazon S3 中的模型文件的访问权限
<a name="model-import-iam-role-s3"></a>

附加以下策略，以允许角色访问 Amazon S3 存储桶中的模型文件。将 `Resource` 列表中的值替换为您实际的存储桶名称。

对于自定义模型导入作业，这是您自己的 Amazon S3 存储桶，其中包含自定义的开源模型文件。为了根据 SageMaker 经过人工智能训练的模型创建自定义Amazon Nova模型，这是亚马逊管理的 Amazon S3 存储桶，A SageMaker I 存储在其中存储经过训练的模型工件。 SageMaker 当你运行第一个 AI 训练作业时， SageMaker AI 会创建这个存储桶。

要限制对存储桶中特定文件夹的访问，请在您的文件夹路径中添加 `s3:prefix` 条件键。您可以按照[示例 2：获取存储桶中具有特定前缀的对象列表](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html#condition-key-bucket-ops-2)中的**用户策略**示例操作 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::bucket",
                "arn:aws:s3:::bucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

# 为 Amazon Bedrock 代理创建服务角色
<a name="agents-permissions"></a>

要为代理使用自定义服务角色而不是 Amazon Bedrock 自动创建的角色，请按照创建角色[向AWS服务委派权限中的步骤创建一个 IAM 角色并附加以下权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。
+ 信任策略
+ 包含以下基于身份的权限的策略：
  + 对 Amazon Bedrock 基础模型的访问权限。
  + 对包含代理中操作组的 OpenAPI 架构的 Amazon S3 对象的访问权限。
  + Amazon Bedrock 查询要附加到代理的知识库的权限。
  + 如果以下任何一种情况与您的应用场景相关，请将该语句添加到策略中，或将包含该语句的策略添加到服务角色中：
    + （可选）如果您启用多代理协作，需要获取别名和调用代理协作者的权限。
    + （可选）如果您将预调配吞吐量与代理别名关联，则需要权限来使用该预调配吞吐量进行模型调用。
    + （可选）如果您将护栏与代理关联，则需要权限来应用该护栏。如果该护栏使用 KMS 密钥加密，则服务角色还需要[解密密钥的权限](guardrails-permissions-kms.md)
    + （可选）如果您使用 KMS 密钥加密代理，则需要[解密密钥的权限](encryption-agents.md)。

无论是否使用自定义角色，您都还需要将**基于资源的策略**附加到用于执行代理中的操作组任务的 Lambda 函数，以便为服务角色提供访问这些函数的权限。有关更多信息，请参阅 [基于资源的策略，允许 Amazon Bedrock 调用操作组 Lambda 函数](#agents-permissions-lambda)。

**Topics**
+ [信任关系](#agents-permissions-trust)
+ [代理服务角色的基于身份的权限。](#agents-permissions-identity)
+ [（可选）基于身份的策略，允许 Amazon Bedrock 使用与代理别名关联的预调配吞吐量](#agents-permissions-pt)
+ [（可选）基于身份的策略，用于允许 Amazon Bedrock 关联并调用代理协作者](#agents-permissions-mac)
+ [（可选）基于身份的策略，允许 Amazon Bedrock 使用与代理关联的护栏](#agents-permissions-gr)
+ [（可选）基于身份的策略，允许 Amazon Bedrock 访问 S3 中的文件以用于代码解释](#agents-permissions-files-ci)
+ [基于资源的策略，允许 Amazon Bedrock 调用操作组 Lambda 函数](#agents-permissions-lambda)

## 信任关系
<a name="agents-permissions-trust"></a>

以下策略允许 Amazon Bedrock 担任此角色并创建和管理代理。根据需要*\$1\$1values\$1*更换。该策略在 `Condition` 字段中包含了可选的条件键（参阅 [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)和 [AWS 全局条件上下文键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)），建议您将其作为最佳安全实践使用。

**注意**  
出于安全考虑，最佳做法是在创建特定的代理 IDs 之后将其替换为特定的代理。*\$1*

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "AWS:SourceArn": "arn:aws:bedrock:us-east-1:123456789012:agent/*"
                }
            }
        }
    ]
}
```

------

## 代理服务角色的基于身份的权限。
<a name="agents-permissions-identity"></a>

附加以下策略以为服务角色提供权限，并*\$1\$1values\$1*根据需要进行替换。策略包含以下语句。如果某个语句不适用于您的应用场景，可以省略。该策略在 `Condition` 字段中包含了可选的条件键（参阅 [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)和 [AWS 全局条件上下文键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)），建议您将其作为最佳安全实践使用。

**注意**  
如果您使用客户自主管理型 KMS 密钥加密代理，请参阅[加密 2025 年 1 月 22 日之前创建的代理的代理资源](encryption-agents.md)，了解需要添加的其他权限。
+ 借助 Amazon Bedrock 基础模型对代理编排中使用的提示进行模型推断的权限。
+ 在 Amazon S3 中访问代理的操作组 API 架构的权限。如果您的代理没有操作组，请省略此语句。
+ 访问与代理关联的知识库的权限。如果您的代理没有关联的知识库，请省略此语句。
+ 访问与代理关联的第三方（Pinecone 或 Redis Enterprise Cloud）知识库的权限。如果您的知识库是第一方（Amazon OpenSearch Serverless 或 Amazon Aurora），或者您的代理没有相关的知识库，请省略此声明。
+ 访问提示管理器中的提示的权限。如果您不打算在 Amazon Bedrock 控制台中与您的代理一起测试提示管理器中的提示，则省略此语句。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AgentModelInvocationPermissions",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2",
                "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2:1",
                "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-instant-v1"
            ]
        },
        {
            "Sid": "AgentActionGroupS3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/SchemaJson"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                }
            }
        },
        {
            "Sid": "AgentKnowledgeBaseQuery",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve",
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/knowledge-base-id"
            ]
        },
        {
            "Sid": "Agent3PKnowledgeBase",
            "Effect": "Allow",
            "Action": [
                "bedrock:AssociateThirdPartyKnowledgeBase"
            ],
            "Resource": "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/knowledge-base-id",
            "Condition": {
                "StringEquals": {
                    "bedrock:ThirdPartyKnowledgeBaseCredentialsSecretArn": "arn:aws:kms:us-east-1:123456789012:key/KeyId"
                }
            }
        },
        {
            "Sid": "AgentPromptManagementConsole",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetPrompt"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:prompt/prompt-id"
            ]
        }
    ]
}
```

------

## （可选）基于身份的策略，允许 Amazon Bedrock 使用与代理别名关联的预调配吞吐量
<a name="agents-permissions-pt"></a>

如果您将[预调配吞吐量](prov-throughput.md)与代理别名关联，请将以下基于身份的策略附加到服务角色或将该语句添加到[代理服务角色的基于身份的权限。](#agents-permissions-identity)部分的策略中。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {        
        "Sid": "UseProvisionedThroughput",
        "Effect": "Allow",
        "Action": [
            "bedrock:InvokeModel", 
            "bedrock:GetProvisionedModelThroughput"
        ],
        "Resource": [
            "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/${provisioned-model-id}"
        ]
      }
    ]
}
```

------

## （可选）基于身份的策略，用于允许 Amazon Bedrock 关联并调用代理协作者
<a name="agents-permissions-mac"></a>

如果您启用[多代理协作](agents-multi-agent-collaboration.md)，则需要将以下基于身份的策略附加到服务角色或将该语句添加到[代理服务角色的基于身份的权限。](#agents-permissions-identity)中的策略。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AmazonBedrockAgentMultiAgentsPolicyProd",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetAgentAlias",
                "bedrock:InvokeAgent"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:agent-alias/${agent-id}/${agent-alias-id}"
            ]
        }
    ]
}
```

------

## （可选）基于身份的策略，允许 Amazon Bedrock 使用与代理关联的护栏
<a name="agents-permissions-gr"></a>

如果您将[护栏](guardrails.md)与代理关联，则需要将以下基于身份的策略附加到服务角色或将该语句添加到[代理服务角色的基于身份的权限。](#agents-permissions-identity)部分的策略中。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ApplyGuardrail",
            "Effect": "Allow",
            "Action": "bedrock:ApplyGuardrail",
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:guardrail/${guardrail-id}"
            ]
        }
    ]
}
```

------

## （可选）基于身份的策略，允许 Amazon Bedrock 访问 S3 中的文件以用于代码解释
<a name="agents-permissions-files-ci"></a>

如果您启用了 [在 Amazon Bedrock 中启用代码解释](agents-enable-code-interpretation.md)，请将以下基于身份的策略附加到服务角色，或者将该语句添加到[代理服务角色的基于身份的权限](https://docs.aws.amazon.com//bedrock/latest/userguide/agents-permissions.html#agents-permissions-identity)部分的策略中。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {       
        "Sid": "AmazonBedrockAgentFileAccess", 
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:GetObjectVersionAttributes",
            "s3:GetObjectAttributes"
        ],
        "Resource": [
            "arn:aws:s3:::[[customerProvidedS3BucketWithKey]]"
        ]
      }
    ]
}
```

------

## 基于资源的策略，允许 Amazon Bedrock 调用操作组 Lambda 函数
<a name="agents-permissions-lambda"></a>

按照对 Lamb [da 使用基于资源的策略](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)中的步骤操作，将以下基于资源的策略附加到 Lambda 函数，以允许 Amazon Bedrock 访问代理操作组的 Lambda 函数，必要时将其替换。*\$1\$1values\$1*该策略在 `Condition` 字段中包含了可选的条件键（参阅 [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)和 [AWS 全局条件上下文键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)），建议您将其作为最佳安全实践使用。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessLambdaFunction",
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-1:123456789012:function:function-name",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "AWS:SourceArn": "arn:aws:bedrock:us-east-1:123456789012:agent/${agent-id}"
                }
            }
        }
    ]
}
```

------

# 为 Amazon Bedrock 知识库创建服务角色
<a name="kb-permissions"></a>

要在知识库中使用自定义角色而不是 Amazon Bedrock 自动创建的角色，请按照创建角色[向 AWS 服务委派权限中的步骤创建一个 IAM 角色并附加以下权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。为了安全起见，请仅添加必要的权限。

**注意**  
使用服务角色时，不能在多个角色之间共享策略。
+ 信任关系
+ 对 Amazon Bedrock 基础模型的访问权限
+ 访问存储数据所在的数据来源
+ （如果您在 Amazon OpenSearch 服务中创建矢量数据库）访问您的 OpenSearch 服务集合
+ （如果您在 Amazon Aurora 中创建向量数据库）访问 Aurora 集群
+ （如果您在Pinecone或中创建矢量数据库Redis Enterprise Cloud）对您的Pinecone或Redis Enterprise Cloud账户 AWS Secrets Manager 进行身份验证的权限
+ （可选）如果您使用 KMS 密钥加密以下任何资源，则还有解密密钥的权限（请参阅[知识库资源的加密](encryption-kb.md)）。
  + 知识库
  + 知识库的数据来源
  + 你在 Amazon OpenSearch 服务中的矢量数据库
  + 您的第三方矢量数据库的秘密 AWS Secrets Manager
  + 数据提取作业

**Topics**
+ [信任关系](#kb-permissions-trust)
+ [访问 Amazon Bedrock 模型的权限](#kb-permissions-access-models)
+ [访问数据来源的权限](#kb-permissions-access-ds)
+ [解密 Amazon S3 中加密数据源的 AWS KMS 密钥的权限](#kb-permissions-kms-datasource)
+ [与您的文档交互的权限](#kb-permissions-chatdoc)
+ [多模式内容的权限](#kb-permissions-multimodal)
+ [访问 Amazon Kendra GenAI 索引的权限](#kb-permissions-kendra)
+ [在 Amazon OpenSearch Serverless 中访问您的矢量数据库的权限](#kb-permissions-oss)
+ [在 OpenSearch 托管集群中访问矢量数据库的权限](#kb-permissions-osm)
+ [访问 Amazon Aurora 数据库集群的权限](#kb-permissions-rds)
+ [在 Amazon Neptune Analytics 分析数据库引擎中访问向量数据库的权限](#kb-permissions-neptune)
+ [在 Amazon S3 Vectors 中访问向量存储的权限](#kb-permissions-s3vectors)
+ [访问配置了 AWS Secrets Manager 密钥的矢量数据库的权限](#kb-permissions-secret)
+ [AWS 在数据摄取期间管理用于临时数据存储的 AWS KMS 密钥的权限](#kb-permissions-kms-ingestion)
+ [管理来自其他用户 AWS 账户的数据源的权限。 AWS](#kb-permissions-otherds)

## 信任关系
<a name="kb-permissions-trust"></a>

以下策略允许 Amazon Bedrock 担任此角色，并创建和管理知识库。下面所示为您可以使用的示例策略。您可以使用一个或多个全局条件上下文键来限制权限的范围。有关更多信息，请参阅 [AWS 全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。将 `aws:SourceAccount` 值设置为您的账户 ID。使用 `ArnEquals` 或 `ArnLike` 条件将范围限制为特定的知识库。

**注意**  
出于安全目的的最佳实践，请在创建知识库 IDs 后将其替换为特定的知识库。*\$1*

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "AWS:SourceArn": "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/*"
                }
            }
        }
    ]
}
```

------

## 访问 Amazon Bedrock 模型的权限
<a name="kb-permissions-access-models"></a>

附加以下策略，以向角色提供使用 Amazon Bedrock 模型嵌入源数据的权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:ListFoundationModels",
                "bedrock:ListCustomModels"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v1",
                "arn:aws:bedrock:us-east-1::foundation-model/cohere.embed-english-v3",
                "arn:aws:bedrock:us-east-1::foundation-model/cohere.embed-multilingual-v3"
            ]
        }
    ]
}
```

------

## 访问数据来源的权限
<a name="kb-permissions-access-ds"></a>

从以下数据来源中进行选择，为该角色附加必要的权限。

**Topics**
+ [访问 Amazon S3 中数据来源的权限](#kb-permissions-access-s3)
+ [访问您的 Confluence 数据来源的权限](#kb-permissions-access-confluence)
+ [访问你的 Microsoft SharePoint 数据源的权限](#kb-permissions-access-sharepoint)
+ [访问您的 Salesforce 数据来源的权限](#kb-permissions-access-salesforce)

### 访问 Amazon S3 中数据来源的权限
<a name="kb-permissions-access-s3"></a>

如果您的数据来源是 Amazon S3，请附加以下策略，以向角色提供访问您将作为数据来源进行连接的 S3 存储桶的权限。

如果您使用 AWS KMS 密钥加密了数据源，请按照中的步骤为角色授予解密密钥的权限。[解密您在 Amazon S3 中的数据源的 AWS KMS 密钥的权限](encryption-kb.md#encryption-kb-ds)

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3ListBucketStatement",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                }
            }
        },
        {
            "Sid": "S3GetObjectStatement",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

### 访问您的 Confluence 数据来源的权限
<a name="kb-permissions-access-confluence"></a>

**注意**  
Confluence 数据来源连接器目前为预览版，可能随时发生变化。

附加以下策略，以向角色提供访问 Confluence 的权限。

**注意**  
`secretsmanager:PutSecretValue`只有在使用带有刷新令牌的 OAuth 2.0 身份验证时才是必需的。  
Confluen OAuth2 ce .0 **访问**令牌的默认到期时间为 60 分钟。如果此令牌在您的数据来源同步（同步作业）时过期，Amazon Bedrock 将使用提供的**刷新**令牌来重新生成此令牌。此重新生成操作会刷新访问令牌和刷新令牌。为了将令牌从当前同步任务更新到下一个同步任务，Amazon Bedrock 需要您的密钥凭证的 write/put 权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/KeyId"
            ],
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "secretsmanager.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

### 访问你的 Microsoft SharePoint 数据源的权限
<a name="kb-permissions-access-sharepoint"></a>

**注意**  
SharePoint 数据源连接器处于预览版，可能会发生变化。

附加以下策略为该角色提供访问权限 SharePoint。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/KeyId"
            ],
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "secretsmanager.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

### 访问您的 Salesforce 数据来源的权限
<a name="kb-permissions-access-salesforce"></a>

**注意**  
Salesforce 数据来源连接器目前为预览版，可能随时发生变化。

附加以下策略，以向角色提供访问 Salesforce 的权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/KeyId"
            ],
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "secretsmanager.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

## 解密 Amazon S3 中加密数据源的 AWS KMS 密钥的权限
<a name="kb-permissions-kms-datasource"></a>

如果您使用 AWS KMS 密钥加密了 Amazon S3 中的数据源，请将以下策略附加到您的 Amazon Bedrock 知识库服务角色，以允许 Amazon Bedrock 解密您的密钥。将*\$1\$1Region\$1*和*\$1\$1AccountId\$1*替换为密钥所属的区域和账户 ID。*\$1\$1KeyId\$1*替换为 AWS KMS 密钥的 ID。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": [
            "arn:aws:kms:${Region}:${AccountId}:key/${KeyId}"
        ],
        "Condition": {
            "StringEquals": {
                "kms:ViaService": [
                    "s3.${Region}.amazonaws.com"
                ]
            }
        }
    }]
}
```

## 与您的文档交互的权限
<a name="kb-permissions-chatdoc"></a>

附加以下策略，以向角色提供使用 Amazon Bedrock 模型与文档交互的权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
			"Effect": "Allow",
			"Action": [
				"bedrock:RetrieveAndGenerate"
			],
			"Resource": "*"
		}
    ]
}
```

------

如果您只想授予用户与您的文档交互的权限（而不是在所有知识库中 `RetrieveAndGenerate`），请使用以下策略：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
			"Effect": "Allow",
			"Action": [
				"bedrock:RetrieveAndGenerate"
			],
			"Resource": "*"
		},
        {
			"Effect": "Deny",
			"Action": [
				"bedrock:Retrieve"
			],
			"Resource": "*"
		}
    ]
}
```

------

如果您既想与文档交谈，又想`RetrieveAndGenerate`在特定的知识库中使用*\$1\$1KnowledgeBaseArn\$1*，请提供并使用以下政策：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/$KnowledgeBaseId"
        }
    ]
}
```

------

## 多模式内容的权限
<a name="kb-permissions-multimodal"></a>

处理多模式内容（图像、音频、视频）时，根据您的处理方法，需要额外的权限。

### Nova 多模态嵌入权限
<a name="kb-permissions-multimodal-mme"></a>

使用 Nova 多模态嵌入时，请附加以下策略以提供异步模型调用的权限：

```
{
    "Sid": "BedrockInvokeModelStatement",
    "Effect": "Allow",
    "Action": ["bedrock:InvokeModel"],
    "Resource": [
        "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-*-multimodal-embeddings-*",
        "arn:aws:bedrock:us-east-1::async-invoke/*"
    ],
    "Condition": {
        "StringEquals": {
            "aws:ResourceAccount": ""
        }
    }
},
{
    "Sid": "BedrockGetAsyncInvokeStatement",
    "Effect": "Allow",
    "Action": ["bedrock:GetAsyncInvoke"],
    "Resource": ["arn:aws:bedrock:us-east-1::async-invoke/*"],
    "Condition": {
        "StringEquals": {
            "aws:ResourceAccount": ""
        }
    }
}
```

### 基岩数据自动化 (BDA) 权限
<a name="kb-permissions-multimodal-bda"></a>

使用 BDA 处理多式联运内容时，请附上以下政策：

```
{
    "Sid": "BDAInvokeStatement",
    "Effect": "Allow",
    "Action": ["bedrock:InvokeDataAutomationAsync"],
    "Resource": [
        "arn:aws:bedrock:us-east-1:aws:data-automation-project/public-rag-default",
        "arn:aws:bedrock:us-east-1::data-automation-profile/*"
    ]
},
{
    "Sid": "BDAGetStatement",
    "Effect": "Allow",
    "Action": ["bedrock:GetDataAutomationStatus"],
    "Resource": "arn:aws:bedrock:us-east-1::data-automation-invocation/*"
}
```

如果您将客户管理的 AWS KMS 密钥与 BDA 一起使用，请同时附上以下策略。用您的特定值替换*account-id**region*、和*key-id*：

```
{
    "Sid": "KmsPermissionStatementForBDA",
    "Effect": "Allow",
    "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt",
        "kms:DescribeKey",
        "kms:CreateGrant"
    ],
    "Resource": ["arn:aws:kms:region:account-id:key/key-id"],
    "Condition": {
        "StringEquals": {
            "aws:ResourceAccount": "account-id",
            "kms:ViaService": "bedrock.region.amazonaws.com"
        }
    }
}
```

## 访问 Amazon Kendra GenAI 索引的权限
<a name="kb-permissions-kendra"></a>

如果您为知识库创建了 Amazon Kendra GenAI 索引，请为 Amazon Bedrock 知识库服务角色附加以下策略，以允许其访问该索引。在策略中，将*\$1\$1Partition\$1*、*\$1\$1Region\$1**\$1\$1AccountId\$1*、和*\$1\$1IndexId\$1*替换为索引的值。您可以通过将多个索引添加到 `Resource` 列表来允许访问这些索引。要允许访问您的中的每个索引 AWS 账户，请替换*\$1\$1IndexId\$1*为通配符 (\$1)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kendra:Retrieve",
                "kendra:DescribeIndex"
            ],
            "Resource": "arn:aws:kendra:us-east-1:123456789012:index/${IndexId}" 
        }
    ]
}
```

------

## 在 Amazon OpenSearch Serverless 中访问您的矢量数据库的权限
<a name="kb-permissions-oss"></a>

如果您在 OpenSearch Serverless 中为知识库创建了矢量数据库，请将以下策略附加到您的 Amazon Bedrock 知识库服务角色以允许访问该馆藏。将*\$1\$1Region\$1*和*\$1\$1AccountId\$1*替换为数据库所属的区域和账户 ID。在中输入您的 Amazon OpenSearch 服务系列的 ID *\$1\$1CollectionId\$1*。您可以通过将多个集合添加到 `Resource` 列表中来允许访问这些集合。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "aoss:APIAccessAll"
            ],
            "Resource": [
                "arn:aws:aoss:us-east-1:123456789012:collection/${CollectionId}"
            ]
        }
    ]
}
```

------

## 在 OpenSearch 托管集群中访问矢量数据库的权限
<a name="kb-permissions-osm"></a>

如果您在 OpenSearch 托管集群中为知识库创建了矢量数据库，请将以下策略附加到您的 Amazon Bedrock 知识库服务角色以允许访问该域。将*<region>*和*<accountId>*替换为数据库所属的区域和账户 ID。您可以通过将这些域添加到 `Resource` 列表来允许访问这些域。有关配置用户权限的信息，请参阅 [在 Amazon Bedrock 知识库中使用 OpenSearch 托管集群所需的先决条件和权限权限配置概述](kb-osm-permissions-prereq.md)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",       
            "Action": [
                "es:ESHttpGet", 
                "es:ESHttpPost", 
                "es:ESHttpPut", 
                "es:ESHttpDelete" 
            ],
            "Resource": [
                "arn:aws:es:us-east-1:123456789012:domain/domainName/indexName"
            ]       
        }, 
        {
            "Effect": "Allow",
            "Action": [
                "es:DescribeDomain" 
            ],
            "Resource": [
                "arn:aws:es:us-east-1:123456789012:domain/domainName"
            ]       
        }
    ]
}
```

------

## 访问 Amazon Aurora 数据库集群的权限
<a name="kb-permissions-rds"></a>

**注意**  
Amazon Aurora 集群必须与 AWS 账户 为亚马逊 Bedrock 创建知识库的集群位于同一集群中。

如果您在 Amazon Aurora 中为知识库创建了数据库（DB）集群，请为 Amazon Bedrock 知识库服务角色附加策略，以允许其访问该 DB 集群并提供对它的读写权限。将*\$1\$1Region\$1*和*\$1\$1AccountId\$1*替换为数据库集群所属的区域和账户 ID。在中输入您的亚马逊 Aurora 数据库集群的 ID *\$1\$1DbClusterId\$1*。您可以通过将多个 DB 集群添加到 `Resource` 列表来允许访问这些集群。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RdsDescribeStatementID",
            "Effect": "Allow",
            "Action": [
                "rds:DescribeDBClusters"
            ],
            "Resource": [
                "arn:aws:rds:us-east-1:123456789012:cluster:${DbClusterId}"
            ]
        },
        {
            "Sid": "DataAPIStatementID",
            "Effect": "Allow",
            "Action": [
                "rds-data:BatchExecuteStatement",
                "rds-data:ExecuteStatement"
            ],
            "Resource": [
                "arn:aws:rds:us-east-1:123456789012:cluster:${DbClusterId}"
            ]
        }
    ]
}
```

------

## 在 Amazon Neptune Analytics 分析数据库引擎中访问向量数据库的权限
<a name="kb-permissions-neptune"></a>

如果您为知识库创建了 Amazon Neptune Analytics 分析数据库引擎图表，请为 Amazon Bedrock 知识库服务角色附加以下策略，以允许其访问该图表。在策略中，将*\$1\$1Region\$1*和*\$1\$1AccountId\$1*替换为数据库所属的区域和账户 ID。*\$1\$1GraphId\$1*替换为图形数据库的值。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "NeptuneAnalyticsAccess",
            "Effect": "Allow",
            "Action": [
                "neptune-graph:GetGraph",
                "neptune-graph:ReadDataViaQuery",
                "neptune-graph:WriteDataViaQuery",
                "neptune-graph:DeleteDataViaQuery"
            ],
            "Resource": [
                "arn:aws:neptune-graph:us-east-1:123456789012:graph/${GraphId}"
            ]
        }
    ]
}
```

------

## 在 Amazon S3 Vectors 中访问向量存储的权限
<a name="kb-permissions-s3vectors"></a>

如果您选择为知识库使用 Amazon S3 Vectors，请为 Amazon Bedrock 知识库服务角色附加以下策略，以允许其访问向量索引。

在策略中，将*\$1\$1Region\$1*和*\$1\$1AccountId\$1*替换为矢量索引所属的区域和账户 ID。*\$1\$1BucketName\$1*替换为 S3 矢量存储桶的*\$1\$1IndexName\$1*名称和矢量索引的名称。有关 Amazon S3 Vectors 的更多信息，请参阅[设置使用 Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-setting-up.html)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3VectorBucketReadAndWritePermission",
            "Effect": "Allow",
            "Action": [
                "s3vectors:PutVectors",
                "s3vectors:GetVectors",
                "s3vectors:DeleteVectors",
                "s3vectors:QueryVectors",
                "s3vectors:GetIndex"
            ],
            "Resource": "arn:aws:s3vectors:us-east-1:123456789012:bucket/${BucketName}/index/${IndexName}"
        }
    ]
}
```

------

## 访问配置了 AWS Secrets Manager 密钥的矢量数据库的权限
<a name="kb-permissions-secret"></a>

如果您的矢量数据库配置了 AWS Secrets Manager 密钥，请将以下策略附加到您的 Amazon Bedrock 知识库服务角色， AWS Secrets Manager 以允许对您的账户进行身份验证以访问数据库。将*\$1\$1Region\$1*和*\$1\$1AccountId\$1*替换为数据库所属的区域和账户 ID。*\$1\$1SecretId\$1*替换为您的密钥的 ID。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:${SecretId}"
            ]
        }
    ]
}
```

------

如果您使用密钥加密了您的密 AWS KMS 钥，请按照中的步骤为该角色授予解密密钥的权限。[解密包含知识库的矢量存储的 AWS Secrets Manager 密钥的权限](encryption-kb.md#encryption-kb-3p)

## AWS 在数据摄取期间管理用于临时数据存储的 AWS KMS 密钥的权限
<a name="kb-permissions-kms-ingestion"></a>

要允许在摄取数据源的过程中为临时数据存储创建 AWS KMS 密钥，请将以下策略附加到您的 Amazon Bedrock 知识库服务角色。将*\$1\$1Region\$1*、和 *\$1\$1AccountId\$1**\$1\$1KeyId\$1*，替换为相应的值。

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

****  

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

------

## 管理来自其他用户 AWS 账户的数据源的权限。 AWS
<a name="kb-permissions-otherds"></a>

要允许访问其他用户的 AWS 账户，您必须创建一个允许跨账户访问其他用户账户中的 Amazon S3 存储桶的角色。将*\$1\$1BucketName\$1*、和 *\$1\$1BucketOwnerAccountId\$1**\$1\$1BucketNameAndPrefix\$1*，替换为相应的值。

**知识库角色所需的权限**

知识库创建 `createKnowledgeBase` 期间提供的知识库角色需要以下 Amazon S3 权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3ListBucketStatement",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                }
            }
        },
        {
            "Sid": "S3GetObjectStatement",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

如果使用 AWS KMS 密钥对 Amazon S3 存储桶进行加密，则还需要将以下内容添加到知识库角色中。用相应的值替换和。*\$1\$1BucketOwnerAccountId\$1* *\$1\$1Region\$1*

```
{
        "Sid": "KmsDecryptStatement",
        "Effect": "Allow",
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": [
            "arn:aws:kms:${Region}:${BucketOwnerAccountId}:key/${KeyId}"
        ],
        "Condition": {
        "StringEquals": {
            "kms:ViaService": [
                "s3.${Region}.amazonaws.com"
            ]
        }
        }
    }
```

**跨账户 Amazon S3 存储桶策略所需的权限**

其他账户中的存储桶需要以下 Amazon S3 存储桶策略。将*\$1\$1KbRoleArn\$1*、和 *\$1\$1BucketName\$1**\$1\$1BucketNameAndPrefix\$1*，替换为相应的值。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "ListBucket",
         "Effect": "Allow",
         "Principal": {
            "AWS": "123456789012"
         },
         "Action": [
            "s3:ListBucket"
         ],
         "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket"
         ]
      },
      {
         "Sid": "GetObject",
         "Effect": "Allow",
         "Principal": {
            "AWS": "123456789012"
         },
         "Action": [
            "s3:GetObject"
         ],
         "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
      }
   ]
}
```

------

**跨账户 AWS KMS 密钥策略所需的权限**

如果跨账户 Amazon S3 存储桶使用该账户中的 AWS KMS 密钥进行加密，则 AWS KMS 密钥策略需要以下策略。用相应的值替换和。*\$1\$1KbRoleArn\$1* *\$1\$1KmsKeyArn\$1*

```
{
    "Sid": "Example policy",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "${KbRoleArn}"
        ]
    },
    "Action": [
        "kms:Decrypt"
    ],
    "Resource": "${KmsKeyArn}"
}
```

# 在 Amazon Bedrock 中为 Amazon Bedrock 流创建服务角色
<a name="flows-permissions"></a>

要在 Amazon Bedrock 中创建和管理流，您必须使用具有本页所列必要权限的服务角色。您可以使用 Amazon Bedrock 在控制台中自动为您创建的服务角色，也可以使用您自己自定义的服务角色。

**注意**  
如果您使用 Amazon Bedrock 在控制台中自动为您创建的服务角色，那么如果您向工作流中添加节点并保存工作流，它就会动态附加权限。但是，如果您删除节点，相关权限不会被删除，因此您必须删除不再需要的权限。要管理为您创建的角色的权限，请按照《IAM 用户指南》中[修改角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)中的步骤操作。

要为 Amazon Bedrock Flows 创建自定义服务角色，请按照创建角色中的步骤[创建 IAM 角色以向AWS服务委派权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。然后将以下权限附加到此角色。
+ 信任策略
+ 以下基于身份的权限：
  + 对流将使用的 Amazon Bedrock 基础模型的访问权限。将流中使用的每个模型添加到 `Resource` 列表。
  + 如果您使用预置吞吐量调用模型，则需要拥有访问和调用预置模型的权限。将流中使用的每个模型添加到 `Resource` 列表。
  + 如果您调用自定义模型，则需要拥有访问和调用自定义模型的权限。将流中使用的每个模型添加到 `Resource` 列表。
  + 基于您添加到工作流中的节点的权限：
    + 如果您包含使用提示管理器中的提示的提示节点，则需要拥有访问提示的权限。将流中使用的每个提示添加到 `Resource` 列表。
    + 如果您包含知识库节点，则需要拥有查询知识库的权限。将流中查询的每个知识库添加到 `Resource` 列表。
    + 如果您包含代理节点，则需要拥有调用代理别名的权限。将流中调用的每个代理添加到 `Resource` 列表。
    + 如果您包含 S3 检索节点，则需要拥有访问要从中检索数据的 Amazon S3 存储桶的权限。将要从中检索数据的每个存储桶添加到 `Resource` 列表。
    + 如果您包含 S3 存储节点，则需要拥有对存储输出数据的 Amazon S3 存储桶的写入权限。将要写入数据的每个存储桶添加到 `Resource` 列表。
    + 如果您为知识库节点或提示节点包含护栏，则需要在流中应用护栏的权限。将流中使用的每个护栏添加到 `Resource` 列表。
    + 如果您添加了 Lambda 节点，则需要调用 Lambda 函数的权限。将需要调用的每个 Lambda 函数添加到 `Resource` 列表。
    + 如果您添加了 Amazon Lex 节点，则需要使用 Amazon Lex 机器人的权限。将需要使用的每个机器人别名添加到 `Resource` 列表。
    + 如果您加密了在流中调用的任何资源，则需要拥有解密密钥的权限。将每个密钥添加到 `Resource` 列表中。
+ 如果您加密了流，则还需要将密钥策略附加到用于加密流的 KMS 密钥。

**注意**  
最近实施了以下变更：  
以前，AWS LambdaAmazon Lex 资源是使用 Amazon Bedrock 服务主体调用的。对于在 2024-11-22 之后创建的流程，这种行为正在发生变化，Amazon Bedrock Flows 服务角色将用于调用和 Amazon AWS Lambda Lex 资源。如果您在 2024 年 11 月 22 日之前创建了任何使用这两种资源的流程，则应使用和 Amazon AWS Lambda Lex 权限更新您的 Amazon Bedrock Flows 服务角色。
以前，提示管理器资源是使用 `bedrock:GetPrompt` 操作呈现的。对于在 2024 年 11 月 22 日之后创建的流，此行为将发生变化，届时将使用 `bedrock:RenderPrompt` 操作来呈现提示资源。如果您在 2024 年 11 月 22 日之前创建了使用提示资源的流，则应使用 `bedrock:RenderPrompt` 权限更新您的 Amazon Bedrock 流服务角色。
如果您使用了 Amazon Bedrock 在控制台中自动为您创建的服务角色，当您保存流时，Amazon Bedrock 会动态附加连接的权限。

**Topics**
+ [信任关系](#flows-permissions-trust)
+ [工作流服务角色的基于身份的权限。](#flows-permissions-identity)

## 信任关系
<a name="flows-permissions-trust"></a>

将以下信任策略附加到流执行角色，以允许 Amazon Bedrock 担任此角色并管理流。根据需要*values*更换。该策略在 `Condition` 字段中包含了可选的条件键（参阅 [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)和 [AWS 全局条件上下文键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)），建议您将其作为最佳安全实践使用。

**注意**  
作为最佳实践，请在创建流程 ID 后将其替换为流程 ID。*\$1*

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "FlowsTrustBedrock",
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "AWS:SourceArn": "arn:aws:bedrock:us-east-1:123456789012:flow/*"
                }
            }
        }
    ]
}
```

------

## 工作流服务角色的基于身份的权限。
<a name="flows-permissions-identity"></a>

附加以下策略以为服务角色提供权限，并*values*根据需要进行替换。策略包含以下语句。如果某个语句不适用于您的应用场景，可以省略。该策略在 `Condition` 字段中包含了可选的条件键（参阅 [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)和 [AWS 全局条件上下文键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)），建议您将其作为最佳安全实践使用。
+ 对流将使用的 Amazon Bedrock 基础模型的访问权限。将流中使用的每个模型添加到 `Resource` 列表。
+ 如果您使用预置吞吐量调用模型，则需要拥有访问和调用预置模型的权限。将流中使用的每个模型添加到 `Resource` 列表。
+ 如果您调用自定义模型，则需要拥有访问和调用自定义模型的权限。将流中使用的每个模型添加到 `Resource` 列表。
+ 基于您添加到工作流中的节点的权限：
  + 如果您包含使用提示管理器中的提示的提示节点，则需要拥有访问提示的权限。将流中使用的每个提示添加到 `Resource` 列表。
  + 如果您包含知识库节点，则需要拥有查询知识库的权限。将流中查询的每个知识库添加到 `Resource` 列表。
  + 如果您包含代理节点，则需要拥有调用代理别名的权限。将流中调用的每个代理添加到 `Resource` 列表。
  + 如果您包含 S3 检索节点，则需要拥有访问要从中检索数据的 Amazon S3 存储桶的权限。将要从中检索数据的每个存储桶添加到 `Resource` 列表。
  + 如果您包含 S3 存储节点，则需要拥有对存储输出数据的 Amazon S3 存储桶的写入权限。将要写入数据的每个存储桶添加到 `Resource` 列表。
  + 如果您为知识库节点或提示节点包含护栏，则需要在流中应用护栏的权限。将流中使用的每个护栏添加到 `Resource` 列表。
  + 如果您添加了 Lambda 节点，则需要调用 Lambda 函数的权限。将需要调用的每个 Lambda 函数添加到 `Resource` 列表。
  + 如果您添加了 Amazon Lex 节点，则需要使用 Amazon Lex 机器人的权限。将需要使用的每个机器人别名添加到 `Resource` 列表。
  + 如果您加密了在流中调用的任何资源，则需要拥有解密密钥的权限。将每个密钥添加到 `Resource` 列表中。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "InvokeModel",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/ModelId"
            ]
        },
        {
            "Sid": "InvokeProvisionedThroughput",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:GetProvisionedModelThroughput"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/ModelId"
            ]
        },
        {
            "Sid": "InvokeCustomModel",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:GetCustomModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/ModelId"
            ]
        },
        {
            "Sid": "UsePromptFromPromptManagement",
            "Effect": "Allow",
            "Action": [
                "bedrock:RenderPrompt"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:prompt/PromptId"
            ]
        },
        {
            "Sid": "QueryKnowledgeBase",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "InvokeAgent",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeAgent"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:agent-alias/AgentId/AgentAliasId"
            ]
        },
        {
            "Sid": "AccessS3Bucket",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                }
            }
        },
        {
            "Sid": "WriteToS3Bucket",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                }
            }
        },
        {
            "Sid": "GuardrailPermissions",
            "Effect": "Allow",
            "Action": [
                "bedrock:ApplyGuardrail"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:guardrail/GuardrailId"
            ]
        },
        {
            "Sid": "LambdaPermissions",
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:us-east-1:123456789012:function:FunctionId"
            ]
        },
        {
            "Sid": "AmazonLexPermissions",
            "Effect": "Allow",
            "Action": [
                "lex:RecognizeUtterance"
            ],
            "Resource": [ 
                "arn:aws:lex:us-east-1:123456789012:bot-alias/BotId/BotAliasId"
            ]
        },
        {
            "Sid": "KMSPermissions",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/KeyId"
            ],
             "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

# 模型评估作业的服务角色要求
<a name="model-evaluation-security-service-roles"></a>

要创建模型评估作业，必须指定服务角色。服务角色是由一项服务担任、代表您执行操作的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息，请参阅《IAM 用户指南》**中的[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

所需的 IAM 操作和资源取决于您将创建的模型评测作业的类型。参阅以下各个部分，详细了解所需的 Amazon Bedrock、Amazon SageMaker AI 以及 Amazon S3 IAM 操作、服务主体和资源。您可以选择使用 AWS Key Management Service 对数据进行加密。

**Topics**
+ [自动模型评估作业的服务角色要求](automatic-service-roles.md)
+ [基于人工的模型评测作业的服务角色要求](model-eval-service-roles.md)
+ [创建使用评判模型的模型评测作业所需的服务角色权限](judge-service-roles.md)
+ [知识库评测作业的服务角色要求](rag-eval-service-roles.md)

# 自动模型评估作业的服务角色要求
<a name="automatic-service-roles"></a>

要创建自动模型评估作业，必须指定服务角色。您附加的策略将授予 Amazon Bedrock 访问您账户中资源的权限，并允许 Amazon Bedrock 代表您调用所选模型。

还必须附加一项信任策略，将 Amazon Bedrock 定义为使用 `bedrock.amazonaws.com` 的服务主体。以下各个策略示例将根据自动模型评估作业中调用的各项服务，为您展示所需的确切 IAM 操作。

要创建自定义服务角色，请参阅**《IAM 用户指南》中的[使用自定义信任策略创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)。

**必要的 Amazon S3 IAM 操作**  
以下策略示例将授予对 S3 存储桶（用于保存模型评估结果）的访问权限，以及对您指定的任何自定义提示数据集的访问权限（可选）。

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
    {
        "Sid": "AllowAccessToCustomDatasets",
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:ListBucket"
        ],
        "Resource": [
            "arn:aws:s3:::my_customdataset1_bucket",
            "arn:aws:s3:::my_customdataset1_bucket/myfolder",
            "arn:aws:s3:::my_customdataset2_bucket",
            "arn:aws:s3:::my_customdataset2_bucket/myfolder"
        ]
    },
    {
        "Sid": "AllowAccessToOutputBucket",
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:ListBucket",
            "s3:PutObject",
            "s3:GetBucketLocation",
            "s3:AbortMultipartUpload",
            "s3:ListBucketMultipartUploads"
        ],
        "Resource": [
            "arn:aws:s3:::my_output_bucket",
            "arn:aws:s3:::my_output_bucket/myfolder"
        ]
    }
]
}
```

------

**必要的 Amazon Bedrock IAM 操作**  
您还需创建一个策略，允许 Amazon Bedrock 调用您计划在自动模型评估作业中指定的模型。要了解有关管理 Amazon Bedrock 模型访问权限的更多信息，请参阅[访问 Amazon Bedrock 基础模型](model-access.md)。在策略的 `"Resource"` 部分，您必须至少指定一个您也可以访问的模型的 ARN。要使用客户自主管理型 KMS 密钥加密的模型，您必须在 IAM 服务角色策略中添加所需的 IAM 操作和资源。您还必须将服务角色添加到AWS KMS密钥策略中。

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

****  

```
{
		    "Version":"2012-10-17",		 	 	 
            "Statement": [
        {
            "Sid": "AllowAccessToBedrockResources",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:InvokeModelWithResponseStream",
                "bedrock:CreateModelInvocationJob",
                "bedrock:StopModelInvocationJob",
                "bedrock:GetProvisionedModelThroughput",
                "bedrock:GetInferenceProfile", 
                "bedrock:ListInferenceProfiles",
                "bedrock:GetImportedModel",
                "bedrock:GetPromptRouter",
                "sagemaker:InvokeEndpoint"
            ],
            "Resource": [
                "arn:aws:bedrock:*::foundation-model/*",
                "arn:aws:bedrock:*:111122223333:inference-profile/*",
                "arn:aws:bedrock:*:111122223333:provisioned-model/*",
                "arn:aws:bedrock:*:111122223333:imported-model/*",
                "arn:aws:bedrock:*:111122223333:application-inference-profile/*",
                "arn:aws:bedrock:*:111122223333:default-prompt-router/*",
                "arn:aws:sagemaker:*:111122223333:endpoint/*",
                "arn:aws:bedrock:*:111122223333:marketplace/model-endpoint/all-access"
            ]
        }
    ]
}
```

------

**服务主体要求**  
还必须指定将 Amazon Bedrock 定义为服务主体的信任策略，以允许 Amazon Bedrock 担任该角色。需要使用通配符 (`*`) 模型评估任务 ARN，这样 Amazon Bedrock 才能在您的账户中创建模型评估任务。AWS

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [{
    "Sid": "AllowBedrockToAssumeRole",
    "Effect": "Allow",
    "Principal": {
        "Service": "bedrock.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "111122223333"
        },
        "ArnEquals": {
            "aws:SourceArn": "arn:aws:bedrock:us-east-1:111122223333:evaluation-job/*"
        }
    }
}]
}
```

------

# 基于人工的模型评测作业的服务角色要求
<a name="model-eval-service-roles"></a>

要创建使用评估人员的模型评估作业，必须指定两个服务角色。

以下列表总结了必须在 Amazon Bedrock 控制台中指定的每个必要服务角色的 IAM 策略要求。

**Amazon Bedrock 服务角色的 IAM 策略要求摘要**
+ 必须添加将 Amazon Bedrock 定义为服务主体的信任策略。
+ 必须允许 Amazon Bedrock 代表您调用所选模型。
+ 必须允许 Amazon Bedrock 访问保存提示数据集的 S3 存储桶和将要保存结果的 S3 存储桶。
+ 必须允许 Amazon Bedrock 在您的账户中创建所需的人工循环资源。
+ （推荐）使用 `Condition` *块*来指定可以访问的账户。
+ （可选）如果您已加密提示数据集存储桶或将要保存结果的 Amazon S3 存储桶，则必须允许 Amazon Bedrock 解密您的 KMS 密钥。

**亚马逊 A SageMaker I 服务角色的 IAM 政策要求摘要**
+ 您必须附上将 A SageMaker I 定义为服务主体的信任策略。
+ 您必须允许 SageMaker AI 访问保存提示数据集的 S3 存储桶和要保存结果的 S3 存储桶。
+ （可选）如果您已加密提示数据集存储桶或想要获得结果的位置，则必须允许 SageMaker AI 使用您的客户托管密钥。

要创建自定义服务角色，请参阅**《IAM 用户指南》中的[使用自定义信任策略创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)。

**必要的 Amazon S3 IAM 操作**  
以下策略示例将授予对保存模型评估结果的 S3 存储桶的访问权限，以及您指定的自定义提示数据集的访问权限。您需要将此策略附加到 SageMaker AI 服务角色和 Amazon Bedrock 服务角色。

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
    {
        "Sid": "AllowAccessToCustomDatasets",
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:ListBucket"
        ],
        "Resource": [
            "arn:aws:s3:::custom-prompt-dataset"
        ]
    },
    {
        "Sid": "AllowAccessToOutputBucket",
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:ListBucket",
            "s3:PutObject",
            "s3:GetBucketLocation",
            "s3:AbortMultipartUpload",
            "s3:ListBucketMultipartUploads"
        ],
        "Resource": [
            "arn:aws:s3:::model_evaluation_job_output"
        ]
    }
]
}
```

------

**必要的 Amazon Bedrock IAM 操作**  
要允许 Amazon Bedrock 调用您计划在自动模型评测作业中指定的模型，请将以下策略附加到 Amazon Bedrock 服务角色。在策略的 `"Resource"` 部分，您必须至少指定一个您也可以访问的模型的 ARN。要使用通过客户自主管理型 KMS 密钥加密的模型，您必须向 IAM 服务角色添加所需的 IAM 操作和资源。您还必须添加任何必需的 AWS KMS 关键策略元素。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccessToBedrockResources",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:InvokeModelWithResponseStream",
                "bedrock:CreateModelInvocationJob",
                "bedrock:StopModelInvocationJob",
                "bedrock:GetProvisionedModelThroughput",
                "bedrock:GetInferenceProfile", 
                "bedrock:ListInferenceProfiles",
                "bedrock:GetImportedModel",
                "bedrock:GetPromptRouter",
                "sagemaker:InvokeEndpoint"
            ],
            "Resource": [
                "arn:aws:bedrock:*::foundation-model/*",
                "arn:aws:bedrock:*:111122223333:inference-profile/*",
                "arn:aws:bedrock:*:111122223333:provisioned-model/*",
                "arn:aws:bedrock:*:111122223333:imported-model/*",
                "arn:aws:bedrock:*:111122223333:application-inference-profile/*",
                "arn:aws:bedrock:*:111122223333:default-prompt-router/*",
                "arn:aws:sagemaker:*:111122223333:endpoint/*",
                "arn:aws:bedrock:*:111122223333:marketplace/model-endpoint/all-access"
            ]
        }
    ]
}
```

------

**必要的 Amazon Augmented AI IAM 操作**  
您还必须创建一个策略，以便允许 Amazon Bedrock 创建与基于人工的模型评测作业相关的资源。由于 Amazon Bedrock 创建了启动模型评估作业所需的资源，因此您必须使用 `"Resource": "*"`。必须将此策略附加到 Amazon Bedrock 服务角色中。

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
    {
        "Sid": "ManageHumanLoops",
        "Effect": "Allow",
        "Action": [
            "sagemaker:StartHumanLoop",
            "sagemaker:DescribeFlowDefinition",
            "sagemaker:DescribeHumanLoop",
            "sagemaker:StopHumanLoop",
            "sagemaker:DeleteHumanLoop"
        ],
        "Resource": "*"
    }
]
}
```

------

**服务主体要求 (Amazon Bedrock)**  
还必须指定将 Amazon Bedrock 定义为服务主体的信任策略，以允许 Amazon Bedrock 担任该角色。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowBedrockToAssumeRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:bedrock:us-east-1:111122223333:evaluation-job/*"
                }
            }
        }
    ]
}
```

------

**服务主体要求 (SageMaker AI)**  
还必须指定将 Amazon Bedrock 定义为服务主体的信任策略，这允许 SageMaker AI 扮演这个角色。

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
{
  "Sid": "AllowSageMakerToAssumeRole",
  "Effect": "Allow",
  "Principal": {
    "Service": "sagemaker.amazonaws.com"
  },
  "Action": "sts:AssumeRole"
}
]
}
```

------

# 创建使用评判模型的模型评测作业所需的服务角色权限
<a name="judge-service-roles"></a>

要创建使用 LLM 作为评判工具的模型评测作业，必须指定服务角色。您附加的策略将授予 Amazon Bedrock 访问您账户中资源的权限，并允许 Amazon Bedrock 代表您调用所选模型。

信任策略将 Amazon Bedrock 定义为使用 `bedrock.amazonaws.com` 的服务主体。以下各个策略示例将根据自动模型评测作业中调用的各项服务，为您展示所需的确切 IAM 操作。

要按照如下所述创建自定义服务角色，请参阅《IAM 用户指南》**中的[使用自定义信任策略创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)。

## 必要的 Amazon Bedrock IAM 操作
<a name="judge-service-roles-br"></a>

您需要创建一个策略，允许 Amazon Bedrock 调用您计划在模型评测作业中指定的模型。要了解有关管理 Amazon Bedrock 模型访问权限的更多信息，请参阅[访问 Amazon Bedrock 基础模型](model-access.md)。在策略的 `"Resource"` 部分，您必须至少指定一个您也可以访问的模型的 ARN。要使用客户自主管理型 KMS 密钥加密的模型，您必须在 IAM 服务角色策略中添加所需的 IAM 操作和资源。您还必须将服务角色添加到AWS KMS密钥策略中。

服务角色必须包括对至少一个支持的评测器模型的访问权限。有关当前支持的评测器模型列表，请参阅[支持的模型](evaluation-judge.md#evaluation-judge-supported)。

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "BedrockModelInvoke",
			"Effect": "Allow",
			"Action": [
				"bedrock:InvokeModel",
				"bedrock:CreateModelInvocationJob",
				"bedrock:StopModelInvocationJob"
			],
			"Resource": [
				"arn:aws:bedrock:us-east-1::foundation-model/*",
				"arn:aws:bedrock:us-east-1:111122223333:inference-profile/*",
				"arn:aws:bedrock:us-east-1:111122223333:provisioned-model/*",
				"arn:aws:bedrock:us-east-1:111122223333:imported-model/*"
			]
		}
	]
}
```

------

## 必要的 Amazon S3 IAM 操作和资源
<a name="judge-service-roles-s3"></a>

服务角色策略必须包括对您希望保存模型评测作业输出的 Amazon S3 存储桶的访问权限，以及对您在 `CreateEvaluationJob` 请求中指定的或通过 Amazon Bedrock 控制台指定的提示数据集的访问权限。

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "FetchAndUpdateOutputBucket",
			"Effect": "Allow",
			"Action": [
				"s3:GetObject",
				"s3:ListBucket",
				"s3:PutObject",
				"s3:GetBucketLocation",
				"s3:AbortMultipartUpload",
				"s3:ListBucketMultipartUploads"
			],
			"Resource": [
				"arn:aws:s3:::my_customdataset1_bucket",
	            "arn:aws:s3:::my_customdataset1_bucket/myfolder",
	            "arn:aws:s3:::my_customdataset2_bucket",
				"arn:aws:s3:::my_customdataset2_bucket/myfolder"
			]
		}
	]
}
```

------

# 知识库评测作业的服务角色要求
<a name="rag-eval-service-roles"></a>

要创建知识库评测作业，必须指定服务角色。您附加到角色的策略将授予 Amazon Bedrock 访问您账户中资源的权限，并允许 Amazon Bedrock 执行以下操作：
+ 使用 `RetrieveAndGenerate` API 操作调用您为生成输出选择的模型，并评估知识库输出。
+ 在您的知识库实例上，调用 Amazon Bedrock 知识库 `Retrieve` 和 `RetrieveAndGenerate` API 操作。

要创建自定义服务角色，请参阅《IAM 用户指南》**中的[使用自定义信任策略创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)。

**访问 Amazon S3 所需的 IAM 操作**  
以下示例策略将授予对满足以下两种情况的 S3 存储桶的访问权限：
+ 您保存知识库评测结果。
+ Amazon Bedrock 读取您的输入数据集。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Sid": "AllowAccessToCustomDatasets",
            "Effect": "Allow",
            "Action":
            [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource":
            [
                "arn:aws:s3:::my_customdataset1_bucket",
                "arn:aws:s3:::my_customdataset1_bucket/myfolder",
                "arn:aws:s3:::my_customdataset2_bucket",
                "arn:aws:s3:::my_customdataset2_bucket/myfolder"
            ]
        },
        {
            "Sid": "AllowAccessToOutputBucket",
            "Effect": "Allow",
            "Action":
            [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:GetBucketLocation",
                "s3:AbortMultipartUpload",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource":
            [
                "arn:aws:s3:::my_output_bucket",
                "arn:aws:s3:::my_output_bucket/myfolder"
            ]
        }
    ]
}
```

------

**必要的 Amazon Bedrock IAM 操作**  
您还需创建策略来允许 Amazon Bedrock 执行以下操作：

1. 调用您计划为以下任务指定的模型：
   + 使用 `RetrieveAndGenerate` API 操作生成结果。
   + 评估结果。

   对于策略中的 `Resource` 密钥，您必须指定至少一个自己可以访问的模型的 ARN。要使用通过客户自主管理型 KMS 密钥加密的模型，您必须向 IAM 服务角色策略添加所需的 IAM 操作和资源。您还必须将服务角色添加到 AWS KMS 密钥策略中。

1. 调用 `Retrieve` 和 `RetrieveAndGenerate` API 操作。请注意，在控制台的自动角色创建中，我们会同时授予对 `Retrieve` 和 `RetrieveAndGenerate` API 操作的权限，无论您选择为该作业评估什么操作。这样做可以提高角色的灵活性和可重用性。但是，为了增强安全性，自动创建的角色会与单个知识库实例绑定。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSpecificModels",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:InvokeModelWithResponseStream",
                "bedrock:CreateModelInvocationJob",
                "bedrock:StopModelInvocationJob",
                "bedrock:GetProvisionedModelThroughput",
                "bedrock:GetInferenceProfile",
                "bedrock:GetImportedModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:inference-profile/*",
                "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:imported-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/*"
            ]
        },
        {
            "Sid": "AllowKnowledgeBaseAPis",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve",
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/knowledge-base-id"
            ]
        }
    ]
}
```

------

**服务主体要求**  
还必须指定将 Amazon Bedrock 定义为服务主体的信任策略，此策略允许 Amazon Bedrock 代入该角色。需要使用通配符 (`*`) 模型评估任务 ARN，这样 Amazon Bedrock 才能在您的账户中创建模型评估任务。 AWS 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowBedrockToAssumeRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:bedrock:us-east-1:123456789012:evaluation-job/*"
                }
            }
        }
    ]
}
```

------

# 配置对 Amazon S3 存储桶的访问权限
<a name="s3-bucket-access"></a>

有多个 Amazon Bedrock 功能需要访问存储在 Amazon S3 存储桶中的数据。要访问该数据，您必须配置以下权限：


****  

| 使用案例 | Permissions | 
| --- | --- | 
| 从 S3 存储桶中检索数据的权限 | s3：GetObjects3：ListBucket | 
| 将数据写入 S3 存储桶的权限 | s3：PutObject | 
| 对加密 S3 存储桶的 KMS 密钥进行解密的权限 | kms:Decryptkms: DescribeKey | 

需要将上述权限附加到哪些身份或资源取决于以下因素：
+ Amazon Bedrock 中的多个功能使用了[服务角色](security-iam-sr.md)。如果某功能使用了一个服务角色，您必须配置权限，使该服务角色（而非用户的 IAM 身份）能够访问 S3 数据。如果您使用 AWS 管理控制台，某些 Amazon Bedrock 功能可以自动为您创建服务角色，并将所需的[基于身份的权限](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies.html#policies_id-based)附加到该服务角色。
+ Amazon Bedrock 中的某些功能允许一个身份访问另一个账户中的 S3 存储桶。如果需要从其他账户访问 S3 数据，则存储桶拥有者必须在附加到 S3 存储桶的 [S3 存储桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)中添加上述[基于资源的权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based)。

以下内容介绍如何确定访问 S3 数据所必需的权限需要附加到什么位置：
+ IAM 身份权限
  + 如果您可以在控制台中自动创建服务角色，系统将为该服务角色配置权限，因此您无需自行配置。
  + 如果您更喜欢使用自定义服务角色，或者需要访问权限的身份不是服务角色，请参阅[将权限附加到 IAM 身份以允许其访问 Amazon S3 存储桶](#s3-bucket-access-identity)，了解如何创建具有适当权限的基于身份的策略。
+ 基于资源的权限
  + 如果该身份需要访问同一账户中的 S3 数据，则无需将 S3 存储桶策略附加到包含该数据的存储桶。
  + 如果该身份需要访问其他账户中的 S3 数据，请参阅[将存储桶策略附加到 Amazon S3 存储桶以允许其他账户访问它](#s3-bucket-access-cross-account)，了解如何创建具有适当权限的 S3 存储桶策略。
**重要**  
在中自动创建服务角色会为该角色AWS 管理控制台附加适当的基于身份的权限，但是如果需要访问 S3 存储桶策略的身份不同，则仍必须配置 S3 存储桶策略。AWS 账户

有关更多信息，请参阅以下链接：
+ 要详细了解如何控制对 Amazon S3 中数据的访问权限，请参阅 [Amazon S3 中的访问控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-management.html)。
+ 要了解有关 Amazon S3 权限的更多信息，请参阅 [Amazon S3 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-actions-as-permissions)。
+ 要了解有关AWS KMS权限的更多信息，请参阅[由定义的操作AWS Key Management Service](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html#awskeymanagementservice-actions-as-permissions)。

继续阅读与您的使用案例相关的主题：

**Topics**
+ [将权限附加到 IAM 身份以允许其访问 Amazon S3 存储桶](#s3-bucket-access-identity)
+ [将存储桶策略附加到 Amazon S3 存储桶以允许其他账户访问它](#s3-bucket-access-cross-account)
+ [（高级安全选项）在语句中包含条件以实现更精细的访问](#s3-bucket-access-conditions)

## 将权限附加到 IAM 身份以允许其访问 Amazon S3 存储桶
<a name="s3-bucket-access-identity"></a>

此主题提供了附加到 IAM 身份的策略的模板。该策略包含以下语句，这些语句定义的权限用于向 IAM 身份授予对 S3 存储桶的访问权限：

1. 从 S3 存储桶中检索数据的权限。此语句还包含一个使用 `s3:prefix` [条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys)的条件，用来限制对存储桶中特定文件夹的访问。有关此条件的更多信息，请参阅[示例 2：获取存储桶中具有特定前缀的对象列表](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html#condition-key-bucket-ops-2)中的**用户策略**部分。

1. （如果您需要向 S3 位置写入数据）向 S3 存储桶写入数据的权限。此语句还包括一个使用`aws:ResourceAccount`[条件键](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount)来限制对特定用户发送的请求的访问的条件AWS 账户。

1. （如果使用 KMS 密钥加密了 S3 存储桶）描述和解密加密 S3 存储桶的 KMS 密钥的权限。
**注意**  
如果您的 S3 存储桶启用了版本控制，则您使用此功能上传的每个对象版本可能都具有自己的加密密钥。您负责跟踪哪个加密密钥用于哪个对象版本。

添加、修改和删除以下策略中的语句、资源和条件，并*\$1\$1values\$1*根据需要进行替换：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadS3Bucket",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::${S3Bucket}",
                "arn:aws:s3:::${S3Bucket}/*"
            ]
        },
        {
            "Sid": "WriteToS3Bucket",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::${S3Bucket}",
                "arn:aws:s3:::${S3Bucket}/*"
            ]
        },
        {
            "Sid": "DecryptKMSKey",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/${KMSKeyId}"
        }
    ]
}
```

------

根据您的使用案例修改策略后，将其附加到需要访问 S3 存储桶的服务角色（或 IAM 身份）。要了解如何将权限附加到 IAM 策略，请参阅[添加和删除 IAM 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

## 将存储桶策略附加到 Amazon S3 存储桶以允许其他账户访问它
<a name="s3-bucket-access-cross-account"></a>

本主题提供了一个模板，该模板对应的基于资源的策略可附加到 S3 存储桶，来允许 IAM 身份访问存储桶中的数据。策略包含以下语句，这些语句定义了该身份访问存储桶的权限：

1. 从 S3 存储桶中检索数据的权限。

1. （如果您需要向 S3 位置写入数据）向 S3 存储桶写入数据的权限。

1. （如果使用 KMS 密钥加密了 S3 存储桶）描述和解密加密 S3 存储桶的 KMS 密钥的权限。
**注意**  
如果您的 S3 存储桶启用了版本控制，则您使用此功能上传的每个对象版本可能都具有自己的加密密钥。您负责跟踪哪个加密密钥用于哪个对象版本。

这些权限与[将权限附加到 IAM 身份以允许其访问 Amazon S3 存储桶](#s3-bucket-access-identity)中所述的基于身份的权限类似。但是，每个语句还要求您在 `Principal` 字段中指定要为其授予资源权限的身份。在 `Principal` 字段中指定身份（对于 Amazon Bedrock 中的大多数功能，这都是服务角色）。添加、修改和删除以下策略中的语句、资源和条件，并*\$1\$1values\$1*根据需要进行替换：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadS3Bucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ServiceRole"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::${S3Bucket}",
                "arn:aws:s3:::${S3Bucket}/*"
            ]
        },
        {
            "Sid": "WriteToS3Bucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ServiceRole"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::${S3Bucket}",
                "arn:aws:s3:::${S3Bucket}/*"
            ]
        },
        {
            "Sid": "DecryptKMSKey",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ServiceRole"
            },
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/${KMSKeyId}"
        }
    ]
}
```

------

根据您的使用案例修改策略后，将其附加到 S3 存储桶。要了解如何将策略附加到 S3 存储桶，请参阅[使用 Amazon S3 控制台添加存储桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)。

## （高级安全选项）在语句中包含条件以实现更精细的访问
<a name="s3-bucket-access-conditions"></a>

为了更好地控制可以访问您的资源的身份，您可以在策略语句中包含条件。本主题中的策略提供使用以下条件键的示例：
+ `s3:prefix`：S3 条件键，用于限制对 S3 存储桶中特定文件夹的访问。有关此条件键的更多信息，请参阅[示例 2：获取存储桶中具有特定前缀的对象列表](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html#condition-key-bucket-ops-2)中的**用户策略**部分。
+ `aws:ResourceAccount`— 一个全局条件密钥，用于限制对来自特定AWS 账户用户的请求的访问。

以下策略限制对 S3 存储桶中*my-folder*文件夹的读取权限，并*amzn-s3-demo-bucket*将 S3 存储桶的写入权限限制为来自的请求，ID AWS 账户 为：*amzn-s3-demo-destination-bucket**111122223333*

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadS3Bucket",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ],
            "Condition" : {
                "StringEquals" : {
                    "s3:prefix": "my-folder" 
                }
            }
        },
        {
            "Sid": "WriteToS3Bucket",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket",
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

要了解有关条件和条件键的更多信息，请参阅以下链接：
+ 要了解条件，请参阅《IAM 用户指南》中的 [IAM JSON 策略元素：Condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ 要了解特定于 S3 的条件键，请参阅《服务授权参考》中的 [Amazon S3 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys)。
+ 要了解跨使用的全局条件键AWS 服务，请参阅[AWS全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount)。

# Amazon Bedrock 身份和访问问题排查
<a name="security_iam_troubleshoot"></a>

以下信息可帮助您诊断和修复在使用 Amazon Bedrock 和 IAM 时可能遇到的常见问题。

**Topics**
+ [我无权在 Amazon Bedrock 中执行操作](#security_iam_troubleshoot-no-permissions)
+ [我无权执行 iam：PassRole](#security_iam_troubleshoot-passrole)
+ [我想允许我以外的人访问我 AWS 账户 的 Amazon Bedrock 资源](#security_iam_troubleshoot-cross-account-access)

## 我无权在 Amazon Bedrock 中执行操作
<a name="security_iam_troubleshoot-no-permissions"></a>

如果您收到错误提示，指明您无权执行某个操作，则必须更新策略以允许执行该操作。

当 `mateojackson` IAM 用户尝试使用控制台查看有关虚构 `my-example-widget` 资源的详细信息，但不拥有虚构 `bedrock:GetWidget` 权限时，会发生以下示例错误。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: bedrock:GetWidget on resource: my-example-widget
```

在此情况下，必须更新 `mateojackson` 用户的策略，以允许使用 `bedrock:GetWidget` 操作访问 `my-example-widget` 资源。

如果您需要帮助，请联系您的 AWS 管理员。您的管理员是提供登录凭证的人。

## 我无权执行 iam：PassRole
<a name="security_iam_troubleshoot-passrole"></a>

如果您收到一条错误信息，指明您无权执行 `iam:PassRole` 操作，则必须更新策略以使其允许您将角色传递给 Amazon Bedrock。

有些 AWS 服务 允许您将现有角色传递给该服务，而不是创建新的服务角色或服务相关角色。为此，您必须具有将角色传递到服务的权限。

当名为 `marymajor` 的 IAM 用户尝试使用控制台在 Amazon Bedrock 中执行操作时，会发生以下示例错误。但是，服务必须具有服务角色所授予的权限才可执行此操作。Mary 不具有将角色传递到服务的权限。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在这种情况下，必须更新 Mary 的策略以允许她执行 `iam:PassRole` 操作。

如果您需要帮助，请联系您的 AWS 管理员。您的管理员是提供登录凭证的人。

## 我想允许我以外的人访问我 AWS 账户 的 Amazon Bedrock 资源
<a name="security_iam_troubleshoot-cross-account-access"></a>

您可以创建一个角色，以便其他账户中的用户或您组织外的人员可以使用该角色来访问您的资源。您可以指定谁值得信赖，可以代入角色。对于支持基于资源的策略或访问控制列表 (ACLs) 的服务，您可以使用这些策略向人们授予访问您的资源的权限。

要了解更多信息，请参阅以下内容：
+ 要了解 Amazon Bedrock 是否支持这些功能，请参阅[Amazon Bedrock 如何与 IAM 搭配使用](security_iam_service-with-iam.md)。
+ 要了解如何提供对您拥有的资源的访问权限 AWS 账户 ，请参阅 [IAM 用户*指南中的向您拥有 AWS 账户 的另一个 IAM 用户*提供访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)权限。
+ 要了解如何向第三方提供对您的资源的访问[权限 AWS 账户，请参阅 *IAM 用户指南*中的向第三方提供](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)访问权限。 AWS 账户 
+ 要了解如何通过身份联合验证提供访问权限，请参阅《IAM 用户指南》**中的[为经过外部身份验证的用户（身份联合验证）提供访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 要了解使用角色和基于资源的策略进行跨账户访问之间的差别，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

# 用于自定义模型导入作业的 Amazon S3 存储桶跨账户访问
<a name="cross-account-access-cmi"></a>

如果您要从 Amazon S3 存储桶导入模型并使用跨账户 Amazon S3，则需要先向存储桶拥有者账户中的用户授予权限来访问存储桶，然后才能导入自定义模型。请参阅[导入自定义模型的先决条件](custom-model-import-prereq.md)。

## 配置对 Amazon S3 存储桶的跨账户访问
<a name="configure-cross-acct-access"></a>

本部分将引导您完成创建策略的步骤，供存储桶拥有者账户中的用户访问 Amazon S3 存储桶。

1. 在存储桶拥有者账户中，创建存储桶策略，向存储桶拥有者账户中的用户提供访问权限。

   以下示例存储桶策略（由存储桶拥有者创建并应用到存储桶 `s3://amzn-s3-demo-bucket`）向存储桶拥有者账户 `123456789123` 中的用户授予访问权限。

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

****  

   ```
   { 
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CrossAccountAccess",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::123456789012:role/ImportRole"
               },           
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }
   ```

------

1. 在用户的 AWS 账户，创建导入执行角色策略。为`aws:ResourceAccount`此，请指定存储桶所有者的账户 ID AWS 账户。

   用户账户中的以下示例导入执行角色策略，向存储桶拥有者的账户 ID `111222333444555` 提供对 Amazon S3 存储桶 `s3://amzn-s3-demo-bucket` 的访问权限。

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

****  

   ```
   { 
       "Version":"2012-10-17",		 	 	 
      "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "s3:ListBucket",
               "s3:GetObject"
           ],
           "Resource": [
               "arn:aws:s3:::amzn-s3-demo-bucket",
               "arn:aws:s3:::amzn-s3-demo-bucket/*"
           ],
           "Condition": {
               "StringEquals": {
                   "aws:ResourceAccount": "123456789012"
               }
           }
       }
     ]
   }
   ```

------

## 配置对使用自定义加密的 Amazon S3 存储桶的跨账户访问权限 AWS KMS key
<a name="configure-cross-acct-access-kms"></a>

如果您有一个使用自定义 AWS Key Management Service (AWS KMS) 密钥加密的 Amazon S3 存储桶，则需要向存储桶拥有者账户的用户授予访问该存储桶的权限。

配置对使用自定义加密的 Amazon S3 存储桶的跨账户访问权限 AWS KMS key

1. 在存储桶拥有者账户中，创建存储桶策略，向存储桶拥有者账户中的用户提供访问权限。

   以下示例存储桶策略（由存储桶拥有者创建并应用到存储桶 `s3://amzn-s3-demo-bucket`）向存储桶拥有者账户 `123456789123` 中的用户授予访问权限。

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

****  

   ```
   { 
      "Version":"2012-10-17",		 	 	 
      "Statement": [
       {
           "Sid": "CrossAccountAccess",
           "Effect": "Allow",
           "Principal": {
               "AWS": "arn:aws:iam::123456789012:role/ImportRole"
           },           
           "Action": [
               "s3:ListBucket",
               "s3:GetObject"
           ],
           "Resource": [
               "arn:aws:s3:::amzn-s3-demo-bucket",
               "arn:aws:s3:::amzn-s3-demo-bucket/*"
           ]
        }
      ]
   }
   ```

------

1. 在存储桶拥有者账户中，创建以下资源策略以允许用户的账户导入角色进行解密。

   ```
   {
      "Sid": "Allow use of the key by the destination account",
      "Effect": "Allow",
      "Principal": {
      "AWS": "arn:aws:iam::"arn:aws:iam::123456789123:role/ImportRole"
       },
       "Action": [
             "kms:Decrypt",
             "kms:DescribeKey"
       ],
       "Resource": "*"
   }
   ```

1. 在用户的 AWS 账户，创建导入执行角色策略。为`aws:ResourceAccount`此，请指定存储桶所有者的账户 ID AWS 账户。此外，还要提供 AWS KMS key 对用于加密存储桶的的访问权限。

   以下示例用户账户中的导入执行角色策略为存储桶拥有者的账户 ID 提供了对 Amazon S3 存储桶的`111222333444555`访问权限`s3://amzn-s3-demo-bucket`以及 AWS KMS key `arn:aws:kms:us-west-2:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd`

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

****  

   ```
   { 
       "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
           "Effect": "Allow",
           "Action": [
               "s3:ListBucket",
               "s3:GetObject"
           ],
           "Resource": [
               "arn:aws:s3:::amzn-s3-demo-bucket",
               "arn:aws:s3:::amzn-s3-demo-bucket/*"
           ],
           "Condition": {
               "StringEquals": {
                   "aws:ResourceAccount": "123456789012"
               }
           }
        },
        {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt",
           "kms:DescribeKey"
         ],
         "Resource": "arn:aws:kms:us-west-2:123456789012:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
       }
     ]
    }
   ```

------

# Amazon Bedrock 的合规性验证
<a name="compliance-validation"></a>

要了解是否属于特定合规计划的范围，请参阅AWS 服务 “[按合规计划划分的范围](https://aws.amazon.com/compliance/services-in-scope/)” ”，然后选择您感兴趣的合规计划。 AWS 服务 有关一般信息，请参阅[AWS 合规计划AWS](https://aws.amazon.com/compliance/programs/)。

您可以使用下载第三方审计报告 AWS Artifact。有关更多信息，请参阅中的 “[下载报告” 中的 “ AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)。

您在使用 AWS 服务 时的合规责任取决于您的数据的敏感性、贵公司的合规目标以及适用的法律和法规。有关您在使用时的合规责任的更多信息 AWS 服务，请参阅[AWS 安全文档](https://docs.aws.amazon.com/security/)。

# Amazon Bedrock 中的事件响应
<a name="security-incident-response"></a>

 AWS非常重视安全性。作为 AWS 云[责任共担模式](https://aws.amazon.com/compliance/shared-responsibility-model)的一部分， AWS 管理满足大多数安全敏感组织要求的数据中心、网络和软件架构。 AWS 负责与 Amazon Bedrock 服务本身有关的任何事件响应。此外，作为 AWS 客户，您也有责任维护云端的安全。这意味着你可以从你有权访问的 AWS 工具和功能中控制你选择实施的安全性。此外，您还需要负责您在责任共担模式中的事件响应部分。

通过建立符合云端运行应用程序目标的安全基准，您可以检测出可以响应的偏差。为了帮助您了解事件响应和您的选择对企业目标的影响，建议您查看以下资源：
+ [AWS 安全事件响应指南](https://docs.aws.amazon.com/whitepapers/latest/aws-security-incident-response-guide/welcome.html)
+ [AWS 安全、身份和合规性最佳实践](https://aws.amazon.com/architecture/security-identity-compliance)
+ [AWS 云采用框架 (CAF) 的安全视角](https://docs.aws.amazon.com/whitepapers/latest/overview-aws-cloud-adoption-framework/security-perspective.html)白皮书

 [Amazon GuardDuty](https://aws.amazon.com/guardduty/) 是一项托管威胁检测服务，可持续监控恶意或未经授权的行为，帮助客户保护 AWS 账户和工作负载，并在可疑活动升级为事件之前识别潜在的活动。Amazon GuardDuty 可以监控异常的 API 调用或可能未经授权的部署等活动，这些活动表明账户或资源可能遭到破坏或者有恶意行为者正在进行侦察。例如，亚马逊 GuardDuty 能够在 Amazon Bedrock 中检测可疑活动 APIs，例如用户从新位置登录并使用 Amazon Bedrock 移除 Amazon Bedrock APIs Guardrails，或者更改为模型训练数据设置的 Amazon S3 存储桶。

# Amazon Bedrock 中的故障恢复能力
<a name="disaster-recovery-resiliency"></a>

 AWS 全球基础设施是围绕 AWS 区域 可用区构建的。 AWS 区域 提供多个物理隔离和隔离的可用区，这些可用区通过低延迟、高吞吐量和高度冗余的网络连接。利用可用区，您可以设计和操作在可用区之间无中断地自动实现失效转移的应用程序和数据库。与传统的单个或多个数据中心基础设施相比，可用区具有更高的可用性、容错能力和可扩展性。

有关 AWS 区域 和可用区的更多信息，请参阅[AWS 全球基础设施](https://aws.amazon.com/about-aws/global-infrastructure/)。

# Amazon Bedrock 中的基础设施安全性
<a name="infrastructure-security"></a>

作为一项托管服务，Amazon Bedrock 受到 AWS 全球网络安全的保护。有关 AWS 安全服务以及如何 AWS 保护基础设施的信息，请参阅[AWS 云安全](https://aws.amazon.com/security/)。要使用基础设施安全的最佳实践来设计您的 AWS 环境，请参阅 S * AWS ecurity Pillar Well-Architected Fram* ework 中的[基础设施保护](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)。

您可以使用 AWS 已发布的 API 调用通过网络访问 Amazon Bedrock。客户端必须支持以下内容：
+ 传输层安全性协议（TLS）。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 具有完全向前保密（PFS）的密码套件，例如 DHE（临时 Diffie-Hellman）或 ECDHE（临时椭圆曲线 Diffie-Hellman）。大多数现代系统（如 Java 7 及更高版本）都支持这些模式。

此外，必须使用访问密钥 ID 和与 IAM 主体关联的秘密访问密钥来对请求进行签名。或者，您可以使用 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html)（AWS STS）生成临时安全凭证来对请求进行签名。

# 防止跨服务混淆座席
<a name="cross-service-confused-deputy-prevention"></a>

混淆代理问题是一个安全性问题，即不具有操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在中 AWS，跨服务模仿可能会导致混乱的副手问题。一个服务（*呼叫服务*）调用另一项服务（*所谓的服务*）时，可能会发生跨服务模拟。可以操纵调用服务，使用其权限以在其他情况下该服务不应有访问权限的方式对另一个客户的资源进行操作。为防止这种情况， AWS 提供可帮助您保护所有服务的数据的工具，而这些服务中的服务主体有权限访问账户中的资源。

我们建议在资源策略中使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全局条件上下文键，以限制 Amazon Bedrock 为其他服务提供的资源权限。如果您只希望将一个资源与跨服务访问相关联，请使用。`aws:SourceArn`如果您想允许该账户中的任何资源与跨服务使用操作相关联，请使用。`aws:SourceAccount`

防范混淆代理问题最有效的方法是使用 `aws:SourceArn` 全局条件上下文键和资源的完整 ARN。如果不知道资源的完整 ARN，或者正在指定多个资源，请针对 ARN 未知部分使用带有通配符字符（`*`）的 `aws:SourceArn` 全局上下文条件键。例如 `arn:aws:bedrock:*:123456789012:*`。

如果 `aws:SourceArn` 值不包含账户 ID，例如 Amazon S3 存储桶 ARN，您必须使用两个全局条件上下文键来限制权限。

`aws:SourceArn` 的值必须为 ResourceDescription。

以下示例演示如何使用 Bedrock 中的 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键防止出现代理混淆问题。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:bedrock:us-east-1:111122223333:model-customization-job/*"
                }
            }
        }
    ] 
}
```

------

# Amazon Bedrock 中的配置和漏洞分析
<a name="vulnerability-analysis-and-management"></a>

配置和 IT 控制由您（我们的客户）共同 AWS 负责。有关更多信息，请参阅[责任 AWS 共担模型](https://aws.amazon.com/compliance/shared-responsibility-model/)。

# Amazon Bedrock 滥用检测
<a name="abuse-detection"></a>

AWS 致力于负责任地使用人工智能。为了帮助防止潜在的滥用行为，Amazon Bedrock 实施了自动化滥用检测机制，以识别可能违反 AWS的 [Acceptable Use Policy](https://aws.amazon.com/aup/) (AUP) 和服务条款的行为，包括 [Responsible AI Policy](https://aws.amazon.com/machine-learning/responsible-ai/policy/) 或第三方模型提供商的 AUP。

我们的滥用检测机制是完全自动化的，因此无需人工审核或者访问用户输入或模型输出。

自动化滥用检测包括：
+ **对内容进行分类** — 我们使用分类器来检测用户输入和模型输出中的有害内容（例如，煽动暴力的内容）。分类器是一种处理模型输入和输出，并指定危害类型和置信度级别的算法。我们可能会针对 Titan 和第三方模型使用信息运行这些分类器。这可以包括使用 Amazon Bedrock 的模型自定义功能进行微调的模型。分类过程是自动化的，不涉及对用户输入或模型输出进行人工审核。
+ **识别模式** — 我们使用分类器指标来识别潜在的违规行为和反复出现的行为。我们可能会编译匿名的分类器指标，并与第三方模型提供商共享。Amazon Bedrock 不存储用户输入或模型输出，也不会与第三方模型提供商共享这些信息。
+ **检测和拦截儿童性虐待材料（CSAM）**– 您应对您（和您的终端用户）上传到 Amazon Bedrock 的内容负责，并且必须确保这些内容不包含非法图片。为了帮助阻止 CSAM 的传播，Amazon Bedrock 可能会使用自动滥用检测机制（例如哈希匹配技术或分类器）来检测明显的 CSAM。如果 Amazon Bedrock 在您的图片输入中检测到明显的 CSAM，Amazon Bedrock 将拦截该请求，并且您将收到一条自动发出的错误消息。Amazon Bedrock 还可能向美国国家失踪与受虐儿童中心（NCMEC）或相关机构提交报告。我们高度重视 CSAM 问题，并将持续改进我们的检测、拦截和报告机制。您可能需要按照相关法律采取其他措施，并对这些行为负责。

自动化滥用检测机制识别出潜在的违规行为之后，我们可能会要求您说明自己如何使用 Amazon Bedrock，以及如何遵守我们的服务条款或第三方提供商的 AUP。如果您没有回应、不愿或无法遵守这些条款或政策， AWS 可以暂停您对 Amazon Bedrock 的访问权限。如果我们的自动化测试检测到模型的响应与第三方模型提供商的许可条款和策略不一致，您也可能需要支付失败的微调作业的费用。

如果您还有其他问题，请联系 AWS Support。有关更多信息，请参阅 [Amazon Bedrock FAQs](https://aws.amazon.com/bedrock/faqs/?refid=6f95042b-28fe-493f-8858-601fe99cea89)。

# 提示注入安全
<a name="prompt-injection"></a>

 根据[责任AWS 共担模型](https://aws.amazon.com/compliance/shared-responsibility-model/)， AWS 负责保护底层云基础架构，包括运行 AWS 服务的硬件、软件、网络和设施。但是，客户有责任保护其部署在其上的应用程序、数据和资源 AWS。

在 Amazon Bedrock 的背景下， AWS 负责底层基础设施的安全，包括物理数据中心、网络和 Amazon Bedrock 服务本身。但是，客户应负责确保应用程序开发的安全并防止提示注入等漏洞。

提示注入是一个应用程序级别的安全问题，类似于数据库应用程序中的 SQL 注入。就像 Amazon RDS 和 Amazon Aurora 等 AWS 服务提供安全的数据库引擎一样，但客户有责任防止在其应用程序中注入 SQL。Amazon Bedrock 为自然语言处理提供了安全的基础，但客户必须采取措施防止其代码中出现提示注入漏洞。此外，还 AWS 提供有关 Bedrock 和其他 AWS 服务的安全编码实践的详细文档、最佳实践和指导。

为了防止在使用 Amazon Bedrock 时出现提示注入和其他安全漏洞，客户应遵循以下最佳实践：
+ **输入验证** – 在将所有用户输入传递给 Amazon Bedrock API 或分词器之前，请对其进行验证和清洗。这包括删除或转义特殊字符，并确保输入符合预期的格式。
+ **安全编码实践** – 遵循安全编码实践，例如使用参数化查询、避免针对输入使用字符串连接，以及在授予资源访问权限时遵循最低权限原则。
+ **安全测试** – 使用渗透测试、静态代码分析和动态应用程序安全测试（DAST）等技术，定期测试应用程序是否存在提示注入和其他安全漏洞。
+ **保持更新** — 使用最新的安全补丁和更新，保留您的 Amazon Bedrock SDK、库和依赖项 up-to-date。监控 AWS 安全公告和公告，了解任何相关的更新或指导。 AWS 提供了详细的文档、博客文章和示例代码，以帮助客户使用 Bedrock 和其他 AWS 服务构建安全的应用程序。客户应查看这些资源并遵循建议的安全最佳实践，以保护其应用程序免受提示注入和其他漏洞的影响。

您可以使用 Amazon Bedrock 护栏来帮助防范提示注入攻击。有关更多信息，请参阅 [使用 Amazon Bedrock 护栏检测提示攻击](guardrails-prompt-attack.md)。

创建 Amazon Bedrock 代理时，请使用以下技巧来帮助防范提示注入攻击。
+ 将护栏与代理关联。有关更多信息，请参阅 [通过将护栏与代理关联为应用程序实施保护措施](agents-guardrail.md)。
+ 使用[高级提示](https://docs.aws.amazon.com/bedrock/latest/userguide/advanced-prompts.html)启用默认预处理提示。每个代理都有可以启用的默认预处理提示。这是一个轻量级提示，它使用基础模型来确定是否可以安全处理用户输入。您可以使用其默认行为，或者完全自定义提示以添加任何其他分类类别。或者，您也可以在 [AWS Lambda](https://docs.aws.amazon.com/bedrock/latest/userguide/lambda-parser.html) 函数中编写自己的基础模型响应解析器，来实施自己的自定义规则。

  有关更多信息，请参阅 [Amazon Bedrock 代理的工作原理](agents-how.md)。
+ 使用高级提示功能更新系统提示。较新的模型会区分系统提示和用户提示。如果您在代理中使用了系统提示，建议您明确定义代理可以执行和不能执行的操作的范围。此外，请查看模型提供商自己的文档，以获取特定于模型的指导。要了解 Amazon Bedrock 中哪些无服务器模型支持系统提示，请参阅[基础模型的推理请求参数和响应字段](model-parameters.md)。