本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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(公共网络)或(VPC 终端节点),但不能同时包含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,身份验证后语句用于在身份验证后豁免相同的委托人。请参阅策略示例。
OAuth 条件密钥
AWS Sign-In 提供了 OAuth-specific 条件密钥,您可以在 IAM 策略中使用这些条件密钥来控制应用程序获取 OAuth 授权和 OAuth 令牌的方式。这些条件密钥允许您限制哪些 OAuth 客户端可以连接、哪些重定向 URI 是可信的、允许哪些 OAuth 授权流程、OAuth 客户端如何进行身份验证以及可以管理哪些 OAuth 令牌。
OAuth 条件密钥可用于 IAM 身份策略、服务控制策略 (SCP)、资源控制策略 (RCP) 和其他支持操作的 IAM 策略类型。 AWS Sign-In
以下 OAuth 条件键可用。
| 条件键 | Type | 说明 | 适用的行动 |
|---|---|---|---|
signin:OAuthClientId |
字符串 | 将授权限制为经批准的 OAuth 客户端。 | signin:AuthorizeOAuth2Access,
signin:CreateOAuth2Token,
signin:IntrospectOAuth2Token |
signin:OAuthRedirectUri |
字符串 | 将 OAuth 授权限制为已批准的重定向 URI。 | signin:AuthorizeOAuth2Access,
signin:CreateOAuth2Token,
signin:CreateOAuth2PublicClient |
signin:OAuthGrantType |
字符串 | 控制允许使用哪些 OAuth 授权类型。值:authorization_code、refresh_token、client_credentials。 |
signin:CreateOAuth2Token |
signin:OAuthClientAuthentication |
字符串 | 控制允许的 OAuth 客户端身份验证方法。 | signin:CreateOAuth2Token |
signin:OAuthTokenType |
字符串 | 控制对 OAuth 访问和刷新令牌执行的操作。值:access_token,refresh_token。 |
signin:RevokeOAuth2Token,
signin:IntrospectOAuth2Token |
登录:OAuthClientId
用于signin:OAuthClientId根据已注册的 OAuth 客户端请求访问权限来允许或拒绝 OAuth 授权。
OAuth 客户端 ID 表示为 AWS Sign-In 动态客户端注册 (DCR) ARN。
对于非交互式(客户端凭证)流程,隐式客户端 ID 为arn:aws:signin:::client-credentials/sigv4。
- 适用的行动
-
signin:AuthorizeOAuth2Accesssignin:CreateOAuth2Tokensignin:IntrospectOAuth2Token
示例-仅允许特定注册的 OAuth 客户端:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "signin:AuthorizeOAuth2Access", "signin:CreateOAuth2Token" ], "Resource": "arn:aws:signin:*:*:service-principal/aws-mcp.amazonaws.com", "Condition": { "StringEquals": { "signin:OAuthClientId": "arn:aws:signin:us-east-1::external-client/dcr/081e0aeb-e779-4dfe-9648-bd5bf6e6afa4" } } } ] }
登录:OAuthRedirectUri
signin:OAuthRedirectUri用于限制 OAuth 授权响应的传送位置。
这通常用于确保 OAuth 授权响应在开发过程中仅返回到可信的重定向 URI(例如 localhost)。
对于signin:CreateOAuth2PublicClient操作,此条件密钥仅适用于 VPC 终端节点 (VPCE) 策略评估。
- 适用的行动
-
signin:AuthorizeOAuth2Accesssignin:CreateOAuth2Tokensignin:CreateOAuth2PublicClient
示例-仅允许对本地主机重定向 URI 进行基于浏览器的授权,并且仅允许对交互式 OAuth 流程进行基于浏览器的授权:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "signin:AuthorizeOAuth2Access", "signin:CreateOAuth2Token" ], "Resource": "arn:aws:signin:*:*:service-principal/aws-mcp.amazonaws.com", "Condition": { "StringLike": { "signin:OAuthRedirectUri": "http://localhost:*" }, "StringEquals": { "signin:OAuthGrantType": [ "authorization_code", "refresh_token" ] } } } ] }
登录:OAuthGrantType
用于控制signin:OAuthGrantType允许应用程序使用哪些 OAuth 授权类型。
支持的值包括:
authorization_coderefresh_tokenclient_credentials
- 适用的行动
-
signin:CreateOAuth2Token
示例-仅允许基于浏览器的 OAuth 授权,同时阻止应用程序使用客户端凭证授权:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "signin:CreateOAuth2Token", "Resource": "*", "Condition": { "StringEquals": { "signin:OAuthGrantType": [ "authorization_code", "refresh_token" ] } } } ] }
登录:OAuthClientAuthentication
signin:OAuthClientAuthentication用于控制 OAuth 客户端在请求访问令牌时可以使用哪些客户端身份验证方法。
当前支持的值:
none
- 适用的行动
-
signin:CreateOAuth2Token
示例-拒绝公共客户端进行 OAuth 操作:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "signin:CreateOAuth2Token", "Resource": "*", "Condition": { "StringEquals": { "signin:OAuthClientAuthentication": "none" } } } ] }
登录:OAuthTokenType
signin:OAuthTokenType用于控制可以内省或撤消哪些 OAuth 令牌类型。
支持的值包括:
access_tokenrefresh_token
- 适用的行动
-
signin:IntrospectOAuth2Tokensignin:RevokeOAuth2Token
示例-仅允许撤销刷新令牌:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "signin:RevokeOAuth2Token", "Resource": "*", "Condition": { "StringEquals": { "signin:OAuthTokenType": "refresh_token" } } } ] }
通过操作来条件密钥的可用性
下表显示了每个操作都有哪些条件键可用。
| 条件键 | 登录:身份验证 | 登录:AuthorizeOAuth2Access | 登录:CreateOAuth2Token | 登录:RevokeOAuth2Token | 登录:IntrospectOAuth2Token | 登录:CreateOAuth2PublicClient |
|---|---|---|---|---|---|---|
aws:SourceIp |
支持 | 是 | 是 | 是 | 是 | 否 |
aws:SourceVpc |
是 | 是 | 是 | 是 | 是 | 否 |
aws:SourceVpce |
是 | 是 | 是 | 是 | 是 | 否 |
aws:VpcSourceIp |
是 | 是 | 是 | 是 | 是 | 否 |
aws:RequestedRegion |
是 | 是 | 是 | 是 | 是 | 否 |
aws:PrincipalArn |
否 | 是 | 是 | 是 | 是 | 否 |
aws:PrincipalAccount |
否 | 是 | 是 | 是 | 是 | 否 |
signin:PrincipalArn |
是 | 否 | 否 | 否 | 否 | 否 |
signin:OAuthClientId |
否 | 是 | 是 | 否 | 是 | 否 |
signin:OAuthRedirectUri |
否 | 是 | 是 | 否 | 否 | 是 |
signin:OAuthGrantType |
否 | 否 | 是 | 否 | 否 | 否 |
signin:OAuthClientAuthentication |
否 | 否 | 是 | 否 | 否 | 否 |
signin:OAuthTokenType |
否 | 否 | 否 | 是 | 是 | 否 |
注意
该signin:CreateAccount操作仅用于控制台私有访问的 VPC 终端节点策略,不适用于基于资源的策略或 RCP。没有服务特定的条件密钥与之关联。请参阅控制台私有访问权限。