本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
App Runner 是如何使用的 IAM
在使用管理IAM访问权限之前 AWS App Runner,您应该了解 App Runner 有哪些IAM功能可供使用。要全面了解 App Runner 和其他 AWS 服务的使用方式IAM,请参阅《IAM用户指南》IAM中的 “与之配合使用的AWS 服务”。
有关其他 App Runner 安全主题,请参阅应用程序运行器中的安全性。
App Runner 基于身份的政策
通过使用 IAM 基于身份的策略,您可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。App Runner 支持特定的操作、资源和条件键。要了解您在JSON策略中使用的所有元素,请参阅IAM用户指南中的IAMJSON策略元素参考。
操作
管理员可以使用 AWS JSON策略来指定谁有权访问什么。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。
JSON策略Action
元素描述了可用于在策略中允许或拒绝访问的操作。策略操作通常与关联的 AWS API操作同名。也有一些例外,例如没有匹配API操作的仅限权限的操作。还有一些操作需要在策略中执行多个操作。这些附加操作称为相关操作。
在策略中包含操作以授予执行关联操作的权限。
App Runner 中的策略操作在操作前使用以下前缀:apprunner:
. 例如,要授予某人通过 Amazon 操作运行亚马逊EC2实例的权限,您需要将该EC2RunInstances
APIec2:RunInstances
操作包含在他们的策略中。策略语句必须包含 Action
或 NotAction
元素。App Runner 定义了自己的一组操作,这些操作描述了您可以使用此服务执行的任务。
要在单个语句中指定多项操作,请使用逗号将它们隔开,如下所示:
"Action": [ "apprunner:CreateService", "apprunner:CreateConnection" ]
您也可以使用通配符 (*) 指定多个操作。例如,要指定以单词 Describe
开头的所有操作,包括以下操作:
"Action": "apprunner:Describe*"
要查看 App Runner 操作列表,请参阅《服务授权参考》 AWS App Runner中定义的操作。
资源
管理员可以使用 AWS JSON策略来指定谁有权访问什么。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。
Resource
JSON策略元素指定要应用操作的一个或多个对象。语句必须包含 Resource
或 NotResource
元素。最佳做法是,使用资源的 Amazon 资源名称 (ARN) 来指定资源。对于支持特定资源类型(称为资源级权限)的操作,您可以执行此操作。
对于不支持资源级权限的操作(如列出操作),请使用通配符 (*) 指示语句应用于所有资源。
"Resource": "*"
App Runner 资源具有以下ARN结构:
arn:aws:apprunner:
region
:account-id
:resource-type
/resource-name
[/resource-id
]
有关格式的更多信息ARNs,请参阅中的 Amazon 资源名称 (ARNs) 和 AWS 服务命名空间。AWS 一般参考
例如,要在语句中指定my-service
服务,请使用以下命令ARN:
"Resource": "arn:aws:apprunner:us-east-1:123456789012:service/my-service"
要指定属于特定账户的所有服务,请使用通配符 (*):
"Resource": "arn:aws:apprunner:us-east-1:123456789012:service/*"
某些 App Runner 操作(例如用于创建资源的操作)无法对特定资源执行。在这些情况下,您必须使用通配符 (*)。
"Resource": "*"
要查看 App Runner 资源类型及其列表ARNs,请参阅《服务授权参考》 AWS App Runner中定义的资源。要了解您可以使用哪些操作来指定每ARN种资源,请参阅由定义的操作 AWS App Runner。
条件键
管理员可以使用 AWS JSON策略来指定谁有权访问什么。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。
在 Condition
元素(或 Condition
块)中,可以指定语句生效的条件。Condition
元素是可选的。您可以创建使用条件运算符(例如,等于或小于)的条件表达式,以使策略中的条件与请求中的值相匹配。
如果您在一个语句中指定多个 Condition
元素,或在单个 Condition
元素中指定多个键,则 AWS 使用逻辑 AND
运算评估它们。如果您为单个条件键指定多个值,则使用逻辑OR
运算来 AWS 评估条件。在授予语句的权限之前必须满足所有的条件。
在指定条件时,您也可以使用占位符变量。例如,仅当 IAM 用户使用其 IAM 用户名进行标记时,您才可为其授予访问资源的权限。有关更多信息,请参阅《IAM 用户指南》中的 IAM 策略元素:变量和标签。
AWS 支持全局条件密钥和特定于服务的条件密钥。要查看所有 AWS 全局条件键,请参阅《IAM用户指南》中的AWS 全局条件上下文密钥。
App Runner 支持使用一些全局条件键。要查看所有 AWS 全局条件键,请参阅IAM用户指南中的AWS 全局条件上下文密钥。
App Runner 定义了一组特定于服务的条件键。此外,App Runner 支持基于标签的访问控制,该控制是使用条件键实现的。有关详细信息,请参阅基于 App Runner 标签的授权。
要查看 App Runner 条件键列表,请参阅《服务授权参考》 AWS App Runner中的条件密钥。要了解可以使用条件键的操作和资源,请参阅由定义的操作 AWS App Runner。
示例
要查看 App Runner 基于身份的策略示例,请参阅。App Runner 基于身份的策略示例
App Runner 基于资源的策略
App Runner 不支持基于资源的策略。
基于 App Runner 标签的授权
您可以将标签附加到 App Runner 资源,也可以在请求中将标签传递给 App Runner。要基于标签控制访问,您需要使用 apprunner:ResourceTag/
、key-name
aws:RequestTag/
或 key-name
aws:TagKeys
条件键在策略的条件元素中提供标签信息。有关为 App Runner 资源添加标签的更多信息,请参阅配置 App Runner 服务。
要查看基于身份的策略(用于根据资源上的标签来限制对该资源的访问)的示例,请参阅根据标签控制对 App Runner 服务的访问权限。
App Runner 用户权限
要使用 App Runner,IAM用户需要有 App Runner 操作的权限。向用户授予权限的常用方法是将策略附加到IAM用户或群组。有关管理用户权限的更多信息,请参阅《IAM用户指南》中的更改IAM用户权限。
App Runner 提供了两个托管策略,您可以将其附加到您的用户。
-
AWSAppRunnerReadOnlyAccess
— 授予列出和查看有关 App Runner 资源详细信息的权限。 -
AWSAppRunnerFullAccess
— 授予所有 App Runner 操作的权限。
要更精细地控制用户权限,您可以创建自定义策略并将其附加到您的用户。有关详细信息,请参阅《IAM用户指南》中的创建IAM策略。
有关用户策略的示例,请参阅用户策略。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apprunner:List*", "apprunner:Describe*" ], "Resource": "*" } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": [ "arn:aws:iam::*:role/aws-service-role/apprunner.amazonaws.com/AWSServiceRoleForAppRunner", "arn:aws:iam::*:role/aws-service-role/networking.apprunner.amazonaws.com/AWSServiceRoleForAppRunnerNetworking" ], "Condition": { "StringLike": { "iam:AWSServiceName": [ "apprunner.amazonaws.com", "networking.apprunner.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "apprunner.amazonaws.com" } } }, { "Sid": "AppRunnerAdminAccess", "Effect": "Allow", "Action": "apprunner:*", "Resource": "*" } ] }
应用程序运行者IAM角色
IAM角色是您内部具有特定权限 AWS 账户 的实体。
服务相关角色
服务相关角色允许 AWS 服务访问其他服务中的资源以代表您完成操作。服务相关角色显示在您的 IAM 账户中,并由该服务拥有。IAM 管理员可以查看但不能编辑服务相关角色的权限。
App Runner 支持与服务相关的角色。有关创建或管理 App Runner 服务相关角色的信息,请参阅为 App Runner 使用服务相关角色。
服务角色
此功能允许服务代表您担任服务角色。此角色允许服务访问其他服务中的资源以代表您完成操作。服务角色显示在您的 IAM 账户中,并由该账户拥有。这意味着IAM用户可以更改该角色的权限。但是,这样做可能会中断服务的功能。
App Runner 支持几个服务角色。
访问角色
访问角色是 App Runner 用于访问您账户中亚马逊弹性容器注册表 (AmazonECR) 中的图像的角色。在亚马逊上访问图片是必需的ECR,Amazon P ECR ublic 不是必需的。在 Amazon 中基于图像创建服务之前ECR,IAM请使用创建服务角色并在其中使用AWSAppRunnerServicePolicyForECRAccess
托管策略。然后,当您在SourceConfiguration参数的AuthenticationConfiguration成员CreateServiceAPI中调用或使用 App Runner 控制台创建服务时,可以将此角色传递给 App Runner。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:DescribeImages", "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }
注意
如果您为访问角色创建了自己的自定义策略,请务必"Resource": "*"
为ecr:GetAuthorizationToken
操作指定。令牌可用于访问您有权访问的任何 Amazon ECR 注册表。
创建访问角色时,请务必添加一个将 App Runner 服务主体声明build.apprunner.amazonaws.com
为可信实体的信任策略。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "build.apprunner.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
如果您使用 App Runner 控制台创建服务,则控制台可以自动为您创建访问角色并为新服务选择该角色。控制台还会列出您账户中的其他角色,您可以根据需要选择其他角色。
实例角色
实例角色是一个可选角色,App Runner 使用该角色为 AWS 服务计算实例所需的服务操作提供权限。如果您的应用程序代码调用 AWS 操作 (APIs),则需要向 App Runner 提供实例角色。要么在您的实例角色中嵌入所需的权限,要么创建自己的自定义策略并将其用于实例角色。我们无法预测您的代码使用哪些调用。因此,我们不提供用于此目的的托管政策。
在创建 App Runner 服务之前,IAM请使用创建具有所需自定义或嵌入式策略的服务角色。然后,当您在InstanceConfiguration参数的InstanceRoleArn
成员CreateServiceAPI中调用或使用 App Runner 控制台创建服务时,您可以将此角色作为实例角色传递给 App Runner。
创建实例角色时,请务必添加一个将 App Runner 服务委托人声明tasks.apprunner.amazonaws.com
为可信实体的信任策略。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "tasks.apprunner.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
如果您使用 App Runner 控制台创建服务,则控制台会列出您账户中的角色,您可以选择为此目的创建的角色。
有关创建服务的信息,请参阅创建 App Runner 服务。