View a markdown version of this page

Impostazione delle autorizzazioni - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Impostazione delle autorizzazioni

Ruoli richiesti Add-on e relative dipendenze

Ruoli IAM richiesti per SageMaker Spaces on SageMaker HyperPod

Quando si abilitano le funzionalità di SageMaker Spaces (alias SageMaker IDE/Notebooks) su un cluster SageMaker HyperPod (EKS), è necessario creare e assegnare diversi ruoli IAM. Questi ruoli supportano l'accesso sicuro, il routing, le sessioni IDE remote e il provisioning dello storage EBS. La tabella seguente riassume i quattro ruoli e quando sono richiesti.

Tabella riassuntiva dei ruoli

Ruolo IAM Obbligatorio? Scopo Chi lo usa? Personalizzazione consentita dalla SageMaker console?

Ruolo di Add-on esecuzione degli spazi

Sempre richiesto

Consente al controller Spaces di gestire Spaces, generare URL predefiniti, gestire sessioni SSM

Add-on controller pod (privilegiato)

✔ Sì

In-Cluster Ruolo del router

Necessario per l'accesso WebUI

Consente al pod del router di eseguire operazioni KMS per la firma JWT (autenticazione WebUI)

In-cluster router pod (privilegiato)

✔ Sì

Ruolo dell'istanza gestita SSM

Necessario per l'accesso remoto all'IDE

Utilizzato da SSM Agent Sidecar per sessioni IDE SSH-over-SSM remote

SSM Agent in Space IDE Pods (non un pod aggiuntivo)

✔ Sì

Ruolo IAM per EBS CSI Driver Add-on

Sempre richiesto

Consente a EBS CSI Driver di create/attach /modificare i volumi per i carichi di lavoro Spaces

Driver EBS CSI Add-on

Creato automaticamente

Ruolo IAM per DNS esterno Add-on

Necessario per l'accesso WebUI

Garantisce che agli endpoint Space e ai componenti del cluster possano essere assegnati automaticamente nomi DNS nelle zone ospitate Route 53 del cliente.

DNS esterno Add-on

Creato automaticamente

1. Ruolo di Add-on esecuzione di Spaces (obbligatorio)

Il ruolo di Add-on esecuzione di Spaces è sempre richiesto perché viene utilizzato dal pod controller del componente aggiuntivo SageMaker Spaces, un componente amministrativo installato tramite il componente aggiuntivo EKS. Questo ruolo consente al controller di gestire gli spazi, fornire risorse, interagire con SSM e generare URL predefiniti per l'accesso remoto all'IDE e al WebUI. Supporta anche l'accesso KMS utilizzato per la firma delle richieste per l'autenticazione delle richieste https WebUI. Questo ruolo può essere creato automaticamente quando il componente aggiuntivo SageMaker Spaces viene installato tramite la console. SageMaker Per la creazione manuale, AWS fornisce la policy AmazonSageMakerSpacesControllerPolicy gestita.

Politica di fiducia di riferimento

{ "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. In-Cluster Ruolo del router (richiesto per l'autenticazione WebUI)

Il ruolo In-Cluster del router viene utilizzato dal router pod, un componente privilegiato che autentica le sessioni WebUI di Spaces. Il router utilizza una chiave KMS per creare e firmare token JWT che autorizzano l'accesso degli utenti a spazi specifici. Questo ruolo consente al router pod di generare chiavi dati e decrittografarle. Analogamente al ruolo del controller, impone la sicurezza utilizzando restrizioni di ambito basate su tag e cluster. Questo ruolo può essere generato automaticamente quando il componente aggiuntivo Spaces viene installato tramite la AWS SageMaker console, ma i clienti possono crearlo manualmente.

Politica di fiducia di riferimento

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

Politica di autorizzazione di riferimento

{ "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. Ruolo dell'istanza gestita SSM (richiesto per l'accesso IDE remoto)

Il ruolo dell'istanza gestita SSM viene passato al momento della registrazione dell'istanza gestita SSM per abilitare l'accesso IDE remoto. Questo ruolo consente all'agente SSM di registrare il pod come istanza gestita SSM e utilizzare i canali SSM Session Manager per la connettività IDE remota (). SSH-over-SSM Può essere creato automaticamente quando si utilizza la console. AWS SageMaker Per le distribuzioni manuali, i clienti devono creare questo ruolo e fornirlo al componente aggiuntivo Spaces. Il controller pod di per sé non assume questo ruolo, ma lo fornisce solo durante la chiamata. ssm:CreateActivation

Politica di fiducia di riferimento

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

Politica sulle autorizzazioni di riferimento

{ "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. Ruolo IAM per EBS CSI Driver Add-on

Il ruolo IAM per il driver CSI EBS è necessario perché il driver CSI EBS fornisce volumi persistenti per i carichi di lavoro di Spaces. Sebbene AWS-managed AmazonEBSCSIDriverPolicyfornisca le autorizzazioni di base, SageMaker HyperPod i cluster richiedono funzionalità aggiuntive come la creazione di ripristini rapidi di istantanee, l'etichettatura dei volumi di proprietà del cluster e dei volumi per i nodi. attaching/detaching HyperPod-managed SageMaker-specific Queste autorizzazioni includono anche API come. sagemaker:AttachClusterNodeVolume Se il driver EBS CSI non è installato, questo ruolo verrà ora creato automaticamente dalla SageMaker Console durante l'installazione del componente aggiuntivo Spaces, senza richiedere alcuna azione da parte del cliente.

5. Ruolo IAM per DNS esterno Add-on

Il componente aggiuntivo DNS esterno gestisce i record DNS per le risorse Services e Ingress sul cluster. HyperPod Garantisce che agli endpoint Space e ai componenti del cluster possano essere assegnati automaticamente nomi DNS nelle zone ospitate Route 53 del cliente. Oggi, i clienti spesso installano il DNS esterno manualmente tramite un'opzione con 1 clic nella console EKS. Come parte del miglioramento dell'esperienza di SageMaker Spaces, questo ruolo verrà ora creato automaticamente dalla SageMaker console durante l'installazione del componente aggiuntivo Spaces, senza richiedere alcuna azione da parte del cliente.

Configurazione delle autorizzazioni per AWS Toolkit per accedere agli spazi SageMaker

Per consentire al pannello laterale di esplorazione delle risorse di AWS VS Code Toolkit di rilevare e connettersi a SageMaker Spaces, sono necessarie le seguenti autorizzazioni IAM. Queste autorizzazioni consentono al Toolkit di elencare SageMaker HyperPod i cluster disponibili, recuperare i dettagli del cluster e ottenere un token di connessione per il cluster Amazon EKS associato.

Policy IAM richiesta

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

Raccomandazioni per l'ambito

  • Sostituisci il nome del cluster con i SageMaker HyperPod cluster specifici a cui gli utenti devono accedere.

  • L'GetToken azione eks: attualmente non supporta le restrizioni a livello di risorsa e deve utilizzare Resource: «*». Questa è una limitazione del servizio. AWS L'autenticazione lato client viene eseguita tramite le voci di accesso EKS.