

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

# マネージドナレッジベースのリソースポリシー
<a name="kb-managed-cross-account"></a>

リソースベースのポリシーは、マネージドナレッジベースに直接アタッチする JSON ドキュメントです。ナレッジベースでアクションを実行できる IAM プリンシパルを制御し、クロスアカウントアクセスなどのユースケースを可能にします。このポリシーは、 `Allow`と の両方`Deny`の効果をサポートしています。

**重要**  
リソースベースのポリシーは、マネージドナレッジベース (タイプ ) でのみサポートされます`MANAGED`。ベクトルナレッジベース (タイプ `VECTOR`) はリソースポリシーをサポートしていません。

## サポートされているアクション
<a name="kb-managed-cross-account-supported-actions"></a>

ナレッジベースのリソースポリシーでは、次のアクションを使用できます。


****  

| [アクション] | 説明 | 
| --- | --- | 
| bedrock:Retrieve | ナレッジベースをクエリし、データソースから関連する結果を取得します。 | 
| bedrock:GetDocumentContent | ナレッジベースのデータソースから特定のドキュメントの完全なコンテンツを取得します。 | 

**注記**  
`GetKnowledgeBase`、`UpdateKnowledgeBase`、、データソース管理オペレーションなどのコントロールプレーンオペレーションは`DeleteKnowledgeBase`、リソースポリシーでは使用できません。これらのオペレーションは、ナレッジベースの所有者アカウントのプリンシパルが実行する必要があります。

## リソースポリシーの要件
<a name="kb-managed-cross-account-resource-policy"></a>

ナレッジベースのリソースポリシーは、標準の IAM ポリシー構文に従います。ポリシー要素と評価ロジックの詳細については、「 *AWS Identity and Access Management ユーザーガイド*」の[「IAM JSON ポリシー要素リファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)」を参照してください。

以下のサービス固有の制約が適用されます。
+ **マネージドナレッジベースのみ。**リソースポリシーは、タイプ のナレッジベースにのみアタッチできます`MANAGED`。`VECTOR` タイプナレッジベースにリソースポリシーをアタッチしようとすると、エラーが返されます。
+ **サポートされているアクション。**リソースポリシーで使用できるの`bedrock:GetDocumentContent`は `bedrock:Retrieve`と のみです。
+ **リソースまたはアクションにワイルドカードはありません。**`Resource` 要素で完全なナレッジベース ARN を指定し、各アクションを明示的に一覧表示する必要があります。ワイルドカードは、これらの要素ではサポートされていません。

## クロスアカウントアクセスの仕組み
<a name="kb-managed-cross-account-how-it-works"></a>

クロスアカウントアクセスにより、他の AWS アカウントのプリンシパルはナレッジベース`GetDocumentContent`で `Retrieve`および を呼び出すことができます。クロスアカウントアクセスを使用するには、次の条件の両方を満たす必要があります。
+ ナレッジベースの所有者は、呼び出し元のプリンシパルにアクセスを許可するリソースポリシーをアタッチします。
+ 呼び出し元プリンシパルには、ナレッジベース ARN で対応する Amazon Bedrock アクションを許可するアイデンティティベースのポリシーがあります。

IAM がクロスアカウントアクセスを評価する方法の詳細については、 AWS Identity and Access Management 「 ユーザーガイド」の[「クロスアカウントポリシー評価ロジック](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)」を参照してください。

**例: クロスアカウントアクセスを付与する**

次のリソースポリシーは、別のアカウントの特定の IAM ロールに `Retrieve`および を呼び出すアクセス許可を付与します`GetDocumentContent`。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCrossAccountRetrieve",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{CONSUMER_ACCOUNT_ID}}:role/{{service-role-name}}"
            },
            "Action": [
                "bedrock:Retrieve",
                "bedrock:GetDocumentContent"
            ],
            "Resource": "arn:aws:bedrock:{{REGION}}:{{OWNER_ACCOUNT_ID}}:knowledge-base/{{KB_ID}}"
        }
    ]
}
```

**複数のプリンシパルへのアクセスの許可**

複数の消費ロールへのアクセスを許可するには、 の各ロール ARN を配列`Principal.AWS`として一覧表示します。

```
"Principal": {
    "AWS": [
        "arn:aws:iam::{{ACCOUNT_ID_1}}:role/{{role-name-1}}",
        "arn:aws:iam::{{ACCOUNT_ID_2}}:role/{{role-name-2}}"
    ]
}
```

別のアカウントのすべてのプリンシパルにアクセスを許可するには、アカウントルートをプリンシパルとして使用します。

```
"Principal": {
    "AWS": "arn:aws:iam::{{CONSUMER_ACCOUNT_ID}}:root"
}
```

## Deny ステートメントの使用
<a name="kb-managed-cross-account-deny"></a>

リソースポリシーは、 `Allow`と の両方`Deny`の効果をサポートします。リソースポリシー`Deny`の明示的な は、プリンシパルのアイデンティティベースのポリシー`Allow`の を上書きします。

```
{
    "Sid": "DenySpecificPrincipals",
    "Effect": "Deny",
    "Principal": {
        "AWS": "arn:aws:iam::{{ACCOUNT_ID}}:role/{{role-name}}"
    },
    "Action": [
        "bedrock:Retrieve",
        "bedrock:GetDocumentContent"
    ],
    "Resource": "arn:aws:bedrock:{{REGION}}:{{OWNER_ACCOUNT_ID}}:knowledge-base/{{KB_ID}}"
}
```

## リソースポリシーの管理
<a name="kb-managed-cross-account-manage-policies"></a>

ナレッジベースのリソースポリシーを管理するには、ナレッジベースの所有者の IAM プリンシパルに次のアクセス許可が必要です。


****  

| [アクション] | 説明 | 
| --- | --- | 
| bedrock:PutResourcePolicy | ナレッジベースでリソースベースのポリシーをアタッチまたは更新します。 | 
| bedrock:GetResourcePolicy | ナレッジベースにアタッチされたリソースベースのポリシーを表示します。 | 
| bedrock:DeleteResourcePolicy | ナレッジベースからリソースベースのポリシーを削除します。 | 

**ナレッジベース所有者のポリシーの例**

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:PutResourcePolicy",
                "bedrock:GetResourcePolicy",
                "bedrock:DeleteResourcePolicy"
            ],
            "Resource": "arn:aws:bedrock:{{REGION}}:{{ACCOUNT_ID}}:knowledge-base/{{KB_ID}}"
        }
    ]
}
```

**API オペレーション**

**PutResourcePolicy** — ナレッジベースのリソースベースのポリシーをアタッチまたは置き換えます。

```
PUT /resourcepolicy/{{{knowledgeBaseArn}}} HTTP/1.1
Content-Type: application/json

{
    "policy": "{{{policyDocument}}}"
}
```

`policy` フィールドは、ポリシードキュメントを含む JSON エスケープされた文字列です。

**GetResourcePolicy** — 現在ナレッジベースにアタッチされているリソースベースのポリシーを返します。

```
GET /resourcepolicy/{{{knowledgeBaseArn}}} HTTP/1.1
```

ポリシーがアタッチ`ResourceNotFoundException`されていない場合は、 を返します。

**DeleteResourcePolicy** — ナレッジベースからリソースベースのポリシーを削除します。

```
DELETE /resourcepolicy/{{{knowledgeBaseArn}}} HTTP/1.1
```

## リソースポリシーのバージョニング
<a name="kb-managed-cross-account-version-parameter"></a>

を呼び出すと`PutResourcePolicy`、API はポリシーの最新バージョン`policyRevisionId`を表す を返します。オプションで、このリビジョン ID を後続の`PutResourcePolicy`呼び出しに含めて、オプティミスティックロックを適用できます。
+ 現在のバージョン`policyRevisionId`に一致する を指定すると、更新は成功し、新しいリビジョン ID が返されます。
+ 現在のバージョンと`policyRevisionId`一致しない を指定した場合 (別のプリンシパルがポリシーを更新したため）、呼び出しは競合エラーで失敗します。現在のポリシーを取得し、変更をマージして、再試行します。
+ を省略すると`policyRevisionId`、ポリシーは同時変更に関係なく無条件に置き換えられます。

誤って上書きされないように、複数の管理者または自動化システムが同じナレッジベースポリシーを同時に更新する場合は、リビジョン ID を使用します。

## コンシューマーアカウントを設定する
<a name="kb-managed-cross-account-identity-policy"></a>

消費アカウントで、共有ナレッジベースにアクセスする必要があるプリンシパルにアイデンティティベースのポリシーをアタッチします。ポリシーでは、所有者アカウントのナレッジベース ARN で対応する Amazon Bedrock アクションを許可する必要があります。

**アイデンティティベースのポリシーの例**

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve",
                "bedrock:GetDocumentContent"
            ],
            "Resource": "arn:aws:bedrock:{{REGION}}:{{OWNER_ACCOUNT_ID}}:knowledge-base/{{KB_ID}}"
        }
    ]
}
```