を使用した SAML フェデレーションの有効化 AWS Identity and Access Management - Amazon OpenSearch Service

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

を使用した SAML フェデレーションの有効化 AWS Identity and Access Management

OpenSearch UI は、多くの ID プロバイダーが使用するオープンスタンダードである Security Assertion Markup Language 2.0 (SAML) をサポートしています。これにより、 AWS Identity and Access Management (IAM) との ID フェデレーションが有効になります。このサポートにより、アカウントまたは組織のユーザーは、IAM ロールを引き受けることで OpenSearch UI に直接アクセスできます。エンドユーザーが外部 ID プロバイダーで認証し、OpenSearch UI の定義されたページに直接ルーティングできる ID プロバイダー主導 (IdP) シングルサインオンエクスペリエンスを作成できます。OpenSearch UI および関連するデータソースにアクセスするためのアクセス許可が異なるさまざまな IAM ロールを引き受けるようにエンドユーザーまたはグループを設定することで、きめ細かなアクセスコントロールを実装することもできます。

このトピックではstep-by-step。 OpenSearch これらの手順では、例として Okta アイデンティティとアクセス管理アプリケーションを設定する手順を使用します。Azure Active Directory や Ping など、他の ID プロバイダーの設定手順は似ています。

ステップ 1: ID プロバイダーアプリケーションを設定する (Okta)

OpenSearch UI で SAML を使用するには、まず ID プロバイダーを設定します。

タスク 1: Okta ユーザーを作成する
  1. 管理者権限を持つユーザーとして、https://login.okta.com/ で Okta 組織にサインインします。

  2. 管理者コンソールのナビゲーションペインのディレクトリで、を選択します。

  3. [Add Person] (ユーザーを追加) を選択します。

  4. には、ユーザーの名を入力します。

  5. には、ユーザーの姓を入力します。

  6. Username には、ユーザーのユーザー名を E メール形式で入力します。

  7. 「パスワードを設定してパスワードを入力する」を選択します。

  8. (オプション) ユーザーが初回サインイン時にパスワードを変更しない場合は、最初のログインボックスでパスワードを変更する必要があります

  9. [保存] を選択します。

タスク 2: グループを作成して割り当てる
  1. 管理者権限を持つユーザーとして、https://login.okta.com/ で Okta 組織にサインインします。

  2. 管理コンソールのナビゲーションペインのディレクトリで、グループを選択します。

  3. [グループの追加] を選択します。

  4. グループ名を入力し、保存を選択します。

  5. 新しく作成したグループを選択し、ユーザーの割り当てを選択します。

  6. プラス記号 () を選択し、完了を選択します。

  7. (オプション) ステップ 1~6 を繰り返して、グループを追加します。

タスク 3: Okta アプリケーションを作成する
  1. 管理者権限を持つユーザーとして、https://login.okta.com/ で Okta 組織にサインインします。

  2. 管理コンソールのナビゲーションペインのアプリケーションで、アプリケーションを選択します。

  3. [Create App Integration] (アプリの統合の作成) を選択します。

  4. サインイン方法として SAML 2.0 を選択し、次を選択します。

  5. アプリ統合の名前 ( などOpenSearch_UI) を入力し、次を選択します。

  6. アプリに次の値を入力します。他の値を変更する必要はありません。

    1. 1. シングルサインオン URL の場合は、商用 AWS リージョンhttps://signin.aws.amazon.com/samlに を入力するか、リージョンに固有の URL を入力します。

    2. 2. オーディエンス URI (SP エンティティ ID) には、 と入力しますurn:amazon:webservices

    3. 3. 名前 ID 形式には、 と入力しますEmailAddress

  7. [次へ] を選択します。

  8. 「Okta のお客様が内部アプリケーションを追加している」を選択し、「これは作成した内部アプリケーションです」を選択します。

  9. [Finish] を選択してください。

  10. 「割り当て」を選択し、「割り当て」を選択します。

  11. グループに割り当てるを選択し、追加するグループの横にある割り当てを選択します。

  12. [完了] をクリックします。

タスク 4: Okta の詳細設定をセットアップする

カスタム SAML アプリケーションを作成したら、次の手順を実行します。

  1. 管理者権限を持つユーザーとして、https://login.okta.com/ で Okta 組織にサインインします。

    管理者コンソールの全般エリアで、SAML 設定編集を選択します。

  2. [次へ] を選択します。

  3. 次の形式を使用して、デフォルトのリレー状態を OpenSearch UI エンドポイントに設定します。

    https://region.console.aws.amazon.com/aos/home?region=region#opensearch/applications/application-id/redirectToDashboardURL.

    以下に例を示します。

    https://us-east-2.console.aws.amazon.com/aos/home?region=us-east-2#opensearch/applications/abc123def4567EXAMPLE/redirectToDashboardURL

  4. 属性ステートメント (オプション) で、次のプロパティを追加します。

    1. Role 属性を使用して、IAM ロールと ID プロバイダーをカンマ区切り形式で指定します。この同じ IAM ロールと ID プロバイダーは、後のステップで AWS 設定時に使用します。

    2. RoleSessionNameuser.login を設定します。これは、ロールが引き受けられたときに発行される一時的な認証情報の識別子として使用されます。

    参考:

    名前 名前形式 形式

    https://aws.amazon.com/SAML/Attributes/Role

    未指定

    arn:aws:iam::aws-account-id:role/role-name,arn:aws:iam::aws-account-id:saml-provider/provider-name

    arn:aws:iam::111222333444:role/oktarole,arn:aws:iam::111222333444:saml-provider/oktaidp

    https://aws.amazon.com/SAML/Attributes/RoleSessionName

    未指定

    user.login

    user.login

  5. 属性プロパティを追加したら、へ を選択し、終了 を選択します。

属性は、次の図に示す形式と似ている必要があります。デフォルトのリレーステート値は、Okta からのシングルサインオン検証を完了した後、アカウントまたは組織のエンドユーザーのランディングページを定義する URL です。OpenSearch UI の任意のページに設定し、その URL を目的のエンドユーザーに提供できます。

「SAML 2.0」領域は、アプリケーションのデフォルトのリレーステート URL とメタデータ URL を報告します。

ステップ 2: Okta AWS の設定をセットアップする

Okta AWS の設定を設定するには、次のタスクを実行します。

タスク 1: Okta 情報を収集する

このステップでは、Okta 情報を収集して、後で設定できるようにする必要があります AWS。

  1. 管理者権限を持つユーザーとして、https://login.okta.com/ で Okta 組織にサインインします。

  2. サインオンタブのページの右下隅で、SAML セットアップ手順の表示を選択します。

  3. ID プロバイダーのシングルサインオン URL の値を書き留めます。この URL は、SQL Workbench/J などのサードパーティー SQL クライアントに接続するときに使用できます。

  4. ブロック 4 で ID プロバイダーメタデータを使用し、メタデータファイルを .xml 形式 (例: metadata.xml) で保存します。

タスク 2: IAM プロバイダーを作成する

IAM プロバイダーを作成するには、次の手順を実行します。

  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/iam/ で IAM コンソールを開きます。

  2. ナビゲーションペインのアクセス管理 で、ID プロバイダーを選択します。

  3. [プロバイダーを追加] をクリックします。

  4. プロバイダータイプSAML を選択します。

  5. プロバイダー名 に名前を入力します。

  6. メタデータドキュメントで、ファイルの選択を選択し、前にダウンロードしたメタデータファイル (.xml) をアップロードします。

  7. [プロバイダーを追加] をクリックします。

タスク 3: IAM ロールを作成する

AWS Identity and Access Management ロールを作成するには、次の手順を実行します。

  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/iam/ で IAM コンソールを開きます。

  2. ナビゲーションペインのアクセス管理 で、ロールを選択します。

  3. [ロールの作成] を選択してください。

  4. 信頼できるエンティティタイプで、SAML 2.0 フェデレーションを選択します。

  5. SAML 2.0 ベースのプロバイダーの場合は、前に作成した ID プロバイダーを選択します。

  6. プログラムによるアクセスと AWS Management Console アクセスを許可するを選択します。

  7. [次へ] を選択します。

  8. アクセス許可ポリシーリストで、前に作成したポリシーと OpenSearchFullAccess のチェックボックスをオンにします。

  9. [次へ] を選択します。

  10. レビューエリアのロール名に、ロールの名前を入力します。例: oktarole

  11. (オプション) 説明 に、ロールの目的の簡単な説明を入力します。

  12. [ロールの作成] を選択してください。

  13. 作成したロールに移動し、信頼関係タブを選択し、信頼ポリシーの編集を選択します。

  14. ステートメントの編集ペインの「STS のアクションを追加する」で、TagSession のボックスを選択します。

  15. [ポリシーの更新] を選択してください。

ステップ 3: IAM で Amazon OpenSearch Service アクセスポリシーを作成する

OpenSearch アクセスコントロールの IAM ロールを設定する方法について説明します。IAM ロールを使用すると、Okta ユーザーグループが OpenSearch リソースにアクセスするためのきめ細かなアクセスコントロールを実装できます。このトピックでは、2 つのサンプルグループを使用した IAM ロールベースの設定を示します。

Sample group: Alice

リクエスト:

GET _plugins/_security/api/roles/alice-group

結果:

{ "alice-group": { "reserved": false, "hidden": false, "cluster_permissions": [ "unlimited" ], "index_permissions": [ { "index_patterns": [ "alice*" ], "dls": "", "fls": [], "masked_fields": [], "allowed_actions": [ "indices_all" ] } ], "tenant_permissions": [ { "tenant_patterns": [ "global_tenant" ], "allowed_actions": [ "kibana_all_write" ] } ], "static": false } }
Sample group: Bob

リクエスト:

GET _plugins/_security/api/roles/bob-group

結果:

{ "bob-group": { "reserved": false, "hidden": false, "cluster_permissions": [ "unlimited" ], "index_permissions": [ { "index_patterns": [ "bob*" ], "dls": "", "fls": [], "masked_fields": [], "allowed_actions": [ "indices_all" ] } ], "tenant_permissions": [ { "tenant_patterns": [ "global_tenant" ], "allowed_actions": [ "kibana_all_write" ] } ], "static": false } }

次の例に示すように、バックエンドロールマッピングを使用して Amazon OpenSearch Service ドメインロールを IAM ロールにマッピングできます。

{ "bob-group": { "hosts": [], "users": [], "reserved": false, "hidden": false, "backend_roles": [ "arn:aws:iam::111222333444:role/bob-group" ], "and_backend_roles": [] }, "alice-group": { "hosts": [], "users": [], "reserved": false, "hidden": false, "backend_roles": [ "arn:aws:iam::111222333444:role/alice-group" ], "and_backend_roles": [] } }

ステップ 4: SAML で ID プロバイダーが開始したシングルサインオンエクスペリエンスを検証する

デフォルトのリレー状態の URL を開き、Okta 認証ページを開きます。エンドユーザーの認証情報を入力します。OpenSearch UI に自動的にリダイレクトされます。

次の図に示すように、ナビゲーションパネルの下部にあるユーザーアイコンを選択すると、現在の認証情報を確認できます。

Okta の「設定とセットアップ」ページでユーザーアイコンを選択すると、現在のユーザーの認証情報が表示されます。

ナビゲーションパネルの下部にある開発者ツールにアクセスし、コンソールでクエリを実行することで、ユーザーのきめ細かなアクセスコントロールのアクセス許可を確認することもできます。以下は、サンプルクエリです。

Example 1: Displays information about the current user

リクエスト:

GET _plugins/_security/api/account

結果:

{ "user_name": "arn:aws:iam::XXXXXXXXXXXX:role/bob-group", "is_reserved": false, "is_hidden": false, "is_internal_user": false, "user_requested_tenant": null, "backend_roles": [ "arn:aws:iam::XXXXXXXXXXXX:role/bob-group" ], "custom_attribute_names": [], "tenants": { "global_tenant": true, "arn:aws:iam::XXXXXXXXXXXX:role/bob-group": true }, "roles": [ "bob-group" ] }
Example 2: Displays actions permitted for a user

リクエスト:

GET bob-test/_search

結果:

{ "took": 390, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "bob-test", "_id": "ui01N5UBCIHpjO8Jlvfy", "_score": 1, "_source": { "title": "Your Name", "year": "2016" } } ] } }
Example 3: Displays actions not permitted for a user

リクエスト:

GET alice-test

結果:

{ "error": { "root_cause": [ { "type": "security_exception", "reason": "no permissions for [indices:admin/get] and User [name=arn:aws:iam::111222333444:role/bob-group, backend_roles=[arn:aws:iam::111222333444:role/bob-group], requestedTenant=null]" } ], "type": "security_exception", "reason": "no permissions for [indices:admin/get] and User [name=arn:aws:iam::111222333444:role/bob-group, backend_roles=[arn:aws:iam::111222333444:role/bob-group], requestedTenant=null]" }, "status": 403 }

ステップ 5: SAML 属性ベースのきめ細かなアクセスコントロールを設定する

Amazon OpenSearch Service を使用すると、SAML によるきめ細かなアクセスコントロールを使用して、ID プロバイダーのユーザーとグループを OpenSearch きめ細かなアクセスコントロールのユーザーとロールに動的にマッピングできます。これらのロールを特定の OpenSearch ドメインとサーバーレスコレクションにスコープし、インデックスレベルのアクセス許可とドキュメントレベルのセキュリティを定義できます。

注記

きめ細かなアクセスコントロールの詳細については、「」を参照してくださいAmazon OpenSearch Service のきめ細かなアクセスコントロール

きめ細かなアクセスコントロールのための SAML 属性

subjectKey

認証するユーザーを識別する E メールやユーザー名などの一意のユーザー属性にマッピングします。

rolesKey

認可のロールまたはアクセス許可を決定する IdP のグループまたはロール属性にマッピングします。

タスク 1: きめ細かなアクセスコントロールのために Okta を設定する

きめ細かなアクセスコントロールのために Okta を設定するには
  1. 「属性ステートメント」セクションに OpenSearch ユーザープリンシパルの新しい属性を追加します。

    • 名前: UserName

    • 値: ${user-email}

    この属性は、認証用の OpenSearch きめ細かなアクセスコントロール設定のサブジェクトキーとして使用されます。

  2. グループ属性ステートメントセクションにロールのグループ属性を追加します。

    • 名前: groups

    • フィルター: OpenSearch_xxx

    この属性は、認可のためにグループを OpenSearch のきめ細かなアクセスコントロールロールにマッピングするためのロールキーとして使用されます。

タスク 2: OpenSearch ドメインで SAML を設定する

OpenSearch ドメインで SAML を設定するには
  1. AWS マネジメントコンソールで、OpenSearch UI ユーザーのきめ細かなアクセスコントロールを有効にする OpenSearch Service ドメインを特定します。

  2. 特定のドメインの詳細ページに移動します。

  3. セキュリティ設定タブを選択し、編集をクリックします。

  4. IAM フェデレーションを使用して SAML を拡張します。

  5. Okta でroleKey定義した subjectKeyと を入力します。

  6. 変更の保存を選択します。

を使用してきめ細かなアクセスコントロールを設定することもできます AWS CLI。

aws opensearch create-domain \ --domain-name testDomain \ --engine-version OpenSearch_1.3 \ --cluster-config InstanceType=r5.xlarge.search,InstanceCount=1,DedicatedMasterEnabled=false,ZoneAwarenessEnabled=false,WarmEnabled=false \ --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:*","Resource":"arn:aws:es:us-east-1:12345678901:domain/neosaml10/*"}]}' \ --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \ --node-to-node-encryption-options '{"Enabled":true}' \ --encryption-at-rest-options '{"Enabled":true}' \ --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \ --ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \ --no-verify-ssl \ --endpoint-url https://es.us-east-1.amazonaws.com \ --region us-east-1

既存のドメインを更新するには:

aws opensearch update-domain-config \ --domain-name testDomain \ --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \ --ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \ --no-verify-ssl \ --endpoint-url https://es.us-east-1.amazonaws.com \ --region us-east-1

タスク 3: OpenSearch Serverless コレクションで SAML を設定する

OpenSearch Serverless で SAML ベースのきめ細かなアクセスコントロールを設定するには
  1. を開き AWS Management Console 、Amazon OpenSearch Service に移動します。

  2. ナビゲーションペインのサーバーレスで、セキュリティを選択し、認証を選択します。

  3. IAM フェデレーションセクションで、編集を選択します。

    この設定を使用して、SAML 属性ベースのきめ細かなアクセスコントロールを制御できます。IAM フェデレーションはデフォルトで無効になっています。

  4. IAM フェデレーションを有効にするを選択します。

  5. Okta で定義した subjectKeyroleKeyの値を入力します。

    詳細については、「きめ細かなアクセスコントロールのための SAML 属性 」を参照してください。

  6. [Save] (保存) をクリックします。

  7. Serverless のナビゲーションペインで、データアクセスポリシーを選択します。

  8. 既存のポリシーを更新するか、新しいポリシーを作成します。

  9. ルールを展開し、プリンシパルの追加を選択し、IAM フェデレーションのユーザーとグループを選択します。

  10. 必要なプリンシパルを追加し、保存を選択します。

  11. [Grant] (付与) を選択します。

  12. このルールでは、以下を実行します。

    • 選択したプリンシパルに対して定義するアクセス許可を選択します。

    • アクセス許可を適用するコレクションを指定します。

    • 必要に応じて、インデックスレベルのアクセス許可を定義します。

    注記

    複数のルールを作成して、異なるプリンシパルグループに異なるアクセス許可を割り当てることができます。

  13. 完了したら、[保存] を選択します。

  14. [作成] を選択します。

または、CLI を使用して、次に示すようにコレクションのセキュリティ設定を作成することもできます。

aws opensearchserverless create-security-config --region "region" --type iamfederation --name "configuration_name" --description "description" --iam-federation-options '{"groupAttribute":"GroupKey","userAttribute":"UserKey"}'