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à.
Utilizza il controllo degli accessi basato sugli attributi (ABAC) per la formazione 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 ottenere 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 AWS Security Token Service (AWS STS) per richiedere credenziali temporanee con privilegi limitati per il tuo processo di formazione per accedere a tenant specifici. Per ulteriori informazioni sui tag di sessione, consulta Passare i tag di sessione. AWS STS
Quando si crea un processo di formazione, la configurazione del concatenamento delle sessioni utilizza la richiesta AWS STS di credenziali di sicurezza temporanee. Questa richiesta genera una sessione, che è contrassegnata. Ogni lavoro di SageMaker formazione può accedere solo a un tenant specifico utilizzando un singolo ruolo condiviso da tutti i lavori di formazione. Implementando ABAC con il concatenamento delle sessioni, è possibile garantire che ogni lavoro di formazione abbia accesso solo al tenant specificato dal tag di sessione, isolando e proteggendo efficacemente ogni tenant. La sezione seguente illustra i passaggi per configurare e utilizzare ABAC per l'isolamento dei lavori di formazione multi-tenant utilizzando Python SageMaker SDK.
Prerequisiti
Per iniziare a utilizzare ABAC per la formazione multi-tenant e l'isolamento dei posti di lavoro, devi disporre di quanto segue:
-
Locatari con denominazione coerente in tutte le sedi. Ad esempio, se un dato di input è un URI Amazon S3 per un tenant,
s3://your-input-s3-bucket/
la FSx directory Amazon per lo stesso tenant dovrebbe essereexample-tenant
/fsx-train/train/
e i dati di output dovrebbe essere l'URI Amazon S3.example-tenant
s3://your-output-s3-bucket/
example-tenant
-
Un ruolo nell' SageMaker IA nella creazione di posti di lavoro. Puoi creare un ruolo per la 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 dispone
sts:AssumeRole
di autorizzazioni ests:TagSession
autorizzazioni 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 politica che consenta ai tenant di qualsiasi architettura multi-tenancy basata su 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 chiave.
tenant-id
Per ulteriori informazioni sulla denominazione delle chiavi dei tag, consulta Regole per l'etichettatura in IAM e STS.{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<your-input-s3-bucket>/${aws:PrincipalTag/
tenant-id
}/*" ], "Effect": "Allow" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::<your-output-s3-bucket>/${aws:PrincipalTag/tenant-id
}/*" }, { "Action": "s3:ListBucket", "Resource": "*", "Effect": "Allow" } ] }
Crea un processo di formazione con il concatenamento dei tag di sessione abilitato
La procedura seguente mostra come creare un processo di formazione con concatenamento di tag di sessione utilizzando SageMaker Python SDK per la formazione multi-tenancy abilitata per ABAC.
Nota
Oltre allo storage di dati multi-tenancy, puoi anche utilizzare il flusso di lavoro ABAC per passare i tag di sessione al tuo ruolo di esecuzione per Amazon VPC e qualsiasi altro servizio che AWS Key Management Service consenti all'IA di chiamare SageMaker
Abilita il concatenamento dei tag di sessione per ABAC
-
Import
boto3
e SageMaker Python SDK. L'isolamento dei job di formazione abilitato per ABAC è disponibile solo nella versione 2.217o successiva di AI SageMaker Python SDK. import boto3 import sagemaker from sagemaker.estimator import Estimator from sagemaker.inputs import TrainingInput
-
Configura un client SageMaker AI per utilizzare AWS STS i tag di sessione etichettati dal 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 = sagemaker.Session(sagemaker_client=sagemaker_client)Quando si aggiungono i tag
"tenant-id=example-tenant"
al ruolo di creazione del lavoro, questi tag vengono estratti dal ruolo di esecuzione per utilizzare la seguente politica:{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<your-input-s3-bucket>/
example-tenant
/*" ], "Effect": "Allow" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::<your-output-s3-bucket>/example-tenant
/*" }, { "Action": "s3:ListBucket", "Resource": "*", "Effect": "Allow" } ] } -
Definisci uno stimatore per creare un lavoro di formazione utilizzando l'SDK SageMaker Python. Impostato
enable_session_tag_chaining
per consentireTrue
al ruolo di responsabile dell'addestramento basato sull' SageMaker intelligenza artificiale di recuperare i tag dal ruolo di creazione di posti di lavoro.# Specify your training input trainingInput = TrainingInput( s3_data=
's3://<your-input-bucket>/example-tenant'
, distribution='ShardedByS3Key', s3_data_type='S3Prefix' ) # Specify your training job execution role execution_role_arn ="arn:aws:iam::<account-id>:role/<your-training-job-execution-role>"
# Define your esimator with session tag chaining enabled estimator = Estimator( image_uri="<your-training-image-uri>"
, role=execution_role_arn, instance_count=1, instance_type='ml.m4.xlarge', volume_size=20, max_run=3600, sagemaker_session=sagemaker_session, output_path="s3://<your-output-bucket>/example-tenant"
, enable_session_tag_chaining=True
) estimator.fit(inputs=trainingInput, job_name="abac-demo"
)
SageMaker L'IA può solo leggere i tag forniti nella richiesta di lavoro di formazione e non aggiunge alcun tag alle risorse per tuo conto.
ABAC for SageMaker training è compatibile con le piscine calde gestite dall' SageMaker IA. Per utilizzare ABAC con piscine calde, i lavori di formazione corrispondenti devono avere tag di sessione identici. Per ulteriori informazioni, consulta Processi di addestramento corrispondenti.