翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: IAM マスターユーザーと Amazon Cognito 認証を使用してドメインを設定する
このチュートリアルでは、きめ細かなアクセスコントロールの一般的な Amazon OpenSearch Service のユースケースとして、OpenSearch Dashboards の Amazon Cognito 認証を受ける IAM マスターユーザーについて説明します。
マスター IAM ロールと制限付き IAM ロールを設定し、それらを Amazon Cognito のユーザーに関連付けます。その後、マスターユーザーは OpenSearch Dashboards にサインインし、制限付きユーザーをロールにマッピングし、きめ細かなアクセスコントロールを使用してユーザーのアクセス許可を制限できます。
これらの手順は、認証に Amazon Cognito ユーザープールを使用しますが、この同じ基本プロセスは、Cognito 認証プロバイダに対して機能するため、異なる IAM ロールを異なるユーザーに割り当てることができます。
このチュートリアルでは、次の手順を実行します。
ステップ 1: マスター IAM ロールと制限付き IAM ロールを作成する
AWS Identity and Access Management (IAM) コンソールに移動し、次の 2 つの異なるロールを作成します。
-
MasterUserRole
– マスターユーザー。クラスターに対するフルアクセスの許可を持ち、ロールとロールマッピングを管理します。 -
LimitedUserRole
– マスターユーザーよりも制限されたロール。マスターユーザーから制限付きアクセスが許可されます。
ロールを作成する手順については、「カスタム信頼ポリシーを使用したロールの作成」を参照してください。
両方のロールに次の信頼ポリシーがある必要があります。これにより、Cognito ID プールがロールを引き受けることができます。
{ "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" } } }] }
注記
identity-pool-id
を Amazon Cognito ID プールの一意の識別子に置き換えます。例えば、us-east-1:0c6cdba7-3c3c-443b-a958-fb9feb207aa6
と指定します。
ステップ 2: Cognito 認証を使用してドメインを作成する
Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/home/
-
OpenSearch 1.0 以降、またはElasticsearch 7.8 以降
-
パブリックアクセス
-
マスターユーザー (前のステップで作成) として
MasterUserRole
できめ細かなアクセスコントロールが可能 -
OpenSearch Dashboardsで有効になっている Amazon Cognito 認証。Cognito 認証を有効にし、ユーザーと ID プールを選択する手順については、「Amazon Cognito 認証を使用するためのドメインの設定」を参照してください。
-
次のドメインアクセスポリシー:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
{account-id}
:root" }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:{region}
:{account-id}
:domain/{domain-name}
/*" } ] } -
ドメインへのすべてのトラフィックに HTTPS を必須とする
-
ノード間の暗号化
-
保管中のデータの暗号化
ステップ 3: Cognito ユーザーの設定
ドメインの作成中に、Amazon Cognito 開発者ガイドの「ユーザープールの作成」に従って、Amazon Cognito 内でマスターユーザーと、制限付きユーザーを設定します。最後に、「Amazon Cognito でアイデンティティプールを作成する」の手順に従ってアイデンティティプールを設定します。ユーザープールと ID プールは、同じ AWS リージョン に存在している必要があります。
ステップ 4: OpenSearch Dashboards でロールをマッピングする
ユーザーの設定が完了したので、マスターユーザーとして OpenSearch Dashboards にサインインし、ユーザーをロールにマッピングできます。
-
OpenSearch Service コンソールに戻り、作成したドメインの OpenSearch Dashboards URL に移動します。URL はこの形式に従います:
。domain-endpoint
/_dashboards/ -
master-user
認証情報を使用してサインインします。 -
[Add sample data] (サンプルデータを追加) を選択し、サンプルフライトデータを追加します。
-
左側のナビゲーションペインで [Security] (セキュリティ)、[Roles] (ロール)、[Create role] (ロールを作成) の順に選択します。
-
ロールに
new-role
という名前を付けます。 -
[Index] (インデックス) には、
opensearch_dashboards_sample_data_fli*
(Elasticsearch ドメインのkibana_sample_data_fli*
) を指定します。 -
[Index permissions] (インデックスアクセス許可) には、[read] (読み取り) を選択します。
-
[ドキュメントレベルのセキュリティ] で、以下のクエリを指定します。
{ "match": { "FlightDelay": true } }
-
フィールドレベルのセキュリティでは、[除外] を選択し、
FlightNum
を指定します。 -
[匿名化] では、
Dest
を指定します。 -
[作成] を選択します。
-
[マッピングされたユーザー]、[マッピングの管理] を選択します。外部 ID として
LimitedUserRole
の Amazon リソースネーム (ARN) を追加し、[Map] (マッピング) を選択します。 -
ロールのリストに戻り、[opensearch_dashboards_user] を選択します。[マッピングされたユーザー]、[マッピングの管理] を選択します。バックエンドロールとして
LimitedUserRole
の ARN を追加し、[マップ] を選択します。
ステップ 5: アクセス許可をテストする
ロールが正しくマッピングされると、制限付きユーザーとしてサインインし、アクセス許可をテストできます。
-
新しいプライベートブラウザウィンドウで、ドメインの OpenSearch Dashboards URL に移動し、
limited-user
認証情報を使用してサインインして、[Explore on my own] (自力で調べる) を選択します。 -
[開発ツール] に進み、デフォルトの検索を実行します。
GET _search { "query": { "match_all": {} } }
許可エラーに注意してください。
limited-user
には、クラスター全体の検索を実行する許可がありません。 -
別の検索を実行します。
GET opensearch_dashboards_sample_data_flights/_search { "query": { "match_all": {} } }
一致するすべてのドキュメントでは、[
FlightDelay
] フィールドがtrue
であり、Dest
フィールドが匿名化されて、FlightNum
フィールドはありません。 -
元のブラウザウィンドウで、
master-user
としてサインインし、[開発ツール] を選択して、同じ検索を実行します。許可、ヒット数、一致するドキュメント、含まれるフィールドが異なっています。