Amazon Bedrock ナレッジベースのサービスロールを作成する - Amazon Bedrock

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

Amazon Bedrock ナレッジベースのサービスロールを作成する

Amazon Bedrock が自動的に作成するロールの代わりにナレッジベースのカスタムロールを使用するには、「 AWS サービスにアクセス許可を委任するロールの作成」の手順に従って IAM ロールを作成し、次のアクセス許可をアタッチします。独自のセキュリティに必要なアクセス許可のみを含めるようにしてください。

  • 信頼関係

  • Amazon Bedrock のベースモデルへのアクセス

  • データを保存するデータソースへのアクセス

  • (Amazon OpenSearch Service でベクトルデータベースを作成する場合) OpenSearch Service コレクションへのアクセス許可

  • (Amazon Aurora でベクトルデータベースを作成する場合) Aurora クラスターへのアクセス

  • ( Pineconeまたは でベクトルデータベースを作成する場合Redis Enterprise Cloud) が Pineconeまたは Redis Enterprise Cloud アカウントを認証 AWS Secrets Manager するためのアクセス許可

  • (オプション) 以下のリソースを KMS キーで暗号化する場合、キーを復号化するアクセス許可 (「ナレッジベースリソースの暗号化」を参照)。

    • ナレッジベース

    • ナレッジベースのデータソース

    • Amazon OpenSearch Service のベクトルデータベース

    • のサードパーティーベクトルデータベースのシークレット AWS Secrets Manager

    • データインジェストジョブ

信頼関係

以下のポリシーにより、Amazon Bedrock がこのロールを引き受け、ナレッジベースを作成および管理することができます。使用するポリシーの例を下記に示します。1 つ以上のグローバル条件コンテキストキーを使用して、アクセス許可の範囲を制限できます。詳細については、「AWS グローバル条件コンテキストキー」を参照してください。aws:SourceAccount の値をアカウント ID に設定します。ArnEquals または ArnLike 条件を使用して、範囲を特定のナレッジベースに制限します。

注記

セキュリティ上のベストプラクティスとして、* は特定のナレッジベース ID に置き換えてください (作成後)。

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

Amazon Bedrock モデルにアクセスするためのアクセス許可

ロールがソースデータの組み込みに Amazon Bedrock モデルを使用するためのアクセス許可を提供するには、以下のポリシーをアタッチします。

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

データソースにアクセスするためのアクセス許可

次のデータソースの中から選択して、ロールに必要なアクセス許可をアタッチしてください。

Amazon S3 データソースにアクセスするためのアクセス許可

データソースが Amazon S3 の場合は、次のポリシーをアタッチして、データソースとして接続する S3 バケットにアクセスするアクセス許可をロールに付与します。

データソースを AWS KMS キーで暗号化した場合は、「」の手順に従って、キーを復号するアクセス許可をロールにアタッチしますAmazon S3 のデータソースの AWS KMS キーを復号するアクセス許可

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ListBucketStatement", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::${Bucket}" ], "Condition": { "StringEquals": { "aws:ResourceAccount": [${AccountId}] } } }, { "Sid": "S3GetObjectStatement", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::${BucketAndKeyPrefix}" ], "Condition": { "StringEquals": { "aws:ResourceAccount": [${AccountId}] } } } ] }

Confluence データソースにアクセスするためのアクセス許可

注記

Confluence データソースコネクタはプレビューリリースの段階であり、変更される可能性があります。

以下のポリシーをアタッチして、ロールが Confluence にアクセスするためのアクセス許可を付与します。

注記

secretsmanager:PutSecretValue は、OAuth 2.0 認証で更新トークンを使用する場合にのみ必要です。

Confluence OAuth2.0 のアクセストークンの有効期限は、デフォルトでは 60 分です。データソースの同期 (同期ジョブ) 中にアクセストークンの有効期限が切れた場合、Amazon Bedrock は、指定された更新トークンを使用してアクセストークンを再生成します。その際は、アクセストークンと更新トークンの両方が更新されます。現在の同期ジョブから次の同期ジョブまでトークンを最新の状態で維持するために、Amazon Bedrock にはシークレット認証情報の書き込み/保存のアクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue" ], "Resource": [ "arn:aws:secretsmanager:${Region}:${AccountId}:secret:${secret-id}" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:${Region}:${AccountId}:key/${KeyId}" ], "Condition": { "StringLike": { "kms:ViaService": [ "secretsmanager.${Region}.amazonaws.com" ] } } }, }

Microsoft SharePoint データソースにアクセスするためのアクセス許可

注記

SharePoint データソースコネクタはプレビューリリースの段階であり、変更される可能性があります。

以下のポリシーをアタッチして、ロールが SharePoint にアクセスするためのアクセス許可を付与します。

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

Salesforce データソースにアクセスするためのアクセス許可

注記

Salesforce データソースコネクタはプレビューリリースの段階であり、変更される可能性があります。

以下のポリシーをアタッチして、ロールが Salesforce にアクセスするためのアクセス許可を付与します。

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

ドキュメントでチャットするためのアクセス許可

以下のポリシーをアタッチして、ロールが Amazon Bedrock モデルを使用してドキュメントでチャットするためのアクセス許可を付与します。

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

ユーザーにドキュメントでチャットするためのアクセス権のみを付与する場合は (すべてのナレッジベースでの RetrieveAndGenerate の権限は与えない)、以下のポリシーを使用します。

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

ドキュメントとチャットし、特定のナレッジベースRetrieveAndGenerateで を使用する場合は、${KnowledgeBaseArn} を指定し、次のポリシーを使用します。

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

(オプション) Amazon Kendra GenAI インデックスにアクセスするためのアクセス許可

ナレッジベースの Amazon Kendra GenAI インデックスを作成した場合は、Amazon Bedrock ナレッジベースサービスロールに次のポリシーをアタッチして、インデックスへのアクセスを許可します。ポリシーで、${Partition}${Region}${AccountId}、および ${IndexId} をインデックスの値に置き換えます。複数のインデックスへのアクセスを許可するには、それらをResourceリストに追加します。内のすべてのインデックスへのアクセスを許可するには AWS アカウント、${IndexId} をワイルドカード (*) に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kendra:Retrieve", // To call their Retrieve API "kendra:DescribeIndex" // For validation when creating the KB ], "Resource": "arn:${${Partition}}:kendra:${${Region}}:${${AccountId}}:index/${${IndexId}}" } ] }

(オプション) Amazon OpenSearch Service 内のベクトルデータベースにアクセスするためのアクセス許可

Amazon OpenSearch Service でナレッジベース用のベクトルデータベースを作成した場合は、以下のポリシーを Amazon Bedrock ナレッジベースのサービスロールにアタッチして、コレクションへのアクセスを許可します。${Region}${AccountId} を、データベースが属するリージョンとアカウント ID に置き換えます。Amazon OpenSearch Service コレクションの ID を ${CollectionId} に入力します。複数のコレクションへのアクセスを許可するには、それらを Resource リストに追加します。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "aoss:APIAccessAll" ], "Resource": [ "arn:aws:aoss:${Region}:${AccountId}:collection/${CollectionId}" ] }] }

(オプション) Amazon Aurora データベースクラスターにアクセスするためのアクセス許可

Amazon Aurora でナレッジベース用のデータベース (DB) クラスターを作成した場合は、以下のポリシーを Amazon Bedrock ナレッジベースのサービスロールにアタッチして、DB クラスターへのアクセスを許可し、DB クラスターに対する読み取り/書き込みアクセス許可を提供します。${Region}${AccountId} を、DB クラスターが属するリージョンとアカウント ID に置き換えます。${DbClusterId} に Amazon Aurora データベースクラスターの ID を入力します。複数の DB クラスターへのアクセスを許可するには、それらを Resource リストに追加します。

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

(オプション) AWS Secrets Manager シークレットで設定されたベクトルデータベースにアクセスするためのアクセス許可

ベクトルデータベースに AWS Secrets Manager シークレットが設定されている場合は、Amazon Bedrock ナレッジベースサービスロールに次のポリシーをアタッチして、 AWS Secrets Manager がデータベースにアクセスするためにアカウントを認証できるようにします。${Region}${AccountId} を、データベースが属するリージョンとアカウント ID に置き換えます。${SecretId} をシークレットの ID に置き換えます。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:${Region}:${AccountId}:secret:${SecretId}" ] }] }

シークレットを AWS KMS キーで暗号化した場合は、「」の手順に従って、キーを復号するアクセス許可をロールにアタッチしますナレッジベースを含むベクトルストアの AWS Secrets Manager シークレットを復号するアクセス許可

(オプション) データインジェスト中に一時データストレージの AWS KMS キーを管理する AWS ための のアクセス許可

データソースの取り込みプロセスで一時データストレージ用の AWS KMS キーを作成できるようにするには、Amazon Bedrock ナレッジベースサービスロールに次のポリシーをアタッチします。${Region}${AccountId}、および ${KeyId} を適切な値に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:${Region}:${AccountId}:key/${KeyId}" ] } ] }

(オプション) 別のユーザーの AWS アカウントからデータソースを管理する AWS ための のアクセス許可。

別のユーザーの AWS アカウントへのアクセスを許可するには、別のユーザーのアカウントの Amazon S3 バケットへのクロスアカウントアクセスを許可するロールを作成する必要があります。${BucketName}${BucketOwnerAccountId}、および ${BucketNameAndPrefix} を適切な値に置き換えます。

ナレッジベースロールに必要なアクセス許可

ナレッジベースの作成時 (createKnowledgeBase) に指定するナレッジベースロールには、次の Amazon S3 アクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [{ "Sid": "S3ListBucketStatement", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::${BucketName}" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${BucketOwnerAccountId}" } } },{ "Sid": "S3GetObjectStatement", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::${BucketNameAndPrefix}/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${BucketOwnerAccountId}" } }] }

Amazon S3 バケットが AWS KMS キーを使用して暗号化されている場合は、ナレッジベースロールに以下も追加する必要があります。${BucketOwnerAccountId}${Region} を適切な値に置き換えます。

{ "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 バケットポリシーが必要です。${KbRoleArn}${BucketName}、および ${BucketNameAndPrefix} を適切な値に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example ListBucket permissions", "Effect": "Allow", "Principal": { "AWS": "${KbRoleArn}" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::${BucketName}" ] }, { "Sid": "Example GetObject permissions", "Effect": "Allow", "Principal": { "AWS": "${KbRoleArn}" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::${BucketNameAndPrefix}/*" ] } ] }

クロスアカウント AWS KMS キーポリシーに必要なアクセス許可

クロスアカウント Amazon S3 バケットがそのアカウントの AWS KMS キーを使用して暗号化されている場合、キーの AWS KMS ポリシーには次のポリシーが必要です。${KbRoleArn}${KmsKeyArn} を適切な値に置き換えます。

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