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.
Utiliser le contrôle d’accès par attributs (ABAC) pour l’entraînement multilocataire
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 réaliser 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 des balises de session AWS Security Token Service (AWS STS) pour demander des informations d'identification temporaires à privilèges limités pour votre tâche de formation afin d'accéder à des locataires spécifiques. Pour plus d’informations sur les balises de session, consultez Transmission des balises de session dans 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 balisée. Chaque emploi de SageMaker formation ne peut accéder qu'à un locataire spécifique en utilisant un rôle unique partagé par tous les emplois de formation. En implémentant l’ABAC avec le chaînage de sessions, vous pouvez vous assurer que chaque tâche d’entraînement n’a accès qu’au locataire spécifié par la balise de session, isolant et sécurisant ainsi efficacement chaque locataire. La section suivante vous explique les étapes à suivre pour configurer et utiliser ABAC pour isoler les tâches de formation multi-locataires à l'aide du SDK SageMaker Python.
Conditions préalables
Pour commencer à utiliser ABAC pour l’isolement des tâches d’entraînement multilocataire, vous devez disposer des éléments suivants :
-
Locataires avec une dénomination cohérente dans tous les emplacements. Par exemple, si l’URI Amazon S3 des données d’entrée d’un locataire est
s3://your-input-s3-bucket/, le répertoire Amazon FSx de ce même locataire doit êtreexample-tenant/fsx-train/train/et l’URI Amazon S3 des données de sortie doit êtreexample-tenants3://your-output-s3-bucket/.example-tenant -
Un rôle dans la création d'emplois liés à l' SageMaker IA. Vous pouvez créer un rôle de création d'emplois basé sur l' SageMaker IA à l'aide d'Amazon SageMaker AI Role Manager. Pour plus d’informations, consultez Utilisation du gestionnaire de rôles.
-
Un rôle d'exécution de l' SageMaker IA doté
sts:AssumeRoled'sts:TagSessionautorisations 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 d'SageMaker IA.Le rôle d’exécution doit également disposer d’une politique permettant aux locataires de toute architecture multilocataire 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-idclé. Pour plus d’informations sur la dénomination des clés de balises, consultez Règles de balisage dans IAM et STS.
Création d’une tâche d’entraînement avec le chaînage des balises de session activé
La procédure suivante explique comment créer une tâche de formation avec chaînage de balises de session à l'aide du SDK SageMaker Python pour la formation ABAC-enabled multi-tenant.
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 autorisez l'IA à appeler AWS Key Management Service SageMaker
Activation du chaînage des balises de session pour ABAC
-
Importation
boto3et SDK SageMaker Python. ABAC-enabled l'isolation des tâches de formation n'est disponible que dans la version 2.217ou ultérieure du SDK SageMaker AI Python. 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 -
Configurez un client AWS STS et 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 = Session(sagemaker_client=sagemaker_client)Lorsque vous ajoutez les balises
"tenant-id=example-tenant"au rôle de création de tâche, celles-ci sont extraites par le rôle d’exécution afin d’appliquer la politique suivante : -
Définissez un ModelTrainer pour créer une tâche de formation à l'aide du SDK SageMaker Python. Définissez cette
enable_session_tag_chainingoption pour permettreTrueà votre rôle d'exécution de la formation par SageMaker IA de récupérer les balises de votre rôle de création de tâches.# 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'IA ne peut lire que les balises fournies dans la demande d'emploi de formation et n'ajoute aucune étiquette aux ressources en votre nom.
ABAC for SageMaker training est compatible avec les piscines chaudes gérées par l' SageMaker IA. Pour utiliser ABAC avec les groupes d’instances pré-initialisées, 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.