

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS PrivateLink
<a name="oauth-privatelink"></a>

AWS 登入 OAuth APIs支援 AWS PrivateLink，可讓您從 Amazon VPC 內存取 OAuth 授權端點，而無需周遊公有網際網路。您可以為 AWS 登入設定 VPC 端點，以將 OAuth 授權流量保留在 AWS 網路上。

當您需要時，請使用 VPC 端點進行 AWS 登入 OAuth：
+ 來自 Amazon VPC 或連線內部部署網路之 OAuth 授權流程的私有連線。
+ 使用 VPC 端點政策進行 OAuth 授權的網路層級存取控制。
+ 在沒有公有網際網路存取的網路隔離環境中的 OAuth 授權。

## 設定 VPC 端點以存取登入 OAuth APIs
<a name="oauth-privatelink-configuring"></a>

AWS 登入 OAuth 支援在無法存取公有網際網路的網路中操作。當您為 AWS 登入設定 VPC 端點時，應用程式與 AWS 登入之間的 OAuth 授權流量會透過 PrivateLink 路由 AWS 。OAuth 授權流程本身不需要網際網路連線。

所需的 VPC 端點取決於您的授權模型。將 取代`region`為您自己的區域資訊。

### 互動式模式
<a name="oauth-privatelink-interactive"></a>

互動式 OAuth 授權 （以瀏覽器為基礎） 需要下列 VPC 端點：
+ `com.amazonaws.{{region}}.signin`
+ `com.amazonaws.{{region}}.signin-v2`

### 非互動式模式
<a name="oauth-privatelink-non-interactive"></a>

非互動式 OAuth 授權 （使用 SigV4 授予用戶端憑證） 需要下列 VPC 端點：
+ `com.amazonaws.{{region}}.signin-v2`

## 實作存取控制
<a name="oauth-privatelink-access-controls"></a>

您可以使用 VPC 端點政策來控制允許哪些身分和帳戶透過私有網路使用 AWS 登入 OAuth APIs。VPC 端點政策會跨 OAuth 操作進行評估。

### 信任的身分
<a name="oauth-privatelink-trusted-identities"></a>

 AWS 登入 VPC 端點需要具有適用於每個身分驗證階段之特定登入動作和條件金鑰的政策：
+ **預先驗證階段** – 在建立使用者身分之前進行評估。只有資源型條件索引鍵可用，因為委託人資訊尚不清楚。
  + 支援的動作：`signin:Authenticate`、 `signin:CreateOAuth2PublicClient`
  + 支援的條件金鑰： `aws:ResourceOrgId`或 `aws:ResourceAccount`
**注意**  
`signin:CreateOAuth2PublicClient` 僅支援 `signin:OAuthRedirectUri`條件金鑰。此動作不支援其他條件索引鍵。
+ **身分驗證後階段** – 登入服務發出工作階段登入資料時，在身分驗證後進行評估。提供完整的委託人資訊。
  + 支援的動作：`signin:AuthorizeOAuth2Access`、`signin:CreateOAuth2Token`、`signin:IntrospectOAuth2Token`、 `signin:RevokeOAuth2Token`
  + 支援的條件金鑰： `aws:PrincipalOrgId`或 `aws:PrincipalAccount`、`aws:ResourceOrgId`、 `aws:ResourceAccount`

#### 範例：僅允許組織中的帳戶執行 OAuth 操作
<a name="oauth-privatelink-example-org"></a>

此 AWS 登入 VPC 端點政策使用動作特定的陳述式，在驗證前和驗證後階段允許指定 AWS 組織中 AWS 的帳戶進行 OAuth 操作。

```
{
  "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"
        }
      }
    }
  ]
}
```

#### 範例：僅允許特定帳戶的 OAuth 操作
<a name="oauth-privatelink-example-accounts"></a>

此 AWS 登入 VPC 端點政策使用動作特定的陳述式，允許在驗證前和驗證後階段針對特定 AWS 帳戶的清單進行 OAuth 操作。

```
{
  "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" ]
        }
      }
    }
  ]
}
```

#### 範例：將動態用戶端註冊限制為 localhost URIs
<a name="oauth-privatelink-example-dcr"></a>

此 AWS 登入 VPC 端點政策將動態用戶端註冊限制為僅限 localhost URIs。

```
{
  "Version":"2012-10-17",
  "Statement": [
    {
      "Sid": "AllowDCRLocalhostOnly",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "signin:CreateOAuth2PublicClient",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "signin:OAuthRedirectUri": "http://localhost:*"
        }
      }
    }
  ]
}
```

#### 範例：允許對特定帳戶的字符自我檢查和撤銷
<a name="oauth-privatelink-example-introspect-revoke"></a>

此 AWS 登入 VPC 端點政策允許對特定 AWS 帳戶的字符自我檢查和撤銷。

```
{
  "Version":"2012-10-17",
  "Statement": [
    {
      "Sid": "AllowIntrospectAndRevoke",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "signin:IntrospectOAuth2Token",
        "signin:RevokeOAuth2Token"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalAccount": [ "123456789012", "210987654321" ]
        }
      }
    }
  ]
}
```

### 預期的網路
<a name="oauth-privatelink-expected-networks"></a>

如需以網路為基礎的存取控制，請參閱 [使用資源型政策和資源控制政策來控制主控台存取](console-access-control.md)。

### 控制帳戶註冊流程
<a name="oauth-privatelink-signup"></a>

`signin:CreateAccount` 動作控制是否可以 AWS 從私有網路內存取帳戶註冊流程。此動作使用匿名主體 （註冊期間不存在帳戶），且不支援條件金鑰。

使用 AWS 登入 VPC 端點政策格式時，除非您明確允許，否則註冊流程會被隱含拒絕封鎖。如果您的組織需要從私有網路註冊帳戶，請將下列陳述式新增至 AWS 您的登入 VPC 端點政策：

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