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 Sie die attributebasierte Zugriffskontrolle (ABAC) für Schulungen mit mehreren Mandanten
In einer Umgebung mit mehreren Mandanten muss unbedingt sichergestellt werden, dass die Daten jedes Mandanten isoliert sind und nur autorisierten Entitäten zugänglich sind. SageMaker KI unterstützt die Verwendung von attributebasierter Zugriffskontrolle (ABAC), um diese Isolierung für Ausbildungsberufe 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 Konfiguration für die Sitzungsverkettung konfigurieren, die Sitzungs-Tags AWS Security Token Service (AWS STS) verwendet, um temporäre Anmeldeinformationen mit eingeschränkten Rechten für Ihren Schulungsjob für den Zugriff auf bestimmte Mandanten anzufordern. Weitere Informationen zu Sitzungs-Tags finden Sie unter Sitzungs-Tags weitergeben in. AWS STS
Bei der Erstellung eines Trainingsjobs werden in Ihrer Konfiguration für die Sitzungsverkettung temporäre AWS STS Sicherheitsanmeldedaten angefordert. Diese Anfrage generiert eine Sitzung, die mit einem Tag versehen ist. Jeder SageMaker Schulungsjob kann nur auf einen bestimmten Mandanten zugreifen, wobei eine einzige Rolle verwendet wird, die allen Schulungsjobs gemeinsam ist. Durch die Implementierung von ABAC mit Sitzungsverkettung können Sie sicherstellen, dass jeder Schulungsjob 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 von Schulungsaufträgen für mehrere Mandanten mithilfe des SageMaker Python-SDK.
Voraussetzungen
Um mit ABAC für die Isolierung von Schulungsjobs für mehrere Mandanten zu beginnen, müssen Sie über Folgendes verfügen:
-
Mieter mit einheitlicher Benennung an allen Standorten. Wenn beispielsweise eine Amazon S3 S3-URI für Eingabedaten für einen Mandanten lautet
s3://your-input-s3-bucket/
, sollte das FSx Amazon-Verzeichnis für denselben Mandantenexample-tenant
/fsx-train/train/
und die Ausgabedaten Amazon S3-URI seinexample-tenant
s3://your-output-s3-bucket/
.example-tenant
-
Eine Rolle bei der Schaffung von Arbeitsplätzen im Bereich SageMaker KI. Mit Amazon SageMaker AI Role Manager können Sie eine Rolle zur Erstellung von SageMaker KI-Jobs erstellen. Weitere Informationen finden Sie unter Den Rollenmanager verwenden.
-
Eine SageMaker KI-Ausführungsrolle, die über
sts:TagSession
Berechtigungen in ihrer Vertrauensrichtlinie 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 ein Beispiel für eine Richtlinie, die die SageMaker KI-Ausführungsrolle darauf beschränkt, Zugriff auf den mit dem Schlüssel verknüpften Wert zu haben.
tenant-id
Weitere Informationen zur Benennung von Tagschlüsseln finden Sie unter Regeln für das Tagging in IAM und 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" } ] }
Erstellen Sie einen Trainingsjob mit aktivierter Sitzungs-Tag-Verkettung
Das folgende Verfahren zeigt Ihnen, wie Sie mithilfe des SageMaker Python-SDK für ABAC-fähiges Multi-Tenancy-Training einen Trainingsjob mit Sitzungs-Tag-Verkettung erstellen.
Anmerkung
Zusätzlich zur Multi-Tenancy-Datenspeicherung können Sie den ABAC-Workflow auch verwenden, um Sitzungs-Tags an Ihre Ausführungsrolle für Amazon VPC und alle anderen Services zu übergeben AWS Key Management Service, die KI aufrufen darf SageMaker
Aktivieren Sie die Sitzungs-Tag-Verkettung für ABAC
-
Import
boto3
und das SageMaker Python-SDK. Die ABAC-fähige Isolierung von Trainingsjobs ist nur in Version 2.217oder höher des SageMaker AI Python SDK verfügbar. import boto3 import sagemaker from sagemaker.estimator import Estimator from sagemaker.inputs import TrainingInput
-
Richten Sie einen SageMaker AI-Client so ein AWS STS , dass er die Sitzungs-Tags mit der Bezeichnung „Mandant“ verwendet. 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 = sagemaker.Session(sagemaker_client=sagemaker_client)Beim Anhängen der Tags
"tenant-id=example-tenant"
an die Rolle zur Auftragserstellung werden diese Tags von der Ausführungsrolle extrahiert, sodass die folgende Richtlinie verwendet wird:{ "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" } ] } -
Definieren Sie einen Schätzer, um mithilfe des SageMaker Python-SDK einen Trainingsjob zu erstellen. Stellen
enable_session_tag_chaining
Sie diese Option einTrue
, damit Ihre Rolle für die Ausführung von SageMaker KI-Schulungen die Tags aus Ihrer Rolle bei der Auftragserstellung abrufen kann.# 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 KI kann nur die in der Stellenanfrage angegebenen Tags lesen und fügt in Ihrem Namen keine Tags zu Ressourcen hinzu.
ABAC for SageMaker Training ist mit SageMaker KI-verwalteten Warmpools kompatibel. Um ABAC mit warmen Pools verwenden zu können, müssen passende Trainingsjobs identische Sitzungs-Tags haben. Weitere Informationen finden Sie unter Passende Ausbildungsaufträge.