Gestione delle autorizzazioni - SageMaker Best practice per l'amministrazione di Studio

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à.

Gestione delle autorizzazioni

Questa sezione illustra le migliori pratiche per la configurazione di ruoli, policy e guardrail IAM di uso comune per il provisioning e il funzionamento del dominio Studio. SageMaker

Ruoli IAM e policy

Come best practice, potresti innanzitutto identificare le persone e le applicazioni pertinenti, note come responsabili coinvolte nel ciclo di vita del machine learning, e quali AWS autorizzazioni devi concedere loro. Trattandosi di un servizio gestito, SageMaker è necessario prendere in considerazione anche i service principal, ossia i AWS servizi che possono effettuare chiamate API per conto di un utente. Il diagramma seguente illustra i diversi ruoli IAM che potresti voler creare, corrispondenti ai diversi personaggi dell'organizzazione.

Un diagramma che illustra i ruoli IAM. SageMaker

SageMaker Ruoli IAM

Questi ruoli sono descritti in dettaglio, insieme ad alcuni esempi di IAMpermissions specifici di cui avranno bisogno.

  • Ruolo utente di ML Admin: è un preside che fornisce l'ambiente ai data scientist creando domini di studio e profili utente (sagemaker:CreateDomain,sagemaker:CreateUserProfile), creando AWS Key Management Service (AWS KMS) chiavi per gli utenti, creando bucket S3 per i data scientist e creando repository Amazon ECR per ospitare i container. Possono inoltre impostare configurazioni predefinite e script del ciclo di vita per gli utenti, creare e allegare immagini personalizzate al dominio SageMaker Studio e fornire prodotti Service Catalog come progetti personalizzati e modelli Amazon EMR.

    Poiché questo responsabile non eseguirà lavori di formazione, ad esempio, non ha bisogno di autorizzazioni per avviare lavori di formazione o elaborazione. SageMaker Se utilizzano l'infrastruttura come modelli di codice, ad esempio CloudFormation o Terraform, per fornire domini e utenti, questo ruolo verrebbe assunto dal servizio di provisioning per creare le risorse per conto dell'amministratore. Questo ruolo può avere accesso in sola lettura all'utilizzo di. SageMaker AWS Management Console

    Questo ruolo utente richiederà anche determinate autorizzazioni EC2 per avviare il dominio all'interno di un VPC privato, autorizzazioni KMS per crittografare il volume EFS e autorizzazioni per creare un ruolo collegato al servizio per Studio (). iam:CreateServiceLinkedRole Descriveremo queste autorizzazioni granulari più avanti nel documento.

  • Ruolo utente di Data Scientist: questo principio è l'utente che accede a SageMaker Studio, esplora i dati, crea processi e pipeline di elaborazione e formazione e così via. L'autorizzazione principale di cui l'utente ha bisogno è l'autorizzazione per avviare SageMaker Studio, mentre il resto delle politiche può essere gestito dal ruolo del servizio di SageMaker esecuzione.

  • SageMaker ruolo del servizio di esecuzione SageMaker : trattandosi di un servizio gestito, avvia processi per conto di un utente. Questo ruolo è spesso il più ampio in termini di autorizzazioni consentite, poiché molti clienti scelgono di utilizzare un unico ruolo di esecuzione per eseguire lavori di formazione, elaborazione o lavori di hosting di modelli. Sebbene si tratti di un modo semplice per iniziare, i clienti maturano nel loro percorso di crescita, spesso suddividono il ruolo di esecuzione dei notebook in ruoli separati per diverse azioni API, soprattutto quando eseguono tali lavori in ambienti distribuiti.

    Si associa un ruolo al dominio SageMaker Studio al momento della creazione. Tuttavia, poiché i clienti potrebbero richiedere la flessibilità di avere ruoli diversi associati ai diversi profili utente del dominio (ad esempio, in base alla loro funzione lavorativa), puoi anche associare un ruolo IAM separato a ciascun profilo utente. Ti consigliamo di mappare un singolo utente fisico a un singolo profilo utente. Se non si associa un ruolo a un profilo utente al momento della creazione, il comportamento predefinito consiste nell'associare anche il ruolo di esecuzione del SageMakerStudio dominio al profilo utente.

    Nei casi in cui più data scientist e ingegneri ML collaborino su un progetto e abbiano bisogno di un modello di autorizzazione condiviso per accedere alle risorse, ti consigliamo di creare un ruolo di esecuzione del SageMaker servizio a livello di team per condividere le autorizzazioni IAM tra i membri del team. Nei casi in cui è necessario bloccare le autorizzazioni a ogni livello di utente, è possibile creare un ruolo di esecuzione del SageMaker servizio a livello utente individuale; tuttavia, è necessario prestare attenzione ai limiti del servizio.

SageMaker Workflow di autorizzazione di Studio Notebook

Questa sezione illustra come funziona l'autorizzazione di SageMaker Studio Notebook per le varie attività che il Data Scientist deve eseguire per creare e addestrare il modello direttamente da SageMaker Studio Notebook. Il SageMaker dominio supporta due modalità di autorizzazione:

  • Federazione IAM

  • IAM Identity Center

Successivamente, questo paper illustra il flusso di lavoro di autorizzazione di Data Scientist per ciascuna di queste modalità.

Un diagramma che illustra il flusso di lavoro di autenticazione e autorizzazione per gli utenti di Studio.

Flusso di lavoro di autenticazione e autorizzazione per gli utenti di Studio

IAM Federation: flussi di lavoro di SageMaker Studio Notebook

  1. Un Data Scientist si autentica nel proprio provider di identità aziendale e assume il ruolo utente di Data Scientist (il ruolo di federazione degli utenti) nella console. SageMaker Questo ruolo di federazione dispone dell'autorizzazione iam:PassRole API sul ruolo di SageMaker esecuzione per passare il ruolo Amazon Resource Name (ARN) a SageMaker Studio.

  2. Il Data Scientist seleziona il link Open Studio dal proprio profilo utente Studio IAM associato al SageMaker ruolo di esecuzione

  3. Il servizio IDE SageMaker Studio viene avviato, presupponendo le autorizzazioni del ruolo di SageMaker esecuzione del profilo utente. Questo ruolo dispone dell'autorizzazione iam:PassRole API sul ruolo di SageMaker esecuzione per passare il ruolo ARN al servizio di SageMaker formazione.

  4. Quando Data Scientist avvia il processo di formazione nei nodi di elaborazione remota, il ruolo di SageMaker esecuzione ARN viene passato al servizio di formazione. SageMaker Questo crea una nuova sessione di ruolo con questo ARN ed esegue il processo di formazione. Se è necessario definire ulteriormente l'autorizzazione per un lavoro di formazione, è possibile creare un ruolo specifico per la formazione e assegnare tale ruolo ARN quando si chiama l'API di formazione.

IAM Identity Center: flusso di lavoro di SageMaker Studio Notebook

  1. Il Data Scientist si autentica nel proprio provider di identità aziendale e fa clic su AWS IAM Identity Center. Al Data Scientist viene presentato all'utente Identity Center Portal.

  2. Il Data Scientist fa clic sul collegamento dell'app SageMaker Studio creato dal proprio profilo utente iDC, associato al ruolo di SageMaker esecuzione.

  3. Il servizio IDE SageMaker Studio viene avviato, presupponendo le autorizzazioni del ruolo di SageMaker esecuzione del profilo utente. Questo ruolo dispone dell'autorizzazione iam:PassRole API sul ruolo di SageMaker esecuzione per passare il ruolo ARN al servizio di SageMaker formazione.

  4. Quando il Data Scientist avvia il processo di formazione nei nodi di elaborazione remota, il ruolo di SageMaker esecuzione ARN viene passato al servizio di formazione. SageMaker Il ruolo di esecuzione ARN crea una nuova sessione di ruolo con questo ARN ed esegue il processo di formazione. Se è necessario definire ulteriormente l'autorizzazione per i lavori di formazione, è possibile creare un ruolo specifico per la formazione e assegnare tale ruolo ARN quando si richiama l'API di formazione.

Ambiente distribuito: flusso di lavoro di formazione SageMaker

In ambienti distribuiti come i test di sistema e la produzione, i lavori vengono eseguiti tramite pianificatori automatici e attivatori di eventi e l'accesso umano a tali ambienti è limitato da Studio Notebooks. SageMaker Questa sezione illustra come i ruoli IAM interagiscono con la pipeline di formazione nell' SageMaker ambiente distribuito.

Un diagramma che illustra un flusso di lavoro di SageMaker formazione in un ambiente di produzione gestito.

SageMaker flusso di lavoro di formazione in un ambiente di produzione gestito

  1. Amazon EventBridge scheduler attiva il processo della pipeline SageMaker di formazione.

  2. Il compito della pipeline di SageMaker formazione assume il ruolo della pipeline di formazione per SageMaker addestrare il modello.

  3. Il SageMaker modello addestrato viene registrato nel Model SageMaker Registry.

  4. Un ingegnere ML assume il ruolo utente di ingegnere ML per gestire la pipeline e SageMaker il modello di formazione.

Autorizzazioni relative ai dati

La capacità degli utenti di SageMaker Studio di accedere a qualsiasi fonte di dati è regolata dalle autorizzazioni associate al loro ruolo di esecuzione SageMaker IAM. Le policy allegate possono autorizzarli a leggere, scrivere o eliminare da determinati bucket o prefissi Amazon S3 e connettersi ai database Amazon RDS.

Accesso ai dati AWS Lake Formation

Molte aziende hanno iniziato a utilizzare data lake governati da AWS Lake Formationper consentire l'accesso granulare ai dati per i propri utenti. Come esempio di tali dati governati, gli amministratori possono mascherare le colonne sensibili per alcuni utenti, abilitando al contempo le query sulla stessa tabella sottostante.

Per utilizzare Lake Formation di SageMaker Studio, gli amministratori possono registrare i ruoli di esecuzione SageMaker IAM come. DataLakePrincipals Per ulteriori informazioni, consulta Lake Formation Permissions Reference. Una volta autorizzati, esistono tre metodi principali per accedere e scrivere dati governati da SageMaker Studio:

  1. Da uno SageMaker Studio Notebook, gli utenti possono utilizzare motori di query come Amazon Athena o librerie basate su boto3 per estrarre i dati direttamente sul notebook. L'SDK AWS per Pandas (precedentemente noto come awswrangler) è una libreria popolare. Di seguito è riportato un esempio di codice per mostrare quanto possa essere semplice:

    transaction_id = wr.lakeformation.start_transaction(read_only=True) df = wr.lakeformation.read_sql_query( sql=f"SELECT * FROM {table};", database=database, transaction_id=transaction_id )
  2. Usa la connettività nativa di SageMaker Studio ad Amazon EMR per leggere e scrivere dati su larga scala. Utilizzando i ruoli di runtime Apache Livy e Amazon EMR, SageMaker Studio ha creato una connettività nativa che consente di passare il ruolo IAM di SageMaker esecuzione (o altro ruolo autorizzato) a un cluster Amazon EMR per l'accesso e l'elaborazione dei dati. Per istruzioni, consulta Connect to an Amazon EMR Cluster from Studio. up-to-date

    Un diagramma che illustra un'architettura per l'accesso ai dati gestiti da Lake Formation di Studio. SageMaker

    Architettura per l'accesso ai dati gestita da Lake Formation di SageMaker Studio

  3. Usa la connettività nativa di SageMaker Studio per sessioni AWS Glue interattive per leggere e scrivere dati su larga scala. SageMaker I notebook Studio dispongono di kernel integrati che consentono agli utenti di eseguire comandi in modo interattivo. AWS Glue Ciò consente l'uso scalabile dei backend Python, Spark o Ray in grado di leggere e scrivere senza problemi dati su larga scala da fonti di dati controllate. I kernel consentono agli utenti di passare la propria SageMaker esecuzione o altri ruoli IAM autorizzati. Per ulteriori informazioni, consulta Preparare i dati utilizzando sessioni AWS Glue interattive.

Guardrail comuni

Questa sezione illustra i guardrail più comunemente utilizzati per applicare la governance alle risorse ML utilizzando le policy IAM, le policy delle risorse, le policy degli endpoint VPC e le policy di controllo dei servizi (SCP).

Limita l'accesso al notebook a istanze specifiche

Questa politica di controllo dei servizi può essere utilizzata per limitare i tipi di istanze a cui i data scientist hanno accesso durante la creazione di notebook Studio. Tieni presente che qualsiasi utente avrà bisogno dell'istanza «di sistema» autorizzata a creare l'app Jupyter Server predefinita che ospita Studio. SageMaker

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LimitInstanceTypesforNotebooks", "Effect": "Deny", "Action": [ "sagemaker:CreateApp" ], "Resource": "*", "Condition": { "ForAnyValue:StringNotLike": { "sagemaker:InstanceTypes": [ "ml.c5.large", "ml.m5.large", "ml.t3.medium", "system" ] } } } ] }

Limita i domini Studio non conformi SageMaker

Per i domini SageMaker Studio, è possibile utilizzare la seguente politica di controllo del servizio per imporre il traffico di accesso alle risorse dei clienti in modo che non acceda alla rete Internet pubblica, ma piuttosto tramite il VPC del cliente:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LockDownStudioDomain", "Effect": "Deny", "Action": [ "sagemaker:CreateDomain" ], "Resource": "*", "Condition": { "StringNotEquals": {"sagemaker:AppNetworkAccessType": "VpcOnly" }, "Null": { "sagemaker:VpcSubnets": "true", "sagemaker:VpcSecurityGroupIds": "true" } } } ] }

Limita il lancio di immagini non autorizzate SageMaker

La seguente politica impedisce a un utente di avviare un'immagine non autorizzata all'interno del proprio dominio:f SageMaker

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:CreateApp" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringNotLike": { "sagemaker:ImageArns": [ "arn:aws:sagemaker:*:*:image/{ImageName}" ] } } } ] }

Avvia i notebook solo tramite endpoint VPC SageMaker

Oltre agli endpoint VPC per il piano di SageMaker controllo, supporta gli endpoint SageMaker VPC per consentire agli utenti di connettersi a SageMaker notebook o istanze di notebook Studio. SageMaker Se hai già configurato un endpoint VPC per un'istanza SageMaker Studio/notebook, la seguente chiave di condizione IAM consentirà le connessioni ai notebook Studio solo se vengono effettuate tramite l'endpoint SageMaker Studio SageMaker VPC o tramite l'endpoint API. SageMaker

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableSageMakerStudioAccessviaVPCEndpoint", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeUserProfile" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:sourceVpce": [ "vpce-111bbccc", "vpce-111bbddd" ] } } } ] }

Limita l'accesso ai notebook Studio a un intervallo IP limitato SageMaker

Le aziende spesso limitano l'accesso a SageMaker Studio a determinati intervalli di IP aziendali consentiti. La seguente politica IAM con la chiave di SourceIP condizione può limitare questo problema.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableSageMakerStudioAccess", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeUserProfile" ], "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }

Impedisci agli utenti di SageMaker Studio di accedere ad altri profili utente

In qualità di amministratore, quando crei il profilo utente, assicurati che il profilo sia contrassegnato con il nome utente di SageMaker Studio con la chiave tagstudiouserid. Il principale (utente o ruolo associato all'utente) dovrebbe avere anche un tag con la chiave studiouserid (questo tag può avere qualsiasi nome e non è limitato astudiouserid).

Successivamente, allega la seguente politica al ruolo che l'utente assumerà all'avvio di SageMaker Studio.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AmazonSageMakerPresignedUrlPolicy", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:ResourceTag/studiouserid": "${aws:PrincipalTag/studiouserid}" } } } ] }

Applica l'etichettatura

I data scientist devono utilizzare i notebook SageMaker Studio per esplorare i dati e creare e addestrare modelli. L'applicazione di tag ai notebook consente di monitorare l'utilizzo e controllare i costi, oltre a garantire la proprietà e la verificabilità.

Per le app SageMaker Studio, assicurati che il profilo utente sia contrassegnato. I tag vengono propagati automaticamente alle app dal profilo utente. Per imporre la creazione di profili utente con tag (supportati tramite CLI e SDK), prendi in considerazione l'aggiunta di questa politica al ruolo di amministratore:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceUserProfileTags", "Effect": "Allow", "Action": "sagemaker:CreateUserProfile", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": [ "studiouserid" ] } } } ] }

Per altre risorse, come i lavori di formazione e i processi di elaborazione, puoi rendere obbligatori i tag utilizzando la seguente politica:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceTagsForJobs", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateProcessingJob", ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": [ "studiouserid" ] } } } ] }

Accesso root in SageMaker Studio

In SageMaker Studio, il notebook viene eseguito in un contenitore Docker che, per impostazione predefinita, non dispone dell'accesso root all'istanza host. Analogamente, oltre all'utente run-as predefinito, tutti gli altri intervalli di ID utente all'interno del contenitore vengono mappati nuovamente come ID utente non privilegiati sull'istanza host stessa. Di conseguenza, la minaccia di un aumento dei privilegi è limitata al contenitore del notebook stesso.

Quando si creano immagini personalizzate, è consigliabile fornire all'utente autorizzazioni non root per controlli più rigorosi, ad esempio evitando di eseguire processi indesiderati come utente root o di installare pacchetti disponibili pubblicamente. In questi casi, puoi creare l'immagine da eseguire come utente non root all'interno del Dockerfile. Sia che tu crei l'utente come root o non root, devi assicurarti che l'UID/GID dell'utente sia identico all'UID/GID dell'app per l'app personalizzata, che crea la configurazione AppImageConfigper l'esecuzione di un'app utilizzando l'immagine personalizzata. SageMaker Ad esempio, se il tuo Dockerfile è stato creato per un utente non root come il seguente:

ARG NB_UID="1000" ARG NB_GID="100" ... USER $NB_UID

Il AppImageConfig file deve riportare lo stesso UID e GID nel suo file: KernelGatewayConfig

{ "KernelGatewayImageConfig": { "FileSystemConfig": { "DefaultUid": 1000, "DefaultGid": 100 } } }

I valori UID/GID accettabili per le immagini personalizzate sono 0/0 e 1000/100 per le immagini di Studio. Per esempi di creazione di immagini personalizzate e le impostazioni associateAppImageConfig, consulta questo repository Github.

Per evitare che gli utenti lo manomettano, non concedete né DeleteAppImageConfig autorizzazioni agli CreateAppImageConfig utenti dei notebook Studio. UpdateAppImageConfig SageMaker