翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
OpenSearch Dashboards の Amazon Cognito 認証の設定
Amazon Cognito を使用して、OpenSearch Dashboards の Amazon OpenSearch Service のデフォルトインストールを認証し、保護することができます。Amazon Cognito 認証はオプションであり、OpenSearch または Elasticsearch 5.1 以降を使用しているドメインでのみ使用できます。Amazon Cognito 認証を設定しない場合でも、IP ベースのアクセスポリシーとプロキシサーバー、HTTP 基本認証、または SAML を使用して、Dashboards を保護することができます。
認証プロセスの多くは Amazon Cognito で発生しますが、このセクションでは、Amazon Cognito リソースを OpenSearch Service ドメインで使用するように設定するためのガイドラインと要件を示します。すべての Amazon Cognito リソースに標準の料金
ヒント
OpenSearch Dashboards の Amazon Cognito 認証を使用するようにドメインを初めて設定するときは、コンソールを使用することをお勧めします。Amazon Cognito リソースは高度にカスタマイズ可能であり、コンソールにより、該当する機能を識別して理解しやすくなります。
トピック
前提条件
OpenSearch Dashboards の Amazon Cognito 認証を設定する前に、いくつかの前提条件を満たす必要があります。OpenSearch Service コンソールは、これらのリソースの作成の効率化を支援しますが、各リソースの目的を理解すると、設定およびトラブルシューティングに役立ちます。Dashboards の Amazon Cognito 認証では、次のリソースが必要になります。
注記
ユーザープールと ID プールは、同じ AWS リージョン に存在している必要があります。同じユーザープール、ID プール、および IAM ロールを使用して、Dashboards の Amazon Cognito 認証を複数の OpenSearch Service ドメインに追加できます。詳細については、「クォータ」を参照してください。
ユーザープールについて
ユーザープールには、次の 2 つの主要な機能があります。それらは、ユーザーのディレクトリを作成および管理する機能と、ユーザーによるサインアップとログインを許可する機能です。ユーザープールを作成する手順については、Amazon Cognito デベロッパーガイドの「ユーザープールを作成する」を参照してください。
OpenSearch Service で使用するユーザープールを作成するときは、以下の点を考慮します。
-
Amazon Cognito ユーザープールにはドメイン名が必要です。OpenSearch Service はこのドメイン名を使用して、Dashboards にアクセスするためのログインページにユーザーをリダイレクトします。ユーザープールには、ドメイン名以外に、デフォルト以外の設定は必要ありません。
-
プールの必須の標準属性 (名前、誕生日、E メールアドレス、電話番号など) を指定する必要があります。ユーザープールの作成後にこれらの属性を変更することはできないため、この時点で関連するものを選択します。
-
ユーザープールを作成する際に、ユーザーが自分のアカウントを作成できるかどうか、アカウントのパスワードの最低強度、多要素認証を有効にするかどうかを選択します。外部 ID プロバイダを使用する予定がある場合、これらの設定は重要ではありません。技術的には、ID プロバイダとしてユーザープールを有効にし、さらに外部 ID プロバイダを有効にすることができますが、ほとんどのユーザーはどちらか一方を希望します。
ユーザープール ID の形式は
です。AWS CLI または AWS SDK を使用して OpenSearch Service を設定する計画の場合は、ID をメモしておきます。region
_ID
ID プールについて
ID プールにより、ユーザーのログイン後に、権限の制限された一時的なロールをユーザーに割り当てることができます。ID プールを作成する手順については、Amazon Cognito デベロッパーガイドの「ID プール」を参照してください。OpenSearch Service で使用する ID プールを作成するときは、以下の点を考慮します。
-
Amazon Cognito コンソールを使用する場合は、[認証されていない ID に対してアクセスを有効にする] チェックボックスをオンにして、ID プールを作成する必要があります。ID プールを作成し、OpenSearch Service ドメインを設定すると、Amazon Cognito によりこの設定は無効になります。
-
ID プールに外部 ID プロバイダを追加する必要はありません。Amazon Cognito 認証を使用するように OpenSearch Service を設定すると、先ほど作成したユーザープールを使用するように ID プールが設定されます。
-
ID プールを作成した後、認証されていない IAM ロールと認証された IAM ロールを選択する必要があります。これらのロールにより、ログイン前およびログイン後にユーザーに与えられるアクセスポリシーが指定されます。Amazon Cognito コンソールを使用する場合は、これらのロールを自動的に作成できます。認証されたロールを作成した後に、ARN を書き留めます。この形式は
arn:aws:iam::
です。123456789012
:role/Cognito_identitypoolname
Auth_Role
ID プール ID の形式は
です。AWS CLI または AWS SDK を使用して OpenSearch Service を設定する計画の場合は、ID をメモしておきます。region
:ID
-ID
-ID
-ID
-ID
CognitoAccessForAmazonOpenSearch ロールについて
OpenSearch Service には、Amazon Cognito ユーザーおよび ID プールを設定し、認証のためにそれらを使用するための許可が必要です。この目的のために、AWS 管理ポリシーの 1 つである AmazonOpenSearchServiceCognitoAccess
を使用できます。AmazonESCognitoAccess
は、サービスが Amazon OpenSearch Service に改名された際、AmazonOpenSearchServiceCognitoAccess
に置き換えられた従来のポリシーです。どちらのポリシーも、Cognito 認証を有効にするために必要な最小限の Amazon Cognito の許可を提供します。ポリシーの JSON については、「IAM コンソール
コンソールを使用して 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 SDK を使用する場合は、独自のロールを作成し、ポリシーをアタッチして、OpenSearch Service ドメインを設定するときに、このロールの ARN を指定する必要があります。ロールには、次の信頼関係が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "opensearchservice.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
手順については、IAM ユーザーガイドの「AWS のサービスに許可を委任するロールの作成」および「IAM ポリシーのアタッチおよびデタッチ」を参照してください。
Amazon Cognito 認証を使用するためのドメインの設定
前提条件を完了したら、Dashboards の Amazon Cognito を使用するように OpenSearch Service ドメインを設定できます。
注記
Amazon Cognito はすべての AWS リージョン で利用可能なわけではありません。サポートされているリージョンのリストについては、AWS リージョン およびエンドポイント を参照してください。OpenSearch Service で使用する Amazon Cognito 用に同じリージョンを使用する必要はありません。
Amazon Cognito 認証の設定 (コンソール)
コンソールによって CognitoAccessForAmazonOpenSearch ロールが作成されるため、コンソールの設定エクスペリエンスが最もシンプルです。標準の OpenSearch Service のアクセス許可に加えて、コンソールで OpenSearch Dashboards の Amazon Cognito 認証を使用するドメインを作成するには、次のアクセス許可のセットが必要です。
{ "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 アクセス許可の追加 (コンソール)」を参照してください。
CognitoAccessForAmazonOpenSearch
がすでに存在する場合、必要なアクセス許可は少なくなります。
{ "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 認証を設定するには (コンソール)
-
Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/home/
) を開きます。 -
[ドメイン] の下で、設定するドメインを選択します。
-
[アクション] から [セキュリティ設定の編集] を選択します。
-
[Amazon Cognito 認証を有効にする] を選択します。
-
[Region] (リージョン) で、Amazon Cognito ユーザープールと ID プールが含まれている AWS リージョン を選択します。
-
[Cognito ユーザープール] で、ユーザープールを選択または作成します。ガイダンスについては、「ユーザープールについて」を参照してください。
-
[Cognito ID プール] で、ID プールを選択または作成します。ガイダンスについては、「ID プールについて」を参照してください。
注記
[ユーザープールの作成] および [ID プールの作成] リンクから Amazon Cognito コンソールに移動したら、これらのリソースを手動で作成します。このプロセスは自動的には行われません。詳細については、「前提条件」を参照してください。
-
[IAM ロール名] で、
CognitoAccessForAmazonOpenSearch
のデフォルト値を使用するか (推奨)、新しい名前を入力します。このロールの目的の詳細については、「CognitoAccessForAmazonOpenSearch ロールについて」を参照してください。 -
[Save changes] (変更の保存) をクリックします。
ドメインによる処理が終了したら、追加の設定ステップについて「認証されたロールの許可」および「ID プロバイダの設定」を参照してください。
Amazon Cognito 認証の設定 (AWS CLI)
--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
--regionus-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
"
ドメインによる処理が終了したら、追加の設定ステップについて「認証されたロールの許可」および「ID プロバイダの設定」を参照してください。
Amazon Cognito 認証の設定 (AWS SDK)
AWS SDK (Android および iOS SDK を除く) は、CreateDomain
および UpdateDomainConfig
オペレーションの CognitoOptions
パラメータを含む、「Amazon OpenSearch Service API リファレンス」で定義されているすべてのオペレーションをサポートします。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits
ドメインによる処理が終了したら、追加の設定ステップについて「認証されたロールの許可」および「ID プロバイダの設定」を参照してください。
認証されたロールの許可
デフォルトでは、「ID プールについて」のガイドラインに従って設定された、認証された IAM ロールには、OpenSearch Dashboards にアクセスするために必要な権限がありません。追加のアクセス権限を持つロールを提供する必要があります。
注記
きめ細かなアクセスコントロールを設定しており、オープンまたは IP ベースのアクセスポリシーを使用している場合は、この手順をスキップできます。
これらのアクセス許可をアイデンティティベースのポリシーに含めることはできますが、認証されたユーザーがすべての OpenSearch Service ドメインにアクセスできるようにする場合を除いて、1 つのドメインにアタッチされたリソースベースのポリシーの方が適切です。
Principal
には、ID プールについて のガイドラインに従って設定した Cognito 認証ロールの ARN を指定します。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":[ "arn:aws:iam::
123456789012
:role/Cognito_identitypoolname
Auth_Role" ] }, "Action":[ "es:ESHttp*" ], "Resource":"arn:aws:es:region
:123456789012
:domain/domain-name
/*" } ] }
リソースベースのポリシーを OpenSearch Service ドメインに追加する手順については、「アクセスポリシーの設定」を参照してください。
ID プロバイダの設定
Dashboards の Amazon Cognito 認証を使用するようにドメインを設定すると、OpenSearch Service はユーザープールにアプリクライアントを追加し、認証されたプロバイダとして ID プールにユーザープールを追加します。
警告
アプリクライアントを名前変更または削除しないでください。
ユーザープールの設定方法に応じて、ユーザーアカウントを手動で作成する必要がある場合や、ユーザーが自分のアカウントを作成できる場合があります。これらの設定で問題ない場合は、それ以上アクションを実行する必要はありません。ただし、多くのユーザーが、外部 ID プロバイダの使用を希望します。
SAML 2.0 ID プロバイダを有効にするには、SAML メタデータドキュメントを提供する必要があります。Login with Amazon、Facebook、Google などのソーシャル ID プロバイダを有効にするには、これらのプロバイダからのアプリ ID とアプリシークレットが必要です。ID プロバイダの任意の組み合わせを有効にすることができます。
ユーザープールを設定する最も簡単な方法は、Amazon Cognito コンソールを使用することです。手順については、Amazon Cognito デベロッパーガイドの「ユーザープールのフェデレーションを使用する」および「ユーザープールアプリの ID プロバイダ設定を指定する」を参照してください。
(オプション) きめ細かなアクセスの設定
デフォルトの ID プール設定により、同じ IAM ロール (Cognito_
) が、ログインするすべてのユーザーが割り当てられることにお気づきかもしれません。これは、すべてのユーザーが同じ AWS リソースにアクセスできることを意味します。Amazon Cognito とともにきめ細かなアクセスコントロールを使用する場合、例えば、組織のアナリストが複数のインデックスに対して読み取り専用アクセスを持つようにする一方で、デベロッパーはすべてのインデックスに対して書き込みアクセスを持つようにする場合、次の 2 つのオプションがあります。identitypool
Auth_Role
-
ユーザーグループを作成し、ユーザーの認証トークンに基づいて IAM ロールを選択するように ID プロバイダを設定する (推奨)。
-
1 つ以上のルールに基づいて IAM ロールを選択するように ID プロバイダを設定する。
きめ細かなアクセスコントロールを含むチュートリアルについては、「チュートリアル: IAM マスターユーザーと Amazon Cognito 認証を使用してドメインを設定する」を参照してください。
重要
デフォルトロールと同様に、Amazon Cognito は追加の各ロールの信頼関係に含まれている必要があります。詳細については、Amazon Cognito デベロッパーガイドの「ロールマッピング用のロールの作成」を参照してください。
ユーザーグループとトークン
ユーザーグループを作成するときは、グループのメンバー用の IAM ロールを選択します。グループの作成の詳細については、Amazon Cognito デベロッパーガイドの「ユーザーグループ」を参照してください。
1 つ以上のユーザーグループを作成した後、ID プールのデフォルトロールではなく、グループのロールをユーザーに割り当てるように認証プロバイダを設定できます。[トークンから選択する] を選択してから、[デフォルトの認証されたロールを使用する] または [拒否] を選択して、ID プールでのグループの一部ではないユーザーの処理方法を指定します。
ルール
基本的に、ルールは Amazon Cognito が順番に評価する一連の if
ステートメントです。例えば、ユーザーの E メールアドレスに @corporate
が含まれる場合、Amazon Cognito はそのユーザーに Role_A
を割り当てます。ユーザーの E メールアドレスに @subsidiary
が含まれる場合、そのユーザーに Role_B
が割り当てられます。それ以外の場合は、デフォルトの認証されたロールがユーザーに割り当てられます。
詳細については、Amazon Cognito デベロッパーガイドの「ルールベースのマッピングを使用してユーザーにロールを割り当てる」を参照してください。
(オプション) サインインページのカスタマイズ
Amazon Cognito コンソールを使用して、カスタムロゴをアップロードし、サインインページで CSS の変更を行うことができます。手順および CSS プロパティの一覧については、Amazon Cognito デベロッパーガイドの「ユーザープールのアプリ UI カスタマイズ設定の指定」を参照してください。
(オプション) アドバンストセキュリティを設定する
Amazon Cognito ユーザープールでは、多要素認証、侵害された認証情報の確認、およびアダプティブ認証などのアドバンストセキュリティ機能がサポートされています。詳細については、Amazon Cognito デベロッパーガイドの「セキュリティの管理」を参照してください。
テスト
設定に問題がなければ、ユーザーエクスペリエンスが期待どおりであることを確認します。
OpenSearch Dashboards にアクセスするには
-
ウェブブラウザで
https://
にアクセスします。特定のテナントに直接ログインするには、URL にopensearch-domain
/_dashboards?security_tenant=
を追加します。tenant-name
-
任意の認証情報を使用してサインインします。
-
OpenSearch Dashboards がロードされたら、少なくとも 1 つのインデックスパターンを設定します。Dashboards は、そのパターンを使用して、どのインデックスを分析するかを特定します。「
*
」と入力し、[次のステップ]、[Create index pattern (インデックスパターンの作成)] の順に選択します。 -
データを検索または調査するには、[検出] を選択します。
このプロセスのいずれかのステップが失敗した場合は、トラブルシューティング情報について、「一般的な設定の問題」を参照してください。
クォータ
Amazon Cognito には、そのリソースの多くでソフト制限があります。多数の OpenSearch Service ドメインに対して Dashboards 認証を有効にする場合は、必要に応じて Amazon Cognito におけるクォータと制限の引き上げのリクエストについて確認してください。
各 OpenSearch Service ドメインでは、アプリクライアントがユーザープールに追加されます。これにより、認証プロバイダが ID プールに追加されます。10 を超えるドメインに対して OpenSearch Dashboards 認証を有効にすると、「ID プールあたりの Amazon Cognito の最大ユーザープールプロバイダ数」の制限が適用されることがあります。制限を超えた場合、Dashboards の Amazon Cognito 認証を使用する設定を試みている OpenSearch Service ドメインが、処理中の設定状態でスタックする可能性があります。
一般的な設定の問題
一般的な設定の問題と解決策を、以下の表に示します。
問題 | ソリューション |
---|---|
|
適切な IAM アクセス許可がありません。「Amazon Cognito 認証の設定 (コンソール)」で指定されたアクセス許可を追加します。 |
|
CognitoAccessforAmazonOpenSearch ロールの iam:PassRole 許可がありません。次のポリシーをアカウントにアタッチします:
または、 |
|
Amazon Cognito の読み取り許可がありません。 |
|
OpenSearch Service が |
|
--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 コマンドを使用できます。
|
|
OpenSearch Service は ID プールを見つけることができません。ユーザープールを作成し、正しい ID が設定されていることを確認します。ID を見つけるには、Amazon Cognito コンソールまたは次の AWS CLI コマンドを使用できます。
|
|
ユーザープールにドメイン名がありません。Amazon Cognito コンソールまたは次の AWS CLI コマンドを使用して、ドメイン名を設定できます。
|
問題 | ソリューション |
---|---|
目的の ID プロバイダがログインページに表示されない。 |
「ID プロバイダの設定」で指定したように、OpenSearch Service アプリクライアントで ID プロバイダが有効になっていることを確認します。 |
ログインページが、組織に関連付けられているように見えない。 |
「(オプション) サインインページのカスタマイズ」を参照してください。 |
ログイン認証情報が受け入れられない。 |
「ID プロバイダの設定」で指定したように ID プロバイダを設定したことを確認します。 ID プロバイダとしてユーザープールを使用している場合は、アカウントが Amazon Cognito コンソールに存在することを確認します。 |
OpenSearch Dashboards がまったくロードされないか、正しく動作しない。 |
Amazon Cognito の認証されたロールでは、ドメイン ( |
あるタブで OpenSearch Dashboards からサインアウトすると、残りのタブには更新トークンが取り消されたことを示すメッセージが表示されます。 |
Amazon Cognito 認証使用時に OpenSearch Dashboards セッションからサインアウトすると、OpenSearch Service で AdminUserGlobalSignOut オペレーションが実行されて、すべてのアクティブな OpenSearch Dashboards セッションからサインアウトさせられます。 |
Invalid identity pool configuration. Check assigned IAM roles
for this pool. |
Amazon Cognito には、認証されたユーザーに代わって IAM ロールを引き受ける許可がありません。ロールの信頼関係を変更して、以下を含めます。
|
Token is not from a supported provider of this identity
pool. |
ユーザープールからアプリクライアントを削除すると、この一般的でないエラーが発生する可能性があります。新しいブラウザセッションで Dashboards を開いてみます。 |
OpenSearch Dashboards の Amazon Cognito 認証を無効にする
Dashboards の Amazon Cognito 認証を無効にするには、次の手順を使用します。
Dashboards の Amazon Cognito 認証を無効にするには (コンソール)
-
Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/home/
) を開きます。 -
[Domains] (ドメイン) で、設定するドメインを選択します。
-
[アクション] から [セキュリティ設定の編集] を選択します。
-
[Amazon Cognito 認証を有効にする] を選択解除します。
-
[Save changes] (変更の保存) をクリックします。
重要
Amazon Cognito ユーザープールと ID プールが不要になった場合は、それらを削除します。削除しなかった場合は、利用料金が引き続き発生します。
OpenSearch Dashboards の Amazon Cognito 認証を使用するドメインを削除する
Dashboards の Amazon Cognito 認証を使用するドメインが [Processing] (処理中) の設定状態で止まらないようにするには、関連する Amazon Cognito ユーザープールと ID プールを削除する前に OpenSearch Service ドメインを削除します。