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 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 Übergeben von Sitzungs-Tags in AWS STS.

Bei der Erstellung eines Schulungsjobs werden in Ihrer Konfiguration für die Sitzungsverkettung temporäre Sicherheitsanmeldedaten angefordert. AWS STS 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 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 von Schulungsaufträgen für mehrere Mandanten 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 eine Amazon S3 S3-URI für Eingabedaten für einen Mandanten lautets3://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 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 Verwenden des Rollenmanagers.

  • 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 Wert zu haben, 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-fähiges Mehrmandantentraining 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 übergebenAWS Key Management Service, die KI aufrufen darf SageMaker

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

    import boto3 import sagemaker from sagemaker.estimator import Estimator from sagemaker.inputs import TrainingInput
  2. Richten Sie einen SageMaker AI-Client so einAWS 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 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 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 Warmpools verwenden zu können, müssen übereinstimmende Trainingsjobs identische Sitzungs-Tags haben. Weitere Informationen finden Sie unter Passende Ausbildungsaufträge.