

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

# Amazon OpenSearch Service ｎの JWT 認証と承認
<a name="JSON-Web-tokens"></a>

Amazon OpenSearch Service では、認証と承認に JSON Web トークン (JWT) を使用できるようになりました。JWT は、シングルサインオン (SSO) アクセスを付与するために使用される JSON ベースのアクセストークンです。OpenSearch Service の JWT を使用してシングルサインオントークンを作成し、OpenSearch Service ドメインへのリクエストを検証できます。JWT を使用するには、きめ細かなアクセスコントロールを有効にし、有効な RSA または ECDSA PEM 形式のパブリックキーを指定する必要があります。きめ細かなアクセスコントロールの詳細については、「[Fine-grained access control in Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html)」を参照してください。

OpenSearch Service コンソール、 AWS Command Line Interface (AWS CLI)、または AWS SDKs を使用して、JSON ウェブトークンを設定できます。

## 考慮事項
<a name="consider"></a>

Amazon OpenSearch Service で JWT を使用する前に、以下を考慮する必要があります。
+ PEM 形式の RSA パブリックキーのサイズが大きいため、 AWS コンソールを使用して JWT 認証と承認を設定することをお勧めします。
+ JWT のサブジェクトとロールフィールドを指定するときは、有効なユーザーとロールを指定する必要があります。指定しないと、リクエストは拒否されます。
+ OpenSearch 2.11 は、JWT 認証に使用できる最も古い互換性のあるバージョンです。

## ドメインアクセスポリシーの変更
<a name="modifying"></a>

ドメインを設定して JWT 認証と認可を使用する前に、ドメインアクセスポリシーを更新して JWT ユーザーがドメインにアクセスできるようにする必要があります。更新しないと、受信する JWT 認証リクエストはすべて拒否されます。サブリソース (/\$1) へのフルアクセスを提供するために推奨されるドメインアクセスポリシーは次のとおりです。

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

****  

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

------

## JWT 認証と認可の設定
<a name="configuration"></a>

ドメイン作成プロセス中、または既存のドメインを更新することで、JWT 認証と承認を有効にすることができます。セットアップ手順は、選択するオプションに応じて若干異なります。

次の手順では、OpenSearch Service コンソールで JWT 認証と承認用に既存のドメインを設定する方法について説明します。

1. **[ドメイン設定]** で、**[OpenSearch の JWT 認証と承認]** に移動し、**[JWT 認証と承認を有効にする]** を選択します。

1. ドメインに使用するパブリックキーを設定します。これを行うには、パブリックキーを含む PEM ファイルをアップロードするか、手動で入力します。
**注記**  
アップロードまたは入力されたキーが有効でない場合、問題を指定する警告がテキストボックスの上に表示されます。

1. (オプション) [その他の設定] で、次のオプションフィールドを設定します。
   + **サブジェクトキー** — このフィールドを空のままにして JWT のデフォルト `sub` キーを使用できます。
   +  **ロールキー** — このフィールドを空のままにして、JWT のデフォルト `roles` キーを使用できます。

   変更を行ったら、ドメインを保存します。

## JWT を使用してテストリクエストを送信する
<a name="test"></a>

指定されたサブジェクトとロールのペアを使用して新しい JWT を作成したら、テストリクエストを送信できます。これを行うには、プライベートキーを使用して、JWT を作成したツールを使用してリクエストに署名します。OpenSearch Service は、この署名を検証することで、受信リクエストを検証できます。

**注記**  
JWT にカスタムサブジェクトキーまたはロールキーを指定した場合は、JWT に正しいクレーム名を使用する必要があります。

以下は、JWT トークンを使用してドメインの検索エンドポイントから OpenSearch Service にアクセスする方法の例です。

```
curl -XGET "$search_endpoint" -H "Authorization: Bearer <JWT>"
```

### JWT 認証と承認の設定 (AWS CLI)
<a name="cli"></a>

次の AWS CLI コマンドは、ドメインが存在する場合、OpenSearch の JWT 認証と認可を有効にします。

```
aws opensearch update-domain-config --domain-name <your_domain_name> --advanced-security-options '{"JWTOptions":{"Enabled":true, "PublicKey": "<your_public_key>", "SubjectKey": "<your_subject_key>", "RolesKey": "<your_roles_key>"}}'
```

#### JWT 認証と承認の設定 (API を介した設定)
<a name="API"></a>

設定 API への次のリクエストにより、既存のドメイン上の OpenSearch の JWT 認証と承認を有効にします。

```
POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/my-domain/config
{
  "AdvancedSecurityOptions": {
    "JWTOptions": {
      "Enabled": true,
      "PublicKey": "public-key",
      "RolesKey": "optional-roles-key",
      "SubjectKey": "optional-subject-key"
   }  
  }
}
```

##### キーペアの生成
<a name="gen-key-pair"></a>

OpenSearch ドメインの JWT を設定するには、プライバシー強化メール (PEM) 形式でパブリックキーを指定する必要があります。Amazon OpenSearch Service は現在 JWT を使用する際に、RSA と ECDSA の 2 つの非対称暗号化アルゴリズムをサポートしています。

共通 OpenSSL ライブラリを使用して RSA キーペアを作成するには、次の手順に従います。

1. `openssl genrsa -out privatekey.pem 2048`

1. `openssl rsa -in privatekey.pem -pubout -out publickey.pem`

この例では、`publickey.pem` ファイルには Amazon OpenSearch Service で使用するパブリックキーが含まれ、`privatekey.pem` にはサービスに送信された JWT に署名するためのプライベートキーが含まれます。さらに、JWT を生成するためにプライベートキーが必要な場合は、プライベートキーを一般的に使用される `pkcs8` 形式に変換することもできます。

アップロードボタンを使用して PEM ファイルをコンソールに直接追加する場合、ファイルの拡張子は `.pem` である必要があります。`.crt`、`.cert`、または `.key` などの他のファイル拡張子は現在サポートされていません。