

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

# 为 OpenSearch 托管集群配置基于资源的策略
<a name="kb-osm-permissions-slr-rbp"></a>

创建知识库时，您可以创建自己的自定义角色，也可以让 Amazon Bedrock 为您创建一个角色。如何配置权限取决于您是要创建新角色还是使用现有角色。如果您已有现有 IAM 角色，则必须确保您的域的访问策略不会阻止您账户中的角色执行必要的 OpenSearch API 操作。

如果您选择让 Amazon Bedrock 知识库为您创建 IAM 角色，则必须确保您的域的访问策略授予您账户中的角色执行所需的 OpenSearch API 操作的权限。如果您的域有限制性访问策略，则可能会阻止您的角色执行这些操作。下面显示了基于资源的限制性策略示例。

在这种情况下，您可以：
+ 使用现有的 IAM 角色创建知识库，您的 OpenSearch 域可以向该角色授予该角色的访问权限，以执行必要的操作。
+ 也可以让 Amazon Bedrock 为您创建一个新角色。在这种情况下，您必须确保域的访问策略必须授予您账户中的角色执行必要的 OpenSearch API 操作的权限。

以下各节显示了一个授予必要权限的 IAM 策略示例，以及如何更新域的访问策略，使其授予执行必要 OpenSearch API 操作的权限。

**Topics**
+ [IAM 基于身份和基于资源的策略示例](#kb-osm-permissions-iam)
+ [创建 Amazon Bedrock 知识库服务角色](#kb-osm-permissions-slr)
+ [更新基于资源的策略](#kb-osm-permissions-console-rbp)

## IAM 基于身份和基于资源的策略示例
<a name="kb-osm-permissions-iam"></a>

本节提供身份策略示例和基于资源的策略，在与 Amazon Bedrock 知识库集成时，您可以为 OpenSearch 域配置这些策略。您必须授予 Amazon Bedrock 权限，才能对您为知识库提供的索引执行这些操作。


****  

| Action | 资源 | 说明 | 
| --- | --- | --- | 
| es:ESHttpPost | arn:<partition>:es:<region>:<accountId>:domain/<domainName>/<indexName> | 用于在索引中插入信息 | 
| es:ESHttpGet |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/kb-osm-permissions-slr-rbp.html)  | 用于从索引中搜索信息。此操作已在 domain/index 级别和 domain/index/\$1 级别上进行了配置。在 domain/index 级别，它可以获取有关索引的高级详细信息，例如引擎类型。要检索存储在索引中的详细信息，需要 domain/index/\$1 级别的权限。 | 
| es:ESHttpHead |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/kb-osm-permissions-slr-rbp.html)  | 用于从索引中获取信息。此操作已在 domain/index 级别和 domain/index/\$1 级别上进行了配置，以防需要从更高级别获取信息，例如是否存在特定的索引。 | 
| es:ESHttpDelete | arn:<partition>:es:<region>:<accountId>:domain/<domainName>/<indexName> | 用于删除索引中的信息 | 
| es:DescribeDomain | arn:<partition>:es:<region>:<accountId>:domain/<domainName> | 用于对域执行验证，例如使用的引擎版本。 | 

### 基于身份的策略示例
<a name="kb-osm-permissions-idpolicy"></a>

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

****  

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

------

### 基于资源的策略示例
<a name="kb-osm-permissions-rbp"></a>

**注意**  
确保已创建服务角色，以便在基于资源的策略中使用。

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

创建知识库时，可以选择创建和使用新服务角色。本部分介绍如何创建 Amazon Bedrock 知识库服务角色。通过将基于资源的策略和精细的访问策略映射到该角色，它将授予 Amazon Bedrock 向该域发出请求的权限。 OpenSearch 

**指定 Amazon Bedrock 知识库服务角色：**

1. 在 Amazon Bedrock 控制台中，请转至[知识库](https://console.aws.amazon.com/bedrock/home#/knowledge-bases)。

1. 选择**创建**，然后选择**带有向量存储的知识库**。

1. 请选择**创建和使用新的服务角色**。您可以使用默认角色名称，也可以提供自定义角色名称，Amazon Bedrock 将自动为您创建知识库服务角色。

1. 继续通过控制台配置数据来源以及解析和分块策略。

1. 选择 Embeddings 模型，然后在 **“选择现有矢量存储”** 下选择 **Amazon OpenSearch 托管集群**。

**重要**  
在继续创建知识库之前，请完成以下步骤以配置基于资源的策略和精细访问策略。有关创建知识库的详细步骤，请参阅[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)。

## 更新基于资源的策略
<a name="kb-osm-permissions-console-rbp"></a>

如果您的 OpenSearch 域名有限制性访问策略，则可以按照本页上的说明更新基于资源的策略。这些权限允许知识库使用您提供的索引，并检索 OpenSearch 域定义以对域执行所需的验证。

**要从中配置基于资源的策略 AWS 管理控制台**

1. 前往[亚马逊 OpenSearch 服务控制台](https://console.aws.amazon.com/aos/home?region=us-east-1#opensearch/dashboard)。

1. 转到您创建的域，然后转到配置基于资源的策略的**安全配置**。

1. 在 **JSON** 选项卡中编辑策略，然后更新与[基于资源的策略示例](#kb-osm-permissions-rbp)类似的策略。

1. 现在，您可以返回 Amazon Bedrock 控制台，按照[托管集群知识库设置中所述提供 OpenSearch 域和索引的](knowledge-base-setup.md#knowledge-base-setup-osm)详细信息。