本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS Sign-In 条件键参考
本页列出了可在 AWS Sign-In 基于资源的策略和资源控制策略 (RCP) 中使用的条件密钥,并显示每个密钥适用的评估阶段和操作。只有特定signin:PrincipalArn于 AWS Sign-In;其他是 AWS 全局条件键。有关全局键的定义,请参阅AWS 全局条件上下文键。
有关《服务授权参考》中操作和条件键的完整列表,请参阅的操作、资源和条件键 AWS Sign-In。
Network-based 条件键
这些条件键检查请求的来源。 AWS Sign-In 对基于资源的策略和 RCP 中的所有 AWS Sign-In 操作(signin:Authenticatesignin:AuthorizeOAuth2Access、和signin:CreateOAuth2Token)进行评估。
| 条件键 | 运算符 | 说明 | 使用规则 |
|---|---|---|---|
aws:SourceIp |
IpAddress, NotIpAddress |
公有 IP 地址或 CIDR 范围 | 当请求使用 VPC 终端节点时不存在。在同一语句中组合 VPC-based条件时使用IfExists运算符。 |
aws:SourceVpc |
StringEquals,
StringNotEquals |
VPC ID (vpc-xxxxxxxx) |
仅当请求使用 VPC 终端节点时才会出现。与一起使用aws:RequestedRegion可防止跨区域 VPC ID 冲突。 |
aws:SourceVpce |
StringEquals,
StringNotEquals |
VPC 终端节点 ID (vpce-xxxxxxxx) |
仅当请求使用 VPC 终端节点时才会出现。 |
aws:VpcSourceIp |
IpAddress, NotIpAddress |
VPC 内的私有 IP | 请务必将aws:VpcSourceIp条件键与aws:SourceVpc或aws:SourceVpce条件键一起使用。 |
aws:RequestedRegion |
StringEquals,
StringNotEquals |
目标 AWS 区域代码 | 建议在使用时使用aws:SourceVpc,以防止跨区域 VPC ID 冲突。可以指定多个区域。 |
重要
单个请求包含aws:SourceIp(公共网络)或aws:SourceVpc(VPC 终端节点),而不是两者兼而有之。在编写涵盖两条路径的 deny-unsels 策略时,请使用IfExists运算符(例如NotIpAddressIfExists)或创建单独的语句。
Identity-based 条件键
这些条件键用于检查谁在发出请求。它们仅适用于已确定主体身份的身份验证后操作(signin:AuthorizeOAuth2Access和signin:CreateOAuth2Token)。
| 条件键 | 运算符 | 说明 | 示例 |
|---|---|---|---|
aws:PrincipalArn |
ArnEquals, ArnLike,
ArnNotEquals, StringEquals,
StringLike |
经过身份验证的 IAM 委托人的 ARN | arn:aws:iam::123456789012:user/alice,
arn:aws:iam::123456789012:role/Admin |
aws:PrincipalAccount |
StringEquals,
StringNotEquals |
AWS 委托人的账户 ID | 123456789012 |
Service-specific 条件键:登录:PrincipalArn
以下条件密钥特定于全局密钥 AWS Sign-In ,不是全局 AWS 密钥。它仅在身份验证前评估期间可用。signin:PrincipalArn用于在身份验证完成之前识别发起登录的委托人。这相当于的预身份验证aws:PrincipalArn,只有在身份验证之后才可用。
- 运算符
-
ARN 运算符(
ArnEquals、、ArnLikeArnNotEquals、ArnNotLike)和字符串运算符(StringEquals、StringLike)。 - 可用性
-
AWS Sign-In 在预身份验证阶段(
signin:Authenticate操作)将此密钥包含在请求上下文中。它不适用于身份验证后的操作(signin:AuthorizeOAuth2Access和signin:CreateOAuth2Token)。 - 数据类型
-
ARN。使用 ARN 运算符而不是字符串运算符。
- 值类型
-
Single-valued.
- 在以下版本中受支持:
-
Resource-based 政策和 RCP。
使用 ARN 运算符比较值。您可以指定以下主体类型:
-
AWS 账户 root 用户 (
arn:aws:iam::123456789012:root) -
IAM 用户 (
arn:aws:iam::123456789012:user/)user-name -
IAM 角色 (
arn:aws:iam::123456789012:role/)role-name
用例:将排除的主体身份排除在网络限制之外,防止锁定,同时仍对所有其他访问尝试实施网络控制。
示例-拒绝未经授权的网络进行预身份验证访问,root 用户除外:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": ["signin:Authenticate"], "Resource": "*", "Condition": { "ArnNotEquals": { "signin:PrincipalArn": "arn:aws:iam::123456789012:root" }, "NotIpAddress": { "aws:SourceIp": "203.0.113.0/24" }, "StringEquals": { "aws:ResourceAccount": "123456789012" } } }, { "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": ["signin:CreateOAuth2Token", "signin:AuthorizeOAuth2Access"], "Resource": "*", "Condition": { "ArnNotEquals": { "aws:PrincipalArn": "arn:aws:iam::123456789012:root" }, "NotIpAddress": { "aws:SourceIp": "203.0.113.0/24" }, "StringEquals": { "aws:ResourceAccount": "123456789012" } } } ] }
此策略拒绝从 IP 范围以外203.0.113.0/24的 IP 范围访问控制台,但账户 root 用户除外。身份验证前语句用于signin:PrincipalArn在身份验证完成之前豁免 root 用户。在 OAuth 令牌交换期间aws:PrincipalArn,身份验证后语句用于在身份验证后豁免相同的委托人。请参阅策略示例。
通过操作来条件密钥的可用性
| 条件键 | 登录:身份验证 | 登录:AuthorizeOAuth2Access | 登录:CreateOAuth2Token |
|---|---|---|---|
aws:SourceIp |
支持 | 是 | 是 |
aws:SourceVpc |
是 | 是 | 是 |
aws:SourceVpce |
是 | 是 | 是 |
aws:VpcSourceIp |
是 | 是 | 是 |
aws:RequestedRegion |
是 | 是 | 是 |
aws:PrincipalArn |
– | 是 | 是 |
aws:PrincipalAccount |
– | 是 | 是 |
signin:PrincipalArn |
是 | – | – |
注意
该signin:CreateAccount操作仅用于控制台私有访问的 VPC 终端节点策略,不适用于基于资源的策略或 RCP。没有服务特定的条件密钥与之关联。请参阅控制台私有访问权限。