

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

# 設定 OpenSearch Dashboards 的 Amazon Cognito 身分驗證
<a name="cognito-auth"></a>

您可以使用 [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) 進行身分驗證並保護 OpenSearch Dashboards 的 Amazon OpenSearch Service 預設安裝。Amazon Cognito 身分驗證是可選的，並僅適用於使用 OpenSearch 或 Elasticsearch 5.1 或更高版本的網域。如果您不設定 Amazon Cognito 身分驗證，您仍然可以使用[以 IP 為基礎的存取政策](ac.md#ac-types-ip)和[代理伺服器](dashboards.md#dashboards-proxy)、HTTP 基本身分驗證或 [SAML](saml.md) 來保護 Dashboards。

大部分身分驗證程序發生在 Amazon Cognito 中，但本節提供設定 Amazon Cognito 資源以使用 OpenSearch Service 網域的準則和要求。[標準定價](https://aws.amazon.com/cognito/pricing/)適用於所有 Amazon Cognito 資源。

**提示**  
第一次設定網域以便對 OpenSearch Dashboards 使用 Amazon Cognito 身分驗證時，我們建議您使用主控台。Amazon Cognito 資源完全可自訂，而主控台可協助您識別和了解重要的功能。

**Topics**
+ [先決條件](#cognito-auth-prereq)
+ [設定網域以使用 Amazon Cognito 身分驗證](#cognito-auth-config)
+ [允許已經過身分驗證的角色](#cognito-auth-config-ac)
+ [設定身分提供者](#cognito-auth-identity-providers)
+ [(選用) 設定精細分級的存取](#cognito-auth-granular)
+ [(選用) 自訂登入頁面](#cognito-auth-customize)
+ [(選用) 設定進階安全性](#cognito-auth-advanced)
+ [測試](#cognito-auth-testing)
+ [配額](#cognito-auth-limits)
+ [常見的設定問題](#cognito-auth-troubleshooting)
+ [停用 OpenSearch Dashboards 的 Amazon Cognito 身分驗證](#cognito-auth-disable)
+ [刪除使用 OpenSearch Dashboards 的 Amazon Cognito 身分驗證的網域](#cognito-auth-delete)

## 先決條件
<a name="cognito-auth-prereq"></a>

您必須滿足幾個先決條件，之後您才能夠為 OpenSearch Dashboards 設定 Amazon Cognito 身分驗證。OpenSearch Service 主控台可協助簡化這些資源的建立，但了解每個資源的目的有助於進行設定和故障診斷。針對 Dashboards 的 Amazon Cognito 身分驗證需要下列資源：
+ Amazon Cognito [使用者集區](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html)
+ Amazon Cognito [身分集區](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html)
+ 連接 `AmazonOpenSearchServiceCognitoAccess` 政策的 IAM 角色 (`CognitoAccessForAmazonOpenSearch`)

**注意**  
使用者集區和身分集區必須在相同的 AWS 區域。您可以使用相同的使用者集區、身分集區和 IAM 角色，將 Dashboards 的 Amazon Cognito 身分驗證新增到多個 OpenSearch Service 網域。如需詳細資訊，請參閱 [配額](#cognito-auth-limits)。

### 關於使用者集區
<a name="cognito-auth-prereq-up"></a>

使用者集區有兩個主要功能：建立和管理使用者目錄，並讓使用者註冊和登入。如需建立使用者集區的指示，請參閱《*Amazon Cognito 開發人員指南*》中的[使用者集區入門](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-user-pools.html)。

當您建立使用者集區以與 OpenSearch Service 搭配使用時，請考慮以下事項：
+ 您的 Amazon Cognito 使用者集區必須擁有[網域名稱](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-domain.html)。OpenSearch Service 使用此網域名稱將使用者重新引導至存取 Dashboards 的登入頁面。除了網域名稱，使用者集區不需要任何非預設組態。
+ 您必須指定集區所需的[標準屬性](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#cognito-user-pools-standard-attributes) -​ 例如名稱、出生日期、電子郵件地址和電話號碼等屬性。在您建立使用者集區之後您無法變更這些屬性，因此請選擇目前對您重要的屬性。
+ 建立您的使用者集區時，選擇使用者是否可以建立自己的帳戶、帳戶的最低密碼強度，以及是否啟用多重要素驗證。如果您計劃使用[外部身分提供者](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-federation.html)，這些設定是無關緊要的。通常，您可以讓使用者集區做為身分提供者*並且*啟用外部身分提供者，但大多數使用者偏好非此即彼。

使用者集區 ID 採用 `region_ID` 格式。如果您計劃使用 AWS CLI 或 AWS SDK 來設定 OpenSearch Service，請記下 ID。

### 關於身分集區
<a name="cognito-auth-prereq-ip"></a>

身分集區可讓您在使用者登入後將臨時受限的許可角色指派給使用者。如需建立身分集區的指示，請參閱《*Amazon Cognito 開發人員指南*》中的[身分集區主控台概觀](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html)。當您建立身分集區以與 OpenSearch Service 搭配使用時，請考慮以下事項：
+ 如果您使用 Amazon Cognito 主控台，您必須選擇 **Enable access to unauthenticated identities** (允許存取未經驗證的身分) 核取方塊，以建立身分集區。在您建立身分集區並設定 OpenSearch Service 網域之後，Amazon Cognito 會停用此設定。
+ 您不需要新增[外部身分提供者](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html)到身分集區。當您設定 OpenSearch Service 以使用 Amazon Cognito 身分驗證時，它會設定身分集區以使用您剛建立的使用者集區。
+ 建立身分集區之後，您必須選擇未經授權和經過授權的 IAM 角色。這些角色指定使用者登入前後的存取政策。如果您使用 Amazon Cognito 主控台，它可為您建立這些角色。在您建立經過授權的角色後，請記下採用 `arn:aws:iam::123456789012:role/Cognito_identitypoolnameAuth_Role` 格式的 ARN。

身分集區 ID 採用 `region:ID-ID-ID-ID-ID` 格式。如果您計劃使用 AWS CLI 或 AWS SDK 來設定 OpenSearch Service，請記下 ID。

### 關於 CognitoAccessForAmazonOpenSearch 角色
<a name="cognito-auth-role"></a>

OpenSearch Service 需要許可才能設定 Amazon Cognito 使用者集區和身分集區，並使用它們來進行身分驗證。為此，您可以使用 `AmazonOpenSearchServiceCognitoAccess`，這是 AWS 受管政策。 `AmazonESCognitoAccess` 是舊版政策，當服務重新命名為 Amazon OpenSearch Service `AmazonOpenSearchServiceCognitoAccess`時，已由 取代。這兩個政策都提供啟用 Amazon Cognito 身分驗證所需的最低 Amazon Cognito 許可。如需政策詳細資訊，請參閱《 *AWS 受管政策參考指南*》中的 [AmazonOpenSearchServiceCognitoAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonOpenSearchServiceCognitoAccess.html)。

如果您使用主控台來建立或設定 OpenSearch Service 網域，它會為您建立 IAM 角色，然後將 `AmazonOpenSearchServiceCognitoAccess` 政策 (或者，若為 Elasticsearch 網域，則為 `AmazonESCognitoAccess` 政策) 連接到角色。此角色的預設名稱為 `CognitoAccessForAmazonOpenSearch`。

角色許可政策 `AmazonOpenSearchServiceCognitoAccess` 和 `AmazonESCognitoAccess` 均允許 OpenSearch Service 在所有身分識別和使用者集區上完成下列動作：
+ 動作：`cognito-idp:DescribeUserPool`
+ 動作：`cognito-idp:CreateUserPoolClient`
+ 動作：`cognito-idp:DeleteUserPoolClient`
+ 動作：`cognito-idp:UpdateUserPoolClient`
+ 動作：`cognito-idp:DescribeUserPoolClient`
+ 動作：`cognito-idp:AdminInitiateAuth`
+ 動作：`cognito-idp:AdminUserGlobalSignOut`
+ 動作：`cognito-idp:ListUserPoolClients`
+ 動作：`cognito-identity:DescribeIdentityPool`
+ 動作：`cognito-identity:SetIdentityPoolRoles`
+ 動作：`cognito-identity:GetIdentityPoolRoles`

如果您使用 AWS CLI 或其中一個 AWS SDKs，則必須建立自己的角色、連接政策，並在設定 OpenSearch Service 網域時指定此角色的 ARN。角色必須具有下列信任關係：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "opensearchservice.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

如需說明，請參閱《IAM 使用者指南》中的[建立角色以將許可委派給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)，以及新增和移除 IAM 身分許可。 [https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) **

## 設定網域以使用 Amazon Cognito 身分驗證
<a name="cognito-auth-config"></a>

在完成先決條件之後，您可以設定 OpenSearch Service 網域以使用適用於 Dashboards 的 Amazon Cognito。

**注意**  
Amazon Cognito 不適用於所有 AWS 區域。如需支援的區域清單；請參閱 Amazon Cognito [的服務端點](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html#cognito_identity_region)。您不需要對用於 OpenSearch Service 的 Amazon Cognito 使用相同區域。

### 設定 Amazon Cognito 身分驗證 (主控台)
<a name="cognito-auth-config-console"></a>

由於主控台會為您建立 `CognitoAccessForAmazonOpenSearch`角色，因此可提供最簡單的組態體驗。除了標準 OpenSearch Service 許可外，您還需要以下一組許可，才能使用主控台來建立網域，該網域對 OpenSearch 儀表板使用 Amazon Cognito 身分驗證。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcs",
        "cognito-identity:ListIdentityPools",
        "cognito-idp:ListUserPools",
        "iam:CreateRole",
        "iam:AttachRolePolicy"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:GetRole",
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/service-role/CognitoAccessForAmazonOpenSearch"
    }
  ]
}
```

------

如需有關將許可新增至身分 (使用者、使用者群組或角色) 的說明，請參閱[新增 IAM 身分許可 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)。

如果 `CognitoAccessForAmazonOpenSearch` 已存在，您需要的許可更少：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcs",
        "cognito-identity:ListIdentityPools",
        "cognito-idp:ListUserPools"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:GetRole",
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/service-role/CognitoAccessForAmazonOpenSearch"
    }
  ]
}
```

------

**若要設定 Dashboards 的 Amazon Cognito 身分驗證 (主控台)**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home/](https://console.aws.amazon.com/aos/home/) 的 Amazon OpenSearch Service 主控台。

1. 在 **Domains** (網域) 下，選取您要設定的網域。

1. 選擇 **Actions** (動作)、**Edit security configuration** (編輯安全組態)。

1. 選擇 **Enable Amazon Cognito authentication** (啟用 Amazon Cognito 身分驗證)。

1. 針對**區域**，選取 AWS 區域 包含 Amazon Cognito 使用者集區和身分集區的 。

1. 對於 **Cognito user pool** (Cognito 使用者集區)，選擇使用者集區或建立集區。如需詳細資訊，請參閱[關於使用者集區](#cognito-auth-prereq-up)。

1. 對於 **Cognito identity pool** (Cognito 身分集區)，選擇身分集區或建立集區。如需詳細資訊，請參閱[關於身分集區](#cognito-auth-prereq-ip)。
**注意**  
**Create user pool** (建立使用者集區) 和 **Create identity pool** (建立身分集區) 連結會將您導向到 Amazon Cognito 主控台，並要求您手動建立這些資源。此程序不是自動的。如需詳細資訊，請參閱[先決條件](#cognito-auth-prereq)。

1. 對於 **IAM role name** (IAM 角色名稱)，使用 `CognitoAccessForAmazonOpenSearch` 的預設值 (建議) 或輸入新名稱。如需詳細資訊，請參閱[關於 CognitoAccessForAmazonOpenSearch 角色](#cognito-auth-role)。

1. 選擇 **Save changes** (儲存變更)。

在您的網域完成處理之後，請參閱[允許已經過身分驗證的角色](#cognito-auth-config-ac)和[設定身分提供者](#cognito-auth-identity-providers)以取得其他設定步驟。

### 設定 Amazon Cognito 身分驗證 (AWS CLI)
<a name="cognito-auth-config-cli"></a>

使用 `--cognito-options` 參數來設定 OpenSearch Service 網域。由 `create-domain` 和 `update-domain-config` 命令使用以下語法：

```
--cognito-options Enabled=true,UserPoolId="user-pool-id",IdentityPoolId="identity-pool-id",RoleArn="arn:aws:iam::123456789012:role/CognitoAccessForAmazonOpenSearch"
```

**範例**

以下範例在 `us-east-1` 區域建立網域，該區域使用 `CognitoAccessForAmazonOpenSearch` 角色來啟用 Dashboards 的 Amazon Cognito 身分驗證，並提供對 `Cognito_Auth_Role` 的網域存取：

```
aws opensearch create-domain --domain-name my-domain --region us-east-1 --access-policies '{ "Version": "2012-10-17",		 	 	  "Statement":[{"Effect":"Allow","Principal":{"AWS": ["arn:aws:iam::123456789012:role/Cognito_Auth_Role"]},"Action":"es:ESHttp*","Resource":"arn:aws:es:us-east-1:123456789012:domain/*" }]}' --engine-version "OpenSearch_1.0" --cluster-config InstanceType=m4.xlarge.search,InstanceCount=1 --ebs-options EBSEnabled=true,VolumeSize=10 --cognito-options Enabled=true,UserPoolId="us-east-1_123456789",IdentityPoolId="us-east-1:12345678-1234-1234-1234-123456789012",RoleArn="arn:aws:iam::123456789012:role/CognitoAccessForAmazonOpenSearch"
```

在您的網域完成處理之後，請參閱[允許已經過身分驗證的角色](#cognito-auth-config-ac)和[設定身分提供者](#cognito-auth-identity-providers)以取得其他設定步驟。

### 設定 Amazon Cognito 身分驗證AWS SDKs)
<a name="cognito-auth-config-sdk"></a>

 AWS SDKs (Android 和 iOS SDKs除外） 支援 [Amazon OpenSearch Service API 參考](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/Welcome.html)中定義的所有操作，包括 `CreateDomain`和 `UpdateDomainConfig`操作的 `CognitoOptions` 參數。如需安裝和使用 AWS SDKs 的詳細資訊，請參閱[AWS 軟體開發套件](https://aws.amazon.com/code)。

在您的網域完成處理之後，請參閱[允許已經過身分驗證的角色](#cognito-auth-config-ac)和[設定身分提供者](#cognito-auth-identity-providers)以取得其他設定步驟。

## 允許已經過身分驗證的角色
<a name="cognito-auth-config-ac"></a>

在預設情況下，您遵照 [關於身分集區](#cognito-auth-prereq-ip) 中的準則設定的已經過身分驗證的 IAM 角色並不具備存取 OpenSearch Dashboards 所必需的權限。您必須提供該角色額外的許可。

**注意**  
如果您已設定[精細存取控制](fgac.md)並使用開放或以 IP 為基礎的存取政策，您可以略過此步驟。

您可以將這些許可包含在[身分型](ac.md#ac-types-identity)政策中，但除非您希望已經過身分驗證的使用者可存取所有 OpenSearch Service 網域，否則連接到單一網域的[資源型政策](ac.md#ac-types-resource)會是更好的方法。

針對 `Principal`，指定您使用 [關於身分集區](#cognito-auth-prereq-ip) 中的準則設定之 Cognito 經身分驗證角色的 ARN。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "AWS":[
               "arn:aws:iam::111122223333:role/Cognito_identitypoolname/Auth_Role"
            ]
         },
         "Action":[
            "es:ESHttp*"
         ],
         "Resource":"arn:aws:es:us-east-1:111122223333:domain/domain-name/*"
      }
   ]
}
```

------

 如需有關將資源型政策新增到 OpenSearch Service 網域的說明，請參閱[設定存取政策](createupdatedomains.md#createdomain-configure-access-policies)。

## 設定身分提供者
<a name="cognito-auth-identity-providers"></a>

當您設定網域以使用 Dashboards 的 Amazon Cognito 身分驗證時，OpenSearch Service 會將[應用程式用戶端](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html)新增到使用者集區，並將使用者集區作為身分驗證供應商新增到身分集區。

**警告**  
不重新命名或刪除應用程式用戶端。

根據您設定使用者集區的方式而定，您可能需要手動建立使用者帳戶，或者使用者可以建立自己的帳戶。如果這些設定是可接受的，您便無需做進一步的動作。不過，許多人偏好使用外部身分提供者。

若要啟用 SAML 2.0 身分提供者，您必須提供 SAML 中繼資料文件。若要啟用社交身分提供者，例如，Login with Amazon、Facebook 和 Google，您必須擁有這些供應商提供的應用程式 ID 和應用程式密碼。您可以啟用任意組合的身分提供者。

設定使用者集區的最簡單方式就是使用 Amazon Cognito 主控台。如需說明，請參閱《*Amazon Cognito 開發人員指南*》中的[使用第三方身分提供者的使用者集區登入](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-federation.html)和[使用應用程式用戶端的應用程式特定設定](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-idp-settings.html)。

## (選用) 設定精細分級的存取
<a name="cognito-auth-granular"></a>

您可能已注意到預設身分集區設定會指派登入相同 IAM 角色 (`Cognito_identitypoolAuth_Role`) 的每個使用者，這表示每個使用者可以存取相同的 AWS 資源。如果您想要搭配使用[精細存取控制](fgac.md)與 Amazon Cognito (例如，如果希望您組織的分析師擁有多個索引的唯讀存取權，而開發人員擁有所有索引的寫入存取權)，您有兩個選擇：
+ 建立使用者群組並設定您的身分提供者，以根據使用者的身分驗證字符選擇 IAM 角色 (建議)。
+ 設定您的身分提供者，以根據一個或多個規則選擇 IAM 角色。

如需包含精細存取控制的演練，請參閱 [教學課程：使用 IAM 主要使用者和 Amazon Cognito 身分驗證設定網域](fgac-iam.md)。

**重要**  
與預設角色相似，Amazon Cognito 必須是每個額外角色信任關係的一部分。如需詳細資訊，請參閱《*Amazon Cognito 開發人員指南*》中的[為角色映射建立角色](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html#creating-roles-for-role-mapping)。

### 使用者群組和字符
<a name="cognito-auth-granular-tokens"></a>

當您建立使用者群組時，您為群組成員選擇 IAM 角色。如需建立群組的相關資訊，請參閱《*Amazon Cognito 開發人員指南*》中的[將群組新增至使用者集](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-user-groups.html)區。

在您建立一或多個使用者群組後，您可以設定您的驗證供應商，以指派使用者其群組的角色，而不是身分集區的預設角色。選取 **Choose role from token** (從字符中選擇角色)，然後選擇 **Use default Authenticated role** (使用預設已經過身分驗證的角色) 或 **DENY** (拒絕)，以指定身分集區應該如何處理不屬於群組的使用者。

### 規則
<a name="cognito-auth-granular-rules"></a>

規則本質上是 Amazon Cognito 依序評估的一系列 `if` 陳述式。例如，如果使用者的電子郵件地址包含 `@corporate`，Amazon Cognito 會為該使用者指派 `Role_A`。如果使用者的電子郵件地址包含 `@subsidiary`，它會指派該使用者 `Role_B`。否則，它會指派使用者預設驗證角色。

若要進一步了解，請參閱《*Amazon Cognito 開發人員指南*》中的[使用規則型映射將角色指派給使用者](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html#using-rules-to-assign-roles-to-users)。

## (選用) 自訂登入頁面
<a name="cognito-auth-customize"></a>

您可以使用 Amazon Cognito 主控台上傳自訂標誌，並對登入頁面進行 CSS 變更。如需 CSS 屬性的說明和完整清單，請參閱《*Amazon Cognito 開發人員指南*》中的[自訂託管 UI （傳統） 品牌](https://docs.aws.amazon.com/cognito/latest/developerguide/hosted-ui-classic-branding.html)。

## (選用) 設定進階安全性
<a name="cognito-auth-advanced"></a>

Amazon Cognito 使用者集區支援進階安全功能，例如多重驗證、遭盜用認證檢查和調整式驗證。若要進一步了解，請參閱《[Amazon Cognito 開發人員指南》中的使用 Amazon Cognito 使用者集區安全功能](https://docs.aws.amazon.com/cognito/latest/developerguide/managing-security.html)。 *Amazon Cognito *

## 測試
<a name="cognito-auth-testing"></a>

在您滿意您的設定之後，請驗證使用者體驗是否符合您的期望。

**若要存取 OpenSearch Dashboards**

1. 在 Web 瀏覽器中導覽至 `https://opensearch-domain/_dashboards`。若要直接登入特定租用戶，請將 `?security_tenant=tenant-name` 附加至 URL。

1. 使用您慣用的登入資料登入。

1. 載入 OpenSearch Dashboards 之後，至少設定一個索引模式。Dashboards 使用這些模式來識別您要分析的索引。輸入 `*`，選擇 **Next step (下一步)**，然後選擇 **Create index pattern (建立索引模式)**。

1. 若要搜尋或探索您的資料，請選擇 **Discover (探索)**。

如果此程序中的任何步驟失敗，請參閱[常見的設定問題](#cognito-auth-troubleshooting)以取得故障診斷資訊。

## 配額
<a name="cognito-auth-limits"></a>

Amazon Cognito 對於許多資源有軟性限制。如果您想要為大量的 OpenSearch Service 網域啟用 Dashboards 身分驗證，請視需要檢閱 [Amazon Cognito 中的配額](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html)並[請求提高限制](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)。

每個 OpenSearch Service 網域會新增[應用程式用戶端](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html)到使用者集區，這會新增[身分驗證供應商](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html)到身分集區。如果您對 10 個以上的網域啟用 OpenSearch Dashboards 身分驗證，您可能會遇到「每個身分集區的 Amazon Cognito 使用者集區供應商上限」限制。如果超出限制，您嘗試設定以使用 Dashboards 的 Amazon Cognito 身分驗證的任何 OpenSearch Service 網域可能凍結在 **Processing** (處理) 的設定狀態中。

## 常見的設定問題
<a name="cognito-auth-troubleshooting"></a>

下表列出常見的設定問題和解決方案。


**設定 OpenSearch Service**  

| 問題 | 解決方案 | 
| --- | --- | 
|  `OpenSearch Service can't create the role` (主控台)  | 您沒有正確的 IAM 許可。新增 [設定 Amazon Cognito 身分驗證 (主控台)](#cognito-auth-config-console) 中指定的許可。 | 
|  `User is not authorized to perform: iam:PassRole on resource CognitoAccessForAmazonOpenSearch` (主控台)  | 您沒有 [CognitoAccessForAmazonOpenSearch](#cognito-auth-role) 角色的 iam:PassRole 許可。將下列政策連接至您的帳戶：  JSON   

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/service-role/CognitoAccessForAmazonOpenSearch"
    }
  ]
}
```    或者，您可以連接 `IAMFullAccess` 政策。 | 
|  `User is not authorized to perform: cognito-identity:ListIdentityPools on resource`  |  您沒有 Amazon Cognito 的讀取許可。將 `AmazonCognitoReadOnly` 政策連接至您的帳戶。  | 
|  `An error occurred (ValidationException) when calling the CreateDomain operation: OpenSearch Service must be allowed to use the passed role`  |  並未在 `CognitoAccessForAmazonOpenSearch` 角色的信任關係中指定 OpenSearch Service。確認您的角色使用 [關於 CognitoAccessForAmazonOpenSearch 角色](#cognito-auth-role) 中指定的信任關係。或者，使用主控台來設定 Amazon Cognito 身分驗證。主控台會為您建立一個角色。  | 
|  `An error occurred (ValidationException) when calling the CreateDomain operation: User is not authorized to perform: cognito-idp:action on resource: user pool`  | 在 --cognito-options 中指定的角色沒有存取 Amazon Cognito 的許可。檢查角色是否已連接 AWS 受管AmazonOpenSearchServiceCognitoAccess政策。或者，使用主控台來設定 Amazon Cognito 身分驗證。主控台會為您建立一個角色。 | 
| An error occurred (ValidationException) when calling the CreateDomain operation: User pool does not exist |  OpenSearch Service 找不到使用者集區。確認您已建立一個且具有正確的 ID。若要尋找 ID，您可以使用 Amazon Cognito 主控台或下列 AWS CLI 命令： <pre>aws cognito-idp list-user-pools --max-results 60 --region region</pre>  | 
|  `An error occurred (ValidationException) when calling the CreateDomain operation: IdentityPool not found`  |  OpenSearch Service 找不到身分集區。確認您已建立一個且具有正確的 ID。若要尋找 ID，您可以使用 Amazon Cognito 主控台或下列 AWS CLI 命令： <pre>aws cognito-identity list-identity-pools --max-results 60 --region region</pre>  | 
|  `An error occurred (ValidationException) when calling the CreateDomain operation: Domain needs to be specified for user pool`  | 使用者集區沒有網域名稱。您可以使用 Amazon Cognito 主控台或以下 AWS CLI 命令來設定一個：<pre>aws cognito-idp create-user-pool-domain --domain name --user-pool-id id</pre> | 


**存取 OpenSearch Dashboards**  

| 問題 | 解決方案 | 
| --- | --- | 
| 登入頁面不會顯示我慣用的身分提供者。 |  確認您已為 OpenSearch Service 應用程式用戶端啟用 [設定身分提供者](#cognito-auth-identity-providers) 中指定的身分提供者。  | 
|  登入頁面看起來不似與我的組織關聯。  |  請參閱 [(選用) 自訂登入頁面](#cognito-auth-customize)。  | 
| 我的登入資料無法運作。 |  確認您已如 [設定身分提供者](#cognito-auth-identity-providers) 中所指定，來設定身分提供者。 如果您使用使用者集區做為身分提供者，請檢查帳戶是否存在於 Amazon Cognito 主控台。  | 
|  OpenSearch Dashboards 完全不載入，或無法正常運作。  |  Amazon Cognito 經過身分驗證的角色需要網域 (`/*`) 的 `es:ESHttp*` 許可來存取和使用 Dashboards。如 [允許已經過身分驗證的角色](#cognito-auth-config-ac) 中所指定，檢查您新增的存取政策。  | 
|  當我從一個索引標籤登出 OpenSearch Dashboards 時，剩餘的索引標籤會顯示一則訊息，指出重新整理字符已被撤銷。  |  當您在使用 Amazon Cognito 身分驗證時登出 OpenSearch Dashboards 工作階段時，OpenSearch Service 會執行 [AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html) 操作，該操作會將您登出*所有*作用中的 OpenSearch Dashboards 工作階段。  | 
| Invalid identity pool configuration. Check assigned IAM roles for this pool. | Amazon Cognito 無權代表已經過身分驗證的使用者擔任 IAM 角色。修改角色的信任關係，使其包含：  JSON   

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "Federated": "cognito-identity.amazonaws.com"
    },
    "Action": "sts:AssumeRoleWithWebIdentity",
    "Condition": {
      "StringEquals": {
        "cognito-identity.amazonaws.com:aud": "identity-pool-id"
      },
      "ForAnyValue:StringLike": {
        "cognito-identity.amazonaws.com:amr": "authenticated"
      }
    }
  }
 ]
}
```     | 
| Token is not from a supported provider of this identity pool. | 當您從使用者集區移除應用程式用戶端時，可能發生此少見的錯誤。嘗試在新的瀏覽器工作階段中開啟 Dashboards。 | 

## 停用 OpenSearch Dashboards 的 Amazon Cognito 身分驗證
<a name="cognito-auth-disable"></a>

使用下列步驟來停用 Dashboards 的 Amazon Cognito 身分驗證。

**若要停用 Dashboards 的 Amazon Cognito 身分驗證 (主控台)**

1. 開啟 [Amazon OpenSearch Service 主控台](https://console.aws.amazon.com/aos/home/)。

1. 在 **Domains** (網域) 下，選擇您要設定的網域。

1. 選擇 **Actions** (動作)、**Edit security configuration** (編輯安全組態)。

1. 取消選擇 **Enable Amazon Cognito authentication** (啟用 Amazon Cognito 身分驗證)。

1. 選擇**儲存變更**。

**重要**  
如果您不再需要 Amazon Cognito 使用者集區和身分集區，請刪除它們。否則，您需繼續負擔費用。

## 刪除使用 OpenSearch Dashboards 的 Amazon Cognito 身分驗證的網域
<a name="cognito-auth-delete"></a>

為避免使用 Dashboards 的 Amazon Cognito 身分驗證的網域凍結在 **Processing** (處理) 的設定狀態，請在刪除其相關的 Amazon Cognito 使用者和身分集區*之前*，刪除 OpenSearch Service 網域。