

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

# Amazon OpenSearch Serverless の暗号化
<a name="serverless-encryption"></a>

## 保管中の暗号化
<a name="serverless-encryption-at-rest"></a>

ユーザーが作成した各 Amazon OpenSearch Serverless コレクションでは、データへの不正アクセスを防止するための、暗号化を使用したセキュリティ機能により、保管中のデータが保護されます。保管時の暗号化では AWS Key Management Service 、 (AWS KMS) を使用して暗号化キーを保存および管理します。この暗号化は、256 ビットキーを使用した Advanced Encryption Standard アルゴリズム (AES-256) を使用して実行されます。

**Topics**
+ [暗号化ポリシー](#serverless-encryption-policies)
+ [考慮事項](#serverless-encryption-considerations)
+ [必要なアクセス許可](#serverless-encryption-permissions)
+ [カスタマーマネージドキーのキーポリシー](#serverless-customer-cmk-policy)
+ [OpenSearch Serverless が で許可を使用する方法 AWS KMS](#serverless-encryption-grants)
+ [暗号化ポリシーの作成 (コンソール)](#serverless-encryption-console)
+ [暗号化ポリシーの作成 (AWS CLI)](#serverless-encryption-cli)
+ [暗号化ポリシーの表示](#serverless-encryption-list)
+ [暗号化ポリシーの更新](#serverless-encryption-update)
+ [暗号化ポリシーの削除](#serverless-encryption-delete)

### 暗号化ポリシー
<a name="serverless-encryption-policies"></a>

暗号化ポリシーを使用すると、新しく作成され特定の名前またはパターンに一致するコレクションに対し、暗号化キーを自動的に割り当てることができ、多くのコレクションを大規模に管理できます。

暗号化ポリシーを作成する際には、*プレフィックス*でワイルドカードベースのマッチングルール (`MyCollection*` など) を指定するか、コレクション名を 1 つ入力します。次に、その名前またはプレフィックスパターンに一致するコレクションを作成すると、ポリシーとそれに対応する KMS キーが、そのコレクションに対し自動的に割り当てられます。

コレクションを作成するときは、セキュリティポリシーを使用するか、`CreateCollection`リクエスト内で直接行うかの 2 つの方法で AWS KMS キーを指定できます。`CreateCollection` リクエストの一部として AWS KMS キーを指定すると、一致するセキュリティポリシーよりも優先されます。このアプローチにより、必要に応じて特定のコレクションのポリシーベースの暗号化設定を柔軟に上書きできます。

![\[Encryption policy creation process with rules and collection matching to KMS key.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-encryption.png)


暗号化ポリシーには次の要素が含まれます。
+ `Rules` – 1 つ以上のコレクションマッチングルール。それぞれに次のサブ要素が含まれます。
  + `ResourceType` – 現在、選択できるオプションは「collection」のみです。暗号化ポリシーは、コレクションリソースにのみ適用されます。
  + `Resource` – ポリシーが適用される 1 つ以上のコレクション名またはパターンで、形式は `collection/<collection name|pattern>` です。
+ `AWSOwnedKey` – AWS 所有のキーを使用するかどうか。
+ `KmsARN` – `AWSOwnedKey` に「false」を設定する場合は、KMS キーの Amazon リソースネーム (ARN) を指定して、関連するコレクションを暗号化します。このパラメータを含めると、OpenSearch Serverless は `AWSOwnedKey` パラメータを無視します。

次のポリシー例では、`autopartsinventory` という名前で詳細作成されるすべてのコレクションと、「sales」という用語で始まるコレクションに対し、カスタマー管理キーを割り当てます。

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":false,
   "KmsARN":"arn:aws:kms:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36"
}
```

ポリシーがコレクション名と一致していても、リソースパターンにワイルドカード (\$1) が含まれている場合には、コレクションの作成時にこの自動割り当てを上書きすることが可能です。キーの自動割り当てを上書きすることを選択した場合、OpenSearch Serverless はユーザーに代わり、**auto-<*collection-name*>** という名前の暗号化ポリシーを作成し、これを対象のコレクションにアタッチします。このポリシーは、初期状態では 1 つのコレクションにのみ適用されますが、他のコレクションを含めるように変更できます。

コレクションと一致しないようにポリシールールを変更しても、関連する KMS キーのコレクションに対する割り当ては、(自動的に) 解除されません。コレクションの暗号化には、常に初期の暗号化キーが使用されます。コレクションに対し異なる暗号化キーを使用した場合には、コレクションを再作成します。

1 つのコレクションに対し複数のポリシーのルールが一致する場合は、より詳細なルールが使用されます。例えば、あるポリシーに `collection/log*` のルールが含まれており、もう 1 つのポリシーには `collection/logSpecial` のルールが含まれている場合には、より詳細である 2 つ目のポリシーの暗号化キーが使用されます。

名前やプレフィックスが既に他のポリシーに含まれている場合、そのポリシーを使用することはできません。異なる暗号化ポリシーで同じリソースパターンを設定しようとすると、OpenSearch Serverless はエラーを表示します。

### 考慮事項
<a name="serverless-encryption-considerations"></a>

コレクションの暗号化を設定する際には、次の点を考慮してください。
+ すべての Serverless コレクションには、保存時の暗号化が*必須*です。
+ 使用するキーには、カスタマー管理キーと AWS 所有のキーのオプションがあります。カスタマー管理キーを使用する場合は、[自動キーローテーション](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)を有効にすることをお勧めします。
+ コレクションを作成後、そのコレクションの暗号化キーを変更することはできません。コレクションを初めてセットアップするときに AWS KMS 使用するものを慎重に選択します。
+ コレクションに適合できるのは、単一の暗号化ポリシーのみです。
+ 固有の KMS キーを持つコレクションは、他のコレクションとの間で、OpenSearch Compute Unit (OCU) を共有することはできません。ユニークなキーを持つ各コレクションには、それぞれ独自に 4 OCU が必要です。
+ 暗号化ポリシーの KMS キーを更新しても、その変更は KMS キーが既に割り当てられている、既存の一致するコレクションには影響しません。
+ OpenSearch Serverless は、顧客管理キーにおける許可について明示的なチェックは行いません。データアクセスポリシーを通じてコレクションにアクセスする許可が付与されたユーザーは、関連付けられたキーで暗号化されたデータを、取り込んだりクエリできます。

### 必要なアクセス許可
<a name="serverless-encryption-permissions"></a>

OpenSearch Serverless の保管時の暗号化では、次の AWS Identity and Access Management (IAM) アクセス許可を使用します。IAM 条件を指定して、ユーザーを特定のコレクションに制限できます。
+ `aoss:CreateSecurityPolicy` – 暗号化ポリシーを作成します。
+ `aoss:ListSecurityPolicies` – アタッチされているすべての暗号化ポリシーとコレクションを一覧表示します。
+ `aoss:GetSecurityPolicy` – 特定の暗号化ポリシーの詳細を表示します。
+ `aoss:UpdateSecurityPolicy` – 暗号化ポリシーを変更します。
+ `aoss:DeleteSecurityPolicy` – 暗号化ポリシーを削除します。

以下のアイデンティティベースのアクセスポリシー例では、ユーザーがリソースパターン `collection/application-logs` の暗号化ポリシーを管理する際に必要となる、最小限の許可を付与しています。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "aoss:CreateSecurityPolicy",
            "aoss:UpdateSecurityPolicy",
            "aoss:DeleteSecurityPolicy",
            "aoss:GetSecurityPolicy"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aoss:collection":"application-logs"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "aoss:ListSecurityPolicies"
         ],
         "Resource":"*"
      }
   ]
}
```

------

### カスタマーマネージドキーのキーポリシー
<a name="serverless-customer-cmk-policy"></a>

[カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)を選択してコレクションを保護する際、OpenSearch Serverless は、選択を行うプリンシパルに代わって KMS キーを使用するための、アクセス許可を取得します。そのプリンシパル、ユーザー、またはロールには、OpenSearch Serverless に必要な KMS キーに対するアクセス許可が付与されている必要があります。れらのアクセス許可は、[キーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)または [IAM ポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)により付与できます。

OpenSearch Serverless は、自動スケーリング`GenerateDataKey`やソフトウェア更新などのメンテナンスオペレーション中に および `Decrypt` KMS API コールを行います。これらの呼び出しは、一般的なトラフィックパターン外で観察される場合があります。これらの呼び出しは通常のサービスオペレーションの一部であり、アクティブなユーザートラフィックを示すものではありません。

OpenSearch Serverless は、保管中のデータを暗号化する KMS キーにアクセス`KMSKeyInaccessibleException`できない場合、 をスローします。これは、KMS キーを無効化または削除するか、OpenSearch Serverless がキーを使用できるようにする許可を取り消す場合に発生します。

OpenSearch Serverless には、カスタマー管理について以下のアクセス許可が最低限必要です。
+ [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)

例えば、次のようになります。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Action": "kms:DescribeKey",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Dale"
        },
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "kms:ViaService": "aoss.us-east-1.amazonaws.com"
            }
        }
    },
    {
        "Action": "kms:CreateGrant",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Dale"
        },
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "kms:ViaService": "aoss.us-east-1.amazonaws.com"
            },
            "ForAllValues:StringEquals": {
                "kms:GrantOperations": [
                    "Decrypt",
                    "GenerateDataKey"
                ]
            },
            "Bool": {
                "kms:GrantIsForAWSResource": "true"
            }
        }
    }
  ]
}
```

------

OpenSearch Serverless では、[kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) および [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) のアクセス許可を使用してグラントを作成します。

詳細については、*AWS Key Management Service デベロッパーガイド*の「[AWS KMSでのキーポリシーの使用](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。

### OpenSearch Serverless が で許可を使用する方法 AWS KMS
<a name="serverless-encryption-grants"></a>

OpenSearch Serverless がカスタマー管理キーを使用するためには、[グラント](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)が必要です。

新しいキーを使用してアカウントに暗号化ポリシーを作成すると、OpenSearch Serverless は [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) リクエストを送信してユーザーに代わって許可を作成します AWS KMS。の権限 AWS KMS は、OpenSearch Serverless に顧客アカウントの KMS キーへのアクセスを許可するために使用されます。

OpenSearch Serverless は、以下の内部オペレーションのために、カスタマー管理キーの使用に関するグラントを必要とします。
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) リクエストを に送信 AWS KMS して、指定された対称カスタマーマネージドキー ID が有効であることを確認します。
+ オブジェクトを暗号化するためのデータキーを作成するには、[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) リクエストを KMS キーに送信します。
+ に [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストを送信 AWS KMS して、暗号化されたデータキーを復号して、データの暗号化に使用できるようにします。

グラントへのアクセスの取り消しや、カスタマーマネージドキーに対するサービスのアクセスの取り消しは、いつでもできます。これを行うと、OpenSearch Serverless はカスタマー管理キーによって暗号化されたすべてのデータにアクセスできなくなり、そのデータに依存するすべてのオペレーションが影響を受けます。結果的に、非同期ワークフローで `AccessDeniedException` エラーが発生しその処理に失敗します。

OpenSearch Serverless は、特定の顧客管理キーにおいて、関連付けられたセキュリティポリシーやコレクションが存在しない場合、非同期ワークフローでグラントを廃止します。

### 暗号化ポリシーの作成 (コンソール)
<a name="serverless-encryption-console"></a>

暗号化ポリシーで、そのポリシーを適用する KMS キーと一連のコレクションパターンを指定します。ポリシーで定義されているパターンのいずれかに一致する新しいコレクションには、その作成時に、対応する KMS キーが割り当てられます。暗号化ポリシーは、コレクションの作成を開始する*前*に作成することをお勧めします。

**OpenSearch Serverless 暗号化ポリシーを作成するには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションパネルで **[Serverless]** (サーバーレス) を展開し、**[Encryption policies]** (暗号化ポリシー) を選択します。

1. **[Create encryption policy]** (暗号化ポリシーを作成) を選択します。

1. ポリシーの名前と説明を入力します。

1. **[Resources]** (リソース) に、この暗号化ポリシーに関する (1 つ以上の) リソースパターンを入力します。現在の AWS アカウント とリージョンにあり、新しく作成され、いずれかのパターンに一致しているコレクションが、自動的にこのポリシーに割り当てられます。例えば、`ApplicationLogs` と (ワイルドカードなしで) 入力し、後にその名前でコレクションを作成した場合、ポリシーおよび対応する KMS キーが、そのコレクションに対し割り当てられます。

   また、`Logs*` などのプレフィックスを指定して、名前が `Logs` で始まる任意の新しいコレクションに対し、ポリシーを割り当てることもできます。ワイルドカードを使用すると、複数のコレクションの暗号化設定を大規模に管理できます。

1. **[Encryption]** (暗号化) で、使用する KMS キーを選択します。

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

#### 次のステップ: コレクションを作成する
<a name="serverless-encryption-next"></a>

1 つ以上の暗号化ポリシーを設定したら、それらのポリシーで定義されているルールと一致するコレクションの作成を開始できます。手順については、「[コレクションの作成](serverless-create.md)」を参照してください。

コレクション作成の **[Encryptions]** (暗号化) ステップで、暗号化ポリシーで定義されているパターンと一致する名前が入力された場合、OpenSearch Serverless はそれを通知し、対応する KMS キーをコレクションに自動的に割り当てます。リソースパターンにワイルドカード (\$1) が含まれている場合は、その一致をオーバーライドして独自のキーを選択できます。

### 暗号化ポリシーの作成 (AWS CLI)
<a name="serverless-encryption-cli"></a>

OpenSearch Serverless API オペレーションを使用して暗号化ポリシーを作成する際は、JSON 形式で、リソースパターンと暗号化キーを指定します。[CreateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityPolicy.html) リクエストは、インラインポリシーと.json ファイルの両方を受け入れます。

暗号化ポリシーは以下の形式になります。このサンプルファイル (`my-policy.json`) は、将来作成される `autopartsinventory` という名前のコレクションすべてと、名前が `sales` で始まるコレクションすべてに一致します。

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":false,
   "KmsARN":"arn:aws:kms:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36"
}
```

サービス所有のキーを使用するには、`AWSOwnedKey` に `true` を設定します。

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":true
}
```

次のリクエストは暗号化ポリシーを作成します。

```
aws opensearchserverless create-security-policy \
    --name sales-inventory \
    --type encryption \
    --policy file://my-policy.json
```

その後、[CreateCollection](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateCollection.html) API オペレーションを使用して、リソースパターンの 1 つと一致するコレクションを 1 つまたは複数作成します。

### 暗号化ポリシーの表示
<a name="serverless-encryption-list"></a>

コレクションを作成する際、コレクション名と一致するリソースパターンを持つポリシーを確認するために、アカウント内の既存の暗号化ポリシーを、プレビューする必要が生じることがあります。次の [ListSecurityPolicies](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityPolicies.html) リクエストでは、アカウント内のすべての暗号化ポリシーが一覧表示されます。

```
aws opensearchserverless list-security-policies --type encryption
```

このリクエストは、すべての設定済みの暗号化ポリシーに関する情報を返します。`policy` 要素の内容を使用して、ポリシーで定義されているパターンルールを表示します。

```
{
   "securityPolicyDetails": [ 
      { 
         "createdDate": 1663693217826,
         "description": "Sample encryption policy",
         "lastModifiedDate": 1663693217826,
         "name": "my-policy",
         "policy": "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"]}],\"AWSOwnedKey\":true}",
         "policyVersion": "MTY2MzY5MzIxNzgyNl8x",
         "type": "encryption"
      }
   ]
}
```

KMS キーなど、特定のポリシーに関する詳細情報を表示するには、[GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) コマンドを使用します。

### 暗号化ポリシーの更新
<a name="serverless-encryption-update"></a>

暗号化ポリシー内で KMS キーを更新する場合、その変更は、設定された名前またはパターンと一致する、新規作成のコレクションだけに適用されます。KMS キーが既に割り当て済みの、既存のコレクションには影響は与えません。

同様なことが、ポリシーの一致ルールにも当てはまります。ルールを追加、変更、または削除した場合、その変更は新しく作成されたコレクションにのみ適用されます。ポリシーのルールを変更したために、コレクション名と一致しなくなったとしても、既存のコレクションに割り当てられた KMS キーは失われません。

OpenSearch Serverless コンソールで暗号化ポリシーを更新するには、**[Encryption policies]** (暗号化ポリシー) を選択し、変更するポリシーを選択した後に、**[Edit]** (編集) を選択します。変更を行ってから、**[保存]** を選択します。

OpenSearch Serverless API を使用して暗号化ポリシーを更新する場合は、[UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html) オペレーションを使用します。次のリクエストでは、新しいポリシー JSON ドキュメントを使用して、暗号化ポリシーを更新します。

```
aws opensearchserverless update-security-policy \
    --name sales-inventory \
    --type encryption \
    --policy-version 2 \
    --policy file://my-new-policy.json
```

### 暗号化ポリシーの削除
<a name="serverless-encryption-delete"></a>

暗号化ポリシーを削除しても、そのポリシーで定義されている KMS キーを現在使用しているコレクションに影響はありません。OpenSearch Serverless コンソールでポリシーを削除するには、ポリシーを選択し、**[Delete]** (削除) を選択します。

また、[DeleteSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityPolicy.html) オペレーションを使用することもできます。

```
aws opensearchserverless delete-security-policy --name my-policy --type encryption
```

## 転送中の暗号化
<a name="serverless-encryption-in-transit"></a>

OpenSearch Serverless では、コレクション内のすべてのパスは、業界標準の AES-256 暗号を使用した Transport Layer Security 1.2 (TLS) を使って、転送中に暗号化されます。Opensearch のすべての API と Dashboards へのアクセスも、TLS 1.2 を経由します。TLS は、ネットワーク上でやり取りされる情報の暗号化に使用される、業界標準の暗号化プロトコルのセットです。