Verwenden Sie die attributebasierte Zugriffskontrolle (ABAC) für Schulungen mit mehreren Mandanten - Amazon SageMaker

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 autorisierte Entitäten darauf zugreifen können. SageMaker unterstützt die Verwendung von attributebasierter Zugriffskontrolle (ABAC), um diese Isolierung für Schulungsaufgaben 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, bei der Sitzungs-Tags AWS Security Token Service (AWS STS) verwendet werden, 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. 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 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 der Isolierung von Schulungsaufträgen ABAC für mehrere Mandanten mithilfe von SageMaker PythonSDK.

Voraussetzungen

Um mit der Isolierung von Schulungsjobs ABAC für mehrere Mandanten zu beginnen, müssen Sie über Folgendes verfügen:

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

  • Eine Rolle bei der Schaffung von SageMaker Arbeitsplätzen. Sie können mit Amazon SageMaker Role Manager eine Rolle zur Erstellung von SageMaker Jobs erstellen. Weitere Informationen finden Sie unter Den Rollenmanager verwenden.

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

    Die Ausführungsrolle sollte auch über eine Richtlinie verfügen, die es Mandanten in jeder attributbasierten Mehrmandantenarchitektur 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 Ausführungsrolle so einschränkt, dass sie Zugriff auf den Wert hat, der dem Schlüssel zugeordnet ist. tenant-id Weitere Informationen zur Benennung von Tag-Schlü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 einen Trainingsjob mit Sitzungs-Tag-Verkettung mithilfe von SageMaker Python SDK for ABAC -enabled Multi-Tenancy-Training 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 und alle anderen Dienste zu übergeben VPC AWS Key Management Service, die Sie aufrufen dürfen SageMaker

Aktivieren Sie die Verkettung von Sitzungs-Tags für ABAC
  1. Import boto3 und SageMaker PythonSDK. ABAC-enabled Training Job Isolation ist nur in Version 2.217 oder höher von Python verfügbar. SageMaker SDK

    import boto3 import sagemaker from sagemaker.estimator import Estimator from sagemaker.inputs import TrainingInput
  2. Richten Sie einen AWS STS SageMaker AND-Client für die Verwendung der Sitzungs-Tags mit der Bezeichnung „Mandant“ ein. 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" } ] }
  3. Definieren Sie einen Schätzer, um einen Trainingsjob mit SageMaker Python SDK zu erstellen. Stellen enable_session_tag_chaining Sie diese True Option ein, damit Ihre SageMaker Trainingsausführungsrolle die Tags aus Ihrer Rolle zur 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 kann nur die in der Trainingsanfrage angegebenen Tags lesen und fügt in Ihrem Namen keine Tags zu Ressourcen hinzu.

ABACfor SageMaker Training ist mit SageMaker verwalteten warmen Pools kompatibel. Für die Verwendung ABAC mit warmen Pools müssen passende Trainingsjobs identische Sitzungs-Tags haben. Weitere Informationen finden Sie unter Passende Ausbildungsaufträge.