

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Bedrock ナレッジベースで OpenSearch マネージドクラスターを使用するために必要な前提条件とアクセス許可
<a name="kb-osm-permissions-prereq"></a>

このセクションでは、Amazon OpenSearch Service マネージドクラスターで独自のベクトルデータベースを作成する場合にアクセス許可を設定する方法について説明します。この設定は、ナレッジベースを作成する前に実行する必要があります。この手順では、Amazon OpenSearch Service でドメインインデックスとベクトルインデックスを既に作成していることを前提としています。詳細については、「*Amazon OpenSearch Service デベロッパーガイド*」の「[Amazon OpenSearch Service ドメインの作成と管理](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)」を参照してください。

## 主な考慮事項
<a name="kb-osm-permissions-prereq-considerations"></a>

Amazon OpenSearch Service マネージドクラスターで Amazon Bedrock ナレッジベースを使用する際の主な考慮事項を以下に示します。
+ OpenSearch マネージドクラスターでドメインリソースを使用する前に、特定の IAM アクセス許可とポリシーを設定する必要があります。ナレッジベースとマネージドクラスターの統合の場合、このセクションのステップを実行する前に、ドメインに制限付きアクセスポリシーがある場合は、必要な IAM アクセス許可を付与し、リソースベースのポリシーを設定する必要があります。また、アクセス許可の範囲を絞り込むようにきめ細かなアクセスコントロールを設定することをお勧めします。
+ ナレッジベースのデータを取り込むときに障害が発生した場合は、取り込み速度を処理するための OpenSearch ドメイン容量が不十分である可能性があります。この問題を解決するには、より高い IOPS (1 秒あたりの入出力オペレーション数) をプロビジョニングし、スループット設定を増やして、ドメインの容量を増やします。新しい容量がプロビジョニングされるまで数分待ってから、取り込みプロセスを再試行します。問題が解決されたことを確認するには、再試行の処理時にパフォーマンスをモニタリングできます。スロットリングがまだ続く場合は、効率を向上させるために容量をさらに調整する必要があるかもしれません。詳細については、[「Amazon OpenSearch Service の運用上のベストプラクティス](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/bp.html)」を参照してください。

## アクセス許可設定の概要
<a name="kb-osm-permissions-prereq-overview"></a>

ナレッジベースとマネージドクラスターを統合するには、次の IAM アクセス許可とリソースベースのポリシーを設定する必要があります。きめ細かなアクセスポリシーを有効にして、ユーザーアクセスとプロパティレベルまで範囲を絞り込む必要がある詳細度をさらに制御することをお勧めします。

次の手順では、アクセス許可の設定方法の概要を説明します。

1. 

**ナレッジベースサービスロールを作成して使用する**

   設定するアクセス許可については、独自のカスタムロールを指定することもできますが、Amazon Bedrock ナレッジベースがナレッジベースサービスロールを作成するオプションを指定することをお勧めします。

1. 

**リソースベースのポリシーを設定する**

   OpenSearch ドメインは、ドメインにアクセスして操作できるプリンシパルを決定するリソースベースのポリシーをサポートします。ナレッジベースを使用するには、ドメインのリソースベースのポリシーを適切に設定するようにしてください。

1. 

***(強く推奨)* きめ細かなアクセスコントロールのためのロールマッピングを提供する**

   きめ細かなアクセスコントロールはオプションですが、プロパティレベルでアクセス許可の範囲を絞り込む必要がある詳細度を制御するために有効にすることをお勧めします。

## IAM ポリシーの設定
<a name="kb-osm-permissions-iam"></a>

ドメインのアクセスポリシーは、アカウントのロールで必須の OpenSearch API アクションを実行するためのアクセス許可を付与する必要があります。

ドメインに制限付きアクセスポリシーがあるときは、次のように更新する必要がある場合があります。
+ Amazon Bedrock サービスへのアクセス許可を付与し、必須の HTTP アクションの `GET`、`POST`、`PUT`、`DELETE` を含める必要があります。
+ また、インデックスリソースで `es:DescribeDomain` アクションを実行するための Amazon Bedrock アクセス許可を付与する必要があります。これにより、Amazon Bedrock ナレッジベースはナレッジベースを設定するときに必要な検証を実行できます。

## (オプション) きめ細かなアクセスコントロール
<a name="kb-osm-permissions-console-fgap"></a>

きめ細かなアクセスコントロールは、アクセス許可の範囲をプロパティレベルで絞り込む必要がある詳細度を制御できます。きめ細かなアクセスポリシーを設定して、ナレッジベースによって作成されたサービスロールに必要な読み取り/書き込みアクセス許可を付与できます。

きめ細かなアクセスコントロールを設定し、ロールマッピングを指定するには

1. 作成した OpenSearch ドメインで、きめ細かなアクセスコントロールが有効になっていることを確認します。

1. OpenSearch UI (ダッシュボード) をまだ作成していない場合は、作成します。これはロールマッピングの設定に使用します。

1. OpenSearch ダッシュボードで、OpenSearch ロールを作成し、ベクトルインデックス名と、クラスターとインデックスのアクセス許可を指定します。アクセス許可を追加するには、アクセス許可グループを作成し、ロールの `delete`、`search`、`get`、`index` などの一連のオペレーションを実行するためのアクセスを認めるのに必要なアクセス許可を追加する必要があります。

1. 必要なアクセス許可を追加したら、OpenSearch バックエンドロールのナレッジベースサービスロールの ARN を入力する必要があります。このステップを実行すると、ナレッジベースサービスロールと OpenSearch ロール間のマッピングが完了し、OpenSearch ドメインのベクトルインデックスにアクセスして必要なオペレーションを実行するためのアクセス許可が Amazon Bedrock ナレッジベースに付与されます。

**Topics**
+ [主な考慮事項](#kb-osm-permissions-prereq-considerations)
+ [アクセス許可設定の概要](#kb-osm-permissions-prereq-overview)
+ [IAM ポリシーの設定](#kb-osm-permissions-iam)
+ [(オプション) きめ細かなアクセスコントロール](#kb-osm-permissions-console-fgap)
+ [OpenSearch マネージドクラスターのリソースベースポリシーの設定](kb-osm-permissions-slr-rbp.md)
+ [きめ細かなアクセスコントロールによる OpenSearch アクセス許可の設定](kb-osm-permissions-console-fgap.md)

# 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/ja_jp/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/ja_jp/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 ナレッジベースのサービスロールを作成する方法について説明します。リソースベースのポリシーときめ細かなアクセスポリシーをこのロールにマッピングすることで、OpenSearch ドメインにリクエストを行うためのアクセス許可が Amazon Bedrock に付与されます。

**Amazon Bedrock ナレッジベースのサービスロールを指定する方法:**

1. Amazon Bedrock コンソールで、[[ナレッジベース]](https://console.aws.amazon.com/bedrock/home#/knowledge-bases) に移動します。

1. **[作成]** を選択し、**[ベクトルストアを含むナレッジベース]** を選択します。

1. **[新しいサービスロールの作成と使用]** を選択します。デフォルトを使用することも、カスタムロール名を指定することもでき、Amazon Bedrock によってナレッジベースのサービスロールが自動的に作成されます。

1. そのままコンソールを操作し、データソースおよび解析戦略とチャンキング戦略を設定します。

1. 埋め込みモデルを選択し、**[既存のベクトルストアを選択]** で **[Amazon OpenSearch マネージドクラスター]** を選択します。

**重要**  
ナレッジベースの作成に進む前に、次のステップを実行して、リソースベースのポリシーときめ細かなアクセスポリシーを設定します。ナレッジベースの作成に関する詳しいステップについては、「[Amazon Bedrock ナレッジベースでデータソースに接続してナレッジベースを作成する](knowledge-base-create.md)」を参照してください。

## リソースベースのポリシーの更新
<a name="kb-osm-permissions-console-rbp"></a>

OpenSearch ドメインに制限付きアクセスポリシーがある場合は、このページの手順に従ってリソースベースのポリシーを更新できます。これらのアクセス許可により、ナレッジベースは指定されたインデックスを使用し、OpenSearch ドメイン定義を取得してドメインで必要な検証を実行できます。

**からリソースベースのポリシーを設定するには AWS マネジメントコンソール**

1. [Amazon OpenSearch Service コンソール](https://console.aws.amazon.com/aos/home?region=us-east-1#opensearch/dashboard)に移動します。

1. 作成したドメインに移動したら、リソースベースのポリシーが設定されている **[セキュリティ設定]** に移動します。

1. **JSON** タブでポリシーを編集してから、[サンプルのリソースベースのポリシー](#kb-osm-permissions-rbp)と同様にポリシーを更新します。

1. これで、Amazon Bedrock コンソールに戻り、「[マネージド型クラスターのナレッジベースのセットアップ](knowledge-base-setup.md#knowledge-base-setup-osm)」の説明に従って、OpenSearch ドメインとインデックスの詳細を入力できるようになります。

# きめ細かなアクセスコントロールによる OpenSearch アクセス許可の設定
<a name="kb-osm-permissions-console-fgap"></a>

任意ですが、OpenSearch ドメインのきめ細かなアクセスコントロールを有効にすることを強くお勧めします。きめ細かなアクセスコントロールを使用すると、ロールベースのアクセスコントロールを使用できます。これにより、特定のアクセス許可を持つ OpenSearch ロールを作成し、そのロールをナレッジベースサービスロールにマッピングできます。マッピングは、ナレッジベースに OpenSearch ドメインとインデックスへのアクセスとオペレーションの実行を許可する最低限必要なアクセス許可を付与します。

きめ細かなアクセスコントロールを設定して使用するには

1. 使用している OpenSearch ドメインで、きめ細かなアクセスコントロールが有効になっていることを確認します。

1. きめ細かなアクセスコントロールを使用するドメインの場合は、OpenSearch ロールの形式でアクセス許可を設定します。

1. ロールを作成するドメインの場合は、ナレッジベースサービスロールにロールマッピングを追加します。

次の手順は、OpenSearch ロールを設定し、OpenSearch ロールとナレッジベースサービスロール間で正しくマッピングする方法を示しています。

**OpenSearch ロールを作成し、アクセス許可を設定するには**  
きめ細かなアクセスコントロールを有効にし、Amazon Bedrock が OpenSearch Service に接続するように設定したら、各 OpenSearch ドメインの OpenSearch ダッシュボードリンクを使用してアクセス許可を設定できます。

**Amazon Bedrock へのアクセスを許可するドメインのアクセス許可を設定するには**

1. 使用する OpenSearch ドメインで、OpenSearch ダッシュボードを開きます。ダッシュボードへのリンクを確認するには、OpenSearch Service コンソールで作成したドメインに移動します。OpenSearch を実行しているドメインの場合、URL は `domain-endpoint/_dashboards/` の形式です。詳細については、「*Amazon OpenSearch Service デベロッパーガイド*」の「[ダッシュボード](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/dashboards.html)」を参照してください。

1. OpenSearch ダッシュボードで、**[セキュリティ]** に進み、**[ロール]** を選択します。

1. [**ロールの作成**] を選択してください。

1. **kb\$1opensearch\$1role** など、ロールの名前を指定します。

1. **[クラスターのアクセス許可]** に、以下のアクセス許可を追加します。
   + `indices:data/read/msearch`
   + `indices:data/write/bulk*`
   + `indices:data/read/mget*`

1. **[インデックスの許可]** で、ベクトルインデックスの名前を指定します。**[新しいアクセス許可グループを作成]** を選択し、次に **[新しいアクショングループを作成]** を選択します。`KnowledgeBasesActionGroup`などのアクショングループに次のアクセス許可を追加します。アクショングループに次のアクセス許可を追加します。
   + `indices:admin/get`
   + `indices:data/read/msearch`
   + `indices:data/read/search`
   + `indices:data/write/index`
   + `indices:data/write/update`
   + `indices:data/write/delete`
   + `indices:data/write/delete/byquery`
   + `indices:data/write/bulk*`
   + `indices:admin/mapping/put`
   + `indices:data/read/mget*`  
![\[クラスターとインデックスのアクセス許可を追加するために OpenSearch ダッシュボードで作成するアクショングループ。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/kb-test-os-action-groups.png)

1. **[作成]** を選択して OpenSearch ロールを作成します。

アクセス許可が追加された OpenSearch ロールの例を次に示します。

![\[アクセス許可が追加された OpenSearch Dashboards の OpenSearch ロールの例。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/kb-test-os-dashboards-permissions.png)


**ナレッジベースサービスロールへのロールマッピングを作成するには**

1. マッピングする必要がある IAM ロールを特定します。
   + 独自のカスタム IAM ロールを作成した場合は、IAM コンソールからこのロールのロール ARN をコピーできます。
   + ナレッジベースにロールの作成を許可する場合は、ナレッジベースの作成時にロール ARN を書き留めて、このロール ARN をコピーできます。

1. 使用する OpenSearch ドメインで、OpenSearch ダッシュボードを開きます。URL のフォーマットは `domain-endpoint/_dashboards/` です。

1. ナビゲーションペインで、[**セキュリティ**] をクリックします。

1. **kb\$1opensearch\$1role** など、先ほど作成したロールをリストで検索して開きます。

1. **[マッピングされたユーザー]** タブで、**[マッピングを管理]** をクリックします。

1. **バックエンドロール**セクションで、ナレッジベースの AWS マネージド IAM ロールの ARN を入力します。独自のカスタムロールを作成したか、ナレッジベースにロールを作成させたかに応じて、IAM コンソールまたは Amazon Bedrock コンソールからロール ARN 情報をコピーし、OpenSearch コンソールに**バックエンドロール**の情報を入力します。次に例を示します。

   ```
   arn:aws:iam::<accountId>:role/service-role/<knowledge-base-service-role>
   ```

1. [**マップ**] をクリックします。

   ナレッジベースサービスロールが OpenSearch ロールに接続し、ドメインとインデックスで必要なオペレーションを実行できるようになりました。