View a markdown version of this page

AWS Sign-In 条件键参考 - AWS Sign-In

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

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)进行评估。

Network-based 条件键
条件键 运算符 说明 使用规则
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:SourceVpcaws:SourceVpce条件键一起使用。
aws:RequestedRegion StringEquals, StringNotEquals 目标 AWS 区域代码 建议在使用时使用aws:SourceVpc,以防止跨区域 VPC ID 冲突。可以指定多个区域。
重要

单个请求包含aws:SourceIp(公共网络)或(VPC 终端节点),但不能同时包含aws:SourceVpc(公共网络)或(VPC 终端节点)。在编写涵盖两条路径的 deny-unsels 策略时,请使用IfExists运算符(例如NotIpAddressIfExists)或创建单独的语句。

Identity-based 条件键

这些条件键检查谁在发出请求。它们仅适用于已确定主体身份的身份验证后操作(signin:AuthorizeOAuth2Accesssignin:CreateOAuth2Token)。

Identity-based 条件键
条件键 运算符 说明 示例
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、、ArnLikeArnNotEqualsArnNotLike)和字符串运算符(StringEqualsStringLike)。

可用性

AWS Sign-In 在预身份验证阶段(signin:Authenticate操作)将此密钥包含在请求上下文中。它不适用于身份验证后的操作(signin:AuthorizeOAuth2Accesssignin: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_coderefresh_tokenclient_credentials signin:CreateOAuth2Token
signin:OAuthClientAuthentication 字符串 控制允许的 OAuth 客户端身份验证方法。 signin:CreateOAuth2Token
signin:OAuthTokenType 字符串 控制对 OAuth 访问和刷新令牌执行的操作。值:access_tokenrefresh_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:AuthorizeOAuth2Access

  • signin:CreateOAuth2Token

  • signin: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:AuthorizeOAuth2Access

  • signin:CreateOAuth2Token

  • signin: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_code

  • refresh_token

  • client_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_token

  • refresh_token

适用的行动
  • signin:IntrospectOAuth2Token

  • signin: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。没有服务特定的条件密钥与之关联。请参阅控制台私有访问权限