SageMaker HyperPod에 대한 고객 관리형 AWS KMS key 암호화 - Amazon SageMaker AI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SageMaker HyperPod에 대한 고객 관리형 AWS KMS key 암호화

기본적으로 SageMaker HyperPod 클러스터에 연결된 루트 Amazon EBS 볼륨은 AWS KMS key 소유의를 사용하여 암호화됩니다 AWS. 이제 자체 고객 관리형 KMS 키를 사용하여 루트 Amazon EBS 볼륨과 보조 볼륨을 모두 암호화할 수 있습니다. 다음 주제에서는 고객 관리형 키(CMK)가 HyperPod 클러스터의 볼륨에서 작동하는 방법을 설명합니다.

참고

SageMaker HyperPod 클러스터에 고객 관리형 키를 사용하는 경우 다음 예외가 적용됩니다.

  • 고객 관리형 키 암호화는 연속 노드 프로비저닝 모드를 사용하는 클러스터에서만 지원됩니다. 제한된 인스턴스 그룹은 고객 관리형 키를 지원하지 않습니다.

  • HyperPod 클러스터는 현재 고객 관리형 키 AWS KMS 암호화 요청에서 암호화 컨텍스트 전달을 지원하지 않습니다. 따라서 암호화 컨텍스트 조건을 사용하여 KMS 키 정책의 범위를 좁히지 않도록 해야 합니다. 범위를 좁히면 클러스터가 키를 사용할 수 없기 때문입니다.

  • KMS 키 전환은 현재 지원되지 않으므로 구성에 지정된 KMS 키를 변경할 수 없습니다. 다른 키를 사용하려면 원하는 키로 새 인스턴스 그룹을 생성하고 이전 인스턴스 그룹을 삭제합니다.

  • 콘솔을 통해 HyperPod 클러스터에 대한 고객 관리형 키를 지정하는 것은 현재 지원되지 않습니다.

권한

HyperPod에서 고객 관리형 키를 사용하려면 먼저 다음 사전 조건을 완료해야 합니다.

  • SageMaker AI에 사용 중인 AWS IAM 실행 역할에 다음 권한이 AWS KMS 추가되었는지 확인합니다. kms:CreateGrant 권한을 통해 HyperPod는 KMS 키에 대한 권한을 사용하여 다음 작업을 수행할 수 있습니다.

    • 인스턴스 수 스케일 아웃(UpdateCluster 작업)

    • 클러스터 노드 추가(BatchAddClusterNodes 작업)

    • 소프트웨어 패치 적용(UpdateClusterSoftware 작업)

    IAM 역할의 권한 업데이트에 대한 자세한 내용은 IAM 사용 설명서IAM 자격 증명 권한 추가 및 제거를 참조하세요.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" } ] }
  • KMS 키 정책에 다음 권한을 추가합니다. 자세한 내용은 AWS KMS 개발자 안내서키 정책 변경을 참조하세요.

    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 키 사용 방법

CreateClusterUpdateCluster API 작업을 사용하여 클러스터를 생성하거나 업데이트할 때 고객 관리형 키를 지정할 수 있습니다. InstanceStorageConfigs 구조는 루트 Amazon EBS 볼륨과 선택적으로 보조 볼륨을 구성할 수 있는 최대 두 개의 EbsVolumeConfig 구성을 허용합니다. 필요에 따라 각 볼륨에 대해 동일한 KMS 키 또는 다른 KMS 키를 사용할 수 있습니다.

고객 관리형 키를 두 볼륨 모두에 지정하거나 둘 중 하나에 지정하거나 둘 다 지정하지 않을 수 있습니다. 그러나 루트 볼륨 두 개 또는 보조 볼륨 두 개를 지정할 수는 없습니다.

루트 볼륨을 구성할 때 다음 요구 사항이 적용됩니다.

  • RootVolumeTrue로 설정해야 합니다. 기본값은 False이며, 보조 볼륨을 구성합니다.

  • VolumeKmsKeyId 필드는 필수이며 고객 관리형 키를 지정해야 합니다. 이는 루트 볼륨을 항상 AWS 소유 키 또는 고객 관리형 키로 암호화해야 하기 때문입니다(자체로 지정하지 않으면 AWS 소유 키가 사용됨).

  • HyperPod가 루트 볼륨의 크기를 결정하기 때문에 루트 볼륨에 대한 VolumeSizeInGB 필드를 지정할 수 없습니다.

보조 볼륨을 구성할 때 다음 요구 사항이 적용됩니다.

  • RootVolumeFalse여야 합니다(이 필드의 값은 False).

  • VolumeKmsKeyId 필드는 선택 사항입니다. 루트 볼륨에 지정한 것과 동일한 고객 관리형 키를 사용하거나 다른 키를 사용할 수 있습니다.

  • 보조 볼륨에 원하는 크기를 지정해야 하므로 VolumeSizeInGB 필드는 필수입니다.

중요

고객 관리형 키를 사용할 때는 클러스터의 각 인스턴스 그룹에 대해 서로 다른 KMS 키를 사용하는 것이 좋습니다. 여러 인스턴스 그룹에서 동일한 고객 관리형 키를 사용하면 권한 부여를 취소하려고 하더라도 의도하지 않게 권한이 지속적으로 부여될 수 있습니다. 예를 들어 한 인스턴스 그룹의 볼륨에 대한 AWS KMS 권한 부여를 취소해도 동일한 키를 사용하여 다른 인스턴스 그룹에 있는 권한 부여로 인해 해당 인스턴스 그룹은 여전히 조정 및 패치 작업을 허용할 수 있습니다. 이 문제를 방지하려면 클러스터의 각 인스턴스 그룹에 고유한 KMS 키를 할당해야 합니다. 인스턴스 그룹에 대한 권한을 제한해야 하는 경우 다음 옵션 중 하나를 시도할 수 있습니다.

  • KMS 키를 비활성화합니다.

  • KMS 키 정책에 거부 정책을 적용합니다.

  • 키에 대한 모든 인스턴스 그룹 권한 부여를 취소합니다(하나의 권한 부여를 취소하는 대신).

  • 인스턴스 그룹을 삭제합니다.

  • 클러스터를 삭제합니다.

다음 예시에서는 CreateCluster 및 UpdateCluster API를 사용하여 루트 및 보조 볼륨 모두에 대해 고객 관리형 키를 지정하는 방법을 보여줍니다. 이 예시에서는 고객 관리형 키 통합에 필요한 필드만 보여줍니다. 볼륨 중 하나에 대해서만 고객 관리형 키를 구성하려면 EbsVolumeConfig를 하나만 지정합니다.

클러스터 생성 및 업데이트 요청 구성에 대한 자세한 내용은 SageMaker HyperPod 클러스터 생성SageMaker HyperPod 클러스터 구성 업데이트 섹션을 참조하세요.

CreateCluster

다음 예제에서는 고객 관리형 키 암호화가 포함된 create-cluster 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

다음 예제에서는 고객 관리형 키 암호화를 사용한 업데이트 클러스터 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" } } ] }]'