

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

# 可信身份
<a name="trusted-identities"></a><a name="account-identity"></a>

借助AWS 管理控制台私有访问权限，您可以限制哪些AWS 账户和组织身份可以AWS 管理控制台从您的 VPC 中使用。这样可以防止来自个人帐户和组织外部帐户的访问。

AWS 管理控制台和 AWS 登录 VPC 终端节点均支持控制登录账户身份的 VPC 终端节点策略。在登录时对策略进行评估，并定期对现有会话进行重新评估。
+ **AWS 管理控制台VPC 终端节点策略**-限制哪些登录身份可以通过此AWS 管理控制台终端节点访问。使用 an `Action: *` d `Principal: *`、wit `aws:PrincipalOrgId` h 或`aws:PrincipalAccount`条件键。
+ **AWS 登录VPC 终端节点策略（登录流程）**— 限制谁AWS 管理控制台可以通过此端点登录，在证书验证之前和之后分别进行评估。 **Pre-authentication**使用`signin:Authenticate`在输入凭据之前阻止登录尝试。 **Post-authentication**在证书被接受之后以及 OAuth 令牌交换期间，使用和验证会话。`signin:AuthorizeOAuth2Access` `signin:CreateOAuth2Token`
+ **AWS 登录VPC 终端节点策略（注册流程）**-控制是否可在您的私有网络内访问AWS账户注册流程。使用隐式拒绝来支持`signin:CreateAccount`操作。

以下示例说明如何按账户或组织限制访问权限。使用适用于每个终端节点的相应策略格式，对您的终端节点AWS 管理控制台和 AWS 登录 VPC 终端节点应用同等限制。

**Topics**
+ [AWS 管理控制台VPC 终端节点示例](#console-vpc-endpoint-examples)
+ [AWS 登录VPC 终端节点示例](#signin-vpc-endpoint-examples)
+ [访问被拒绝错误页面](#access-denied-error)
+ [允许登录服务控制策略](#private-access-with-SCPs)

**注意**  
以下示例仅供参考，仅供参考。[对于生产环境，请使用 aws-perimeter-perimeter-polic [samples/datay-examples 存储库中的全面数据边界策略示例](https://github.com/aws-samples/data-perimeter-policy-examples)，例如网络外围 SCP。](https://github.com/aws-samples/data-perimeter-policy-examples/blob/main/service_control_policies/network_perimeter_sourcevpc_scp.json)

## AWS 管理控制台VPC 终端节点示例
<a name="console-vpc-endpoint-examples"></a>

**示例：仅允许组织中的账户**  
此 AWS 管理控制台 VPC 终端节点策略允许AWS 账户在指定AWS组织中进行访问并阻止任何其他账户。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalOrgId": "o-xxxxxxxxxxx"
        }
      }
    }
  ]
}
```

------

**示例：仅允许特定账户**  
此 AWS 管理控制台 VPC 终端节点策略限制对特定账户列表的访问权限AWS 账户并封锁任何其他账户。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalAccount": [ "111122223333", "222233334444" ]
        }
      }
    }
  ]
}
```

------

## AWS 登录VPC 终端节点示例
<a name="signin-vpc-endpoint-examples"></a>

AWS 登录VPC 终端节点需要包含适用于每个身份验证阶段的特定 Sign-In 操作和条件密钥的策略：
+ **Pre-authentication 阶段** — 在确定用户身份之前进行评估。由于主体信息尚不清楚，因此只有基于资源的条件密钥可用。
  + 支持的操作：`signin:Authenticate`
  + 支持的条件键：`aws:ResourceOrgId`或 `aws:ResourceAccount`
+ **Post-authentication 阶段**-在登录服务颁发会话凭据时进行身份验证后进行评估。完整的主体信息可用。
  + 支持的操作：`signin:AuthorizeOAuth2Access`，`signin:CreateOAuth2Token`
  + 支持的条件键：`aws:PrincipalOrgId`或`aws:PrincipalAccount`、`aws:ResourceOrgId`、`aws:ResourceAccount`

**示例：仅允许组织中的账户登录**  
此 AWS 登录 VPC 终端节点策略使用特定于操作的声明，允许AWS 账户在身份验证前和身份验证后阶段登录指定AWS组织。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "PreAuthOrgRestriction",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "signin:Authenticate",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceOrgID": "o-xxxxxxxxxxx"
        }
      }
    },
    {
      "Sid": "PostAuthOrgRestriction",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "signin:AuthorizeOAuth2Access",
        "signin:CreateOAuth2Token"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalOrgId": "o-xxxxxxxxxxx"
        }
      }
    }
  ]
}
```

------

**示例：仅允许特定账户登录**  
此 AWS 登录 VPC 终端节点策略使用特定于操作的声明，将登录限制为身份验证前和身份验证后阶段的特定AWS 账户列表。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "PreAuthAccountRestriction",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "signin:Authenticate",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": [ "123456789012", "210987654321" ]
        }
      }
    },
    {
      "Sid": "PostAuthAccountRestriction",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "signin:AuthorizeOAuth2Access",
        "signin:CreateOAuth2Token"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalAccount": [ "123456789012", "210987654321" ]
        }
      }
    }
  ]
}
```

------

**控制账户注册流程**  
该`signin:CreateAccount`操作控制是否可以从您的私有网络内访问AWS账户注册流程。此操作使用匿名委托人（注册期间不存在任何账户），并且不支持条件键。

使用 AWS 登录 VPC 终端节点策略格式时，除非您明确允许，否则注册流程会被隐式拒绝阻止。如果您的组织需要在私有网络内注册账户，请将以下声明添加到您的 AWS 登录 VPC 终端节点策略中：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccountSignup",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "signin:CreateAccount",
      "Resource": "*"
    }
  ]
}
```

------

## 访问被拒绝错误页面
<a name="access-denied-error"></a>

如果您使用不属于您账户的身份进行连接，则会看到 “您的账户无权使用 AWS 管理控制台私有访问” 错误。以下屏幕截图显示了 “拒绝访问” 错误页面。

![错误页面，其中包含一条消息，表明您无权使用AWS 管理控制台私有访问权限。](http://docs.aws.amazon.com/zh_cn/awsconsolehelpdocs/latest/gsg/images/console-private-access-denied.png)


## 允许登录服务控制策略
<a name="private-access-with-SCPs"></a>

如果您的AWS组织正在使用允许特定服务的服务控制策略 (SCP)，则必须添加`signin:*`允许的操作。之所以需要此权限，是因为AWS 管理控制台通过私有访问 VPC 终端节点登录会执行 IAM 授权，SCP 会在未经许可的情况下阻止该授权。例如，以下服务控制策略允许在组织中使用 Amazon EC2 和 CloudWatch 服务，包括使用AWS 管理控制台私有访问终端节点访问它们的时间。

```
{
  "Effect": "Allow",
  "Action": [
    "signin:*",
    "ec2:*",
    "cloudwatch:*",
    ... Other services allowed
  },
  "Resource": "*"
}
```

有关 SCP 的更多信息，请参阅《AWS Organizations 用户指南》**中的[服务控制策略 (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。