Crittografia con AWS KMS key gestita dal cliente per SageMaker HyperPod - Amazon SageMaker AI

Crittografia con AWS KMS key gestita dal cliente per SageMaker HyperPod

Per impostazione predefinita, il volume root Amazon EBS collegato al cluster SageMaker HyperPod è crittografato utilizzando una AWS KMS key di proprietà di AWS. Ora hai la possibilità di crittografare sia il volume root Amazon EBS che il volume secondario con le chiavi KMS gestite dal cliente. L’argomento seguente descrive come funzionano le chiavi gestite dal cliente (CMK) con i volumi nei cluster HyperPod.

Nota

Si applicano le esclusioni seguenti quando si utilizzano chiavi gestite dal cliente per i cluster SageMaker HyperPod:

  • La crittografia con chiave gestita dal cliente è supportata solo per i cluster che utilizzano la modalità di provisioning continuo dei nodi. I gruppi di istanze limitati non supportano le chiavi gestite dal cliente.

  • I cluster HyperPod attualmente non supportano il passaggio del contesto di crittografia AWS KMS nelle richieste di crittografia con chiave gestita dal cliente. Pertanto, assicurati che la policy della chiave KMS non sia limitata da condizioni basate sul contesto di crittografia, perché ciò impedirebbe al cluster di utilizzare la chiave.

  • La transizione delle chiavi KMS non è attualmente supportata, quindi non puoi modificare la chiave KMS specificata nella tua configurazione. Per utilizzare una chiave diversa, crea un nuovo gruppo di istanze con la chiave desiderata ed elimina quello precedente.

  • La possibilità di specificare chiavi gestite dal cliente per i cluster HyperPod con la console non è attualmente supportata.

Autorizzazioni

Prima di utilizzare la chiave gestita dal cliente con HyperPod, è necessario completare i seguenti prerequisiti:

  • Verifica che il ruolo di esecuzione AWS IAM che stai utilizzando per SageMaker AI disponga delle autorizzazioni seguenti per le AWS KMS aggiunte. L’autorizzazione kms:CreateGrant consente a HyperPod di eseguire queste azioni utilizzando le autorizzazioni per la tua chiave KMS:

    • Aumento orizzontale del numero di istanze (operazioni UpdateCluster)

    • Aggiunta dei nodi del cluster (operazioni BatchAddClusterNodes)

    • Applicazione delle patch al software (operazioni UpdateClusterSoftware)

    Per ulteriori informazioni sull’aggiornamento delle autorizzazioni per il ruolo IAM, consulta Adding and removing IAM identity permissions nella Guida per l’utente di IAM.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" } ] }
  • Aggiungi le autorizzazioni seguenti alla tua policy della chiave KMS. Per ulteriori informazioni, consulta Change a key policy in AWS KMS Developer Guide.

    { "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" } } } ] }

Come utilizzare la chiave KMS

Puoi specificare le chiavi gestite dal cliente durante la creazione o l’aggiornamento di un cluster utilizzando le operazioni API CreateCluster e UpdateCluster. La struttura InstanceStorageConfigs consente fino a due configurazioni EbsVolumeConfig, in cui è possibile configurare il volume root Amazon EBS e, facoltativamente, un volume secondario. Puoi utilizzare la stessa chiave KMS o una chiave KMS diversa per ogni volume, a seconda delle esigenze.

Puoi scegliere di specificare una chiave gestita dal cliente per nessuno, entrambi o uno solo dei volumi. Tuttavia, non puoi specificare due volumi root o due volumi secondari.

Durante la configurazione del volume root, si applicano i seguenti requisiti:

  • RootVolume deve essere impostato su True. Il valore predefinito è False, che configura il volume secondario.

  • Il campo VolumeKmsKeyId è obbligatorio ed è necessario specificare la chiave gestita dal cliente. Questo perché il volume root deve essere sempre crittografato con una chiave di proprietà AWS o una chiave gestita dal cliente (se non si specifica la propria, viene utilizzata una chiave di proprietà AWS).

  • Non puoi specificare il campo VolumeSizeInGB per i volumi root perché HyperPod determina automaticamente la dimensione del volume root.

Durante la configurazione del volume secondario, si applicano i seguenti requisiti:

  • RootVolume deve essere False (il valore predefinito di questo campo è False).

  • Il campo VolumeKmsKeyId è facoltativo. Puoi utilizzare la stessa chiave gestita dal cliente specificata per il volume root oppure una chiave diversa.

  • Il campo VolumeSizeInGB è obbligatorio perché è necessario specificare la dimensione desiderata per il volume secondario.

Importante

Quando utilizzi le chiavi gestite dal cliente, ti consigliamo vivamente di utilizzare chiavi KMS diverse per ogni gruppo di istanze del cluster. L’utilizzo della stessa chiave gestita dal cliente in più gruppi di istanze potrebbe concedere autorizzazioni continuative involontarie anche se provi a revocare una concessione. Ad esempio, se revochi una concessione AWS KMS per i volumi di un gruppo di istanze, quel gruppo potrebbe comunque consentire operazioni di dimensionamento e applicazione delle patch a causa delle autorizzazioni concesse ad altri gruppi di istanze che utilizzano la stessa chiave. Per evitare questo problema, assicurati di assegnare chiavi KMS univoche a ciascun gruppo di istanze del cluster. Se devi limitare le autorizzazioni sui gruppi di istanze, prova una delle seguenti opzioni:

  • Disabilita la chiave KMS.

  • Applica le policy di rifiuto alla policy della chiave KMS.

  • Revoca tutte le concessioni del gruppo di istanze per la chiave (invece di revocare una sola concessione).

  • Elimina il gruppo di istanze.

  • Elimina il cluster.

Gli esempi seguenti mostrano come specificare le chiavi gestite dal cliente per i volumi root e secondari utilizzando le API CreateCluster e UpdateCluster. Questi esempi mostrano solo i campi obbligatori per l’integrazione delle chiavi gestite dal cliente. Per configurare una chiave gestita dal cliente per un solo volume, specifica solo una EbsVolumeConfig.

Per ulteriori informazioni sulla configurazione delle richieste di creazione e aggiornamento dei cluster, consulta Creazione di un cluster SageMaker HyperPod e Aggiornamento della configurazione di un cluster SageMaker HyperPod.

CreateCluster

L’esempio seguente mostra una richiesta create-cluster della AWS CLI con la crittografia con chiave gestita dal cliente.

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

L’esempio seguente mostra una richiesta update-cluster della AWS CLI con la crittografia con chiave gestita dal cliente.

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" } } ] }]'