Amazon Bedrock で Amazon Bedrock フローのサービスロールを作成する - Amazon Bedrock

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

Amazon Bedrock で Amazon Bedrock フローのサービスロールを作成する

Amazon Bedrock でフローを作成および管理するには、このページで概説されている必要なアクセス許可を持つサービスロールを使用する必要があります。Amazon Bedrock がコンソールで自動的に作成するサービスロールを使用するか、自分でカスタマイズしたサービスロールを使用できます。

注記

Amazon Bedrock がコンソールで自動的に作成するサービスロールを使用する場合、フローにノードを追加してフローを保存すると、アクセス許可が動的にアタッチされます。ただし、ノードを削除する場合、アクセス許可は削除されないため、不要になったアクセス許可を削除する必要があります。作成したロールのアクセス許可を管理するには、IAM ユーザーガイドの「ロールの修正」の手順に従います。

Amazon Bedrock Flows のカスタムサービスロールを作成するには、「 AWS サービスにアクセス許可を委任するロールの作成」の手順に従って IAM ロールを作成します。次に、次のアクセス許可をこのロールにアタッチします。

  • 信頼ポリシー

  • 次の ID ベースのアクセス許可:

    • フローが使用する 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 Lambda は、Amazon Bedrock サービスプリンシパルを使用して Amazon Lex リソースが呼び出されていました。この動作は、2024-11-22 以降に作成されたフローでは変更されており、Amazon Bedrock Flows サービスロールを使用して AWS Lambda および Amazon Lex リソースを呼び出します。2024-11-22 より前にこれらのリソースのいずれかを使用するフローを作成した場合は、Amazon Bedrock Flows サービスロールを AWS Lambda および Amazon Lex アクセス許可で更新する必要があります。

  • 以前は、プロンプト管理リソースは bedrock:GetPromptアクションを使用してレンダリングされていました。この動作は、2024-11-22 以降に作成されたフローで変更されており、 bedrock:RenderPromptアクションを使用してプロンプトリソースをレンダリングします。2024-11-22 より前にプロンプトリソースを使用するフローを作成した場合は、Amazon Bedrock Flows サービスロールを アクセスbedrock:RenderPrompt許可で更新する必要があります。

Amazon Bedrock がコンソールで自動的に作成したサービスロールを使用している場合、フローを保存すると、Amazon Bedrock は修正されたアクセス許可を動的にアタッチします。

信頼関係

次の信頼ポリシーをフロー実行ロールにアタッチして、Amazon Bedrock がこのロールを引き受け、フローを管理できるようにします。必要に応じて values を置き換えます。このポリシーには、セキュリティのベストプラクティスとして使用することを推奨する Condition フィールドに、オプションの条件キー (「Amazon Bedrock の条件キー」および「AWS のグローバル条件コンテキストキー」を参照) が含まれています。

注記

ベストプラクティスとして、* は作成後にフロー ID に置き換えます。

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

フローサービスロールのアイデンティティベースのアクセス許可。

必要に応じて values を置き換えて、サービスロールのアクセス許可を付与するには、次のポリシーをアタッチします。ポリシーには、次のステートメントが含まれます。ユースケースに適用されない場合は、ステートメントを省略します。このポリシーには、セキュリティのベストプラクティスとして使用することを推奨する Condition フィールドに、オプションの条件キー (「Amazon Bedrock の条件キー」および「AWS のグローバル条件コンテキストキー」を参照) が含まれています。

  • フローが使用する 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 リストに追加します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "InvokeModel", "Effect": "Allow", "Action": [ "bedrock:InvokeModel" ], "Resource": [ "arn:aws:bedrock:${region}::foundation-model/${model-id}" ] }, { "Sid": "InvokeProvisionedThroughput", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:GetProvisionedModelThroughput" ], "Resource": [ "arn:aws:bedrock:${region}:${account-id}:provisioned-model/${model-id}" ] }, { "Sid": "InvokeCustomModel", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:GetCustomModel" ], "Resource": [ "arn:aws:bedrock:${region}:${account-id}:custom-model/${model-id}" ] }, { "Sid": "UsePromptFromPromptManagement", "Effect": "Allow", "Action": [ "bedrock:RenderPrompt" ], "Resource": [ "arn:aws:bedrock:${region}:${account-id}:prompt/${prompt-id}" ] }, { "Sid": "QueryKnowledgeBase", "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:RetrieveAndGenerate" ], "Resource": [ "arn:aws:bedrock:${region}:${account-id}:knowledge-base/knowledge-base-id" ] }, { "Sid": "InvokeAgent", "Effect": "Allow", "Action": [ "bedrock:InvokeAgent" ], "Resource": [ "arn:aws:bedrock:${region}:${account-id}:agent-alias/${agent-alias-id}" ] }, { "Sid": "AccessS3Bucket", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::${bucket-name}/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${account-id}" } } }, { "Sid": "WriteToS3Bucket", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::${bucket-name}", "arn:aws:s3:::${bucket-name}/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${account-id}" } } }, { "Sid": "GuardrailPermissions", "Effect": "Allow", "Action": "Action": [ "bedrock:ApplyGuardrail" ], "Resource": [ "arn:${Partition}:bedrock:${Region}:${Account}:guardrail/${GuardrailId}" ] }, { "Sid": "LambdaPermissions", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:${region}:${account-id}:function:${function-name}" ] }, { "Sid": "AmazonLexPermissions", "Effect": "Allow", "Action": [ "lex:RecognizeUtterance" ], "Resource": [ "arn:aws:lex:${region}:${account-id}:bot-alias/${bot-id}/${bot-alias-id}" ] }, { "Sid": "KMSPermissions", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:${region}:${account-id}:key/${key-id}" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${account-id}" } } } ] }