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à.
Utilizzo del controllo degli accessi basato su attributi (ABAC) per l’addestramento multi-tenancy
In un ambiente multi-tenant, è fondamentale garantire che i dati di ciascun tenant siano isolati e accessibili solo alle entità autorizzate. SageMaker L'intelligenza artificiale supporta l'uso del controllo degli accessi basato sugli attributi (ABAC) per raggiungere questo isolamento per i lavori di formazione. Invece di creare più ruoli IAM per ogni tenant, puoi utilizzare lo stesso ruolo IAM per tutti i tenant configurando una configurazione di concatenamento delle sessioni che utilizza i tag di sessione Servizio di token di sicurezza AWS (AWS STS) per richiedere credenziali temporanee con privilegi limitati per consentire al tuo lavoro di formazione di accedere a tenant specifici. Per ulteriori informazioni sui tag di sessione, consulta Passare i tag di sessione in AWS STS.
Quando si crea un job di formazione, la configurazione di concatenamento delle sessioni utilizza la richiesta di credenziali di sicurezza temporanee. AWS STS Questa richiesta genera una sessione, che viene contrassegnata con tag. Ogni job SageMaker di formazione può accedere solo a un tenant specifico utilizzando un singolo ruolo condiviso da tutti i job di formazione. L’implementazione di ABAC con il concatenamento delle sessioni assicura che ogni job di addestramento abbia accesso solo al tenant specificato dal tag di sessione, isolando e proteggendo efficacemente tutti i tenant. La sezione seguente illustra i passaggi per configurare e utilizzare ABAC per l'isolamento dei lavori di formazione multi-tenant utilizzando l'SDK Python. SageMaker
Prerequisiti
Per iniziare a utilizzare ABAC per l’isolamento dei job di addestramento multi-tenant, è necessario disporre di quanto segue:
-
Tenant con denominazione coerente in tutte le posizioni. Ad esempio, se l’URI Amazon S3 di un dato di input per un tenant è
s3://your-input-s3-bucket/, la directory Amazon FSx per lo stesso tenant dovrebbe essereexample-tenant/fsx-train/train/e i l’URI Amazon S3 dei dati di output dovrebbe essereexample-tenants3://your-output-s3-bucket/.example-tenant -
Un ruolo nell'IA nella creazione di posti di lavoro SageMaker . Puoi creare un ruolo di creazione di posti di lavoro nell' SageMaker intelligenza artificiale utilizzando Amazon SageMaker AI Role Manager. Per informazioni, consulta Utilizzo del gestore dei ruoli.
-
Un ruolo di esecuzione dell' SageMaker IA che
sts:AssumeRoleinclude ests:TagSessionautorizzazioni nella sua politica di fiducia. Per ulteriori informazioni sui ruoli di esecuzione dell' SageMaker IA, consulta Ruoli SageMaker AI.Il ruolo di esecuzione dovrebbe inoltre avere una policy che consenta ai tenant di qualsiasi architettura multi-tenancy basata sugli attributi di leggere il prefisso allegato a un tag principale. Di seguito è riportato un esempio di policy che limita il ruolo di esecuzione dell' SageMaker IA all'accesso al valore associato alla
tenant-idchiave. Per ulteriori informazioni, consulta Regole per l’etichettatura in IAM e STS.
Creazione di un job di addestramento con il concatenamento dei tag di sessione abilitato
La procedura seguente mostra come creare un job di formazione con il concatenamento di tag di sessione utilizzando SageMaker Python SDK per ABAC-enabled la formazione multi-tenancy.
Nota
Oltre all'archiviazione dei dati multi-tenant, puoi anche utilizzare il flusso di lavoro ABAC per passare i tag di sessione al tuo ruolo di esecuzione per Amazon VPC e a qualsiasi altro servizio che consenti all'IA di AWS Key Management Service chiamare SageMaker
Abilitazione del concatenamento dei tag di sessione per ABAC
-
Importazione
boto3e Python SDK. SageMaker ABAC-enabled training job isolation è disponibile solo nella versione 2.217o successiva di SageMaker AI Python SDK. import boto3 from sagemaker.train import ModelTrainer from sagemaker.train.configs import InputData, CheckpointConfig from sagemaker.core.helper.session_helper import Session from sagemaker.core.shapes import OutputDataConfig from sagemaker.train.configs import Compute -
Configura un client AWS STS and SageMaker AI per utilizzare i tag di sessione etichettati come tenant. È possibile modificare il valore del tag per specificare un tenant diverso.
# Start an AWS STS client sts_client = boto3.client('sts') # Define your tenants using tags # The session tag key must match the principal tag key in your execution role policy tags = [] tag = {} tag['Key'] ="tenant-id"tag['Value'] ="example-tenant"tags.append(tag) # Have AWS STS assume your ABAC-enabled job creation role response = sts_client.assume_role( RoleArn="arn:aws:iam::<account-id>:role/<your-training-job-creation-role>", RoleSessionName="SessionName", Tags=tags) credentials = response['Credentials'] # Create a client with your job creation role (which was assumed with tags) sagemaker_client = boto3.client( 'sagemaker', aws_access_key_id=credentials['AccessKeyId'], aws_secret_access_key=credentials['SecretAccessKey'], aws_session_token=credentials['SessionToken'] ) sagemaker_session = Session(sagemaker_client=sagemaker_client)Quando al ruolo di creazione del job si aggiungono i tag
"tenant-id=example-tenant", questi vengono estratti dal ruolo di esecuzione in modo da utilizzare la seguente policy: -
Definisci un ModelTrainer per creare un lavoro di formazione utilizzando Python SDK. SageMaker Imposta
enable_session_tag_chainingper consentireTrueal tuo ruolo di esecuzione della formazione sull' SageMaker IA di recuperare i tag dal tuo ruolo di creazione del lavoro.# Specify your training input trainingInput = InputData( channel_name='training', data_source='s3://<your-input-bucket>/example-tenant') # Specify your training job execution role execution_role_arn ="arn:aws:iam::<account-id>:role/<your-training-job-execution-role>"# Define your model trainer with session tag chaining enabled model_trainer = ModelTrainer( training_image="<your-training-image-uri>", role=execution_role_arn, compute=Compute( instance_type='ml.m4.xlarge', instance_count=1, volume_size_in_gb=20 ), sagemaker_session=sagemaker_session, output_data_config=OutputDataConfig(s3_output_path="s3://<your-output-bucket>/example-tenant"), tags=[{"Key": "sagemaker:EnableSessionTagChaining", "Value": "true"}] ) model_trainer.train(input_data_config=[trainingInput])
SageMaker L'intelligenza artificiale può leggere solo i tag forniti nella richiesta di lavoro di formazione e non aggiunge alcun tag alle risorse per tuo conto.
L'ABAC per la SageMaker formazione è compatibile con le warm pool gestite dall' SageMaker IA. Per utilizzare ABAC con i warm pool, i job di addestramento corrispondenti devono avere tag di sessione identici. Per ulteriori informazioni, consulta Processi di addestramento corrispondenti.