

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

# 使用以資源為基礎的政策和資源控制政策來控制主控台存取
<a name="console-access-control"></a>

**重要**  
主控台登入存取預設為啟用。 AWS 登入最初允許不受限制的主控台存取。若要新增限制，請為您的帳戶或組織啟用主控台授權組態。在您啟用主控台授權之前，您建立的資源許可陳述式不會生效。請參閱 [使用資源政策開始使用主控台存取控制](#console-access-control-getting-started)。

AWS Sign-In 支援以資源為基礎的政策和資源控制政策 (RCPs)，以控制對 AWS Sign-In 的存取。在身分驗證之前、期間和之後，使用這些政策在整個 AWS 管理主控台 存取過程中驗證使用者身分和網路位置。對於根使用者，這些政策會在憑證收集開始之前驗證網路位置和使用者身分。只有在存取來自預期的網路時，才能輸入登入資料。

AWS 以資源為基礎的登入政策：
+ 套用至個別 AWS 帳戶。
+ 讓帳戶管理員根據網路參數和主體身分來限制主控台存取。

資源控制政策 RCPs)：
+ 透過 AWS Organizations 在整個組織中套用。
+ 在所有成員帳戶中提供集中式控管。

這兩種政策類型都會在身分驗證之前驗證存取權。這會封鎖主體從非預期的網路存取登入頁面。

這些政策不會取代持續套用的 IAM 身分型政策。

**注意**  
如需資源控制政策的完整文件，包括組織層級組態和管理，請參閱《*AWS Organizations 使用者指南*》中的[資源控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。本節主要著重於以資源為基礎的 AWS 登入政策。

AWS 以資源為基礎的登入政策和 RCPs 適用於下列身分驗證方法：
+ **AWS 管理主控台** – 使用主控台登入頁面直接登入。
+ **AWS IAM Identity Center** – 使用 IAM Identity Center 的主控台登入。
+ **聯合身分提供者** – 透過 SAML 或 OIDC 聯合登入。
+ **與 AWS 登入整合的應用程式** – Amazon Connect、Amazon QuickSight、 AWS Health Dashboard、Amazon AppStream、Amazon Lightsail、AWS IQ。

這些控制項不適用於使用存取金鑰 （以 SigV4 簽署AWS SDKs 或 API 呼叫） 的程式設計存取。 SigV4

## AWS Sign-In 如何評估以資源為基礎的政策
<a name="console-access-control-how-it-works"></a>

AWS 登入會在主控台存取期間的兩個時間點評估適用的資源型政策或資源控制政策 (RCPs)：身分驗證前 （身分驗證前階段） 和身分驗證成功後 （身分驗證後階段）。每個評估都會檢查政策中定義的條件索引鍵。可用的金鑰取決於階段和動作。如需詳細資訊，請參閱[支援的條件索引鍵](#console-access-control-condition-keys)。

**注意**  
對於根使用者登入，在密碼提示出現之前，來自非預期網路的存取嘗試會遭到封鎖。這可防止從非預期的網路提交登入資料。

身分驗證之後，評估也會考慮委託人的身分型政策。拒絕相關登入動作的 IAM 政策可能會阻止授予主控台工作階段，即使符合網路條件也一樣。

## 支援的動作
<a name="console-access-control-supported-actions"></a>

AWS 登入資源政策 （以資源為基礎的政策和 RCPs) 支援下列動作：

`signin:Authenticate`  
這是在收到登入請求時評估的僅限評估 （不可呼叫） 動作。這是預先驗證檢查，當委託人在登入頁面 （根使用者、IAM 使用者） 輸入登入資料，或使用身分提供者或 AWS STS （聯合使用者、角色） 的登入資料啟動主控台登入時發生。  
**支援的條件金鑰：**`aws:SourceIp`、`aws:SourceVpc`、`aws:SourceVpce`、`aws:VpcSourceIp`、`aws:RequestedRegion`、`signin:PrincipalArn`。  
委託人型全域條件金鑰 (`aws:PrincipalArn`、`aws:PrincipalAccount`) 不適用於此動作，因為尚未確認使用者的身分。

`signin:AuthorizeOAuth2Access`  
用於產生 OAuth 授權碼。身分驗證成功後，系統產生 OAuth 授權碼時會觸發此動作。此時，使用者會經過身分驗證，而且可使用主體型條件金鑰。  
**支援的條件金鑰：**`aws:SourceIp`、`aws:SourceVpc`、`aws:SourceVpce`、`aws:VpcSourceIp`、`aws:RequestedRegion``aws:PrincipalArn`、、`aws:PrincipalAccount`。

`signin:CreateOAuth2Token`  
此驗證後動作用於建立和交換 OAuth 權杖。當兌換存取權杖的授權碼、重新整理權杖或執行權杖交換操作時，會觸發此動作。主體型條件金鑰在此階段期間可用。  
**支援的條件金鑰：**`aws:SourceIp`、`aws:SourceVpc`、`aws:SourceVpce`、`aws:VpcSourceIp`、`aws:RequestedRegion``aws:PrincipalArn`、、`aws:PrincipalAccount`。

**重要**  
建立 AWS 登入政策 （以資源為基礎的政策或 RCPs) 時，請在驗證前陳述`signin:Authenticate`式和驗證後陳述`signin:AuthorizeOAuth2Access``signin:CreateOAuth2Token`式中涵蓋政策中的所有三個動作。主控台登入使用 OAuth 2.0，它會依序流經這三個動作。如果您的政策省略 動作，則不會保護對應的階段。如需包含 的 VPC 端點政策動作`signin:CreateAccount`，請參閱 [AWS 管理主控台私有存取](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html)。

## 支援的條件索引鍵
<a name="console-access-control-condition-keys"></a>

AWS Sign-In 支援資源型政策和資源控制政策 (RCPs中的下列條件索引鍵。使用這些金鑰根據網路位置和主體身分來控制主控台存取：
+ **網路型 （所有動作）：**`aws:SourceIp`、`aws:SourceVpc`、`aws:SourceVpce`、`aws:VpcSourceIp`、`aws:RequestedRegion`。
+ **身分型 （身分驗證後動作）：**`aws:PrincipalArn`、`aws:PrincipalAccount`。
+ **服務特定 （僅限預先驗證）：**`signin:PrincipalArn`。

如需詳細使用規則、運算子相容性、組合限制和依動作的可用性矩陣，請參閱 [AWS 登入條件金鑰參考](reference-signin-condition-keys.md)。

## 使用資源政策開始使用主控台存取控制
<a name="console-access-control-getting-started"></a>

**先決條件**
+ AWS 已安裝並設定 CLI。
+ 適當的 IAM 許可 （請參閱 [AWS 受管政策：AWSSignInResourcePolicyManagement](security-iam-awsmanpol.md#security-iam-awsmanpol-AWSSignInResourcePolicyManagement))。
+ 已識別的網路周邊 (IP 範圍、VPCs或 VPC 端點）。
+ 指定保留存取權的排除主體 （建議但選用）。
+ 如果您的網路使用輸出篩選，允許列出 AWS 登入控制平面端點 （請參閱 [AWS 要允許清單的登入管理網域](allowlist-domains.md#allowlist-domains-admin))。

**重要**  
在生產環境中啟用主控台授權之前， AWS 建議至少設定一個排除的主體，以維護緊急復原存取權。除非明確排除，否則所有委託人，包括根使用者，都必須遵守政策。排除的主體是選用的，但如果網路條件意外變更，省略它們會增加帳戶鎖定的風險。

`--region us-east-1` 為 AWS 登入政策上的所有寫入操作指定 。 會從此區域全域複 AWS 寫政策。讀取操作可以以任何區域為目標。

### 步驟 1：建立資源許可陳述式
<a name="console-access-control-step1-statements"></a>

建立定義存取控制的許可陳述式。所有寫入操作都需要 `--region us-east-1`( AWS Sign-In 服務僅接受此區域中的政策變更）。其餘參數 (`--source-vpc`、`--source-ip``--requested-region`、、`--excluded-principal`) 定義政策中的條件。例如， 會將限制登入的條件`--requested-region us-west-2`新增至 us-west-2 區域登入端點。

**範例 – 限制對公司 VPC 的存取：**

```
aws signin put-resource-permission-statement \
  --source-vpc vpc-0abc123def456789 \
  --requested-region us-west-2 \
  --excluded-principal "arn:aws:iam::123456789012:user/EmergencyAdmin" \
  --client-token unique-request-id-12345 \
  --region us-east-1
```

**範例 – 限制對特定 IP 範圍的存取：**

```
aws signin put-resource-permission-statement \
  --source-ip "{{IP_ADDRESS}}" \
  --excluded-principal "arn:aws:iam::123456789012:role/BreakGlassRole" \
  --region us-east-1
```

**注意**  
`--excluded-principal` 參數會指定排除的主體，以略過網路限制，並在網路條件變更時保留緊急存取。

### 步驟 2：啟用主控台授權組態
<a name="console-access-control-step2-enable"></a>

下列步驟會在您的帳戶或組織上啟用主控台登入程序的政策強制執行。您可以隨時建立資源許可陳述式，但在啟用主控台授權之前，不會對其進行評估。

**警告**  
如果您的網路條件設定錯誤，或者現有服務控制政策 (SCP) 或資源控制政策 (RCP) 拒絕 AWS 登入動作，啟用主控台授權可能會鎖定主體。啟用主控台授權之前，請確認您的許可陳述式正確無誤，並移除或調整任何拒絕 `signin:Authenticate`、 或 的 SCP `signin:AuthorizeOAuth2Access`或 RCP`signin:CreateOAuth2Token`。

對於獨立帳戶：

```
aws signin put-console-authorization-configuration \
  --target-id <your-aws-account-id> \
  --region us-east-1
```

對於 AWS Organizations：

```
aws signin put-console-authorization-configuration \
  --target-id <your-aws-organization-id> \
  --region us-east-1
```

驗證組態：

```
aws signin get-console-authorization-configuration \
  --target-id <your-target-id> \
  --region <your-region>
```

刪除主控台授權組態：

```
aws signin delete-console-authorization-configuration \
  --target-id <your-target-id> \
  --region us-east-1
```

### 步驟 3：驗證您的政策
<a name="console-access-control-step3-verify"></a>

列出所有許可陳述式：

```
aws signin list-resource-permission-statements \
  --max-results 50 \
  --region <your-region>
```

擷取完整的合併政策：

```
aws signin get-resource-policy \
  --region <your-region>
```

`get-resource-policy` 命令會傳回包含所有許可陳述式的完整資源型政策。在測試主控台存取之前，請檢閱此政策以確認其反映您預期的存取控制。

### 區域可用性
<a name="console-access-control-regional-availability"></a>

主控台授權 APIs適用於所有 AWS 商業區域。您可以從您操作的任何區域呼叫這些 APIs。

**重要**  
寫入操作 (`put-console-authorization-configuration`、`put-resource-permission-statement`、`delete-console-authorization-configuration`、`delete-resource-permission-statement`) 必須在 `us-east-1`區域中執行。在 中建立的政策`us-east-1`會自動全域複寫。讀取操作 (`get-console-authorization-configuration`、`list-resource-permission-statements`、`get-resource-policy`) 可以從任何區域執行。

### 了解政策結構
<a name="console-access-control-policy-structure"></a>

AWS 登入政策包含兩個陳述式，可保護主控台登入流程的不同階段：
+ **驗證前陳述式 （動作：`signin:Authenticate`)：**在身分驗證完成之前，在收到登入請求時進行評估。全域金鑰在此階段`aws:PrincipalArn`無法使用，因為主體的身分尚未確認。在此階段中，`signin:PrincipalArn`可以免除特定主體的網路限制。在此階段中，可以使用網路型條件金鑰進行評估。
+ **驗證後陳述式 （動作：`signin:AuthorizeOAuth2Access`、`signin:CreateOAuth2Token`)**：在 OAuth 權杖交換期間，在驗證後評估。用來`aws:PrincipalArn`豁免特定委託人。所有網路型和身分型條件金鑰都可以在此階段中進行評估。

這兩個陳述式都是必要的，因為主控台登入使用 OAuth 2.0，它會依序流經所有三個動作。只有一個陳述式的政策會使另一個階段未受保護。 `signin:PrincipalArn`支援根使用者、IAM 使用者和角色委託人類型。 `aws:PrincipalArn`支援所有委託人類型 （根使用者、IAM 使用者、聯合身分使用者、角色）。

## 政策範例
<a name="console-access-control-policy-examples"></a>

### 範例 1：具有網路周邊和排除主體的 RCP
<a name="console-access-control-example-rcp"></a>

下列資源控制政策 (RCP) 拒絕從公司網路外部 AWS 管理主控台 跨組織中的所有帳戶登入。指定的排除主體可免除緊急存取。由於 VPC IDs是唯一的，因此政策包含第三個陳述式，將 VPC 型存取鎖定在預期區域內。

`EnforceNetworkPerimeterPreAuth` 陳述式使用 在預先驗證階段中`signin:PrincipalArn`排除排除的委託人。`EnforceNetworkPerimeterPostAuth` 陳述式會在身分驗證後`aws:PrincipalArn`使用 來排除排除的委託人。`EnforceSourceVPCRegion` 陳述式可確保請求區域符合 VPC 區域，限制對指定 VPC 之預期區域的存取。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceNetworkPerimeterPreAuth",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["signin:Authenticate"],
      "Resource": "*",
      "Condition": {
        "ArnNotEquals": {
          "signin:PrincipalArn": [
            "arn:aws:iam::111122223333:root",
            "arn:aws:iam::444455556666:root",
            "arn:aws:iam::777788889999:user/EmergencyUser",
            "arn:aws:iam::777788889999:role/OrgBreakGlassRole"
          ]
        },
        "NotIpAddressIfExists": {
          "aws:SourceIp": "<my-corporate-cidr>"
        },
        "StringNotEquals": {
          "aws:SourceVpc": "<my-vpc>"
        }
      }
    },
    {
      "Sid": "EnforceNetworkPerimeterPostAuth",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["signin:CreateOAuth2Token", "signin:AuthorizeOAuth2Access"],
      "Resource": "*",
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": [
            "arn:aws:iam::111122223333:root",
            "arn:aws:iam::444455556666:root",
            "arn:aws:iam::777788889999:user/EmergencyUser",
            "arn:aws:iam::777788889999:role/OrgBreakGlassRole"
          ]
        },
        "NotIpAddressIfExists": {
          "aws:SourceIp": "<my-corporate-cidr>"
        },
        "StringNotEquals": {
          "aws:SourceVpc": "<my-vpc>"
        }
      }
    },
    {
      "Sid": "EnforceSourceVPCRegion",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "signin:Authenticate",
        "signin:CreateOAuth2Token",
        "signin:AuthorizeOAuth2Access"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": "<my-vpc>"
        },
        "StringNotEqualsIfExists": {
          "aws:RequestedRegion": "<my-vpc-region>"
        }
      }
    }
  ]
}
```

此政策：
+ 除非請求來自公司 IP 範圍或公司 VPC，否則拒絕存取登入頁面。排除的根帳戶和 IAM 使用者會透過 `signin:PrincipalArn`（預先驗證） 豁免。
+ 除非來自公司 IP 範圍或 VPC，否則拒絕 OAuth 權杖交換。排除的根帳戶、IAM 使用者和角色會透過 `aws:PrincipalArn`（身分驗證後全域金鑰） 豁免。
+ 如果請求來自指定的 VPC，但區域不相符，則會拒絕存取。 AWS VPC IDs是唯一的，而且相同的 VPC ID 可以存在於不同的區域中。
+ 設定為 RCP 時，將全域套用至您的 AWS Organization。

### 範例 2：具有排除委託人之 IP 型存取的資源型政策
<a name="console-access-control-example-rbp"></a>

下列資源型政策會拒絕主控台存取從指定 IP 範圍之外發出請求的所有委託人，並排除 委託人。政策包含兩個陳述式：使用服務特定`signin:PrincipalArn`金鑰的驗證前陳述式，以及使用全域`aws:PrincipalArn`金鑰的驗證後陳述式。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": { "AWS": "*" },
      "Action": ["signin:Authenticate"],
      "Resource": "*",
      "Condition": {
        "ArnNotEquals": {
          "signin:PrincipalArn": "<excluded-principal-arn>"
        },
        "NotIpAddress": {
          "aws:SourceIp": "<my-corporate-cidr>"
        },
        "StringEquals": {
          "aws:ResourceAccount": "<my-aws-account-id>"
        }
      }
    },
    {
      "Effect": "Deny",
      "Principal": { "AWS": "*" },
      "Action": ["signin:CreateOAuth2Token", "signin:AuthorizeOAuth2Access"],
      "Resource": "*",
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "<excluded-principal-arn>"
        },
        "NotIpAddress": {
          "aws:SourceIp": "<my-corporate-cidr>"
        },
        "StringEquals": {
          "aws:ResourceAccount": "<my-aws-account-id>"
        }
      }
    }
  ]
}
```

此政策：
+ 拒絕存取所有主體，除非它們從 IP 範圍 連接`<my-corporate-cidr>`。
+ 使用 `signin:PrincipalArn`（預先驗證） 和 `aws:PrincipalArn`（驗證後） 將排除的委託人排除在網路限制之外。
+ 僅適用於設定資源型政策的特定帳戶 （由 識別`<my-aws-account-id>`)。

## 最佳實務
<a name="console-access-control-best-practices"></a>

### 設定排除的主體以進行緊急復原存取
<a name="console-access-control-bp-breakglass"></a>

AWS 建議在生產環境中強制執行主控台授權政策之前，設定至少一個排除的使用者。在預先驗證階段，`signin:PrincipalArn`條件金鑰會豁免根使用者、IAM 使用者和角色主體。在驗證後階段，`aws:PrincipalArn`條件索引鍵會排除所有委託人類型 （根使用者、IAM 使用者、聯合身分使用者、角色）。

排除的主體是選用的，但如果網路條件意外變更或政策設定錯誤，則省略它們會增加帳戶鎖定的風險。

建議的排除主體組態步驟：

1. 建立排除的 IAM 角色 （例如 `BreakGlassRole`)。

1. 對於排除的角色， 在角色信任政策中需要 MFA。

1. 僅授予排除身分緊急復原所需的最低許可。

1. 在驗證前 (`signin:PrincipalArn`) 和驗證後 (`aws:PrincipalArn`) 政策陳述式中包含排除的主體 ARN。

1. 記錄復原程序，並將其安全地存放在 外部 AWS。

1. 定期測試排除的主體存取權，以確認其在需要時有效。

### 維護復原存取路徑
<a name="console-access-control-bp-recovery"></a>

除了上述排除的委託人之外，請確保在主控台授權政策意外封鎖登入時，提供替代的存取方法：
+ **角色型程式設計存取：**主控台授權政策僅適用於互動式主控台登入。它們不適用於使用 SigV4 簽署的 API 請求。如果您有程式設計存取 （例如，現有的存取金鑰、跨帳戶角色），請使用它來呼叫`signin:DeleteConsoleAuthorizationConfiguration`和移除限制政策。登入資料必須包含`signin:DeleteConsoleAuthorizationConfiguration`許可 （包含在 `AWSSignInResourcePolicyManagement`受管政策中）。 AWS 建議暫時登入資料而非長期 IAM 使用者存取金鑰。對於成員帳戶，管理帳戶管理員可以在成員帳戶 (`aws sts assume-role`) `OrganizationAccountAccessRole`中擔任 ，以取得這些臨時登入資料。
+ **AWS 支援復原：**將您的根使用者帳戶電子郵件和電話號碼保持在最新狀態。如果排除主體和程式設計存取都無法使用， AWS Support 可以在身分驗證後提供復原入口網站連結。如需完整復原程序[啟用主控台授權後，我的帳戶遭到鎖定](#console-access-control-ts-lockout)，請參閱 。

### 生產部署前測試
<a name="console-access-control-bp-testing"></a>

AWS 建議您在未徹底測試政策對帳戶的影響之前，不要將限制性 RCPs 連接到組織的根目錄。反之，請建立 OU，您可以將帳戶一次移入一個，或至少以小數字移動，以確保您不會不小心將使用者鎖定在金鑰帳戶之外。

測試工作流程：

1. 使用主要網路限制建立單一許可陳述式。

1. 在非生產帳戶中啟用主控台授權。

1. 從允許和拒絕的網路測試主控台存取。

1. 檢閱 Amazon CloudTrail 日誌以確認政策評估行為。

1. 使用已排除的主體測試存取權。

1. 逐漸擴展到其他網路和帳戶。

1. 在生產帳戶中強制執行之前進行監控。

### 深入defense-in-depth的設計
<a name="console-access-control-bp-defense"></a>

在更廣泛的安全策略中使用 AWS 以登入資源為基礎的政策和資源控制政策作為一層。 AWS 登入政策會根據網路位置和主體身分限制主控台存取。將它們與其他政策類型結合，以建立全面的存取控制：
+ **AWS 登入政策 （以資源為基礎的政策和 RCPs)：**根據驗證之前、期間和之後的網路位置和主體身分來限制主控台存取。
+ **IAM 政策：**控制使用者在登入後可執行的動作。
+ **服務控制政策 (SCPs)：**在所有主體之間套用整個組織的許可護欄。
+ **VPC 端點政策：**控制可以透過 VPC 端點存取哪些服務和帳戶。

### 持續監控和稽核
<a name="console-access-control-bp-monitoring"></a>

AWS CloudTrail 會自動記錄所有 AWS 登入政策評估和組態變更。在 CloudTrail 事件歷史記錄中檢視這些事件長達 90 天。如需更長的保留期，請透過建立線索將事件交付至 Amazon S3 （請參閱[建立線索](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html))。如需即時警示，請建立符合 AWS 登入事件的 Amazon EventBridge 規則、將線索設定為交付至 CloudWatch Logs 日誌群組，以用於指標篩選條件型警示，或將事件轉送至現有的 SIEM 解決方案。

## 使用案例
<a name="console-access-control-use-cases"></a>

網路周邊強制執行  
限制主控台存取公司 VPCs或核准的 IP 範圍。針對個別帳戶使用資源型政策，或針對整個組織強制執行使用資源控制政策 (RCPs)，以確保使用者只能從信任的網路位置登入，防止來自公有或不受信任網路的未經授權存取。  
**範例案例：**公司要求所有主控台存取都來自其公司網路或核准的 AWS VPCs。他們會為單一帳戶或整個組織的 RCP 設定資源型政策，拒絕從所有其他網路存取，同時維護緊急管理員的緊急復原存取權。

合規要求  
符合網路型存取控制的法規要求。許多合規架構要求組織根據網路位置限制對敏感系統的存取。 AWS 登入政策提供可稽核且可執行的控制，以證明符合這些要求。  
**範例案例：**金融服務公司必須遵循僅從核准網路存取主控台的法規。他們使用 RCPs 來強制執行整個組織的網路限制，並維護 AWS CloudTrail 日誌作為合規證據。

多帳戶控管  
跨 AWS Organizations 實作一致的主控台存取政策。使用 RCPs 對所有成員帳戶強制執行標準網路限制，確保一致的安全狀態，而無需個別帳戶層級組態。  
**範例案例：**擁有 100 個以上 AWS 帳戶的企業使用 RCPs來強制執行政策，要求所有主控台存取來自其組織內的 VPC 端點，以確認所有帳戶的網路控制一致。

第三方存取控制  
將暫時主控台存取權授予特定網路的合作夥伴或承包商。組織可以為外部各方建立限時、網路受限的主控台存取，而不會影響整體安全狀態。  
**範例案例：**公司需要授予諮詢公司臨時主控台存取權。他們建立以資源為基礎的政策，僅允許從諮詢公司的已知 IP 範圍存取，也僅允許指派給顧問的 IAM 角色存取。

限制主控台對特定主體的存取  
僅允許一組定義的主體登入 AWS 管理主控台，並拒絕所有其他主體，無論網路位置為何。這對於未使用 VPC 端點且想要身分型主控台限制的客戶非常有用。拒絕主控台登入的主體會保留其程式設計存取； AWS 登入政策只會將主控台登入設為閘道，而且只有您豁免的主體可以登入。  
**範例案例：**公司只想要其管理員使用 主控台。他們會設定 RCP，拒絕管理員主體 ARNs 以外的所有主體的主控台登入。具有有效登入資料的 Amazon EC2 執行個體角色無法登入 主控台，因為它不是豁免的主體，即使其保留其程式設計許可。這解決了執行個體角色登入資料用於主控台登入的常見案例。

## 對主控台存取控制進行故障診斷
<a name="console-access-control-troubleshooting"></a>

### 由於以資源為基礎的登入政策中的網路條件，我無法登入
<a name="console-access-control-ts-network"></a>

當 AWS 登入政策拒絕存取時，您可能會看到下列其中一個錯誤訊息：
+ 「您的身分驗證資訊不正確。請再試一次。」 （以資源為基礎的政策拒絕驗證前）
+ 「驗證失敗 無效的請求」(RCP 拒絕驗證前）
+ 「驗證失敗：若要存取此帳戶，請從不同的網路登入，或聯絡您的管理員以取得詳細資訊」（驗證後拒絕）

如果您看到任何這些錯誤，且認為應該允許存取，請聯絡您的 AWS 管理員。他們可以檢閱 CloudTrail 日誌中是否有`errorMessage`「因資源型政策而拒絕授權」或「因資源控制政策而拒絕授權」`ConsoleLogin`的事件，以識別哪些政策陳述式拒絕存取。

**可能原因：**
+ 您的來源 IP 地址不在允許的 CIDR 範圍內。
+ 您未連線到所需的 VPC 或 VPC 端點。
+ 您正在存取的區域登入端點不符合政策中的預期區域。
+ 您的委託人 ARN 未正確列在政策的排除委託人中。
+ 政策最近已更新，變更尚未全域複寫。

**解決方法：**
+ 確認您已連線至公司網路或 VPN。
+ 如果已設定 VPC 端點型限制，請確認您正在透過正確的 VPC 端點存取 。
+ 請聯絡您的 AWS 管理員以驗證政策組態，並確認哪些網路已獲授權。
+ 如果您設定為排除主體，請確認您的主體 ARN 在排除主體清單中已正確設定。
+ 如果最近進行了政策變更，請等待幾分鐘讓全域複寫完成。

**對於診斷此問題的管理員：**
+ 檢閱政策評估事件的 AWS CloudTrail 日誌，以識別哪些政策陳述式拒絕存取。
+ 使用 `aws signin get-resource-policy` 來檢閱目前的政策組態。
+ 確認使用者的網路位置符合政策中的條件。
+ 如果使用者應免於網路限制，請確認已正確設定排除的主體。

### 啟用主控台授權後，我的帳戶遭到鎖定
<a name="console-access-control-ts-lockout"></a>

如果您已設定主控台授權，且 無法再存取您的帳戶，則在強制執行政策之前，您可能尚未設定排除的委託人。

有多個路徑可以重新取得存取權，具體取決於您的帳戶類型和可用的登入資料。

**選項 1：使用程式設計存取 (AWS CLI 或 SDK)**

主控台授權政策僅適用於互動式主控台登入。它們不適用於使用 SigV4 簽署的 API 請求。如果您有程式設計存取 （例如，現有的存取金鑰、跨帳戶角色），請使用它來呼叫`signin:DeleteConsoleAuthorizationConfiguration`和移除限制政策。您使用的登入資料必須具有呼叫 的許可`signin:DeleteConsoleAuthorizationConfiguration`。`AWSSignInResourcePolicyManagement` 受管政策包含此 permission. AWS recommends temporary credentials over long-term IAM user access key。對於成員帳戶，管理帳戶管理員可以在成員帳戶中擔任 `OrganizationAccountAccessRole` ，以取得臨時登入資料。此角色不會在受邀加入組織的帳戶中自動建立。

```
aws signin delete-console-authorization-configuration \
  --target-id <your-aws-account-id> \
  --region us-east-1
```

或刪除特定許可陳述式：

```
# First, list statements to get the statement ID
aws signin list-resource-permission-statements \
  --region us-east-1

# Then delete the problematic statement
aws signin delete-resource-permission-statement \
  --statement-id <statement-id> \
  --region us-east-1
```

**選項 2：聯絡 AWS 支援**

如果您沒有程式設計存取權，且無法使用 `OrganizationAccountAccessRole` 進行帳戶存取，請聯絡 AWS Support 以啟動鎖定復原程序。

復原程序的運作方式如下：

1. 如果您無法使用上述選項解決問題，請在支援中心開立 AWS 支援案例。 AWS 支援將在檢查您的帳戶之前驗證您的身分。驗證方法可能包括確認根使用者帳戶電子郵件地址、回應電話驗證呼叫，或回答帳戶安全問題。

1. AWS 支援確認主控台存取問題是由資源型政策鎖定所造成。

1. AWS 支援會共用復原入口網站連結。使用此連結，在具有 `signin:DeleteConsoleAuthorizationConfiguration`許可的帳戶中使用 IAM 主體登入。此許可允許主體刪除導致鎖定的主控台授權組態。

**重要**  
復原入口網站會移除帳戶的整個主控台授權組態，包括所有資源許可陳述式。復原入口網站不允許重新設定以資源為基礎的 AWS 登入政策。

復原入口網站連結會在 AWS Support 共用 72 小時後過期。如果您沒有在該時段內完成復原，請聯絡 AWS Support 以重新啟動程序。

**重新取得存取權之後：**
+ 檢閱並更新您的資源許可陳述式，以包含正確設定的已排除主體。
+ 在重新啟用主控台授權之前，從預期的網路測試主控台存取。
+ 記錄您的復原程序以供日後參考。

### 我所做的變更不一定都會立刻生效
<a name="console-access-control-ts-replication"></a>

政策變更會全域複寫，但複寫可能需要幾分鐘的時間。

**解決方法：**
+ 進行政策變更以完成全域複寫後，請等待幾分鐘。
+ 使用 `get-resource-policy`命令驗證您的變更：

```
aws signin get-resource-policy --region <your-region>
```
+ 檢查政策評估事件的 AWS CloudTrail 日誌，以確認正在評估新政策。
+ 確認您為操作使用正確的區域 （寫入操作必須使用 `us-east-1`)。
+ 如果使用 VPC 端點型條件，請確認 VPC 端點政策也已正確設定。

**常見的政策複寫問題：**
+ **快取的登入頁面：**瀏覽器可能會快取登入頁面。清除您的瀏覽器快取或使用 incognito 視窗來測試政策變更。
+ **衝突陳述式：**如果您有多個許可陳述式，請確認它們不會彼此衝突。使用 `get-resource-policy`來檢閱合併政策。
+ **VPC 端點政策：** AWS 登入政策可與 VPC 端點政策搭配使用。兩者都必須允許所需的存取。