View a markdown version of this page

Verwenden der attributbasierten Zugriffskontrolle (ABAC) für das Multi-Tenancy-Training - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden der attributbasierten Zugriffskontrolle (ABAC) für das Multi-Tenancy-Training

In einer Umgebung mit mehreren Mandanten muss unbedingt sichergestellt werden, dass die Daten jedes Mandanten isoliert sind und nur autorisierten Stellen zugänglich sind. SageMaker KI unterstützt den Einsatz von attributebasierter Zugriffskontrolle (ABAC), um diese Isolierung bei Schulungsaufträgen zu erreichen. Anstatt mehrere IAM-Rollen für jeden Mandanten zu erstellen, können Sie dieselbe IAM-Rolle für alle Mandanten verwenden, indem Sie eine Sitzungsverkettungskonfiguration konfigurieren, die AWS -Security-Token-Service (AWS STS) -Sitzungs-Tags verwendet, um temporäre Anmeldeinformationen mit eingeschränkten Rechten für Ihren Schulungsjob anzufordern, um auf bestimmte Mandanten zuzugreifen. Weitere Informationen zu Sitzungs-Tags finden Sie unter Übergeben von Sitzungs-Tags in AWS STS.

Wenn Sie einen Trainingsjob erstellen, verwendet Ihre Sitzungsverkettungskonfiguration, um temporäre Sicherheitsanmeldeinformationen anzufordern AWS STS . Diese Anfrage generiert eine Sitzung, die mit einem Tag versehen ist. Jeder SageMaker Schulungsjob kann nur auf einen bestimmten Mandanten zugreifen, der eine einzige Rolle verwendet, die von allen Schulungsjobs gemeinsam genutzt wird. Durch die Implementierung von ABAC mit Sitzungsverkettung können Sie sicherstellen, dass jeder Trainingsjob nur Zugriff auf den im Sitzungs-Tag angegebenen Mandanten hat, wodurch jeder Mandant effektiv isoliert und geschützt wird. Der folgende Abschnitt führt Sie durch die Schritte zur Einrichtung und Verwendung von ABAC für die Isolierung mehrinstanziger Trainingsjobs mithilfe des SageMaker Python-SDK.

Voraussetzungen

Um mit ABAC für die Isolierung von Trainingsjobs mit mehreren Mandanten zu beginnen, müssen Sie über Folgendes verfügen:

  • Mandanten mit einheitlicher Benennung an allen Standorten. Wenn beispielsweise ein Amazon-S3-URI für Eingabedaten für einen Mandanten s3://your-input-s3-bucket/example-tenant lautet, sollte das Amazon-FSx-Verzeichnis für denselben Mandanten /fsx-train/train/example-tenant und die Amazon-S3-URI für Ausgabedaten s3://your-output-s3-bucket/example-tenant sein.

  • Eine Rolle bei der Schaffung von Arbeitsplätzen durch SageMaker KI. Sie können mit Amazon SageMaker AI Role Manager eine Rolle zur Schaffung von SageMaker KI-Jobs erstellen. Weitere Informationen finden Sie unter Verwenden des Rollenmanagers.

  • Eine SageMaker KI-Ausführungsrolle, die in ihrer Vertrauensrichtlinie über sts:TagSession Berechtigungen verfügtsts:AssumeRole. Weitere Informationen zu SageMaker AI-Ausführungsrollen finden Sie unter SageMaker AI-Rollen.

    Die Ausführungsrolle sollte auch über eine Richtlinie verfügen, die es Mandanten in jeder attributbasierten Multi-Tenancy-Architektur ermöglicht, aus dem Präfix zu lesen, das einem Prinzipal-Tag zugeordnet ist. Im Folgenden finden Sie eine Beispielrichtlinie, die den Zugriff der SageMaker AI-Ausführungsrolle auf den Wert beschränkt, der dem tenant-id Schlüssel zugeordnet ist. Weitere Informationen zur Benennung von Tag-Schlüsseln finden Sie unter Regeln für das Tagging in IAM und STS.

    JSON
    { "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}/*", "Effect": "Allow" }, { "Action": "s3:ListBucket", "Resource": "*", "Effect": "Allow" } ] }

Erstellen eines Trainingsjobs mit aktivierter Sitzungs-Tag-Verkettung

Das folgende Verfahren zeigt Ihnen, wie Sie mithilfe des SageMaker Python-SDK für ABAC-enabled mehrinstanziges Training einen Trainingsjob mit Verkettung von Sitzungs-Tags erstellen.

Anmerkung

Zusätzlich zur mehrmandantenfähigen Datenspeicherung können Sie den ABAC-Workflow auch verwenden, um Sitzungs-Tags an Ihre Ausführungsrolle für Amazon VPC und alle anderen Dienste zu übergeben AWS Key Management Service, die KI aufrufen darf SageMaker

Aktivieren der Sitzungs-Tag-Verkettung für ABAC
  1. Import boto3 und das Python-SDK. SageMaker ABAC-enabled Die Isolierung von Trainingsjobs ist nur in Version 2.217 oder höher des SageMaker AI Python SDK verfügbar.

    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
  2. Richten Sie einen AWS STS SageMaker AI-Client ein, um die Sitzungs-Tags mit Mandanten-Labels zu verwenden. Sie können den Tag-Wert ändern, um einen anderen Mandanten anzugeben.

    # 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)

    Beim Anhängen der Tags "tenant-id=example-tenant" an die Rolle zur Joberstellung werden diese Tags von der Ausführungsrolle extrahiert, sodass die folgende Richtlinie verwendet wird:

    JSON
    { "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/*", "Effect": "Allow" }, { "Action": "s3:ListBucket", "Resource": "*", "Effect": "Allow" } ] }
  3. Definieren Sie a ModelTrainer , um mithilfe des SageMaker Python-SDK einen Trainingsjob zu erstellen. Stellen Sie enable_session_tag_chaining den True Wert auf ein, damit Ihre Rolle für die Ausführung von SageMaker KI-Trainings die Tags aus Ihrer Rolle zur Schaffung von Arbeitsplätzen abrufen kann.

    # 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 Die KI kann nur die Stichwörter lesen, die in der Jobanfrage für die Schulung angegeben sind, und fügt in Ihrem Namen keine Schlagworte zu den Ressourcen hinzu.

ABAC for SageMaker Training ist mit SageMaker KI-verwalteten Warm-Pools kompatibel. Um ABAC mit Warmpools verwenden zu können, müssen übereinstimmende Trainingsjobs identische Sitzungs-Tags haben. Weitere Informationen finden Sie unter Passende Ausbildungsaufträge.