

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

# SageMaker HyperPod 的客戶受管 AWS KMS key 加密
<a name="smcluster-cmk"></a>

根據預設，連接至 SageMaker HyperPod 叢集的根 Amazon EBS 磁碟區會使用 AWS KMS key 擁有的 加密 AWS。您現在可以選擇使用自己的客戶自管 KMS 金鑰，來同時加密根 Amazon EBS 磁碟區和次要磁碟區。下列主題描述客戶自管金鑰 (CMK) 如何在 HyperPod 叢集中使用磁碟區。

**注意**  
將客戶自管金鑰用於 SageMaker HyperPod 叢集時，適用下列排除：  
只有使用連續節點佈建模式的叢集才支援客戶自管金鑰加密。受限執行個體群組不支援客戶自管金鑰。
HyperPod 叢集目前不支援在客戶受管金鑰 AWS KMS 加密請求中傳遞加密內容。因此，請確定您的 KMS 金鑰政策不會使用加密內容條件縮小範圍，因為這可防止叢集使用金鑰。
目前不支援 KMS 金鑰轉換，因此您無法變更組態中指定的 KMS 金鑰。若要使用不同的金鑰，請使用所需的金鑰建立新的執行個體群組，並刪除舊的執行個體群組。
目前不支援透過主控台指定 HyperPod 叢集的客戶自管金鑰。

## 許可
<a name="smcluster-cmk-permissions"></a>

您必須先完成下列先決條件，才能搭配 HyperPod 使用客戶自管金鑰：
+ 確保您用於 SageMaker AI AWS 的 IAM 執行角色具有下列 AWS KMS 新增許可。`[ kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)` 許可允許 HyperPod 使用 KMS 金鑰的許可採取下列動作：
  + 擴增執行個體計數 (UpdateCluster 操作)
  + 新增叢集節點 (BatchAddClusterNodes 操作)
  + 修補軟體 (UpdateClusterSoftware 操作)

  如需更新 IAM 角色許可的詳細資訊，請參閱《IAM 使用者指南》**中的[新增和移除 IAM 身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "kms:CreateGrant",
                  "kms:DescribeKey"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ 將下列許可新增至您的 KMS 金鑰政策。如需詳細資訊，請參閱《AWS KMS 開發人員指南》**中的[變更金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Id": "hyperpod-key-policy",
      "Statement": [
          {
              "Sid": "Enable IAM User Permissions",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::111122223333:root"
              },
              "Action": "kms:*",
              "Resource": "*"
          },
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::111122223333:role/<iam-role>"
              },
              "Action": "kms:CreateGrant",
              "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
              "Condition": {
                  "StringEquals": {
                      "kms:ViaService": "sagemaker.us-east-1.amazonaws.com"
                  },
                  "Bool": {
                      "kms:GrantIsForAWSResource": "true"
                  }
              }
          },
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::111122223333:role/<iam-role>"
              },
              "Action": "kms:DescribeKey",
              "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
              "Condition": {
                  "StringEquals": {
                      "kms:ViaService": "sagemaker.us-east-1.amazonaws.com"
                  }
              }
          }
      ]
  }
  ```

------

## 如何使用 KMS 金鑰
<a name="smcluster-cmk-usage"></a>

您可以在使用 [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html) 和 [UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html) API 操作，來建立或更新叢集時指定客戶自管金鑰。`InstanceStorageConfigs` 結構最多允許兩個 `EbsVolumeConfig` 組態，您可以在其中設定根 Amazon EBS 磁碟區，以及選擇性地設定次要磁碟區。您可以針對每個磁碟區使用相同的 KMS 金鑰或不同的 KMS 金鑰，視您的需求而定。

您可以選擇不為其中任一個磁碟區，也可以選擇為這兩個磁碟區或其中任一磁碟區指定客戶自管金鑰。不過，您無法指定兩個根磁碟區或兩個次要磁碟區。

設定根磁碟區時，適用下列要求：
+ `RootVolume` 必須設定為 `True`。預設值為 `False`，這會改為設定次要磁碟區。
+ `VolumeKmsKeyId` 欄位為必要欄位，您必須指定客戶自管金鑰。這是因為根磁碟區必須一律使用 AWS 擁有的金鑰或客戶受管金鑰加密 （如果您未指定自己的金鑰，則會使用 AWS 擁有的金鑰）。
+ 您無法指定根磁碟區的 `VolumeSizeInGB` 欄位，因為 HyperPod 會為您決定根磁碟區的大小。

設定次要磁碟區時，適用下列要求：
+ `RootVolume` 必須是 `False` (此欄位的預設值為 `False`)。
+ 此 `VolumeKmsKeyId` 欄位為選用。您可以使用為根磁碟區指定的相同客戶自管金鑰，也可以使用不同的金鑰。
+ `VolumeSizeInGB` 欄位是必要的，因為您必須指定次要磁碟區所需的大小。

**重要**  
使用客戶自管金鑰時，強烈建議您針對您叢集中的每個執行個體群組使用不同的 KMS 金鑰。在多個執行個體群組中使用相同的客戶自管金鑰可能會導致意外的持續許可，即使您嘗試撤銷授予也一樣。例如，如果您撤銷一個執行個體群組磁碟區的 AWS KMS 授予，該執行個體群組可能仍會允許擴展和修補操作，因為使用相同金鑰授予其他執行個體群組上現有的 。若要避免此問題，請確定您將唯一的 KMS 金鑰指派給叢集中的每個執行個體群組。如果您需要限制執行個體群組的許可，您可以嘗試下列其中一個選項：  
停用 KMS 金鑰。
將拒絕政策套用至 KMS 金鑰政策。
撤銷金鑰的所有執行個體群組授予 (而不是撤銷一個授予)。
刪除執行個體群組。
刪除叢集。

下列範例展示如何使用 CreateCluster 和 UpdateCluster API，為根磁碟區和次要磁碟區指定客戶自管金鑰。這些範例僅顯示客戶自管金鑰整合的必要欄位。若要僅為其中一個磁碟區設定客戶自管金鑰，則僅指定一個 `EbsVolumeConfig`。

如需設定叢集建立和更新請求的詳細資訊，請參閱[建立 SageMaker HyperPod 叢集](sagemaker-hyperpod-eks-operate-cli-command-create-cluster.md)和[更新 SageMaker HyperPod 叢集組態](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md)。

------
#### [ CreateCluster ]

下列範例顯示具有客戶受管金鑰加密的 [ create-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) AWS CLI 請求。

```
aws sagemaker create-cluster \
  --cluster-name <your-hyperpod-cluster> \
  --instance-groups '[{
    "ExecutionRole": "arn:aws:iam::111122223333:role/<your-SageMaker-Execution-Role>",
    "InstanceCount": 2,
    "InstanceGroupName": "<your-ig-name>",
    "InstanceStorageConfigs": [
            {
                "EbsVolumeConfig": {
                    "RootVolume": True,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/root-volume-key-id"
                }
            },
            {
                "EbsVolumeConfig": {
                    "VolumeSizeInGB": 100,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/secondary-volume-key-id"
                }
            }
    ],
    "InstanceType": "<desired-instance-type>"
  }]' \
  --vpc-config '{
    "SecurityGroupIds": ["<sg-id>"],
    "Subnets": ["<subnet-id>"]
  }'
```

------
#### [ UpdateCluster ]

下列範例顯示具有客戶受管金鑰加密的 [ update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) AWS CLI 請求。

```
aws sagemaker update-cluster \
  --cluster-name <your-hyperpod-cluster> \
  --instance-groups '[{
    "InstanceGroupName": "<your-ig-name>",
    "InstanceStorageConfigs": [
            {
                "EbsVolumeConfig": {
                    "RootVolume": true,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/root-volume-key-id"
                }
            },
            {
                "EbsVolumeConfig": {
                    "VolumeSizeInGB": 100,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/secondary-volume-key-id"
                }
            }
    ]
  }]'
```

------