Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisez le contrôle d'accès basé sur les attributs (ABAC) pour la formation multi-locataires
Dans un environnement multi-tenant, il est essentiel de s'assurer que les données de chaque locataire sont isolées et accessibles uniquement aux entités autorisées. SageMaker L'IA soutient l'utilisation du contrôle d'accès basé sur les attributs (ABAC) pour parvenir à cette isolation pour les emplois de formation. Au lieu de créer plusieurs rôles IAM pour chaque locataire, vous pouvez utiliser le même rôle IAM pour tous les locataires en configurant une configuration de chaînage de sessions qui utilise AWS Security Token Service (AWS STS) des balises de session pour demander des informations d'identification temporaires à privilèges limités pour votre formation afin d'accéder à des locataires spécifiques. Pour plus d'informations sur les balises de session, consultez la section Transmission de balises de session AWS STS.
Lorsque vous créez une tâche de formation, votre configuration de chaînage de sessions est utilisée AWS STS pour demander des informations d'identification de sécurité temporaires. Cette demande génère une session, qui est étiquetée. Chaque poste de SageMaker formation ne peut accéder qu'à un locataire spécifique en utilisant un rôle unique partagé par tous les postes de formation. En implémentant l'ABAC avec le chaînage de sessions, vous pouvez vous assurer que chaque tâche de formation n'a accès qu'au locataire spécifié par le tag de session, isolant et sécurisant ainsi efficacement chaque locataire. La section suivante vous explique les étapes de configuration et d'utilisation d'ABAC pour l'isolation des tâches de formation multi-locataires à l'aide du SDK SageMaker Python.
Prérequis
Pour commencer à utiliser ABAC pour la formation multilocataire et l'isolation professionnelle, vous devez disposer des éléments suivants :
-
Locataires dotés d'une dénomination uniforme dans tous les établissements. Par exemple, si l'URI Amazon S3 d'entrée d'un locataire est le cas
s3://your-input-s3-bucket/
, le FSx répertoire Amazon de ce même locataire doit l'êtreexample-tenant
/fsx-train/train/
et l'URI Amazon S3 de sortie doit l'êtreexample-tenant
s3://your-output-s3-bucket/
.example-tenant
-
Un rôle de création d'emplois dans le domaine de l' SageMaker IA. Vous pouvez créer un rôle de création d'emplois dans l' SageMaker IA à l'aide d'Amazon SageMaker AI Role Manager. Pour plus d'informations, consultez la section Utilisation du gestionnaire de rôles.
-
Un rôle d'exécution de l' SageMaker IA qui dispose
sts:AssumeRole
d'sts:TagSession
autorisations et d'autorisations dans sa politique de confiance. Pour plus d'informations sur les rôles d'exécution de l' SageMaker IA, consultez la section Rôles de l'SageMaker IA.Le rôle d'exécution doit également disposer d'une politique permettant aux locataires de toute architecture multi-tenancy basée sur des attributs de lire le préfixe attaché à une balise principale. Voici un exemple de politique qui limite le rôle d'exécution de l' SageMaker IA à l'accès à la valeur associée à la
tenant-id
clé. Pour plus d'informations sur la dénomination des clés de balise, consultez la section Règles de balisage dans IAM et 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" } ] }
Créez une tâche de formation avec le chaînage des balises de session activé
La procédure suivante explique comment créer une tâche de formation avec un chaînage de balises de session à l'aide du SDK SageMaker Python pour un entraînement multi-tenant compatible avec ABAC.
Note
Outre le stockage de données mutualisé, vous pouvez également utiliser le flux de travail ABAC pour transmettre des balises de session à votre rôle d'exécution pour Amazon VPC et à tout autre service que vous AWS Key Management Service autorisez l'IA à appeler SageMaker
Activer le chaînage des balises de session pour ABAC
-
Import
boto3
et SDK SageMaker Python. L'isolation des tâches de formation compatible avec ABAC n'est disponible que dans la version 2.217ou ultérieure du SDK AI SageMaker Python. import boto3 import sagemaker from sagemaker.estimator import Estimator from sagemaker.inputs import TrainingInput
-
Configurez un client AWS STS and SageMaker AI pour utiliser les balises de session étiquetées par le locataire. Vous pouvez modifier la valeur de la balise pour spécifier un autre locataire.
# 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)Lorsque vous ajoutez les balises
"tenant-id=example-tenant"
au rôle de création de tâche, ces balises sont extraites par le rôle d'exécution afin d'appliquer la politique suivante :{ "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" } ] } -
Définissez un estimateur pour créer une tâche de formation à l'aide du SDK SageMaker Python. Réglez
enable_session_tag_chaining
surTrue
pour permettre à votre rôle d'exécution de formation SageMaker AI de récupérer les balises de votre rôle de création de tâches.# 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 peut uniquement lire les balises fournies dans la demande de formation et n'ajoute aucune balise aux ressources en votre nom.
ABAC pour l' SageMaker entraînement est compatible avec les piscines d'eau chaude gérées par l' SageMaker IA. Pour utiliser ABAC avec des piscines chaudes, les tâches d'entraînement correspondantes doivent avoir des balises de session identiques. Pour de plus amples informations, veuillez consulter Tâches d'entraînement correspondantes.