Amazon VPC 如何与 IAM 配合使用
在使用 IAM 管理对 Amazon VPC 的访问权限之前,您应该了解哪些 IAM 功能可用于 Amazon VPC。要大致了解 Amazon VPC 和其他 AWS 服务如何与 IAM 一起使用,请参阅《IAM 用户指南》中的 与 IAM 一起使用的 AWS 服务。
使用 IAM 基于身份的策略,您可以指定允许或拒绝的操作。对于部分操作,您可以指定允许或拒绝操作和资源,并指定在什么条件下允许或拒绝操作。Amazon VPC 支持特定的操作、资源和条件键。要了解在 JSON 策略中使用的所有元素,请参阅《IAM 用户指南》中的 IAM JSON 策略元素参考。
操作
管理员可以使用 AWS JSON 策略来指定谁有权访问什么内容。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。
JSON 策略的 Action
元素描述可用于在策略中允许或拒绝访问的操作。策略操作通常与关联的 AWS API 操作同名。有一些例外情况,例如没有匹配 API 操作的仅限权限 操作。还有一些操作需要在策略中执行多个操作。这些附加操作称为相关操作。
在策略中包含操作以授予执行相关操作的权限。
Amazon VPC 与 Amazon EC2 共享其 API 命名空间。Amazon VPC 中的策略操作在操作前面使用以下前缀:ec2:
。例如,要授予用户通过 CreateVpc
API 操作创建 VPC 的权限,您需要授予对 ec2:CreateVpc
操作的访问权限。策略语句必须包含 Action
或 NotAction
元素。
要在单个语句中指定多项操作,请使用逗号将它们隔开,如下例所示。
"Action": [
"ec2:action1",
"ec2:action2"
]
您也可以使用通配符 (*) 指定多个操作。例如,要指定以单词 Describe
开头的所有操作,请包括以下操作。
"Action": "ec2:Describe*"
有关 Amazon EC2 操作的列表,请参阅《服务授权参考》中的 Amazon EC2 定义的操作。
资源
管理员可以使用 AWS JSON 策略来指定谁有权访问什么内容。也就是说,哪个主体 可以对什么资源执行操作,以及在什么条件下执行。
Resource
JSON 策略元素指定要向其应用操作的一个或多个对象。语句必须包含 Resource
或 NotResource
元素。作为最佳实践,请使用其 Amazon 资源名称 (ARN) 指定资源。对于支持特定资源类型(称为资源级权限)的操作,您可以执行此操作。
对于不支持资源级权限的操作(如列出操作),请使用通配符 (*) 指示语句应用于所有资源。
"Resource": "*"
VPC 资源具有下例中显示的 ARN。
arn:${Partition}:ec2:${Region}:${Account}:vpc/${VpcId}
例如,要在语句中指定 vpc-1234567890abcdef0
VPC,请使用以下示例中显示的 ARN。
"Resource": "arn:aws:ec2:us-east-1:123456789012:vpc/vpc-1234567890abcdef0"
要指定在特定区域中属于特定账户的所有 VPC,请使用通配符 (*)。
"Resource": "arn:aws:ec2:us-east-1:123456789012:vpc/*"
无法对特定资源执行某些 Amazon VPC 操作,例如,用于创建资源的操作。在这些情况下,您必须使用通配符 (*)。
"Resource": "*"
许多 Amazon EC2 API 操作涉及多种资源。要在单个语句中指定多个资源,请使用逗号分隔 ARN。
"Resource": [
"resource1",
"resource2"
]
有关 Amazon VPC 资源类型及其 ARN 的列表,请参阅《服务授权参考》中的 Amazon EC2 定义的资源。
条件键
管理员可以使用 AWS JSON 策略来指定谁有权访问什么内容。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。
在 Condition
元素(或 Condition
块)中,可以指定语句生效的条件。Condition
元素是可选的。您可以创建使用条件运算符(例如,等于或小于)的条件表达式,以使策略中的条件与请求中的值相匹配。
如果您在一个语句中指定多个 Condition
元素,或在单个 Condition
元素中指定多个键,则 AWS 使用逻辑 AND
运算评估它们。如果您为单个条件键指定多个值,则 AWS 使用逻辑 OR
运算来评估条件。在授予语句的权限之前必须满足所有的条件。
在指定条件时,您也可以使用占位符变量。例如,只有在使用 IAM 用户名标记 IAM 用户时,您才能为其授予访问资源的权限。有关更多信息,请参阅《IAM 用户指南》中的 IAM 策略元素:变量和标签。
AWS 支持全局条件键和特定于服务的条件键。要查看所有 AWS 全局条件键,请参阅《IAM 用户指南》中的 AWS 全局条件上下文键。
所有 Amazon EC2 操作都支持 aws:RequestedRegion
和 ec2:Region
条件键。有关更多信息,请参阅 示例:仅允许访问特定区域。
Amazon VPC 定义了自己的一组条件键,还支持使用一些全局条件键。要查看 Amazon VPC 条件键的列表,请参阅《服务授权参考》中的 Amazon EC2 的条件键。要了解您可以对哪些操作和资源使用条件键,请参阅 Amazon EC2 定义的操作。
基于 Amazon VPC 资源的策略
基于资源的策略是 JSON 策略文档,它们指定了指定委托人可在 Amazon VPC 资源上执行的操作以及在什么条件下可执行。
要启用跨账户访问,您可以将整个账户或其他账户中的 IAM 实体指定为基于资源的策略中的委托人。将跨账户委托人添加到基于资源的策略只是建立信任关系工作的一半而已。当委托人和资源位于不同的AWS账户中时,还必须授予委托人实体对资源的访问权限。通过将基于身份的策略附加到实体以授予权限。但是,如果基于资源的策略向同一个账户中的主体授予访问权限,则不需要额外的基于身份的策略。有关更多信息,请参阅《IAM 用户指南》中的 IAM 角色与基于资源的策略有何不同。
基于标签的授权
您可以将标签附加到 Amazon VPC 资源,或者在请求中传递标签。要根据标签控制访问,您需要在策略的 条件元素 中使用条件键来提供标签信息。有关更多信息,请参阅《Amazon EC2 用户指南》中的 在创建期间标记资源 和 使用资源标签控制对 EC2 资源的访问。
要查看基于身份的策略(用于根据资源上的标签来限制对该资源的访问)的示例,请参阅在特定 VPC 中启动实例。
IAM 角色
IAM 角色是 AWS 账户中具有特定权限的实体。
使用临时凭证
您可以使用临时凭证进行联合身份登录,担任 IAM 角色或担任跨账户角色。您可以通过调用 AWS STS API 操作(如 AssumeRole 或 GetFederationToken)获得临时安全凭证。
Amazon VPC 支持使用临时凭证。
服务相关角色
服务相关角色允许 AWS 服务访问其他服务中的资源以代表您完成操作。服务相关角色显示在 IAM 账户中,并归该服务所有。IAM 管理员可以查看但不能编辑服务相关角色的权限。
中转网关支持服务相关角色。
服务角色
此功能允许服务代表您担任服务角色。此角色允许服务访问其他服务中的资源以代表您完成操作。服务角色显示在 IAM 账户中,并归该账户所有。这意味着,IAM 管理员可以更改该角色的权限。但是,这样做可能会中断服务的功能。
Amazon VPC 支持流日志的服务角色。创建流日志时,您必须选择允许流日志服务访问 CloudWatch Logs 的角色。有关更多信息,请参阅 用于将流日志发布到 CloudWatch Logs 的 IAM 角色。