

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AgentCore 运行时的 IAM 权限
<a name="runtime-permissions"></a>

以下是在运行时创建代理所需的 IAM 权限以及代理在 AgentCore 运行 AgentCore 时运行所需的执行角色权限。您还可以使用基于资源的策略来控制对运行时资源的访问权限。

有关使用基于资源的策略控制对 AgentCore 运行时资源的访问权限的信息，请参阅 Amazon Bedro AgentCore [ ck 的](resource-based-policies.md)Resource-based 政策。

**Topics**
+ [使用亚马逊 Bedrock AgentCore](#runtime-permissions-use-agentcore)
+ [使用 AgentCore CLI](#runtime-permissions-cli)
+ [亚马逊 Bedrock AgentCore 控制台的用户权限](#runtime-permissions-console)
+ [在运行时运行代理的 AgentCore 执行角色](#runtime-permissions-execution)

## 使用亚马逊 Bedrock AgentCore
<a name="runtime-permissions-use-agentcore"></a>

要使用亚马逊 Bedrock AgentCore，您可以将[BedrockAgentCoreFullAccess](https://docs.amazonaws.cn/aws-managed-policy/latest/reference/BedrockAgentCoreFullAccess.html) Amazon 托管策略附加到您的 IAM 用户或 IAM 角色。该 Amazon 托管策略授予广泛的权限`GetWorkloadAccessTokenForUserId`，包括允许使用呼叫者提供的用户标识符字符串颁发工作负载访问令牌，而无需验证 IdP 令牌。我们建议通过复制相关声明并将资源限制为您的特定用例来创建仅具有应用程序所需权限的自定义策略。对于您的应用程序有 JWT 令牌可用的生产部署，请明确拒绝`GetWorkloadAccessTokenForUserId`并仅`GetWorkloadAccessTokenForJWT`授予许可。有关更多信息，请参阅[获取工作负载访问令牌](get-workload-access-token.md)。要使用 C AgentCore LI，您需要[额外的](#runtime-permissions-cli)权限。

## 使用 AgentCore CLI
<a name="runtime-permissions-cli"></a>

要使用 AgentCore CLI，请将以下 IAM 策略附加到您的 IAM 用户或角色。要更改 IAM 权限，请参阅[更改 IAM 用户的权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_users_change-permissions.html)。

**重要**  
 AgentCore CLI 创建的 IAM 策略专为开发和测试目的而设计。这些权限授予了广泛的访问权限以促进快速原型设计，不适用于生产环境。对于生产部署，创建遵循最低权限原则的自定义 IAM 策略，并将权限限制为仅限您的 Amazon Bedrock AgentCore 应用程序所需的特定资源和操作。有关完整的 IAM 安全指南，请参阅 AgentCore 运行时[安全最佳实践](runtime-security-best-practices.md)。

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "IAMRoleManagement",
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:DeleteRole",
                "iam:GetRole",
                "iam:PutRolePolicy",
                "iam:DeleteRolePolicy",
                "iam:AttachRolePolicy",
                "iam:DetachRolePolicy",
                "iam:TagRole",
                "iam:ListRolePolicies",
                "iam:ListAttachedRolePolicies"
            ],
            "Resource": [
                "arn:aws:iam::*:role/*BedrockAgentCore*",
                "arn:aws:iam::*:role/service-role/*BedrockAgentCore*"
            ]
        },
        {
            "Sid": "CodeBuildProjectAccess",
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuild",
                "codebuild:BatchGetBuilds",
                "codebuild:ListBuildsForProject",
                "codebuild:CreateProject",
                "codebuild:UpdateProject",
                "codebuild:BatchGetProjects"
            ],
            "Resource": [
                "arn:aws:codebuild:*:*:project/bedrock-agentcore-*",
                "arn:aws:codebuild:*:*:build/bedrock-agentcore-*"
            ]
        },
        {
            "Sid": "CodeBuildListAccess",
            "Effect": "Allow",
            "Action": [
                "codebuild:ListProjects"
            ],
            "Resource": "*"
        },
        {
            "Sid": "IAMPassRoleAccess",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::*:role/AmazonBedrockAgentCore*",
                "arn:aws:iam::*:role/service-role/AmazonBedrockAgentCore*"
            ]
        },
        {
            "Sid": "CloudWatchLogsAccess",
            "Effect": "Allow",
            "Action": [
                "logs:GetLogEvents",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group:/aws/bedrock-agentcore/*",
                "arn:aws:logs:*:*:log-group:/aws/codebuild/*"
            ]
        },
        {
            "Sid": "S3Access",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket",
                "s3:CreateBucket",
                "s3:PutLifecycleConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::bedrock-agentcore-*",
                "arn:aws:s3:::bedrock-agentcore-*/*"
            ]
        },
        {
            "Sid": "ECRRepositoryAccess",
            "Effect": "Allow",
            "Action": [
                "ecr:CreateRepository",
                "ecr:DescribeRepositories",
                "ecr:GetRepositoryPolicy",
                "ecr:InitiateLayerUpload",
                "ecr:CompleteLayerUpload",
                "ecr:PutImage",
                "ecr:UploadLayerPart",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:ListImages",
                "ecr:TagResource"
            ],
            "Resource": [
                "arn:aws:ecr:*:*:repository/bedrock-agentcore-*"
            ]
        },
        {
            "Sid": "ECRAuthorizationAccess",
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        }
    ]
}
```

## 亚马逊 Bedrock AgentCore 控制台的用户权限
<a name="runtime-permissions-console"></a>

将[BedrockAgentCoreFullAccess](https://docs.amazonaws.cn/aws-managed-policy/latest/reference/BedrockAgentCoreFullAccess.html)策略附加到控制台角色。此外，如果您希望服务控制台自动创建执行角色，请为 IAM 添加以下权限。

```
{
"Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Sid": "IAMRoleAccess",
    "Effect": "Allow",
    "Action": ["iam:CreateRole"],
    "Resource": ["arn:aws:iam::*:role/service-role/AmazonBedrockAgentCoreRuntimeDefaultServiceRole-*"]
  }, {
    "Sid": "IAMPolicyAccess",
    "Effect": "Allow",
    "Action": ["iam:CreatePolicy"],
    "Resource": ["arn:aws:iam::*:policy/service-role/AmazonBedrockAgentCoreRuntimeExecutionPolicy_*"]
  }, {
    "Sid": "IAMRolePolicyAccess",
    "Effect": "Allow",
    "Action": ["iam:AttachRolePolicy"],
    "Resource": ["arn:aws:iam::*:role/service-role/AmazonBedrockAgentCoreRuntimeDefaultServiceRole-*"],
    "Condition": {
      "ArnLike": {
        "iam:PolicyARN": "arn:aws:iam::*:policy/service-role/AmazonBedrockAgentCoreRuntimeExecutionPolicy_*"
      }
    }
  }]
}
```

## 在运行时运行代理的 AgentCore 执行角色
<a name="runtime-permissions-execution"></a>

要在 R AgentCore untime 中运行代理或工具，您需要 Amazon 身份和访问管理执行角色。有关创建 IAM 角色的信息，请参阅创建 [ IAM 角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create.html)。

**注意**  
如果您的账户中启用了角色管理器，则会为您 AgentCore 附加角色，此处描述的角色选择步骤将替换为 “**自定义**” 选项。要使用其它角色，请选择**自定义**。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 角色创建](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create.html)。

### 亚马逊 Bedrock AgentCore 直接部署执行角色
<a name="runtime-permissions-direct-deploy-execution"></a>

亚马逊 Bedrock AgentCore 直接部署执行角色是亚马逊 Bedrock 为运行代理而 AgentCore 承担的 IAM 角色。替换以下内容：
+  `us-east-1`使用您正在使用的 Amazon 区域
+  `123456789012`使用您的 Amazon 账户 ID
+  {{agentName}}上面写着你的代理人的名字。在创建角色和 AgentCore 运行时之前，您需要确定代理名称。

```
{
"Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "logs:DescribeLogStreams",
      "logs:CreateLogGroup"
    ],
    "Resource": [
      "arn:aws:logs:us-east-1:123456789012:log-group:/aws/bedrock-agentcore/runtimes/*"
    ]
  }, {
    "Effect": "Allow",
    "Action": [
      "logs:PutResourcePolicy"
    ],
    "Resource": [
      "arn:aws:logs:us-east-1:123456789012:log-group:/aws/bedrock-agentcore/runtimes/agentName-*"
    ]
  }, {
    "Effect": "Allow",
    "Action": ["logs:DescribeLogGroups"],
    "Resource": ["arn:aws:logs:us-east-1:123456789012:log-group:*"]
  }, {
    "Effect": "Allow",
    "Action": [
      "logs:CreateLogStream",
      "logs:PutLogEvents"
    ],
    "Resource": [
      "arn:aws:logs:us-east-1:123456789012:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*"
    ]
  }, {
    "Effect": "Allow",
    "Action": [
      "xray:PutTraceSegments",
      "xray:PutTelemetryRecords",
      "xray:GetSamplingRules",
      "xray:GetSamplingTargets"
    ],
    "Resource": ["*"]
  }, {
    "Effect": "Allow",
    "Resource": "*",
    "Action": "cloudwatch:PutMetricData",
    "Condition": {
      "StringEquals": {
        "cloudwatch:namespace": "bedrock-agentcore"
      }
    }
  }, {
    "Sid": "BedrockModelInvocation",
    "Effect": "Allow",
    "Action": [
      "bedrock:InvokeModel",
      "bedrock:InvokeModelWithResponseStream"
    ],
    "Resource": [
      "arn:aws:bedrock:*::foundation-model/*",
      "arn:aws:bedrock:us-east-1:123456789012:*"
    ]
  }]
}
```

### AgentCore 运行时执行角色
<a name="runtime-permissions-execution-role"></a>

 AgentCore 运行时执行角色是 Runtime 为 AgentCore 运行代理而承担的 IAM 角色。替换以下内容：
+  `us-east-1`使用您正在使用的 Amazon 区域
+  `123456789012`使用您的 Amazon 账户 ID
+  {{agentName}}上面写着你的代理人的名字。在创建角色和 AgentCore 运行时之前，您需要确定代理名称。

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ECRImageAccess",
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": [
                "arn:aws:ecr:us-east-1:123456789012:repository/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogStreams",
                "logs:CreateLogGroup"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:/aws/bedrock-agentcore/runtimes/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:PutResourcePolicy"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:/aws/bedrock-agentcore/runtimes/agentName-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*"
            ]
        },
        {
            "Sid": "ECRTokenAccess",
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        },
        {
        "Effect": "Allow",
        "Action": [
            "xray:PutTraceSegments",
            "xray:PutTelemetryRecords",
            "xray:GetSamplingRules",
            "xray:GetSamplingTargets"
            ],
         "Resource": [ "*" ]
         },
         {
            "Effect": "Allow",
            "Resource": "*",
            "Action": "cloudwatch:PutMetricData",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": "bedrock-agentcore"
                }
            }
        },
        {
            "Sid": "GetAgentAccessToken",
            "Effect": "Allow",
            "Action": [
                "bedrock-agentcore:GetWorkloadAccessToken",
                "bedrock-agentcore:GetWorkloadAccessTokenForJWT",
                "bedrock-agentcore:GetWorkloadAccessTokenForUserId"
            ],
            "Resource": [
              "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default",
              "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default/workload-identity/agentName-*"
            ]
        },
         {"Sid": "BedrockModelInvocation",
         "Effect": "Allow",
         "Action": [
                "bedrock:InvokeModel",
                "bedrock:InvokeModelWithResponseStream"
              ],
        "Resource": [
            "arn:aws:bedrock:*::foundation-model/*",
            "arn:aws:bedrock:us-east-1:123456789012:*"
        ]
        }
    ]
}
```

### AgentCore 运行时信任政策
<a name="runtime-permissions-trust-policy"></a>

 AgentCore 运行时执行角色必须包含以下信任策略，允许 AgentCore 运行时代入该角色。

在策略中，替换：
+  `us-east-1`使用您正在使用的 Amazon 区域
+  `123456789012`使用您的 Amazon 账户 ID

要将信任策略添加到 AgentCore Runtime 执行角色，请转到 Amazon 管理控制台，导航到该角色，选择**信任关系**选项卡，然后选择**编辑信任策略**。

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