

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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 擁有的金鑰 在現有的 上新增第二層加密。

  Amazon OpenSearch Service 自訂套件支援使用您建立、擁有和管理的對稱客戶受管金鑰，以透過現有 AWS 擁有的加密新增第二層加密。由於您可以完全控制此加密層，因此您可以執行下列任務：
  + 建立和維護金鑰政策
  + 建立和維護 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 自訂套件需要授予 ，才能將客戶受管金鑰用於下列內部操作：


| 作業 | Description | 
| --- | --- | 
| DescribeKey | 傳送DescribeKey請求至 AWS KMS ，以驗證在建立外掛程式套件時輸入的對稱客戶受管金鑰 ID 是否有效。 | 
| GenerateDataKeyWithoutPlaintext | 將GenerateDataKeyWithoutPlaintext請求傳送至 AWS KMS ，以產生由客戶受管金鑰加密的資料金鑰。 | 
| GenerateDataKey | 將GenerateDataKey請求傳送至 AWS KMS 以產生資料金鑰，以在內部複製套件時加密套件。 | 
| Decrypt | 將Decrypt請求傳送至 AWS KMS 以解密加密的資料金鑰，以便用來解密您的資料。 | 

您可以隨時撤銷授予的存取權，或移除服務對客戶受管金鑰的存取權。如果您這麼做，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>

金鑰政策會控制客戶受管金鑰的存取權限。每個客戶受管金鑰都必須只有一個金鑰政策，其中包含決定誰可以使用金鑰及其使用方式的陳述式。在建立客戶受管金鑰時，可以指定金鑰政策。如需詳細資訊，請參閱*《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 開發人員指南*》中的 [中的金鑰政策 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`套件的第二層加密。

當您建立外掛程式套件時，您可以輸入金鑰 ID 來指定資料 AWS KMS 金鑰，OpenSearch Service 自訂套件會使用該 ID 來加密外掛程式套件。

*AWS KMS 金鑰 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>

您也可以在金鑰政策和 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>

當您使用 AWS KMS 客戶受管金鑰搭配 OpenSearch Service 自訂套件服務資源時，您可以使用 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 Key Management Service 最佳實務](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html)*AWS 規範指南*。