

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

# チュートリアル: IAM マスターユーザーと Amazon Cognito 認証を使用してドメインを設定する
<a name="fgac-iam"></a>

このチュートリアルでは、[きめ細かなアクセスコントロール](fgac.md)の一般的な Amazon OpenSearch Service のユースケースとして、OpenSearch Dashboards の Amazon Cognito 認証を受ける IAM マスターユーザーについて説明します。

*マスター* IAM ロールと*制限付き* IAM ロールを設定し、それらを Amazon Cognito のユーザーに関連付けます。その後、マスターユーザーは OpenSearch Dashboards にサインインし、制限付きユーザーをロールにマッピングし、きめ細かなアクセスコントロールを使用してユーザーのアクセス許可を制限できます。

![\[IAM roles and Amazon Cognito integration with OpenSearch Dashboards access control.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/fgac-cognito.png)


これらの手順は、認証に Amazon Cognito ユーザープールを使用しますが、この同じ基本プロセスは、Cognito 認証プロバイダに対して機能するため、異なる IAM ロールを異なるユーザーに割り当てることができます。

このチュートリアルでは、次の手順を実行します。

1. [マスター IAM ロールと制限付き IAM ロールを作成する](#fgac-iam-roles)

1. [Cognito 認証を使用してドメインを作成する](#fgac-iam-domain)

1. [Cognito ユーザープールとアイデンティティプールの設定](#fgac-iam-cognito)

1. [OpenSearch Dashboards でロールをマッピングする](#fgac-iam-dashboards)

1. [アクセス許可をテストする](#fgac-iam-test)

## ステップ 1: マスター IAM ロールと制限付き IAM ロールを作成する
<a name="fgac-iam-roles"></a>

 AWS Identity and Access Management (IAM) コンソールに移動し、2 つの個別のロールを作成します。
+ `MasterUserRole` – マスターユーザー。クラスターに対するフルアクセスの許可を持ち、ロールとロールマッピングを管理します。
+ `LimitedUserRole` – マスターユーザーよりも制限されたロール。マスターユーザーから制限付きアクセスが許可されます。

ロールの作成手順については、「*IAM ユーザーガイド*」の「[カスタム信頼ポリシーを使用してロールを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)」を参照してください。

両方のロールに次の信頼ポリシーがある必要があります。これにより、Cognito ID プールがロールを引き受けることができます。

------
#### [ 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"
      }
    }
  }]
}
```

------

**注記**  
`identity-pool-id` を Amazon Cognito ID プールの一意の識別子に置き換えます。例えば、`us-east-1:0c6cdba7-3c3c-443b-a958-fb9feb207aa6`。

## ステップ 2: Cognito 認証を使用してドメインを作成する
<a name="fgac-iam-domain"></a>

[https://console.aws.amazon.com/aos/home/](https://console.aws.amazon.com/aos/home/) で Amazon OpenSearch Service コンソールに移動し、次の設定で[ドメインを作成します](createupdatedomains.md)。
+ OpenSearch 1.0 以降、またはElasticsearch 7.8 以降
+ パブリックアクセス
+ マスターユーザー (前のステップで作成) として `MasterUserRole` できめ細かなアクセスコントロールが可能 
+ OpenSearch Dashboardsで有効になっている Amazon Cognito 認証。Cognito 認証を有効にし、ユーザーと ID プールを選択する手順については、「[Amazon Cognito 認証を使用するためのドメインの設定](cognito-auth.md#cognito-auth-config)」を参照してください。
+ 次のドメインアクセスポリシー:

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

****  

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

------
+ ドメインへのすべてのトラフィックに HTTPS を必須とする
+ ノード間の暗号化
+ 保管中のデータの暗号化

## ステップ 3: Cognito ユーザーの設定
<a name="fgac-iam-cognito"></a>

ドメインの作成中に、「*Amazon Cognito デベロッパーガイド*」の「[Create a user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html)」に従って、Amazon Cognito 内でマスターユーザーと、制限付きユーザーを設定します。最後に、「[Amazon Cognito でアイデンティティプールを作成する](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-with-identity-pools.html#create-identity-pool)」の手順に従ってアイデンティティプールを設定します。ユーザープールと ID プールは、同じ AWS リージョンに存在している必要があります。

## ステップ 4: OpenSearch Dashboards でロールをマッピングする
<a name="fgac-iam-dashboards"></a>

ユーザーの設定が完了したので、マスターユーザーとして OpenSearch Dashboards にサインインし、ユーザーをロールにマッピングできます。

1. OpenSearch Service コンソールに戻り、作成したドメインの OpenSearch Dashboards URL に移動します。URL はこの形式に従います: `domain-endpoint/_dashboards/`。

1. `master-user` 認証情報を使用してサインインします。

1. **[Add sample data]** (サンプルデータを追加) を選択し、サンプルフライトデータを追加します。

1. 左側のナビゲーションペインで **[Security]** (セキュリティ)、**[Roles]** (ロール)、**[Create role]** (ロールを作成) の順に選択します。

1. ロールに `new-role` という名前を付けます。

1. **[Index]** (インデックス) には、`opensearch_dashboards_sample_data_fli*` (Elasticsearch ドメインの `kibana_sample_data_fli*`) を指定します。

1. **[Index permissions]** (インデックスアクセス許可) には、**[read]** (読み取り) を選択します。

1. [**ドキュメントレベルのセキュリティ**] で、以下のクエリを指定します。

   ```
   {
     "match": {
       "FlightDelay": true
     }
   }
   ```

1. フィールドレベルのセキュリティでは、[**除外**] を選択し、`FlightNum` を指定します。

1. [**匿名化**] では、`Dest` を指定します。

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

1. [**マッピングされたユーザー**]、[**マッピングの管理**] を選択します。外部 ID として `LimitedUserRole` の Amazon リソースネーム (ARN) を追加し、**[Map]** (マッピング) を選択します。

1. ロールのリストに戻り、**[opensearch\$1dashboards\$1user]** を選択します。[**マッピングされたユーザー**]、[**マッピングの管理**] を選択します。バックエンドロールとして `LimitedUserRole` の ARN を追加し、[**マップ**] を選択します。

## ステップ 5: アクセス許可をテストする
<a name="fgac-iam-test"></a>

ロールが正しくマッピングされると、制限付きユーザーとしてサインインし、アクセス許可をテストできます。

1. 新しいプライベートブラウザウィンドウで、ドメインの OpenSearch Dashboards URL に移動し、`limited-user` 認証情報を使用してサインインして、**[Explore on my own]** (自力で調べる) を選択します。

1. [**開発ツール**] に進み、デフォルトの検索を実行します。

   ```
   GET _search
   {
     "query": {
       "match_all": {}
     }
   }
   ```

   許可エラーに注意してください。`limited-user` には、クラスター全体の検索を実行する許可がありません。

1. 別の検索を実行します。

   ```
   GET opensearch_dashboards_sample_data_flights/_search
   {
     "query": {
       "match_all": {}
     }
   }
   ```

   一致するすべてのドキュメントでは、[`FlightDelay`] フィールドが `true` であり、`Dest` フィールドが匿名化されて、`FlightNum` フィールドはありません。

1. 元のブラウザウィンドウで、`master-user` としてサインインし、[**開発ツール**] を選択して、同じ検索を実行します。許可、ヒット数、一致するドキュメント、含まれるフィールドが異なっています。