Cifrado de AWS KMS key administrado por el cliente para SageMaker HyperPod - Amazon SageMaker AI

Cifrado de AWS KMS key administrado por el cliente para SageMaker HyperPod

De forma predeterminada, el volumen raíz de Amazon EBS asociado a su clúster de SageMaker HyperPod se cifra con una AWS KMS key propiedad de AWS. Ahora tiene la opción de cifrar tanto el volumen raíz de Amazon EBS como el volumen secundario con sus propias claves de KMS administradas por el cliente. En el siguiente tema se describe el funcionamiento de las claves administradas por el cliente (CMK) con los volúmenes en los clústeres de HyperPod.

nota

Cuando se utilizan claves administradas por el cliente para los clústeres de SageMaker HyperPod, se aplican las siguientes exclusiones:

  • El cifrado de claves administradas por el cliente solo es compatible en los clústeres que utilizan el modo de aprovisionamiento de nodos continuo. Los grupos de instancias restringidos no admiten las claves administradas por el cliente.

  • Actualmente, los clústeres de HyperPod no permiten transmitir el contexto de cifrado de AWS KMS a las solicitudes de cifrado de claves administradas por el cliente. Por lo tanto, debe asegurarse de que su política de claves de KMS no se limite a las condiciones del contexto de cifrado, pues esto impide que el clúster utilice la clave.

  • Por el momento, no se admite la transición de claves de KMS, de manera que no puede cambiar la clave de KMS especificada en su configuración. Para usar una clave diferente, debe crear un grupo de instancias nuevo con la clave deseada y eliminar el grupo de instancias anterior.

  • Actualmente, no se pueden especificar claves administradas por el cliente para los clústeres de HyperPod desde la consola.

Permisos

Para poder utilizar la clave administrada por el cliente con HyperPod, debe cumplir los siguientes requisitos previos:

  • Asegúrese de que el rol de ejecución de AWS IAM que está utilizando para SageMaker AI incluya los siguientes permisos para AWS KMS. El permiso kms:CreateGrant permite que HyperPod realice las siguientes acciones con los permisos en su clave de KMS:

    • Escalado horizontal del número de instancias (operaciones de UpdateCluster)

    • Adición de nodos de clúster (operaciones BatchAddClusterNodes)

    • Software de aplicación de parches (operaciones UpdateClusterSoftware)

    Para obtener más información sobre la actualización de los permisos del rol de IAM, consulte Adición y eliminación de permisos de identidad de IAM en la Guía del usuario de IAM.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" } ] }
  • Agregue los siguientes permisos a su política de claves de KMS. Para obtener más información, consulte Cambio de una política de claves en la Guía para desarrolladores de AWS KMS.

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

Uso de la clave de KMS

Puede especificar las claves administradas por el cliente al crear o actualizar un clúster con las operaciones de las API CreateCluster y UpdateCluster. La estructura InstanceStorageConfigs admite hasta dos configuraciones de EbsVolumeConfig, en las que puede configurar el volumen raíz de Amazon EBS y, opcionalmente, un volumen secundario. Puede utilizar la misma clave de KMS o una clave de KMS distinta para cada volumen, en función de sus necesidades.

Puede elegir especificar una clave administrada por el cliente para ninguno, ambos o uno de los dos volúmenes. Sin embargo, no puede especificar dos volúmenes raíz ni dos volúmenes secundarios.

Al configurar el volumen raíz, se aplican los siguientes requisitos:

  • RootVolume se debe establecer en True. El valor predeterminado es False, que configura el volumen secundario en su lugar.

  • El campo VolumeKmsKeyId es obligatorio y debe especificar la clave administrada por el cliente. Esto se debe a que el volumen raíz siempre debe cifrarse con una clave de AWS o administrada por el cliente (si no especifica la suya, se utilizará una clave de AWS).

  • No puede especificar el campo VolumeSizeInGB para los volúmenes raíz, ya que HyperPod determina el tamaño del volumen raíz por usted.

Al configurar el volumen secundario, se aplican los siguientes requisitos:

  • RootVolume debe fijarse en False (el valor predeterminado de este campo es False).

  • El campo VolumeKmsKeyId es opcional. Puede utilizar la misma clave administrada por el cliente que ha especificado para el volumen raíz o una clave diferente.

  • El campo VolumeSizeInGB es obligatorio, ya que debe especificar el tamaño que desee para el volumen secundario.

importante

Cuando utilice claves administradas por el cliente, le recomendamos que utilice diferentes claves de KMS para cada grupo de instancias de su clúster. Si usa la misma clave administrada por el cliente en varios grupos de instancias, es posible que se prolonguen los permisos de forma involuntaria, incluso si intenta revocar una concesión. Por ejemplo, si revoca una concesión de AWS KMS para los volúmenes de un grupo de instancias, es posible que ese grupo de instancias siga permitiendo las operaciones de escalado y aplicación de parches debido a que las concesiones existentes en otros grupos de instancias utilizan la misma clave. Para evitar este problema, debe asegurarse de asignar claves de KMS únicas a cada grupo de instancias en su clúster. Si necesita restringir los permisos en los grupos de instancias, puede probar alguna de las opciones siguientes:

  • Desactive la clave de KMS.

  • Aplique políticas de denegación a la política de claves de KMS.

  • Revoque todas las concesiones de los grupos de instancias para la clave (en lugar de revocar una concesión).

  • Elimine el grupo de instancias.

  • Elimine el clúster.

En los siguientes ejemplos se muestra cómo especificar las claves administradas por el cliente para los volúmenes raíz y secundarios con las API CreateCluster y UpdateCluster. En estos ejemplos solo se muestran los campos obligatorios para la integración de las claves administradas por el cliente. Para configurar una clave administrada por el cliente para solo uno de los volúmenes, especifique solo un EbsVolumeConfig.

Para obtener más información sobre la configuración de las solicitudes de creación y actualización de clústeres, consulte Creación de un clúster de SageMaker HyperPod y Actualización de la configuración del clúster de SageMaker HyperPod.

CreateCluster

En el siguiente ejemplo se muestra una solicitud AWS CLI de create-cluster con cifrado de clave administrado por el 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

En el siguiente ejemplo se muestra una solicitud AWS CLI de update-cluster con cifrado de clave administrado por el 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" } } ] }]'