

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

# Amazon Bedrock で Amazon Bedrock Flows のサービスロールを作成する
<a name="flows-permissions"></a>

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

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

Amazon Bedrock Flows のカスタムサービスロールを作成するには、[AWS「 サービスにアクセス許可を委任するロールの作成」の手順に従って IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)を作成します。次に、次のアクセス許可をこのロールにアタッチします。
+ 信頼ポリシー
+ 次の 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 がコンソールで自動的に作成するサービスロールを使用している場合、フローを保存すると、修正されたアクセス許可が動的にアタッチされます。

**Topics**
+ [信頼関係](#flows-permissions-trust)
+ [フローサービスロールのアイデンティティベースのアクセス許可。](#flows-permissions-identity)

## 信頼関係
<a name="flows-permissions-trust"></a>

次の信頼ポリシーをフロー実行ロールにアタッチして、Amazon Bedrock がこのロールを引き受け、フローを管理することを許可します。必要に応じて {{values}} を置き換えます。このポリシーには、セキュリティのベストプラクティスとして使用することを推奨する `Condition` フィールドに、オプションの条件キー (「[Amazon Bedrock の条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)」および「[AWS のグローバル条件コンテキストキー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)」を参照) が含まれています。

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

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

****  

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

------

## フローサービスロールのアイデンティティベースのアクセス許可。
<a name="flows-permissions-identity"></a>

必要に応じて {{values}} を置き換えて、サービスロールのアクセス許可を付与するには、次のポリシーをアタッチします。ポリシーには、次のステートメントが含まれます。ユースケースに適用されない場合は、ステートメントを省略します。このポリシーには、セキュリティのベストプラクティスとして使用することを推奨する `Condition` フィールドに、オプションの条件キー (「[Amazon Bedrock の条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)」および「[AWS のグローバル条件コンテキストキー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)」を参照) が含まれています。
+ フローが使用する 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` リストに追加します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "{{InvokeModel}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}::foundation-model/{{ModelId}}"
            ]
        },
        {
            "Sid": "{{InvokeProvisionedThroughput}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:GetProvisionedModelThroughput"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:provisioned-model/{{ModelId}}"
            ]
        },
        {
            "Sid": "{{InvokeCustomModel}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:GetCustomModel"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:custom-model/{{ModelId}}"
            ]
        },
        {
            "Sid": "{{UsePromptFromPromptManagement}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:RenderPrompt"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:prompt/{{PromptId}}"
            ]
        },
        {
            "Sid": "{{QueryKnowledgeBase}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:knowledge-base/{{KnowledgeBaseId}}"
            ]
        },
        {
            "Sid": "{{InvokeAgent}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeAgent"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:agent-alias/{{AgentId}}/{{AgentAliasId}}"
            ]
        },
        {
            "Sid": "{{AccessS3Bucket}}",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "{{123456789012}}"
                }
            }
        },
        {
            "Sid": "{{WriteToS3Bucket}}",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "{{123456789012}}"
                }
            }
        },
        {
            "Sid": "{{GuardrailPermissions}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:ApplyGuardrail"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:guardrail/{{GuardrailId}}"
            ]
        },
        {
            "Sid": "{{LambdaPermissions}}",
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:{{us-east-1}}:{{123456789012}}:function:FunctionId"
            ]
        },
        {
            "Sid": "{{AmazonLexPermissions}}",
            "Effect": "Allow",
            "Action": [
                "lex:RecognizeUtterance"
            ],
            "Resource": [ 
                "arn:aws:lex:{{us-east-1}}:{{123456789012}}:bot-alias/{{BotId}}/{{BotAliasId}}"
            ]
        },
        {
            "Sid": "{{KMSPermissions}}",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{KeyId}}"
            ],
             "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "{{123456789012}}"
                }
            }
        }
    ]
}
```

------