View a markdown version of this page

권한 설정 - Amazon SageMaker AI

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

권한 설정

추가 기능 및 해당 종속성에 필요한 역할

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 토큰을 생성하고 서명합니다. 이 역할을 사용하면 라우터 포드가 데이터 키를 생성하고 해독할 수 있습니다. 컨트롤러 역할과 마찬가지로 태그 및 클러스터 기반 범위 제한을 사용하여 보안을 적용합니다. 이 역할은 AWS SageMaker 콘솔을 통해 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 콘솔에 의해 자동으로 생성되므로 고객 작업이 필요하지 않습니다.

Direct SSH의 사전 조건

Direct SSH에는 다음과 같은 인프라 사전 조건이 필요합니다. 클러스터에서 웹 브라우저 액세스가 이미 활성화된 경우 이러한 사전 조건이 이미 있습니다. 웹 브라우저 액세스에 대한 자세한 내용은 섹션을 참조하세요웹 브라우저 액세스.

  • ExternalDNS - Route 53 권한이 있는 IAM 역할을 사용하여 EKS 추가 기능을 통해 배포됩니다. 워크스페이스를 삭제할 때 ExternalDNS가 DNS 레코드를 제거하도록 --policy=sync (기본값이 아닌 upsert-only)를 사용하여 ExternalDNS를 구성합니다.

  • Amazon Route 53 프라이빗 호스팅 영역 - 사용자가 소유하고 Route 53에 등록되었으며 클러스터 VPC와 연결된 도메인 또는 하위 도메인입니다.

  • 클라이언트 시스템에서 클러스터 VPC로의 VPC 연결 - 클라이언트 시스템에서 클러스터 VPC로의 VPN 또는 AWS Direct Connect. Direct SSH는 VPC 내 포드의 프라이빗 IP 주소에 포트를 노출하므로 클라이언트 머신이 동일한 VPC, VPC 피어링, VPN 또는 Direct Connect를 통해 해당 VPC에 네트워크로 연결되어 있는 경우에만 연결할 수 있습니다.

  • AWS Load Balancer 컨트롤러 - 웹 브라우저 액세스(ALB 수신)도 사용하는 경우 필요합니다. HyperPod별 설치 정보는 섹션을 참조하세요AWS Load Balancer서 컨트롤러: HyperPod vpcId 요구 사항.

자세한 설정 및 확인 지침은 섹션을 참조하세요(선택 사항) 사전 조건 설정.

AWS Toolkit이 SageMaker Spaces에 액세스하기 위한 권한 설정

AWS VS 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 액세스 항목을 통해 수행됩니다.