

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 ドメインで使用するように設定するためのガイドラインと要件を示します。すべての Amazon Cognito リソースに[標準の料金](https://aws.amazon.com/cognito/pricing/)が適用されます。

**ヒント**  
OpenSearch Dashboards の Amazon Cognito 認証を使用するようにドメインを初めて設定するときは、コンソールを使用することをお勧めします。Amazon Cognito リソースは高度にカスタマイズ可能であり、コンソールにより、該当する機能を識別して理解しやすくなります。

**Topics**
+ [前提条件](#cognito-auth-prereq)
+ [Amazon Cognito 認証を使用するためのドメインの設定](#cognito-auth-config)
+ [認証されたロールの許可](#cognito-auth-config-ac)
+ [ID プロバイダの設定](#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 [ID プール](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html)
+ `AmazonOpenSearchServiceCognitoAccess` ポリシーがアタッチされた IAM ロール (`CognitoAccessForAmazonOpenSearch`)

**注記**  
ユーザープールと ID プールは、同じ AWS リージョンに存在している必要があります。同じユーザープール、ID プール、および IAM ロールを使用して、Dashboards の Amazon Cognito 認証を複数の OpenSearch Service ドメインに追加できます。詳細については[クォータ](#cognito-auth-limits)を参照してください。

### ユーザープールについて
<a name="cognito-auth-prereq-up"></a>

ユーザープールには、次の 2 つの主要な機能があります。それらは、ユーザーのディレクトリを作成および管理する機能と、ユーザーによるサインアップとログインを許可する機能です。ユーザープールを作成する手順については、「*Amazon Cognito デベロッパーガイド*」の「[Getting started with user pools](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) (名前、誕生日、E メールアドレス、電話番号など) を指定する必要があります。ユーザープールの作成後にこれらの属性を変更することはできないため、この時点で関連するものを選択します。
+ ユーザープールを作成する際に、ユーザーが自分のアカウントを作成できるかどうか、アカウントのパスワードの最低強度、多要素認証を有効にするかどうかを選択します。[外部 ID プロバイダ](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-federation.html)を使用する予定がある場合、これらの設定は重要ではありません。技術的には、ID プロバイダとしてユーザープールを有効にし、*さらに*外部 ID プロバイダを有効にすることができますが、ほとんどのユーザーはどちらか一方を希望します。

ユーザープール ID の形式は `{{region}}_{{ID}}` です。CLI または AWS SDK AWS を使用して OpenSearch Service を設定する場合は、ID を書き留めます。

### ID プールについて
<a name="cognito-auth-prereq-ip"></a>

ID プールにより、ユーザーのログイン後に、権限の制限された一時的なロールをユーザーに割り当てることができます。アイデンティティプールを作成する手順については、「[Amazon Cognito デベロッパーガイド](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html)」の「*Identity pools console overview*」を参照してください。OpenSearch Service で使用する ID プールを作成するときは、以下の点を考慮します。
+ Amazon Cognito コンソールを使用する場合は、[**認証されていない ID に対してアクセスを有効にする**] チェックボックスをオンにして、ID プールを作成する必要があります。ID プールを作成し、OpenSearch Service ドメインを設定すると、Amazon Cognito によりこの設定は無効になります。
+ ID プールに[外部 ID プロバイダ](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html)を追加する必要はありません。Amazon Cognito 認証を使用するように OpenSearch Service を設定すると、先ほど作成したユーザープールを使用するように ID プールが設定されます。
+ ID プールを作成した後、認証されていない IAM ロールと認証された IAM ロールを選択する必要があります。これらのロールにより、ログイン前およびログイン後にユーザーに与えられるアクセスポリシーが指定されます。Amazon Cognito コンソールを使用する場合は、これらのロールを自動的に作成できます。認証されたロールを作成した後に、ARN を書き留めます。この形式は `arn:aws:iam::{{123456789012}}:role/Cognito_{{identitypoolname}}Auth_Role` です。

ID プール ID の形式は `{{region}}:{{ID}}-{{ID}}-{{ID}}-{{ID}}-{{ID}}` です。CLI または AWS SDK AWS を使用して OpenSearch Service を設定する場合は、ID を書き留めます。

### CognitoAccessForAmazonOpenSearch ロールについて
<a name="cognito-auth-role"></a>

OpenSearch Service には、Amazon Cognito ユーザーおよび ID プールを設定し、認証のためにそれらを使用するための許可が必要です。この目的のために`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 ID アクセス許可の追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。 **

## Amazon Cognito 認証を使用するためのドメインの設定
<a name="cognito-auth-config"></a>

前提条件を完了したら、Dashboards の Amazon Cognito を使用するように OpenSearch Service ドメインを設定できます。

**注記**  
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 Dashboards の 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 ID アクセス許可の追加 (コンソール)](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://console.aws.amazon.com/aos/home/](https://console.aws.amazon.com/aos/home/) で Amazon OpenSearch Service コンソールを開きます。

1. [**ドメイン**] の下で、設定するドメインを選択します。

1. [**アクション**] から [**セキュリティ設定の編集**] を選択します。

1. [**Amazon Cognito 認証を有効にする**] を選択します。

1. **リージョン**で、Amazon Cognito ユーザープールと ID プール AWS リージョン を含む を選択します。

1. [**Cognito ユーザープール**] で、ユーザープールを選択または作成します。詳細については、「[ユーザープールについて](#cognito-auth-prereq-up)」を参照してください。

1. [**Cognito ID プール**] で、ID プールを選択または作成します。詳細については、「[ID プールについて](#cognito-auth-prereq-ip)」を参照してください。
**注記**  
[**ユーザープールの作成**] および [**ID プールの作成**] リンクから Amazon Cognito コンソールに移動したら、これらのリソースを手動で作成します。このプロセスは自動的には行われません。詳細については、「[前提条件](#cognito-auth-prereq)」を参照してください。

1. [**IAM ロール名**] で、`CognitoAccessForAmazonOpenSearch` のデフォルト値を使用するか (推奨)、新しい名前を入力します。詳細については、「[CognitoAccessForAmazonOpenSearch ロールについて](#cognito-auth-role)」を参照してください。

1. **[Save changes]** (変更の保存) をクリックします。

ドメインによる処理が終了したら、追加の設定ステップについて「[認証されたロールの許可](#cognito-auth-config-ac)」および「[ID プロバイダの設定](#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}}"
```

**例**

次の例では、`CognitoAccessForAmazonOpenSearch` ロールを使用して、Dashboards の Amazon Cognito 認証を有効にするドメインを `us-east-1` リージョンで作成し、`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)」および「[ID プロバイダの設定](#cognito-auth-identity-providers)」を参照してください。

### Amazon Cognito 認証 (AWS SDKsの設定
<a name="cognito-auth-config-sdk"></a>

 AWS SDKs (Android および iOS SDKs を除く) は、 `CreateDomain` および オペレーションの `CognitoOptions`パラメータを含め、[Amazon OpenSearch Service API リファレンス](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/Welcome.html)で定義されているすべての`UpdateDomainConfig`オペレーションをサポートします。 AWS SDKs[AWS 「 Software Development Kits](https://aws.amazon.com/code)」を参照してください。

ドメインによる処理が終了したら、追加の設定ステップについて「[認証されたロールの許可](#cognito-auth-config-ac)」および「[ID プロバイダの設定](#cognito-auth-identity-providers)」を参照してください。

## 認証されたロールの許可
<a name="cognito-auth-config-ac"></a>

デフォルトでは、「[ID プールについて](#cognito-auth-prereq-ip)」のガイドラインに従って設定された、認証された IAM ロールには、OpenSearch Dashboards にアクセスするために必要な権限がありません。追加のアクセス権限を持つロールを提供する必要があります。

**注記**  
[きめ細かなアクセスコントロール](fgac.md)を設定しており、オープンまたは IP ベースのアクセスポリシーを使用している場合は、この手順をスキップできます。

これらのアクセス許可を[アイデンティティベース](ac.md#ac-types-identity)のポリシーに含めることはできますが、認証されたユーザーがすべての OpenSearch Service ドメインにアクセスできるようにする場合を除いて、1 つのドメインにアタッチされた[リソースベース](ac.md#ac-types-resource)のポリシーの方が適切です。

`Principal` には、[ID プールについて](#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)」を参照してください。

## ID プロバイダの設定
<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)を追加し、認証されたプロバイダとして ID プールにユーザープールを追加します。

**警告**  
アプリクライアントを名前変更または削除しないでください。

ユーザープールの設定方法に応じて、ユーザーアカウントを手動で作成する必要がある場合や、ユーザーが自分のアカウントを作成できる場合があります。これらの設定で問題ない場合は、それ以上アクションを実行する必要はありません。ただし、多くのユーザーが、外部 ID プロバイダの使用を希望します。

SAML 2.0 ID プロバイダを有効にするには、SAML メタデータドキュメントを提供する必要があります。Login with Amazon、Facebook、Google などのソーシャル ID プロバイダを有効にするには、これらのプロバイダからのアプリ ID とアプリシークレットが必要です。ID プロバイダの任意の組み合わせを有効にすることができます。

ユーザープールを設定する最も簡単な方法は、Amazon Cognito コンソールを使用することです。手順については、「*Amazon Cognito デベロッパーガイド*」の「[User pool sign-in with third party identity providers](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-federation.html)」および「[Application-specific settings with app client](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-idp-settings.html)」を参照してください。

## (オプション) きめ細かなアクセスの設定
<a name="cognito-auth-granular"></a>

デフォルトの ID プール設定では、同じ IAM ロール (`Cognito_{{identitypool}}Auth_Role`) にログインするすべてのユーザーが割り当てられます。つまり、すべてのユーザーが同じ AWS リソースにアクセスできます。Amazon Cognito とともに[きめ細かなアクセスコントロール](fgac.md)を使用する場合、例えば、組織のアナリストが複数のインデックスに対して読み取り専用アクセスを持つようにする一方で、デベロッパーはすべてのインデックスに対して書き込みアクセスを持つようにする場合、次の 2 つのオプションがあります。
+ ユーザーグループを作成し、ユーザーの認証トークンに基づいて IAM ロールを選択するように ID プロバイダを設定する (推奨)。
+ 1 つ以上のルールに基づいて IAM ロールを選択するように ID プロバイダを設定する。

きめ細かなアクセスコントロールを含むチュートリアルについては、「[チュートリアル: IAM マスターユーザーと Amazon Cognito 認証を使用してドメインを設定する](fgac-iam.md)」を参照してください。

**重要**  
デフォルトロールと同様に、Amazon Cognito は追加の各ロールの信頼関係に含まれている必要があります。詳細については、「*Amazon Cognito デベロッパーガイド*」の「[Creating roles for role mapping](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 デベロッパーガイド*」の「[Adding groups to a user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-user-groups.html)」を参照してください。

1 つ以上のユーザーグループを作成した後、ID プールのデフォルトロールではなく、グループのロールをユーザーに割り当てるように認証プロバイダを設定できます。[**トークンから選択する**] を選択してから、[**デフォルトの認証されたロールを使用する**] または [**拒否**] を選択して、ID プールでのグループの一部ではないユーザーの処理方法を指定します。

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

基本的に、ルールは Amazon Cognito が順番に評価する一連の `if` ステートメントです。例えば、ユーザーの E メールアドレスに `@corporate` が含まれる場合、Amazon Cognito はそのユーザーに `Role_A` を割り当てます。ユーザーの E メールアドレスに `@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)」の「*Using rule-based mapping to assign roles to users*」を参照してください。

## (オプション) サインインページのカスタマイズ
<a name="cognito-auth-customize"></a>

Amazon Cognito コンソールを使用して、カスタムロゴをアップロードし、サインインページで CSS の変更を行うことができます。手順と CSS プロパティの完全なリストについては、「*Amazon Cognito デベロッパーガイド*」の「[Customizing hosted UI (classic) branding](https://docs.aws.amazon.com/cognito/latest/developerguide/hosted-ui-classic-branding.html)」を参照してください。

## (オプション) アドバンストセキュリティを設定する
<a name="cognito-auth-advanced"></a>

Amazon Cognito ユーザープールでは、多要素認証、侵害された認証情報の確認、およびアダプティブ認証などのアドバンストセキュリティ機能がサポートされています。詳細については、「*Amazon Cognito デベロッパーガイド*」の「[Using Amazon Cognito user pools security features](https://docs.aws.amazon.com/cognito/latest/developerguide/managing-security.html)」を参照してください。

## テスト
<a name="cognito-auth-testing"></a>

設定に問題がなければ、ユーザーエクスペリエンスが期待どおりであることを確認します。

**OpenSearch Dashboards にアクセスするには**

1. ウェブブラウザで `https://{{opensearch-domain}}/_dashboards` にアクセスします。特定のテナントに直接ログインするには、URL に `?security_tenant={{tenant-name}}` を追加します。

1. 任意の認証情報を使用してサインインします。

1. OpenSearch Dashboards がロードされたら、少なくとも 1 つのインデックスパターンを設定します。Dashboards は、そのパターンを使用して、どのインデックスを分析するかを特定します。「`*`」と入力し、[**次のステップ**]、[**Create index pattern (インデックスパターンの作成)**] の順に選択します。

1. データを検索または調査するには、[**検出**] を選択します。

このプロセスのいずれかのステップが失敗した場合は、トラブルシューティング情報について、「[一般的な設定の問題](#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)が ID プールに追加されます。10 を超えるドメインに対して OpenSearch Dashboards 認証を有効にすると、「ID プールあたりの Amazon Cognito の最大ユーザープールプロバイダ数」の制限が適用されることがあります。制限を超えた場合、Dashboards の Amazon Cognito 認証を使用する設定を試みている OpenSearch Service ドメインが、**処理中**の設定状態でスタックする可能性があります。

## 一般的な設定の問題
<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` | OpenSearch Service が `CognitoAccessForAmazonOpenSearch` ロールの信頼関係で指定されていません。ロールで、「[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 が設定されていることを確認します。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 へのアクセス**  

| 問題 | ソリューション | 
| --- | --- | 
| 目的の ID プロバイダがログインページに表示されない。 | 「[ID プロバイダの設定](#cognito-auth-identity-providers)」で指定したように、OpenSearch Service アプリクライアントで ID プロバイダが有効になっていることを確認します。 | 
| ログインページが、組織に関連付けられているように見えない。 | 「[(オプション) サインインページのカスタマイズ](#cognito-auth-customize)」を参照してください。 | 
| ログイン認証情報が受け入れられない。 | 「[ID プロバイダの設定](#cognito-auth-identity-providers)」で指定したように ID プロバイダを設定したことを確認します。<br />ID プロバイダとしてユーザープールを使用している場合は、アカウントが Amazon Cognito コンソールに存在することを確認します。 | 
| OpenSearch Dashboards がまったくロードされないか、正しく動作しない。 | Amazon Cognito の認証されたロールでは、ドメイン (`/*`) が Dashboards にアクセスして使用するためには、`es:ESHttp*` の許可が必要です。「[認証されたロールの許可](#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. [**アクション**] から [**セキュリティ設定の編集**] を選択します。

1. [**Amazon Cognito 認証を有効にする**] を選択解除します。

1. **[Save changes]** (変更の保存) をクリックします。

**重要**  
Amazon Cognito ユーザープールと ID プールが不要になった場合は、それらを削除します。削除しなかった場合は、利用料金が引き続き発生します。

## OpenSearch Dashboards の Amazon Cognito 認証を使用するドメインを削除する
<a name="cognito-auth-delete"></a>

Dashboards の Amazon Cognito 認証を使用するドメインが **[処理中]** の設定状態で止まらないようにするには、関連する Amazon Cognito ユーザープールと ID プールを削除する*前に* OpenSearch Service ドメインを削除します。