

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

# AWS Sign-In 条件键参考
<a name="reference-signin-condition-keys"></a>

本页列出了可在 AWS Sign-In 基于资源的策略和资源控制策略 (RCP) 中使用的条件密钥，并显示每个密钥适用的评估阶段和操作。只有特定`signin:PrincipalArn`于 AWS Sign-In；其他是 AWS 全局条件键。有关全局键的定义，请参阅[AWS 全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

有关《服务授权参考》中操作和条件键的完整列表，请参阅的[操作、资源和条件键 AWS Sign-In](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssignin.html)。

## Network-based 条件键
<a name="reference-signin-condition-keys-network"></a>

这些条件键检查请求的来源。 AWS Sign-In 对基于资源的策略和 RCP 中的所有 AWS Sign-In 操作（`signin:Authenticate``signin: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:SourceVpc或aws:SourceVpce条件键一起使用。 | 
| aws:RequestedRegion | StringEquals, StringNotEquals | 目标 AWS 区域代码 | 建议在使用时使用aws:SourceVpc，以防止跨区域 VPC ID 冲突。可以指定多个区域。 | 

**重要**  
单个请求包含`aws:SourceIp`（公共网络）或`aws:SourceVpc`（VPC 终端节点），而不是两者兼而有之。在编写涵盖两条路径的 deny-unsels 策略时，请使用`IfExists`运算符（例如`NotIpAddressIfExists`）或创建单独的语句。

## Identity-based 条件键
<a name="reference-signin-condition-keys-identity"></a>

这些条件键用于检查谁在发出请求。它们仅适用于已确定主体身份的身份验证后操作（`signin:AuthorizeOAuth2Access`和`signin: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
<a name="reference-signin-condition-keys-service-specific"></a>

以下条件密钥特定于全局密钥 AWS Sign-In ，不是全局 AWS 密钥。它仅在身份验证前评估期间可用。`signin:PrincipalArn`用于在身份验证完成之前识别发起登录的委托人。这相当于的预身份验证`aws:PrincipalArn`，只有在身份验证之后才可用。

运算符  
ARN 运算符（`ArnEquals`、、`ArnLike``ArnNotEquals`、`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`，身份验证后语句用于在身份验证后豁免相同的委托人。请参阅[策略示例](console-access-control.md#console-access-control-policy-examples)。

## 通过操作来条件密钥的可用性
<a name="reference-signin-condition-keys-availability"></a>


**通过操作来条件密钥的可用性**  

| 条件键 | 登录:身份验证 | 登录:AuthorizeOAuth2Access | 登录:CreateOAuth2Token | 
| --- | --- | --- | --- | 
| aws:SourceIp | 支持 | 是 | 是 | 
| aws:SourceVpc | 是 | 是 | 是 | 
| aws:SourceVpce | 是 | 是 | 是 | 
| aws:VpcSourceIp | 是 | 是 | 是 | 
| aws:RequestedRegion | 是 | 是 | 是 | 
| aws:PrincipalArn | – | 是 | 是 | 
| aws:PrincipalAccount | – | 是 | 是 | 
| signin:PrincipalArn | 是 | – | – | 

**注意**  
该`signin:CreateAccount`操作仅用于控制台私有访问的 VPC 终端节点策略，不适用于基于资源的策略或 RCP。没有服务特定的条件密钥与之关联。请参阅[控制台私有访问权限](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html)。

## 相关信息
<a name="reference-signin-condition-keys-related"></a>
+ [使用基于资源的策略和资源控制策略控制控制台访问权限](console-access-control.md)
+ [AWS 管理控制台 私人访问权限](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html)
+ [AWS 全局条件上下文密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)
+ [的操作、资源和条件键 AWS Sign-In](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssignin.html)