Gestione degli accessi IAM - Amazon SageMaker

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 degli accessi IAM

Le seguenti sezioni descrivono i requisiti AWS Identity and Access Management (IAM) per Amazon SageMaker Model Building Pipelines. Per un esempio di implementazione delle autorizzazioni, consulta Prerequisiti.

Autorizzazioni relative ai ruoli della pipeline

La tua pipeline richiede un ruolo di esecuzione della pipeline IAM che viene passato a SageMaker Pipelines quando crei una pipeline. Il ruolo per l' SageMaker istanza che sta creando la pipeline deve disporre dell'iam:PassRoleautorizzazione per il ruolo di esecuzione della pipeline per poterlo passare. Per ulteriori informazioni sui ruoli IAM, consulta IAM Roles.

Il ruolo di esecuzione della pipeline richiede le seguenti autorizzazioni:

  • Per passare qualsiasi ruolo a un SageMaker lavoro all'interno di una pipeline, l'iam:PassRoleautorizzazione per il ruolo che viene ceduta. 

  • Autorizzazioni Create e Describe per ogni tipo di processo nella pipeline.

  • Autorizzazioni Amazon S3 per utilizzare la funzione JsonGet. È possibile controllare l’accesso alle risorse Amazon S3 utilizzando policy basate sulle identità e sulle risorse. Una politica basata sulle risorse viene applicata al bucket Amazon S3 e SageMaker concede a Pipeline l'accesso al bucket. Una policy basata sull'identità offre alla tua pipeline la possibilità di effettuare chiamate Amazon S3 dal tuo account. Per ulteriori informazioni sulle differenze basate sulle risorse e sulle identità, consulta Policy basate sulle identità e policy basate su risorse.

    { "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::<your-bucket-name>/*", "Effect": "Allow" }

Autorizzazioni relative alle fasi della pipeline

SageMaker Le pipeline SageMaker includono passaggi che eseguono i job. Affinché le fasi della pipeline eseguano questi processi, è richiesto un ruolo IAM nell'account che fornisca l'accesso alla risorsa necessaria. Questo ruolo viene passato al responsabile del SageMaker servizio dalla pipeline. Per ulteriori informazioni sui ruoli IAM, consulta Ruoli IAM.

Per impostazione predefinita, ogni fase assume il ruolo di esecuzione della pipeline. Facoltativamente, puoi assegnare un ruolo diverso a qualsiasi fase della pipeline. Ciò garantisce che il codice di ogni fase non abbia la possibilità di influire sulle risorse utilizzate in altre fasi, a meno che non esista una relazione diretta tra le due fasi specificate nella definizione della pipeline. Questi ruoli vengono trasmessi quando si definisce lo strumento di elaborazione o valutazione per la propria fase. Per esempi su come includere questi ruoli in queste definizioni, consulta la documentazione di SageMakerPython SDK.

Personalizza la gestione degli accessi per SageMaker i lavori di Pipelines

Puoi personalizzare ulteriormente le tue policy IAM in modo che membri selezionati della tua organizzazione possano eseguire alcune o tutte le fasi della pipeline. Ad esempio, puoi concedere a determinati utenti l'autorizzazione a creare processi di addestramento, a un altro gruppo di utenti l'autorizzazione a creare processi di elaborazione e a tutti gli utenti l'autorizzazione a eseguire le fasi rimanenti. Per utilizzare questa funzionalità, seleziona una stringa personalizzata con il prefisso del nome del processo. L'amministratore aggiunge il prefisso agli ARN consentiti, mentre il data scientist lo include nelle istanze della pipeline. Poiché la policy IAM per gli utenti autorizzati contiene un ARN di processo con il prefisso specificato, i processi successivi della fase della pipeline dispongono delle autorizzazioni necessarie per procedere. Il prefisso del processo è disattivato per impostazione predefinita: devi attivare questa opzione nella tua classe Pipeline per utilizzarla.

Per i processi con il prefisso disattivato, il nome del processo è formattato come mostrato e rappresentato da una concatenazione di campi, come descritto nella tabella seguente:

pipelines-<executionId>-<stepNamePrefix>-<entityToken>-<failureCount>

Campo Definizione

pipelines

Una stringa statica sempre anteposta. Questa stringa identifica il servizio di orchestrazione della pipeline come origine del processo.

executionId

Un buffer randomizzato per l'istanza in esecuzione della pipeline.

stepNamePrefix

Il nome della fase specificato dall'utente (fornito nell'argomento name della fase della pipeline), limitato ai primi 20 caratteri.

entityToken

Un token randomizzato per garantire l'idempotenza dell'entità della fase.

failureCount

Il numero attuale di tentativi effettuati per completare il lavoro.

In questo caso, al nome del processo non viene aggiunto alcun prefisso personalizzato; la policy IAM corrispondente deve corrispondere a questa stringa.

Per gli utenti che attivano il prefisso del processo, il nome del processo sottostante assume la forma seguente, con il prefisso personalizzato specificato come MyBaseJobName:

< MyBaseJobName > <entityToken>- - <executionId>- <failureCount>

Il prefisso personalizzato sostituisce la pipelines stringa statica per aiutarti a restringere la selezione di utenti che possono eseguire il SageMaker job come parte di una pipeline.

Restrizioni sulla lunghezza del prefisso

I nomi dei processi hanno vincoli di lunghezza interni specifici per le singole fasi della pipeline. I vincoli limitano anche la lunghezza consentita del prefisso. I requisiti di lunghezza del prefisso sono i seguenti:

Applicazione di prefissi dei processi a una policy IAM

L’amministratore crea policy IAM che consentono agli utenti con prefissi specifici di creare lavori. La seguente policy di esempio consente ai data scientist di creare processi di addestramento se utilizzano il prefisso MyBaseJobName.

{ "Action": "sagemaker:CreateTrainingJob", "Effect": "Allow", "Resource": [ "arn:aws:sagemaker:region:account-id:*/MyBaseJobName-*" ] }

Applicazione di prefissi dei processi alle istanze della pipeline

Specifica il prefisso con l'argomento *base_job_name della classe dell’istanza di processo.

Nota

Trasmetti il prefisso del processo con l'argomento *base_job_name all'istanza del processo prima di creare una fase della pipeline. Questa istanza di processo contiene le informazioni necessarie affinché il processo venga eseguito come fase di una pipeline. Questo argomento varia a seconda dell'istanza di processo utilizzata. L'elenco seguente mostra quale argomento utilizzare per ogni tipo di fase della pipeline:

L'esempio seguente mostra come specificare un prefisso per una nuova istanza del processo di addestramento.

# Create a job instance xgb_train = Estimator( image_uri=image_uri, instance_type="ml.m5.xlarge", instance_count=1, output_path=model_path, role=role, subnets=["subnet-0ab12c34567de89f0"], base_job_name="MyBaseJobName" security_group_ids=["sg-1a2bbcc3bd4444e55"], tags = [ ... ] encrypt_inter_container_traffic=True, ) # Attach your job instance to a pipeline step step_train = TrainingStep( name="TestTrainingJob", estimator=xgb_train, inputs={ "train": TrainingInput(...), "validation": TrainingInput(...) } )

Per impostazione predefinita, l'aggiunta del prefisso al processo è disattivata. Per attivare questa funzionalità, utilizza l'opzione use_custom_job_prefix di PipelineDefinitionConfig come mostrato nel seguente frammento:

from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig # Create a definition configuration and toggle on custom prefixing definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True); # Create a pipeline with a custom prefix pipeline = Pipeline( name="MyJobPrefixedPipeline", parameters=[...] steps=[...] pipeline_definition_config=definition_config )

Crea ed esegui la tua pipeline. L'esempio seguente crea ed esegue una pipeline e illustra anche come disattivare l'aggiunta del prefisso ai progetti e rieseguire la pipeline.

pipeline.create(role_arn=sagemaker.get_execution_role()) # Optionally, call definition() to confirm your prefixed job names are in the built JSON pipeline.definition() pipeline.start() # To run a pipeline without custom-prefixes, toggle off use_custom_job_prefix, update the pipeline # via upsert() or update(), and start a new run definition_config = PipelineDefinitionConfig(use_custom_job_prefix=False) pipeline.pipeline_definition_config = definition_config pipeline.update() execution = pipeline.start()

Allo stesso modo, è possibile attivare la funzionalità per le pipeline esistenti e iniziare una nuova esecuzione che utilizza i prefissi dei processi.

definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True) pipeline.pipeline_definition_config = definition_config pipeline.update() execution = pipeline.start()

Infine, puoi visualizzare il tuo processo con prefisso personalizzato chiamando list_steps sull'esecuzione della pipeline.

steps = execution.list_steps() prefixed_training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']

Policy di controllo dei servizi con Pipelines

Le policy di controllo dei servizi (SCP) sono un tipo di policy dell'organizzazione che puoi utilizzare per gestire le autorizzazioni nell'organizzazione. Le SCP offrono un controllo centralizzato sulle autorizzazioni massime disponibili per tutti gli account dell'organizzazione. Utilizzando SageMaker Pipelines all'interno della propria organizzazione, è possibile garantire che i data scientist gestiscano le esecuzioni della pipeline senza dover interagire con la console. AWS  

Se utilizzi un VPC con SCP che limita l'accesso ad Amazon S3, devi eseguire le fasi necessarie per consentire alla pipeline di accedere ad altre risorse Amazon S3.

Per consentire a SageMaker Pipelines di accedere ad Amazon S3 al di fuori del tuo VPC con JsonGet la funzione, aggiorna l'SCP della tua organizzazione per assicurarti che il ruolo che utilizza SageMaker Pipelines possa accedere ad Amazon S3. A tale scopo, crea un'eccezione per i ruoli utilizzati dall'esecutore SageMaker Pipelines tramite il ruolo di esecuzione della pipeline utilizzando un tag principale e una chiave di condizione.

Per consentire a SageMaker Pipelines di accedere ad Amazon S3 al di fuori del tuo VPC
  1. Crea un tag unico per il tuo ruolo di esecuzione della pipeline seguendo la procedura descritta in Tagging di utenti e ruoli IAM.

  2. Concedi un'eccezione nel tuo SCP utilizzando la chiave di condizione Aws:PrincipalTag IAM per il tag che hai creato. Per ulteriori informazioni, consulta Creazione, aggiornamento ed eliminazione delle policy di controllo del servizio.