

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 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)。然後，將下列許可連接到角色。
+ 信任政策
+ 下列身分型許可：
  + 存取流程將使用的 Amazon Bedrock 基本模型。將流程中使用的每個模型新增至 `Resource` 清單。
  + 如果您使用佈建輸送量調用模型，則存取和調用佈建模型的許可。將流程中使用的每個模型新增至 `Resource` 清單。
  + 如果您調用自訂模型，則存取和調用自訂模型的許可。將流程中使用的每個模型新增至 `Resource` 清單。
  + 根據您新增至流程之節點的許可：
    + 如果您包含使用提示管理提示的提示節點，則需要存取提示的許可。將流程中使用的每個提示新增至 `Resource` 清單。
    + 如果您包含知識庫節點，則需要查詢知識庫的許可。將流程中查詢的每個知識庫新增至 `Resource` 清單。
    + 如果您包含代理程式節點，則需要調用代理程式別名的許可。將流程中調用的每個代理程式新增至 `Resource` 清單。
    + 如果您包含 S3 擷取節點，則需要存取要從中擷取資料的 Amazon S3 儲存貯體的許可。將要從中擷取資料的每個儲存貯體新增至 `Resource` 清單。
    + 如果您包含 S3 儲存節點，則需要許可才能寫入要儲存輸出資料的 Amazon S3 儲存貯體。新增將資料寫入 `Resource` 清單的每個儲存貯體。
    + 如果您包含知識庫節點或提示節點的防護機制，則需要在流程中套用防護機制的許可。將流程中使用的每個防護機制新增至 `Resource` 清單。
    + 如果您包含 Lambda 節點，則需要調用 Lambda 函數的許可。新增每個需要調用到 `Resource` 清單的 Lambda 函數。
    + 如果您包含 Amazon Lex 節點，則需要使用 Amazon Lex 機器人的許可。新增每個需要用於 `Resource` 清單的機器人別名。
    + 如果您加密流程中調用的任何資源，則需要解密金鑰的許可。將每個金鑰新增至 `Resource` 清單。
+ 如果您加密流程，則也需要將金鑰政策連接至您用來加密流程的 KMS 金鑰。

**注意**  
最近已實作下列變更：  
先前，使用 Amazon Bedrock 服務主體叫用 AWS Lambda和 Amazon Lex 資源。 Amazon Lex 對於在 2024-11-22 之後建立的流程，此行為正在變更，Amazon Bedrock Flows 服務角色將用於叫用 AWS Lambda和 Amazon Lex 資源。如果您在 2024-11-22 之前建立任何使用其中一個資源的流程，您應該使用 AWS Lambda和 Amazon Lex 許可來更新 Amazon Bedrock Flows 服務角色。
先前，提示管理資源是使用 `bedrock:GetPrompt` 動作所轉譯。對於在 2024-11-22 之後建立的流程，此行為正在變更，而 `bedrock:RenderPrompt` 動作將用於轉譯提示資源。如果您在 2024-11-22 之前建立任何使用提示資源的流程，則應該使用 `bedrock:RenderPrompt` 許可更新 Amazon Bedrock Flows 服務角色。
如果您是使用 Amazon Bedrock 在主控台中自動為您建立的服務角色，則 Amazon Bedrock 會在您儲存流程時動態附加修正的許可。

**Topics**
+ [信任關係](#flows-permissions-trust)
+ [流程服務角色的身分型許可。](#flows-permissions-identity)

## 信任關係
<a name="flows-permissions-trust"></a>

將下列信任政策連接至流程執行角色，以允許 Amazon Bedrock 擔任此角色及管理流程。視需要取代這些*值*。政策包含 `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))，建議您將其用作安全最佳實務。

**注意**  
最佳實務是，在建立之後，將 *\$1* 取代為流程 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>

連接下列政策以提供服務角色的許可，並視需要取代這些*值*。政策包含以下陳述式。如果陳述式不適用於您的使用案例，請省略該陳述式。政策包含 `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 函數的許可。新增每個需要調用到 `Resource` 清單的 Lambda 函數。
  + 如果您包含 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"
                }
            }
        }
    ]
}
```

------