View a markdown version of this page

Beschränken Sie den Zugriff auf Artefakte auf Modellpaketbereitstellungen - 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.

Beschränken Sie den Zugriff auf Artefakte auf Modellpaketbereitstellungen

Wenn Sie ein Modellpaket für mehrere Konten gemeinsam nutzen, muss s3:GetObject die ausführende Rolle des nutzenden Kontos die Modellartefakte im produzierenden Konto übernehmen. Diese Berechtigung gilt standardmäßig immer dann, wenn die Rolle verwendet wird. Daher kann jeder Schulleiter, der die Rolle verwendet, die Artefakte aus einem Notizbuch, aus einer Schulung oder über einen direkten API-Aufruf lesen — nicht nur, während ein Modellpaket bereitgestellt wird.

Sie können diesen Zugriff einschränken, sodass nur eine Modellpaketbereitstellung die Artefakte lesen kann. Während der Bereitstellung wendet die SageMaker KI das Sitzungs-Tag sagemaker:ModelPackageArn auf die Sitzung mit der Ausführungsrolle an, die sie annimmt. Der Tag-Wert ist der ARN des Modellpakets, das bereitgestellt wird. Eine Bucket-Richtlinie, die dieses Tag erfordert, gewährt daher nur Zugriff auf Bereitstellungssitzungen.

Dazu müssen drei Teile zusammenarbeiten. Alle drei können von Ihnen konfiguriert werden; SageMaker KI liefert nur das Sitzungs-Tag:

  • Eine mit einem Tag versehene AusführungsrolleManagedBy=SageMaker, deren Vertrauensrichtlinie es nur dem SageMaker AI-Serviceprinzipal erlaubt, sie zu übernehmen.

  • Eine Dienststeuerungsrichtlinie, die verhindert, dass jemand anderes als SageMaker KI diese Rolle übernimmt oder den sagemaker:ModelPackageArn Tag-Schlüssel festlegt. Andernfalls AWS STS könnte ein Principal, der die Erlaubnis hat, anzurufen, das Tag selbst angeben.

  • Eine Amazon S3-Bucket-Richtlinie, die s3:GetObject nur gewährt, wenn die Sitzung das Tag trägt, sich der Anrufer in Ihrer Organisation befindet und die Rolle markiert ManagedBy=SageMaker ist.

Wichtig

Der SCP macht das Sitzungs-Tag vertrauenswürdig. Wenn Sie die Bucket-Richtlinie ohne den SCP anwenden, kann ein Principal, der die Ausführungsrolle direkt übernehmen kann, das sagemaker:ModelPackageArn Tag an seine eigene Sitzung anhängen und die Bucket-Richtlinie erfüllen.

Schritt 1: Die Ausführungsrolle taggen und festlegen

Markieren Sie im nutzenden Konto die Ausführungsrolle ManagedBy=SageMaker und beschränken Sie ihre Vertrauensrichtlinie auf den SageMaker AI-Serviceprinzipal. Die Vertrauensrichtlinie muss sts:AssumeRole sowohl als auch zulassensts:TagSession. sts:TagSessionAndernfalls kann SageMaker KI das sagemaker:ModelPackageArn Sitzungs-Tag nicht anwenden, und Amazon S3 verweigert jeden Lesevorgang, den die Bucket-Richtlinie in Schritt 3 erfordert.

{ "RoleName": "GovernedModelExecutionRole", "Tags": [ { "Key": "ManagedBy", "Value": "SageMaker" } ], "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] }] } }

Schritt 2: Fügen Sie eine Service Control-Richtlinie hinzu

Hängen Sie den folgenden SCP in Ihrer Organisation an. Die erste Anweisung ermöglicht es nur dem SageMaker AI-Serviceprinzipal, eine markierte ManagedBy=SageMaker Rolle zu übernehmen. Bei der zweiten Option kann nur die SageMaker KI den sagemaker:ModelPackageArn Tag-Schlüssel festlegen. Dies ist der einzige Tag-Schlüssel, den die Bucket-Richtlinie auswertet. Weitere Informationen finden Sie unter Erstellen, Aktualisieren und Löschen von Service-Kontrollrichtlinien.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyNonSageMakerAssumeOnManagedRoles", "Effect": "Deny", "Action": "sts:AssumeRole", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedBy": "SageMaker" }, "StringNotEquals": { "aws:PrincipalServiceName": "sagemaker.amazonaws.com" } } }, { "Sid": "DenyTaggingProtectedKeysUnlessSageMaker", "Effect": "Deny", "Action": [ "iam:TagRole", "iam:UntagRole", "sts:TagSession" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/sagemaker:ModelPackageArn": "*" }, "StringNotEquals": { "aws:PrincipalServiceName": "sagemaker.amazonaws.com" } } } ] }
Anmerkung

Beide Anweisungen verwenden StringNotEquals onaws:PrincipalServiceName, was als wahr ausgewertet wird, wenn der Schlüssel fehlt. Der SCP verweigert diese Aktionen daher allen IAM-Benutzern und Rollen in Ihren Mitgliedskonten, einschließlich Sitzungen, für die überhaupt kein Service Principal verwendet wird. SCPs gelten nicht für Anrufe, die AWS Dienste mit ihren eigenen Dienstprinzipalen tätigen. Die Vertrauensrichtlinie der Rolle, die nur dem SageMaker AI-Serviceprinzipal Zugriff gewährt, schließt andere Dienste aus. AWS

Schritt 3: Fügen Sie die Amazon S3-Bucket-Richtlinie hinzu

Wenden Sie im produzierenden Konto die folgende Richtlinie auf den Bucket an, der die Modellartefakte enthält. Alle drei Bedingungen müssen erfüllt sein. Amazon S3 lehnt jede Sitzung ab, bei der eine fehlt.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyModelPackageDeployments", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::model-artifacts-bucket/model-package-prefix/*", "Condition": { "StringLike": { "aws:PrincipalTag/sagemaker:ModelPackageArn": "arn:aws:sagemaker:*:producer-account-id:model-package/model-package-group/*" }, "StringEquals": { "aws:PrincipalOrgID": "o-organization-id", "aws:PrincipalTag/ManagedBy": "SageMaker" } } } ] }

Wenn Sie * zusammen Principal mit diesen Bedingungen den Wert von verwenden, kann jede Rolle in Ihrer Organisation, die markiert ist ManagedBy=SageMaker und das Bereitstellungs-Tag trägt, die Artefakte lesen. Sie müssen die Richtlinie nicht für jede nutzende Rolle bearbeiten. Der Platzhalter auf dem Modellpaket-ARN deckt jede Version in der Gruppe ab.

Wichtig

Geltungsbereich Resource auf die Artefakte einer einzelnen Modellpaketgruppe. Ein Präfix, das sich über mehrere Gruppen erstreckt, würde es bei der Bereitstellung eines Modellpakets ermöglichen, die Artefakte einer anderen Gruppe zu lesen, da das Sitzungs-Tag mit dem Gruppen-Platzhalter und nicht mit dem Objektpfad verglichen wird.

Wenn die Artefakte mit einem vom Kunden verwalteten AWS KMS Schlüssel verschlüsselt sind, muss die Ausführungsrolle auch diesen Schlüssel kms:Decrypt verwenden. Gewähren Sie ihn in der Schlüsselrichtlinie; eine IAM-Richtlinie allein reicht nicht aus.

Überwachen Sie den Zugriff auf Artefakte

In Ihrem Konto werden sowohl das Tagging der Sitzung als auch die daraus resultierende Zugriffsentscheidung aufgezeichnet.

  • In CloudTrail listet das AssumeRole Ereignis für die Ausführungsrolle die Sitzungs-Tags unter requestParameters auf. Stellen Sie sicher, dass sagemaker:ModelPackageArn es vorhanden ist und dem von Ihnen bereitgestellten Modellpaket entspricht.

  • In Amazon S3-Datenereignissen oder Serverzugriffsprotokollen zeigen GetObject Anfragen für das Artefaktpräfix an, ob jeder Lesevorgang zugelassen oder verweigert wurde. Sie können also bestätigen, dass der Zugriff, der nicht zur Bereitstellung gehört, verweigert wird.

Bevor Sie die Richtlinien auf einen Produktions-Bucket anwenden, können Sie sie mit dem IAM-Richtliniensimulator auswerten, um zu bestätigen, dass eine Bereitstellungssitzung zulässig ist und dass eine Sitzung ohne das Tag verweigert wird. Weitere Informationen finden Sie unter Testen von IAM-Richtlinien mit dem IAM-Richtliniensimulator.