

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

# Amazon OpenSearch Service でのカスタムプラグイン管理
<a name="custom-plugins"></a>

OpenSearch Service のカスタムプラグインを使用すると、言語分析、カスタムフィルタリング、ランキングなどの領域で OpenSearch 機能を拡張できるため、パーソナライズされた検索エクスペリエンスを作成できます。OpenSearch 用のカスタムプラグインは、`org.opensearch.plugins.Plugin` クラスを拡張し、`.zip` ファイルにパッケージ化することで開発できます。

現在、Amazon OpenSearch Service では以下のプラグイン拡張機能がサポートされています。
+ **AnalysisPlugin** – カスタムアナライザー、文字トークナイザ、テキスト処理用のフィルターなどを追加して、分析機能を拡張します。
+ **SearchPlugin** – カスタムクエリタイプ、類似度アルゴリズム、提案オプション、集計を使用して検索機能を強化します。
+ **MapperPlugin** – OpenSearch でカスタムフィールドタイプとそのマッピング設定を作成し、さまざまなタイプのデータの保存方法とインデックス作成方法を定義できます。
+ **ScriptPlugin** – OpenSearch にカスタムスクリプト機能を追加できます。例えば、検索またはインデックス作成中のスコアリング、ソート、フィールド値変換などのオペレーション用のカスタムスクリプトなどです。

OpenSearch Service コンソールまたはカスタムパッケージの既存の API コマンドを使用して、プラグインをアップロードし、Amazon OpenSearch Service クラスターに関連付けることができます。[DescribePackages](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_DescribePackages.html) コマンドを使用して、アカウント内のすべてのパッケージを記述し、OpenSearch バージョンやエラーの詳細などの詳細情報を表示することもできます。OpenSearch Service は、プラグインパッケージのバージョン互換性、セキュリティの脆弱性、許可されたプラグインオペレーションを検証します。カスタムパッケージの詳細については、「[Amazon OpenSearch Service でのパッケージのインポートと管理](custom-packages.md)」を参照してください。

**OpenSearch のバージョンと AWS リージョン サポート**  
カスタムプラグインは、以下の AWS リージョンで OpenSearch バージョン 2.15 を実行している OpenSearch Service ドメインでサポートされています。
+ 米国東部 (オハイオ) (us-east-2)
+ 米国東部 (バージニア北部) (us-east-1)
+ 米国西部 (オレゴン) (us-west-2)
+ アジアパシフィック (ムンバイ) (ap-south-1)
+ アジアパシフィック (ソウル) (ap-northeast-2)
+ アジアパシフィック (シンガポール) (ap-southeast-1)
+ アジアパシフィック (シドニー) (ap-southeast-2)
+ アジアパシフィック (東京) (ap-northeast-1)
+ カナダ (中部) (ca-central-1)
+ ヨーロッパ (フランクフルト) (eu-central-1)
+ 欧州 (アイルランド) (eu-west-1)
+ ヨーロッパ (ロンドン) (eu-west-2)
+ 欧州 (パリ) (eu-west-3)
+ 南米 (サンパウロ) (sa-east-1)

**注記**  
カスタムプラグインには、ユーザーが開発したコードが含まれています。ユーザーが開発したコードに起因する SLA 違反などの問題は、SLA クレジットの対象外です。詳細については、「[Amazon OpenSearch Service - サービスレベルアグリーメント](https://aws.amazon.com/opensearch-service/sla/)」を参照してください。

**Topics**
+ [プラグインクォータ](#plugin-limits)
+ [前提条件](#custom-plugin-prerequisites)
+ [トラブルシューティング](#custom-plugin-troubleshooting)
+ [コンソールを使用したカスタムプラグインのインストール](#custom-plugin-install-console)
+ [を使用したカスタムプラグインの管理 AWS CLI](#managing-custom-plugins-cli)
+ [Amazon OpenSearch Service カスタムパッケージ AWS KMS 統合](custom-package-kms-integration.md)

## プラグインクォータ
<a name="plugin-limits"></a>
+ アカウントにつき、リージョンごとに最大 25 個のカスタムプラグインを作成できます。
+ プラグインの非圧縮状態での最大サイズは 1 GB です。
+ 1 つのドメインに関連付けることができるプラグインの最大数は 20 です。このクォータは、オプション、サードパーティー、カスタムからなるすべてのプラグインタイプの合計に適用されます。
+ カスタムプラグインは、OpenSearch バージョン 2.15 以降を実行しているドメインでサポートされています。
+ プラグインの `descriptor.properties` ファイルは、2.15.0 のようなエンジンバージョン、つまりパッチバージョンがゼロに設定されている 2.x.x バージョンをサポートしている必要があります。

## 前提条件
<a name="custom-plugin-prerequisites"></a>

カスタムプラグインをインストールしてドメインに関連付ける際は、次の要件を満たしていることを確認してください。
+ `descriptor.properties` ファイル内のプラグインでサポートされているエンジンバージョンが `2.15.0` または `2.x.0` と同等であること。つまり、パッチバージョンがゼロである必要があります。
+ ドメインで以下の機能が有効になっていること。
  +  [ノード間の暗号化](ntn.md)
  +  [保管時の暗号化](encryption-at-rest.md)
  + [`EnforceHTTPS` が「true」に設定されている](createupdatedomains.md)

    「*AWS Config デベロッパーガイド*」の「[opensearch-https-required](https://docs.aws.amazon.com/config/latest/developerguide/opensearch-https-required.html)」も参照してください。
  + クライアントは **Policy-Min-TLS-1-2-PFS-2023-10** をサポートする必要があります。以下のコマンドを使用することでこのサポートを指定できます。*プレースホルダー値*は、ユーザー自身の情報に置き換えてください。

    ```
    aws opensearch update-domain-config \
        --domain-name domain-name \
        --domain-endpoint-options '{"TLSSecurityPolicy":"Policy-Min-TLS-1-2-PFS-2023-10" }'
    ```

    詳細については、「*Amazon OpenSearch Service API リファレンス*」の「[DomainEndpointOptions](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_DomainEndpointOptions.html)」を参照してください。

## トラブルシューティング
<a name="custom-plugin-troubleshooting"></a>

システムがエラー `PluginValidationFailureReason : The provided plugin could not be loaded` を返した場合、トラブルシューティング情報については「[バージョンの互換性の問題によりカスタムプラグインのインストールが失敗する](handling-errors.md#troubleshooting-custom-plugins)」を参照してください。

## コンソールを使用したカスタムプラグインのインストール
<a name="custom-plugin-install-console"></a>

サードパーティープラグインをドメインに関連付けるには、まずプラグインのライセンスと設定をパッケージとしてインポートします。

**カスタムプラグインをインストールするには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールにサインインします。

1. 左のナビゲーションペインで **[パッケージ]** を選択します。

1. [**パッケージのインポート**] を選択します。

1. **[名前]** に、このプラグインの一意の識別可能な名前を入力します。

1. (オプション) **[説明]** に、パッケージまたはその目的に関する有用な詳細を入力します。

1. **[パッケージタイプ]** で **[プラグイン]** を選択します。

1. **[パッケージソース]** に、パスを入力するか、Amazon S3 のプラグイン ZIP ファイルを参照して選択します。

1. **[OpenSearch エンジンのバージョン]** で、プラグインがサポートする OpenSearch のバージョンを選択します。

1. **[パッケージ暗号化]** で、パッケージの暗号化キーをカスタマイズするかどうかを選択します。デフォルトでは、OpenSearch Service はプラグインパッケージを AWS 所有のキーで暗号化します。代わりにカスタマーマネージドキーを使用することもできます。

1. **[インポート]** を選択します。

プラグインパッケージをインポートしたら、ドメインに関連付けます。手順については、「[パッケージをドメインにインポートして関連付ける](custom-packages.md#associate-console)」を参照してください。

## を使用したカスタムプラグインの管理 AWS CLI
<a name="managing-custom-plugins-cli"></a>

を使用して AWS CLI 、多数のカスタムプラグインタスクを管理できます。

**Topics**
+ [を使用したカスタムプラグインのインストール AWS CLI](#custom-plugin-install-cli)
+ [を使用したカスタムプラグインの更新 AWS CLI](#custom-plugin-update-cli)
+ [AWS KMS キーセキュリティを使用してカスタムプラグインを作成または更新する](#custom-plugin-kms-key-security-cli)
+ [を使用して、カスタムプラグインを使用して OpenSearch Service ドメインを新しいバージョンの OpenSearch にアップグレードする AWS CLI](#custom-plugin-domain-upgrade-cli)
+ [カスタムプラグインのアンインストールと、関連付け解除ステータスの表示](#custom-plugin-uninstall-cli)

### を使用したカスタムプラグインのインストール AWS CLI
<a name="custom-plugin-install-cli"></a>

**[開始する前に]**  
カスタムプラグインをドメインに関連付ける前に、Amazon Simple Storage Service (Amazon S3) のバケットにアップロードする必要があります。バケットは、プラグインを使用する AWS リージョン のと同じ に配置する必要があります。S3 バケットにオブジェクトを追加する際の詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[オブジェクトのアップロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)」を参照してください。

プラグインに機密情報が含まれている場合は、アップロード時に S3 で管理されたキーによるサーバー側の暗号化を指定します。ファイルをアップロードしたら、その S3 パスを書き留めます。パスの形式は `s3://amzn-s3-demo-bucket/file-path/file-name` です。

**注記**  
オプションで、 AWS Key Management Service (AWS KMS) キーを指定して、プラグインの作成時にカスタムプラグインを保護できます。詳細については、「[AWS KMS キーセキュリティを使用してカスタムプラグインを作成または更新する](#custom-plugin-kms-key-security-cli)」を参照してください。

**を使用してカスタムプラグインをインストールするには AWS CLI**

1. 以下の [create-package](https://docs.aws.amazon.com/cli/latest/reference/opensearch/create-package.html) コマンドを実行して、カスタムプラグインの新しいパッケージを作成します。その際、以下の要件を満たしていることを確認してください。
   + バケットとキーの場所は、コマンドを実行しているアカウントの S3 バケット内のプラグイン `.zip` ファイルを指している必要があります。
   + S3 バケットは、パッケージを作成しているリージョンと同じリージョンにある必要があります。
   + `ZIP-PLUGIN` パッケージでサポートされているのは `.zip` ファイルのみです。
   + `.zip` ファイルの内容は、プラグインが想定するディレクトリ構造に従う必要があります。
   + `--engine-version` の値は `OpenSearch_{MAJOR}.{MINOR}` 形式である必要があります。例: **OpenSearch\$12.17**。

   *プレースホルダー値*は、ユーザー自身の情報に置き換えてください。

   ```
   aws opensearch create-package \
       --package-name package-name \
       --region region \
       --package-type ZIP-PLUGIN \
       --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=s3-key \
       --engine-version opensearch-version
   ```

1. (オプション) [describe-packages](https://docs.aws.amazon.com/cli/latest/reference/es/describe-packages.html) コマンドを使用して、検証やセキュリティ脆弱性の検出結果を含む、`create-package` オペレーションのステータスを表示します。*プレースホルダー値*は、ユーザー自身の情報に置き換えてください。

   ```
   aws opensearch describe-packages \
       --region region  \
       --filters '[{"Name": "PackageType","Value": ["ZIP-PLUGIN"]}, {"Name": "PackageName","Value": ["package-name"]}]'
   ```

   コマンドは以下のような情報を返します。

   ```
   {
       "PackageDetailsList": [{
           "PackageID": "pkg-identifier",
           "PackageName": "package-name",
           "PackageType": "ZIP-PLUGIN",
           "PackageStatus": "VALIDATION_FAILED",
           "CreatedAt": "2024-11-11T13:07:18.297000-08:00",
           "LastUpdatedAt": "2024-11-11T13:10:13.843000-08:00",
           "ErrorDetails": {
               "ErrorType": "",
               "ErrorMessage": "PluginValidationFailureReason : Dependency Scan reported 3 vulnerabilities for the plugin: CVE-2022-23307, CVE-2019-17571, CVE-2022-23305"
           },
           "EngineVersion": "OpenSearch_2.15",
           "AllowListedUserList": [],
           "PackageOwner": "OWNER-XXXX"
       }]
   }
   ```
**注記**  
`create-package` オペレーションの間、Amazon OpenSearch Service は `ZIP-PLUGIN` の値について、バージョン互換性、サポートされているプラグイン拡張機能、セキュリティの脆弱性をチェックします。セキュリティの脆弱性は、[Amazon Inspector](https://aws.amazon.com/inspector/getting-started/) サービスを使用してスキャンされます。これらのチェックの結果は、API レスポンスの `ErrorDetails` フィールドに表示されます。

1. [associate-package](https://docs.aws.amazon.com/cli/latest/reference/opensearch/associate-package.html) コマンドを使用して、プラグインを任意の OpenSearch Service ドメインに関連付けます。その際は、前のステップで作成したパッケージのパッケージ ID を使用します。
**ヒント**  
複数のプラグインがある場合は、代わりに [associate-packages](https://docs.aws.amazon.com/cli/latest/reference/opensearch/associate-packages.html) コマンドを使用します。これにより、1 回のオペレーションで複数のパッケージをドメインに関連付けることができます。

   *プレースホルダー値*は、ユーザー自身の情報に置き換えてください。

   ```
   aws opensearch associate-package \
       --domain-name domain-name \
       --region region \
       --package-id package-id
   ```
**注記**  
プラグインのインストールおよびアンインストールには、[ブルー/グリーンデプロイプロセス](managedomains-configuration-changes.md)が使用されます。

1. (オプション) [list-packages-for-domain](https://docs.aws.amazon.com/cli/latest/reference/opensearch/list-packages-for-domain.html) コマンドを使用して、関連付けのステータスを表示します。関連付けステータスは、ワークフローが `ASSOCIATING` から `ACTIVE` に進行するにつれて変化します。プラグインのインストールが完了し、プラグインを使用できる状態になると、関連付けステータスは ACTIVE に変わります。

   *プレースホルダー値*を、ユーザー自身の情報に置き換えます。

   ```
   aws opensearch list-packages-for-domain \
       --region region \
       --domain-name domain-name
   ```

### を使用したカスタムプラグインの更新 AWS CLI
<a name="custom-plugin-update-cli"></a>

[update-package](https://docs.aws.amazon.com/cli/latest/reference/opensearch/update-package.html) コマンドを使用してプラグインを変更します。

**注記**  
オプションで、 AWS Key Management Service (AWS KMS) キーを指定して、プラグインを更新するときにカスタムプラグインを保護できます。詳細については、「[AWS KMS キーセキュリティを使用してカスタムプラグインを作成または更新する](#custom-plugin-kms-key-security-cli)」を参照してください。

**を使用してカスタムプラグインを更新するには AWS CLI**
+ 以下のコマンドを実行してください。*プレースホルダー値*を、ユーザー自身の情報に置き換えます。

  ```
  aws opensearch update-package \
      --region region \
      --package-id package-id \
      --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=s3-key \
      --package-description description
  ```

パッケージを更新した後は、[ssociate-package](https://docs.aws.amazon.com/cli/latest/reference/opensearch/associate-package.html) コマンドまたは [associate-packages](https://docs.aws.amazon.com/cli/latest/reference/opensearch/associate-packages.html) コマンドを使用して、パッケージの更新をドメインに適用できます。

**注記**  
 を使用して、プラグインのオペレーションを監査、作成、更新、関連付け、関連付け解除できます AWS CloudTrail。詳細については、「[を使用した Amazon OpenSearch Service API コールのモニタリング AWS CloudTrail](managedomains-cloudtrailauditing.md)」を参照してください。

### AWS KMS キーセキュリティを使用してカスタムプラグインを作成または更新する
<a name="custom-plugin-kms-key-security-cli"></a>

 AWS KMS キーを指定することで、プラグイン作成または更新時にカスタムプラグインを保護できます。これを行うには、`PackageEncryptionOptions` を `true` に設定し、以下の例に示すように、キーの Amazon リソースネーム (ARN) を指定します。

**例: AWS KMS キーセキュリティを使用してカスタムプラグインを作成する**

```
aws opensearch create-package \
    --region us-east-2  --package-name my-custom-package \
    --package-type ZIP-PLUGIN \
    --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=my-s3-key 
    --engine-version OpenSearch_2.15   
"PackageConfigOptions": {
     ...
  }
  "PackageEncryptionOptions": {
    "Enabled": true,
    "KmsKeyId":"arn:aws:kms:us-east-2:111222333444:key/2ba228d5-1d09-456c-ash9-daf42EXAMPLE"
  }
```

**例: AWS KMS キーセキュリティでカスタムプラグインを更新する**

```
aws opensearch update-package \
    --region us-east-2  --package-name my-custom-package \
    --package-type ZIP-PLUGIN \
    --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=my-s3-key 
    --engine-version OpenSearch_2.15   
"PackageConfigOptions": {
     ...
  }
  "PackageEncryptionOptions": {
    "Enabled": true,
    "KmsKeyId":"arn:aws:kms:us-east-2:111222333444:key/2ba228d5-1d09-456c-ash9-daf42EXAMPLE"
  }
```

**重要**  
指定した AWS KMS キーが無効または削除されると、関連付けられたクラスターが動作しなくなる可能性があります。

カスタムパッケージと AWS KMS の統合の詳細については、「」を参照してください[Amazon OpenSearch Service カスタムパッケージ AWS KMS 統合](custom-package-kms-integration.md)。

### を使用して、カスタムプラグインを使用して OpenSearch Service ドメインを新しいバージョンの OpenSearch にアップグレードする AWS CLI
<a name="custom-plugin-domain-upgrade-cli"></a>

カスタムプラグインを使用する OpenSearch Service ドメインを、OpenSearch の新しいバージョンにアップグレードする必要がある場合は、以下のプロセスを実行してください。

**カスタムプラグインを使用して OpenSearch Service ドメインを新しいバージョンの OpenSearch にアップグレードするには AWS CLI**

1. create-package コマンドを使用して、新しい OpenSearch バージョンを指定するプラグインの新しいパッケージを作成します。

   すべてのエンジンバージョンのプラグインでパッケージ名が同じであることを確認します。パッケージ名を変更すると、ブルー/グリーンデプロイ中にドメインのアップグレードプロセスが失敗します。

1. 「[Amazon OpenSearch Service ドメインのアップグレード](version-migration.md)」の手順に従って、ドメインを上位バージョンにアップグレードします。

   このプロセス中、Amazon OpenSearch Service は以前のバージョンのプラグインパッケージの関連付けを解除し、ブルー/グリーンデプロイを使用して新しいバージョンをインストールします。

### カスタムプラグインのアンインストールと、関連付け解除ステータスの表示
<a name="custom-plugin-uninstall-cli"></a>

任意のドメインからプラグインをアンインストールするには、[disssociate-package](https://docs.aws.amazon.com/cli/latest/reference/es/dissociate-package.html) コマンドを使用します。このコマンドを実行すると、関連する設定やライセンスパッケージも削除されます。その後、[list-packages-for-domain](https://docs.aws.amazon.com/cli/latest/reference/es/list-packages-for-domain.html) コマンドを使用して、関連付け解除のステータスを表示できます。

**ヒント**  
[dissociate-packages](https://docs.aws.amazon.com/cli/latest/reference/opensearch/dissociate-packages.html) コマンドを使用して、1 回のオペレーションでドメインから複数のプラグインをアンインストールすることもできます。

**カスタムプラグインをアンインストールして、関連付け解除ステータスを表示するには**

1. すべてのインデックスでプラグインを無効にします。これは、プラグインパッケージの関連付けを解除する前に行う必要があります。

   すべてのインデックスからプラグインを無効にする前にプラグインをアンインストールしようとすると、ブルー/グリーンデプロイプロセスは `Processing` 状態でスタックしたままになります。

1. 次のコマンドを実行して、プラグインをアンインストールします。*プレースホルダー値*を、ユーザー自身の情報に置き換えます。

   ```
   aws opensearch dissociate-package \
       --region region \
       --package-id plugin-package-id \
       --domain-name domain name
   ```

1. (オプション) [list-packages-for-domain](https://docs.aws.amazon.com/cli/latest/reference/opensearch/list-packages-for-domain.html) コマンドを実行して、関連付け解除のステータスを表示します。

# Amazon OpenSearch Service カスタムパッケージ AWS KMS 統合
<a name="custom-package-kms-integration"></a>

Amazon OpenSearch Service カスタムパッケージは、 を使用して保管中の`ZIP-PLUGIN`パッケージを保護するための暗号化をデフォルトで提供します AWS マネージドキー。
+ **AWS 所有のキー** – Amazon OpenSearch Service カスタムパッケージは、デフォルトでこれらのキーを使用して `ZIP-PLUGIN` パッケージを自動的に暗号化します。その使用を表示、管理、使用 AWS 所有のキー 、監査することはできません。しかし、データを暗号化するキーを保護するために何らかの操作を行ったり、プログラムを変更したりする必要はありません。詳細については、「*AWS Key Management Service デベロッパーガイド*」の 「[AWS 所有のキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)」を参照してください。
+ **カスタマーマネージドキー** – `ZIP-PLUGIN`カスタムパッケージを作成するときにカスタマーマネージドキーを選択すること AWS 所有のキー で、既存の に 2 番目の暗号化レイヤーを追加できます。

  Amazon OpenSearch Service カスタムパッケージは、作成、所有、管理する対称カスタマーマネージドキーを使用して、既存の AWS 所有暗号化に 2 番目の暗号化レイヤーを追加することをサポートします。この暗号化レイヤーはユーザーが完全に制御できるため、以下のタスクを実行できます。
  + キーポリシーの確立と維持
  +  AWS Identity and Access Management (IAM) ポリシーと許可の確立と維持
  + キーポリシーの有効化と無効化
  + キー暗号化マテリアルのローテーション
  + タグを追加
  + キーエイリアスの作成
  + キー削除のスケジュール

詳細については、「[AWS Key Management Service デベロッパーガイド](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」の「カスタマーマネージドキー」を参照してください。

**注記**  
Amazon OpenSearch Service カスタムパッケージは、 AWS 所有のキー を使用して、保管時の暗号化を無償で自動的に有効にします。ただし、カスタマーマネージドキーを使用する場合、 AWS KMS 料金が適用されます。料金の詳細については、「[AWS Key Management Service の料金](https://aws.amazon.com/kms/pricing/)」を参照してください。

## Amazon OpenSearch Service カスタムパッケージサービスが で許可を使用する方法 AWS KMS
<a name="custom-package-kms-grants"></a>

OpenSearch Service カスタムパッケージには、カスタマーマネージドキーを使用するための許可が必要です。

カスタマーマネージドキーで暗号化された`ZIP-PLUGIN`パッケージを作成すると、Amazon OpenSearch Service カスタムパッケージサービスは [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) リクエストを送信してユーザーに代わって許可を作成します AWS KMS。の許可 AWS KMS は、OpenSearch Service にアカウントの AWS KMS キーへのアクセスを許可します。OpenSearch Service カスタムパッケージによって作成された許可には、リクエストにカスタムパッケージ ID を持つ暗号化コンテキストが含まれている場合にのみオペレーションを許可する制約があります。

Amazon OpenSearch Service カスタムパッケージは、以下の内部オペレーションのために、カスタマーマネージドキーの使用に関する許可を必要とします。


| 運用 | 説明 | 
| --- | --- | 
| DescribeKey | プラグインパッケージの作成時に入力された対称カスタマーマネージドキー ID が有効 AWS KMS であることを確認するDescribeKeyリクエストを に送信します。 | 
| GenerateDataKeyWithoutPlaintext | カスタマーマネージドキーによって暗号化されたデータキーを生成する AWS KMS リクエストGenerateDataKeyWithoutPlaintextを に送信します。 | 
| GenerateDataKey | GenerateDataKey リクエストを に送信 AWS KMS して、内部でコピーするときにパッケージを暗号化するデータキーを生成します。 | 
| Decrypt | 暗号化されたデータキーを復号 AWS KMS 化するためのDecryptリクエストを に送信し、データの復号化に使用できます。 | 

許可へのアクセスの取り消しや、カスタマーマネージドキーに対するサービスのアクセスの取り消しは、いつでもできます。これを行うと、OpenSearch Service は、カスタマーマネージドキーによって暗号化されたすべてのデータにアクセスできなくなり、そのデータに依存しているオペレーションが影響を受けます。例えば、OpenSearch Service がアクセスできないプラグインパッケージを関連付けようとすると、オペレーションは `AccessDeniedException` エラーを返します。

## カスタマーマネージドキーを作成する
<a name="custom-package-create-cmk"></a>

対称カスタマーマネージドキーは、 AWS マネジメントコンソール または AWS KMS APIs を使用して作成できます。

**対称カスタマーマネージドキーを作成するには**
+ 「*AWS Key Management Service デベロッパーガイド*」の「[KMS キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)」のステップに従います。

### キーポリシー
<a name="custom-package-key-policy"></a>

キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。キーポリシーは、カスタマーマネージドキーの作成時に指定できます。詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[AWS KMSでのキーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。

カスタマーマネージドキーをプラグインリソースで使用するには、キーポリシーで次の API オペレーションを許可する必要があります。
+ `kms:CreateGrant` - カスタマーマネージドキーに許可を追加します。指定された AWS KMS キーへのアクセスを制御する権限を付与し、OpenSearch Service カスタムパッケージが必要とするオペレーションを付与するためのアクセスを許可します。許可の使用についての詳細は、「[AWS KMS デベロッパーガイド](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)」を参照してください。

  これにより、OpenSearch Service は以下を実行できます。
  + `GenerateDataKeyWithoutPlainText` を呼び出して暗号化されたデータキーを生成し、さらに検証するために保存します。
  + `GenerateDataKey` を呼び出してプラグインパッケージを内部でコピーします。
  + `Decrypt` を呼び出してプラグインパッケージに内部でアクセスします。
  + `RetireGrant` にサービスが許可するための、廃止するプリンシパルを設定します。
+ `kms:DescribeKey` – カスタマーマネージドキーの詳細を提供し、OpenSearch Service がキーを検証できるようにします。
+ `kms:GenerateDataKey`、`kms:GenerateDataKeyWithoutPlaintext`、 `kms:Decrypt` – OpenSearch Service カスタムパッケージが、許可内でこれらのオペレーションを使用できるようにします。

OpenSearch Service カスタムパッケージに追加できるポリシーステートメントの例を次に示します。

```
"Statement" : [
  {
    "Sid" : "Allow access to principals authorized to use OpenSearch Service custom packages",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "*"
    },
    "Action" : [
      "kms:CreateGrant",
      "kms:GenerateDataKey",
      "kms:GenerateDataKeyWithoutPlaintext",
      "kms:Decrypt"
    ],
    "Resource" : "*",
    "Condition" : {
      "StringEquals" : {
        "kms:ViaService" : "custom-packages.region.amazonaws.com"
      },
      "StringEquals" : {
        "kms:EncryptionContext:packageId": "Id of the package"
      }
    }
  },
  {
    "Sid" : "Allow access to principals authorized to use Amazon OpenSearch Service custom packages",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "*"
    },
    "Action" : [
      "kms:DescribeKey"
    ],
    "Resource" : "*",
    "Condition" : {
      "StringEquals" : {
        "kms:ViaService" : "custom-packages.region.amazonaws.com"
      }
    }
  }
]
```

ポリシーでのアクセス許可の指定に関する詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[Key policies in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。

キーアクセスのトラブルシューティングの詳細については、 *AWS Key Management Service デベロッパーガイド*の「アクセス[AWS KMS 許可のトラブルシューティング](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html)」を参照してください。

## Amazon OpenSearch Service カスタムパッケージのカスタマーマネージドキーを指定する
<a name="custom-package-specify-cmk"></a>

カスタマーマネージドキーは、`ZIP-PLUGIN` パッケージの 2 番目の暗号化レイヤーとして指定できます。

プラグインパッケージを作成するときは、OpenSearch Service カスタムパッケージがプラグインパッケージの暗号化に使用する AWS KMS キー ID を入力してデータキーを指定できます。

*AWS KMS key ID* — AWS KMS カスタマーマネージドキーのキー識別子。キー ID、キー ARN、エイリアス名、またはエイリアス ARN を入力します。

## Amazon OpenSearch Service カスタムパッケージの暗号化コンテキスト
<a name="custom-package-encryption-context"></a>

暗号化コンテキストは、データに関する追加のコンテキスト情報を含むキーと値のペアのオプションセットです。

AWS KMS は、追加の認証済みデータとして暗号化コンテキストを使用して、認証済み暗号化をサポートします。データを暗号化するリクエストに暗号化コンテキストを含めると、 は暗号化コンテキストを暗号化されたデータに AWS KMS バインドします。データを復号化するには、そのリクエストに (暗号化時と) 同じ暗号化コンテキストを含めます。

### Amazon OpenSearch Service カスタムパッケージの暗号化コンテキスト
<a name="custom-package-encryption-context-details"></a>

Amazon OpenSearch Service カスタムパッケージは、すべての AWS KMS 暗号化オペレーションで同じ暗号化コンテキストを使用します。キーは `packageId`で、値はプラグインパッケージ`package-id`の です。

### モニタリングに暗号化コンテキストを使用する
<a name="custom-package-encryption-context-monitoring"></a>

対称カスタマーマネージドキーを使用してプラグインパッケージを暗号化する場合は、監査レコードとログで暗号化コンテキストを使用して、カスタマーマネージドキーがどのように使用されているかを特定することができます。暗号化コンテキストは、 AWS CloudTrail または Amazon CloudWatch Logs によって生成されたログにも表示されます。

### 暗号化コンテキストを使用して顧客マネージドキーへのアクセスを制御する
<a name="custom-package-encryption-context-access-control"></a>

対称カスタマーマネージドキー (CMK) へのアクセスを制御するための条件として、キーポリシーと IAM ポリシー内の暗号化コンテキストを使用することもできます。付与する際に、暗号化コンテキストの制約を使用することもできます。

OpenSearch Service カスタムパッケージは、許可で暗号化コンテキスト制約を使用して、アカウントまたはリージョン内のカスタマーマネージドキーへのアクセスを制御します。グラントの制約では、指定された暗号化コンテキストの使用をグラントが許可するオペレーションが必要です。

次に、特定の暗号化コンテキストのカスタマーマネージドキーへのアクセスを付与するキーポリシーステートメントの例を示します。このポリシーステートメントの条件では、暗号化コンテキストを指定する暗号化コンテキスト制約がグラントに必要です。

```
{
    "Sid": "Enable DescribeKey",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole"
    },
    "Action": "kms:DescribeKey",
    "Resource": "*"
},
{
    "Sid": "Enable OpenSearch Service custom packages to use the key",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole"
    },
    "Action" : [
         "kms:CreateGrant",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals" : {
            "kms:EncryptionContext:packageId": "ID of the package"
         }
    }
}
```

## OpenSearch カスタムパッケージサービスの暗号化キーのモニタリング
<a name="custom-package-monitoring-keys"></a>

OpenSearch Service カスタムパッケージサービスリソースで AWS KMS カスタマーマネージドキーを使用する場合、CloudTrail または CloudWatch Logs を使用してOpenSearch カスタムパッケージが に送信するリクエストを追跡できます AWS KMS。

**詳細情報**  
次のリソースは、保管時のデータ暗号化についての詳細を説明しています。
+  AWS KMS 基本概念の詳細については、「 *AWS Key Management Service デベロッパーガイド*[AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)」の「」を参照してください。
+ のセキュリティのベストプラクティスの詳細については AWS KMS、*AWS 「ベストプラクティスの規範ガイダンスガイド*」を参照してください[AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html)。