기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
권한 설정
추가 기능 및 해당 종속성에 필요한 역할
SageMaker HyperPod의 SageMaker 스페이스에 필요한 IAM 역할
SageMaker HyperPod(EKS) 클러스터에서 SageMaker Spaces(a.k.aSageMaker IDE/노트북 SageMaker) 기능을 활성화할 때는 여러 IAM 역할을 생성하고 할당해야 합니다. SageMaker HyperPod 이러한 역할은 보안 액세스, 라우팅, 원격 IDE 세션 및 EBS 스토리지 프로비저닝을 지원합니다. 다음 표에는 네 가지 역할과 필요한 시기가 요약되어 있습니다.
역할 요약 테이블
| IAM 역할 | 필수 | 용도 | 누가 사용하나요? | SageMaker 콘솔에서 허용하는 사용자 지정 |
|---|---|---|---|---|
|
스페이스 추가 기능 실행 역할 |
항상 필수 |
스페이스 컨트롤러가 스페이스를 관리하고, 미리 서명된 URLs 생성하고, SSM 세션을 관리할 수 있도록 허용합니다. |
추가 기능 컨트롤러 포드(권한 있음) |
"" 예 |
|
클러스터 내 라우터 역할 |
WebUI 액세스에 필요 |
라우터 포드가 JWT 서명을 위한 KMS 작업을 수행하도록 허용(WebUI 인증) |
클러스터 내 라우터 포드(권한 있음) |
"" 예 |
|
SSM 관리형 인스턴스 역할 |
원격 IDE 액세스에 필요 |
SSH-over-SSM 원격 IDE 세션에 SSM 에이전트 사이드카에서 사용 |
스페이스 IDE 포드의 SSM 에이전트(추가 기능 포드 아님) |
"" 예 |
|
EBS CSI 드라이버 추가 기능에 대한 IAM 역할 |
항상 필수 |
EBS CSI 드라이버가 Spaces 워크로드용 볼륨을 create/attach/modify하도록 허용 |
EBS CSI 드라이버 추가 기능 |
자동 생성됨 |
|
외부 DNS 추가 기능에 대한 IAM 역할 |
WebUI 액세스에 필요 |
이를 통해 고객의 Route 53 호스팅 영역에서 스페이스 엔드포인트 및 클러스터 내 구성 요소에 DNS 이름을 자동으로 할당할 수 있습니다. |
외부 DNS 추가 기능 |
자동 생성됨 |
1. 스페이스 추가 기능 실행 역할(필수)
Spaces 추가 기능 실행 역할은 EKS 추가 기능을 통해 설치된 관리 구성 요소인 SageMaker Spaces 추가 기능 컨트롤러 포드에서 사용되므로 항상 필요합니다. 이 역할을 통해 컨트롤러는 스페이스를 관리하고, 리소스를 프로비저닝하고, SSM과 상호 작용하고, 원격 IDE 및 WebUI 액세스 모두에 대해 미리 서명된 URLs을 생성할 수 있습니다. 또한 WebUI https 요청을 인증하기 위한 요청 서명에 사용되는 KMS 액세스도 지원합니다. 이 역할은 SageMaker 콘솔을 통해 SageMaker Spaces 추가 기능을 설치할 때 자동으로 생성될 수 있습니다. 수동 생성의 경우 AmazonSageMakerSpacesControllerPolicy 관리형 정책을 AWS제공합니다.
참조 신뢰 정책
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Condition": { "StringEquals": { "aws:SourceAccount": "{{accountId}}", "aws:SourceArn": "arn:aws:eks:{{region}}:{{accountId}}:cluster/{{eksClusterName}}" } } } ] }
2. 클러스터 내 라우터 역할(WebUI 인증에 필요)
클러스터 내 라우터 역할은 Spaces WebUI 세션을 인증하는 권한 있는 구성 요소인 라우터 포드에서 사용됩니다. 라우터는 KMS 키를 사용하여 특정 스페이스에 대한 사용자 액세스를 승인하는 JWT 토큰을 생성하고 서명합니다. 이 역할을 통해 라우터 포드는 데이터 키를 생성하고 해독할 수 있습니다. 컨트롤러 역할과 마찬가지로 태그 및 클러스터 기반 범위 제한을 사용하여 보안을 적용합니다. 이 역할은 AWSSageMaker 콘솔을 통해 Spaces 추가 기능을 설치할 때 자동으로 생성될 수 있지만 고객은 수동으로 생성할 수 있습니다.
참조 신뢰 정책
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Condition": { "StringEquals": { "aws:SourceAccount": "{{accountId}}", "aws:SourceArn": "arn:aws:eks:{{region}}:{{accountId}}:cluster/{{eksClusterName}}" } } } ] }
참조 권한 정책
{ "Version": "2012-10-17", "Statement": [ { "Sid": "KMSDescribeKey", "Effect": "Allow", "Action": [ "kms:DescribeKey" ], "Resource": "arn:aws:kms:{{region}}:{{accountId}}:key/{{kmsKeyId}}" }, { "Sid": "KMSKeyOperations", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:{{region}}:{{accountId}}:key/{{kmsKeyId}}", "Condition": { "StringEquals": { "kms:EncryptionContext:sagemaker:component": "amazon-sagemaker-spaces", "kms:EncryptionContext:sagemaker:eks-cluster-arn": "${aws:PrincipalTag/eks-cluster-arn}" } } } ] }
3. SSM 관리형 인스턴스 역할(원격 IDE 액세스에 필요)
원격 IDE 액세스를 활성화하기 위해 SSM 관리형 인스턴스를 등록할 때 SSM 관리형 인스턴스 역할이 전달됩니다. 이 역할을 통해 SSM 에이전트는 포드를 SSM 관리형 인스턴스로 등록하고 원격 IDE(SSH-over-SSM) 연결을 위해 SSM 세션 관리자 채널을 사용할 수 있습니다. SageMaker 콘솔을AWS 사용할 때 자동으로 생성할 수 있습니다. 수동 배포의 경우 고객은이 역할을 생성하여 Spaces 추가 기능에 제공해야 합니다. 컨트롤러 포드 자체는이 역할을 수임하지 않고를 호출할 때만 제공합니다ssm:CreateActivation.
참조 신뢰 정책
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "{{account}}" }, "ArnEquals": { "aws:SourceArn": "arn:aws:ssm:{{region}}:{{account}}:*" } } } ] }
참조 권한 정책
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeAssociation" ], "Resource": [ "arn:aws:ssm:{{region}}:{{account}}:association/*", "arn:aws:ssm:{{region}}:{{account}}:document/*", "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:GetDocument", "ssm:DescribeDocument" ], "Resource": "arn:aws:ssm:{{region}}:{{account}}:document/*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:GetParameters" ], "Resource": "arn:aws:ssm:{{region}}:{{account}}:parameter/*" }, { "Effect": "Allow", "Action": [ "ssm:ListInstanceAssociations" ], "Resource": [ "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:PutComplianceItems" ], "Resource": [ "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:UpdateAssociationStatus" ], "Resource": [ "arn:aws:ssm:{{region}}:{{account}}:document/*", "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:UpdateInstanceAssociationStatus" ], "Resource": [ "arn:aws:ssm:{{region}}:{{account}}:association/*", "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:UpdateInstanceInformation" ], "Resource": [ "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:GetDeployablePatchSnapshotForInstance", "ssm:GetManifest", "ssm:ListAssociations", "ssm:PutInventory", "ssm:PutConfigurePackageResult" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2messages:AcknowledgeMessage", "ec2messages:DeleteMessage", "ec2messages:FailMessage", "ec2messages:GetEndpoint" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2messages:GetMessages", "ec2messages:SendReply" ], "Resource": "*", "Condition": { "ArnLike": { "ssm:SourceInstanceARN": "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" } } } ] }
4. EBS CSI 드라이버 추가 기능에 대한 IAM 역할
EBS CSI 드라이버는 Spaces 워크로드에 영구 볼륨을 프로비저닝하기 때문에 EBS CSI 드라이버의 IAM 역할이 필요합니다. AWS관리형 AmazonEBSCSIDriverPolicy는 기본 권한을 제공하지만 SageMaker HyperPod 클러스터에는 빠른 스냅샷 복원 생성, 클러스터 소유 볼륨에 태그 지정, HyperPod 관리형 노드에 대한 볼륨 연결/분리와 같은 추가 기능이 필요합니다. 이러한 권한에는와 같은 SageMaker별 APIs도 포함됩니다sagemaker:AttachClusterNodeVolume. EBS CSI 드라이버가 설치되지 않은 경우 이제 Spaces 추가 기능 설치 중에 SageMaker 콘솔에서이 역할이 자동으로 생성되므로 고객 작업이 필요하지 않습니다.
5. 외부 DNS 추가 기능에 대한 IAM 역할
외부 DNS 추가 기능은 HyperPod 클러스터의 서비스 및 수신 리소스에 대한 DNS 레코드를 관리합니다. 이를 통해 고객의 Route 53 호스팅 영역에서 스페이스 엔드포인트 및 클러스터 내 구성 요소에 DNS 이름을 자동으로 할당할 수 있습니다. 오늘날 고객은 EKS 콘솔에서 원클릭 옵션을 통해 외부 DNS를 수동으로 설치하는 경우가 많습니다. SageMaker Spaces 환경 개선의 일환으로 이제이 역할은 Spaces 추가 기능 설치 중에 SageMaker 콘솔에 의해 자동으로 생성되므로 고객 작업이 필요하지 않습니다.
AWSToolkit이 SageMaker Spaces에 액세스하기 위한 권한 설정
AWSVS Code Toolkit 리소스 탐색기 사이드 패널이 SageMaker Spaces를 검색하고 연결할 수 있도록 하려면 다음 IAM 권한이 필요합니다. 이러한 권한을 통해 도구 키트는 사용 가능한 SageMaker HyperPod 클러스터를 나열하고, 클러스터 세부 정보를 검색하고, 연결된 Amazon EKS 클러스터에 대한 연결 토큰을 얻을 수 있습니다.
필수 IAM 정책
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerListClusters", "Effect": "Allow", "Action": "sagemaker:ListClusters", "Resource": "*" }, { "Sid": "SageMakerDescribeCluster", "Effect": "Allow", "Action": "sagemaker:DescribeCluster", "Resource": "arn:aws:sagemaker:{{region}}:{{account}}:cluster/cluster-name" }, { "Sid": "EksDescribeCluster", "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": "arn:aws:eks:{{region}}:{{account}}:cluster/cluster-name" }, { "Sid": "EksGetToken", "Effect": "Allow", "Action": "eks:GetToken", "Resource": "*" } ] }
권장 사항 범위 지정
-
cluster-name을 사용자가 액세스해야 하는 특정 SageMaker HyperPod 클러스터(들)로 바꿉니다.
-
eks:GetToken 작업은 현재 리소스 수준 제한을 지원하지 않으며 Resource: "*"를 사용해야 합니다. 이는 AWS서비스 제한 사항입니다. 클라이언트 측 인증은 EKS 액세스 항목을 통해 수행됩니다.