Berechtigungsverwaltung - SageMaker Bewährte Methoden für die Studio-Administration

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.

Berechtigungsverwaltung

In diesem Abschnitt werden die bewährten Methoden für die Einrichtung häufig verwendeter IAM-Rollen, -Richtlinien und -Guardrails für die Bereitstellung und den Betrieb der Studio-Domäne beschrieben. SageMaker

IAM-Rollen und -Richtlinien

Als bewährte Methode sollten Sie zunächst die relevanten Personen und Anwendungen, die sogenannten Principals, identifizieren, die am ML-Lebenszyklus beteiligt sind, und die AWS Berechtigungen, die Sie ihnen gewähren müssen. Wie SageMaker bei einem verwalteten Dienst müssen Sie auch Service Principals berücksichtigen. Dabei handelt es sich um AWS Dienste, die API-Aufrufe im Namen eines Benutzers tätigen können. Das folgende Diagramm zeigt die verschiedenen IAM-Rollen, die Sie möglicherweise erstellen möchten, und zwar entsprechend den verschiedenen Personas in der Organisation.

Ein Diagramm, das IAM-Rollen darstellt. SageMaker

SageMaker IAM-Rollen

Diese Rollen werden ausführlich beschrieben, zusammen mit einigen Beispielen für spezifische IAM-Berechtigungen, die sie benötigen.

  • ML-Admin-Benutzerrolle — Dies ist ein Principal, der die Umgebung für Datenwissenschaftler bereitstellt, indem er Studio-Domains und Benutzerprofile (sagemaker:CreateDomain,sagemaker:CreateUserProfile) erstellt, () -Schlüssel für Benutzer erstelltAWS Key Management Service, S3-Buckets für Datenwissenschaftler erstellt und Amazon ECR-Repositorys zur Unterbringung von Containern erstellt. AWS KMS Sie können auch Standardkonfigurationen und Lebenszyklusskripte für Benutzer festlegen, benutzerdefinierte Images erstellen und an die SageMaker Studio-Domain anhängen und Service Catalog-Produkte wie benutzerdefinierte Projekte und Amazon EMR-Vorlagen bereitstellen.

    Da dieser Schulleiter beispielsweise keine Trainingsjobs ausführt, benötigt er keine Berechtigungen, um SageMaker Schulungs- oder Verarbeitungsjobs zu starten. Wenn sie Infrastruktur als Codevorlagen verwenden, z. B. CloudFormation Terraform, um Domänen und Benutzer bereitzustellen, würde diese Rolle vom Bereitstellungsdienst übernommen, der die Ressourcen im Namen des Administrators erstellt. Diese Rolle hat möglicherweise nur Lesezugriff auf die Verwendung von. SageMaker AWS Management Console

    Diese Benutzerrolle benötigt außerdem bestimmte EC2-Berechtigungen, um die Domain in einer privaten VPC zu starten, KMS-Berechtigungen zum Verschlüsseln des EFS-Volumes sowie Berechtigungen zum Erstellen einer dienstverknüpften Rolle für Studio (). iam:CreateServiceLinkedRole Wir werden diese detaillierten Berechtigungen später in diesem Dokument beschreiben.

  • Benutzerrolle „Data Scientist“ — Bei diesem Prinzipal handelt es sich um den Benutzer, der sich bei SageMaker Studio anmeldet, die Daten untersucht, Verarbeitungs- und Schulungsaufträge und Pipelines erstellt usw. Die primäre Berechtigung, die der Benutzer benötigt, ist die Erlaubnis, SageMaker Studio zu starten. Die übrigen Richtlinien können von der SageMaker Ausführungsdienst-Rolle verwaltet werden.

  • SageMaker Ausführungsdienst-Rolle — Da SageMaker es sich um einen verwalteten Dienst handelt, startet er Jobs im Namen eines Benutzers. Diese Rolle ist häufig die umfassendste, was die erlaubten Berechtigungen angeht, da sich viele Kunden dafür entscheiden, eine einzige Ausführungsrolle zu verwenden, um Trainingsjobs, Verarbeitungsjobs oder Modelhosting-Jobs auszuführen. Dies ist zwar ein einfacher Einstieg, da Kunden mit der Zeit reifer werden, aber sie teilen die Notebook-Ausführungsrolle häufig in separate Rollen für verschiedene API-Aktionen auf, insbesondere wenn diese Jobs in bereitgestellten Umgebungen ausgeführt werden.

    Bei der Erstellung ordnen Sie der SageMaker Studio-Domäne eine Rolle zu. Da Kunden jedoch die Flexibilität benötigen, den verschiedenen Benutzerprofilen in der Domäne unterschiedliche Rollen zuzuordnen (z. B. je nach ihrer beruflichen Funktion), können Sie jedem Benutzerprofil auch eine separate IAM-Rolle zuordnen. Wir empfehlen, dass Sie einen einzelnen physischen Benutzer einem einzelnen Benutzerprofil zuordnen. Wenn Sie einem Benutzerprofil bei der Erstellung keine Rolle zuordnen, besteht das Standardverhalten darin, die Rolle für die SageMakerStudio Domänenausführung auch dem Benutzerprofil zuzuordnen.

    In Fällen, in denen mehrere Datenwissenschaftler und ML-Techniker an einem Projekt zusammenarbeiten und ein gemeinsames Berechtigungsmodell für den Zugriff auf Ressourcen benötigen, empfehlen wir Ihnen, eine SageMaker Dienstausführungsrolle auf Teamebene zu erstellen, um die IAM-Berechtigungen mit Ihren Teammitgliedern gemeinsam zu nutzen. In den Fällen, in denen Sie die Berechtigungen auf jeder Benutzerebene sperren müssen, können Sie eine individuelle SageMaker Dienstausführungsrolle auf Benutzerebene erstellen. Dabei müssen Sie jedoch Ihre Dienstlimits beachten.

SageMaker Workflow zur Autorisierung von Studio-Notebooks

In diesem Abschnitt wird erläutert, wie die SageMaker Studio Notebook-Autorisierung für verschiedene Aktivitäten funktioniert, die der Data Scientist für die Erstellung und das Training des Modells direkt im SageMaker Studio Notebook ausführen muss. Die SageMaker Domain unterstützt zwei Autorisierungsmodi:

  • IAM-Föderation

  • IAM Identity Center

Als Nächstes führt Sie dieses paper durch den Data Scientist-Autorisierungsworkflow für jeden dieser Modi.

Ein Diagramm, das den Authentifizierungs- und Autorisierungsablauf für Studio-Benutzer darstellt.

Der Authentifizierungs- und Autorisierungsablauf für Studio-Benutzer

IAM Federation: SageMaker Studio-Notebook-Workflows

  1. Ein Data Scientist authentifiziert sich bei seinem Corporate Identity Provider und übernimmt in der Konsole die Data Scientist-Benutzerrolle (die Benutzerverbundrolle). SageMaker Diese Verbundrolle verfügt über iam:PassRole API-Berechtigungen für die SageMaker Ausführungsrolle, um die Rolle Amazon Resource Name (ARN) an SageMaker Studio zu übergeben.

  2. Der Data Scientist wählt den Open Studio-Link aus seinem Studio IAM-Benutzerprofil aus, der der SageMaker Ausführungsrolle zugeordnet ist

  3. Der SageMaker Studio-IDE-Dienst wird gestartet, wobei die SageMaker Ausführungsrollenberechtigungen des Benutzerprofils vorausgesetzt werden. Diese Rolle verfügt über iam:PassRole API-Berechtigungen für die SageMaker Ausführungsrolle, um den Rollen-ARN an den SageMaker Trainingsdienst zu übergeben.

  4. Wenn Data Scientist den Trainingsjob in den Remote-Compute-Knoten startet, wird der ARN für die SageMaker Ausführungsrolle an den SageMaker Trainingsdienst übergeben. Dadurch wird eine neue Rollensitzung mit diesem ARN erstellt und der Trainingsjob ausgeführt. Wenn Sie die Berechtigungen für einen Schulungsjob weiter einschränken müssen, können Sie eine trainingsspezifische Rolle erstellen und diese Rolle beim Aufrufen der Schulungs-API den ARN für diese Rolle übergeben.

IAM Identity Center: Arbeitsablauf in SageMaker Studio Notebook

  1. Der Data Scientist authentifiziert sich bei seinem Corporate Identity Provider und klickt auf AWS IAM Identity Center. Dem Data Scientist wird das Identity Center-Portal für den Benutzer angezeigt.

  2. Der Data Scientist klickt auf den SageMaker Studio-App-Link, der in seinem IdC-Benutzerprofil erstellt wurde und der SageMaker Ausführungsrolle zugeordnet ist.

  3. Der SageMaker Studio IDE-Dienst wird gestartet, wobei die SageMaker Ausführungsrollenberechtigungen des Benutzerprofils vorausgesetzt werden. Diese Rolle verfügt über iam:PassRole API-Berechtigungen für die SageMaker Ausführungsrolle, um den Rollen-ARN an den SageMaker Trainingsdienst zu übergeben.

  4. Wenn der Data Scientist den Trainingsjob in Remote-Compute-Knoten startet, wird der ARN für die SageMaker Ausführungsrolle an den SageMaker Trainingsdienst übergeben. Die Ausführungsrolle ARN erstellt eine neue Rollensitzung mit diesem ARN und führt den Trainingsjob aus. Wenn Sie die Berechtigungen für Schulungsjobs weiter einschränken müssen, können Sie eine trainingsspezifische Rolle erstellen und diese Rolle beim Aufrufen der Schulungs-API den ARN für diese Rolle übergeben.

Bereitgestellte Umgebung: SageMaker Schulungs-Workflow

In Bereitstellungsumgebungen wie Systemtests und Produktion werden Jobs über automatisierte Scheduler- und Event-Trigger ausgeführt, und der menschliche Zugriff auf diese Umgebungen ist von SageMaker Studio Notebooks aus eingeschränkt. In diesem Abschnitt wird erläutert, wie IAM-Rollen mit der SageMaker Trainingspipeline in der bereitgestellten Umgebung zusammenarbeiten.

Ein Diagramm, das einen SageMaker Schulungsablauf in einer verwalteten Produktionsumgebung darstellt.

SageMaker Schulungsablauf in einer verwalteten Produktionsumgebung

  1. Amazon EventBridge Scheduler löst den Job in der SageMaker Trainingspipeline aus.

  2. Der SageMaker Trainingspipeline-Job übernimmt die Rolle der SageMaker Trainingspipeline, um das Modell zu trainieren.

  3. Das trainierte SageMaker Modell ist im SageMaker Model Registry registriert.

  4. Ein ML-Techniker übernimmt die Benutzerrolle des ML-Technikers, um die Trainingspipeline und das SageMaker Modell zu verwalten.

Datenberechtigungen

Die Fähigkeit von SageMaker Studio-Benutzern, auf jede Datenquelle zuzugreifen, hängt von den Berechtigungen ab, die mit ihrer SageMaker IAM-Ausführungsrolle verknüpft sind. Die beigefügten Richtlinien können sie autorisieren, bestimmte Amazon S3 S3-Buckets oder -Präfixe zu lesen, zu schreiben oder zu löschen und eine Verbindung zu Amazon RDS-Datenbanken herzustellen.

Zugriff auf AWS Lake Formation-Daten

Viele Unternehmen haben damit begonnen, Data Lakes zu nutzen, die von gesteuert werden AWS Lake Formation, um ihren Benutzern einen detaillierten Datenzugriff zu ermöglichen. Als Beispiel für solche verwalteten Daten können Administratoren sensible Spalten für einige Benutzer maskieren und gleichzeitig Abfragen derselben Basistabelle ermöglichen.

Um Lake Formation von SageMaker Studio aus zu nutzen, können Administratoren SageMaker IAM-Ausführungsrollen als DataLakePrincipals registrieren. Weitere Informationen finden Sie unter Lake Formation Permissions Reference. Nach der Autorisierung gibt es drei Hauptmethoden für den Zugriff auf und das Schreiben von verwalteten Daten in SageMaker Studio:

  1. Von einem SageMaker Studio-Notebook aus können Benutzer Abfrage-Engines wie Amazon Athena oder Bibliotheken verwenden, die auf boto3 aufbauen, um Daten direkt auf das Notebook zu übertragen. Das AWS-SDK für Pandas (früher bekannt als awswrangler) ist eine beliebte Bibliothek. Im Folgenden finden Sie ein Codebeispiel, das zeigt, wie nahtlos dies sein kann:

    transaction_id = wr.lakeformation.start_transaction(read_only=True) df = wr.lakeformation.read_sql_query( sql=f"SELECT * FROM {table};", database=database, transaction_id=transaction_id )
  2. Verwenden Sie die native SageMaker Studio-Konnektivität zu Amazon EMR, um Daten in großem Umfang zu lesen und zu schreiben. Durch die Verwendung von Apache Livy- und Amazon EMR-Laufzeitrollen verfügt SageMaker Studio über eine native Konnektivität, mit der Sie Ihre SageMaker Ausführungs-IAM-Rolle (oder eine andere autorisierte Rolle) für den Datenzugriff und die Datenverarbeitung an einen Amazon EMR-Cluster übergeben können. up-to-dateAnweisungen finden Sie unter Connect zu einem Amazon EMR-Cluster von Studio aus herstellen.

    Ein Diagramm, das eine Architektur für den Zugriff auf von Lake Formation verwaltete Daten von SageMaker Studio aus darstellt.

    Architektur für den Zugriff auf Daten, die von Lake Formation aus SageMaker Studio verwaltet werden

  3. Verwenden Sie die native Konnektivität von SageMaker Studio für AWS Glueinteraktive Sitzungen, um Daten in großem Umfang zu lesen und zu schreiben. SageMaker Studio-Notebooks verfügen über integrierte Kernel, auf denen Benutzer Befehle interaktiv ausführen können. AWS Glue Dies ermöglicht die skalierbare Verwendung von Python-, Spark- oder Ray-Backends, mit denen Daten aus kontrollierten Datenquellen problemlos in großem Umfang gelesen und geschrieben werden können. Die Kernel ermöglichen es Benutzern, ihre SageMaker Ausführungs- oder andere autorisierte IAM-Rollen zu übergeben. Weitere Informationen finden Sie unter Daten mithilfe AWS Glue interaktiver Sitzungen vorbereiten.

Gemeinsame Leitplanken

In diesem Abschnitt werden die am häufigsten verwendeten Leitplanken für die Anwendung von Governance auf Ihre ML-Ressourcen mithilfe von IAM-Richtlinien, Ressourcenrichtlinien, VPC-Endpunktrichtlinien und Service Control Policies (SCPs) beschrieben.

Beschränken Sie den Notebook-Zugriff auf bestimmte Instanzen

Diese Dienststeuerungsrichtlinie kann verwendet werden, um die Instanztypen einzuschränken, auf die Datenwissenschaftler bei der Erstellung von Studio-Notebooks Zugriff haben. Beachten Sie, dass jeder Benutzer die „System“ -Instanz benötigt, die berechtigt ist, die standardmäßige Jupyter Server-App zu erstellen, die Studio hostet. SageMaker

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LimitInstanceTypesforNotebooks", "Effect": "Deny", "Action": [ "sagemaker:CreateApp" ], "Resource": "*", "Condition": { "ForAnyValue:StringNotLike": { "sagemaker:InstanceTypes": [ "ml.c5.large", "ml.m5.large", "ml.t3.medium", "system" ] } } } ] }

Beschränken Sie nicht konforme Studio-Domänen SageMaker

Für SageMaker Studio-Domänen kann die folgende Dienststeuerungsrichtlinie verwendet werden, um den Datenverkehr für den Zugriff auf Kundenressourcen zu erzwingen, sodass dieser nicht über das öffentliche Internet, sondern über die VPC eines Kunden übertragen wird:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LockDownStudioDomain", "Effect": "Deny", "Action": [ "sagemaker:CreateDomain" ], "Resource": "*", "Condition": { "StringNotEquals": {"sagemaker:AppNetworkAccessType": "VpcOnly" }, "Null": { "sagemaker:VpcSubnets": "true", "sagemaker:VpcSecurityGroupIds": "true" } } } ] }

Beschränken Sie das Starten nicht autorisierter Bilder SageMaker

Die folgende Richtlinie verhindert, dass ein Benutzer ein nicht autorisiertes SageMaker Bild in seiner Domäne startet:f

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:CreateApp" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringNotLike": { "sagemaker:ImageArns": [ "arn:aws:sagemaker:*:*:image/{ImageName}" ] } } } ] }

Starten Sie Notebooks nur über SageMaker VPC-Endpunkte

SageMaker Unterstützt zusätzlich zu VPC-Endpunkten für die SageMaker Steuerungsebene VPC-Endpunkte, mit denen Benutzer eine Verbindung zu SageMakerStudio-Notebooks oder Notebook-Instanzen herstellen können. SageMaker Wenn Sie bereits einen VPC-Endpunkt für eine SageMaker Studio-/Notebook-Instanz eingerichtet haben, erlaubt der folgende IAM-Bedingungsschlüssel nur Verbindungen zu SageMaker Studio-Notebooks, wenn sie über den SageMaker Studio VPC-Endpunkt oder über den API-Endpunkt hergestellt werden. SageMaker

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableSageMakerStudioAccessviaVPCEndpoint", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeUserProfile" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:sourceVpce": [ "vpce-111bbccc", "vpce-111bbddd" ] } } } ] }

Beschränken Sie den Zugriff auf SageMaker Studio-Notebooks auf einen begrenzten IP-Bereich

Unternehmen beschränken den SageMaker Studio-Zugriff häufig auf bestimmte zulässige Unternehmens-IP-Bereiche. Die folgende IAM-Richtlinie mit dem SourceIP Bedingungsschlüssel kann dies einschränken.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableSageMakerStudioAccess", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeUserProfile" ], "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }

Verhindern Sie, dass SageMaker Studio-Benutzer auf andere Benutzerprofile zugreifen

Stellen Sie als Administrator beim Erstellen des Benutzerprofils sicher, dass das Profil mit dem SageMaker Studio-Benutzernamen und dem Tag-Schlüssel gekennzeichnet iststudiouserid. Der Prinzipal (Benutzer oder Rolle, die dem Benutzer zugewiesen ist) sollte ebenfalls über ein Tag mit dem Schlüssel verfügen studiouserid (dieses Tag kann beliebig benannt werden und ist nicht darauf beschränktstudiouserid).

Fügen Sie als Nächstes der Rolle, die der Benutzer beim Starten von SageMaker Studio annehmen wird, die folgende Richtlinie hinzu.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AmazonSageMakerPresignedUrlPolicy", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:ResourceTag/studiouserid": "${aws:PrincipalTag/studiouserid}" } } } ] }

Tagging erzwingen

Datenwissenschaftler müssen SageMaker Studio-Notebooks verwenden, um Daten zu untersuchen und Modelle zu erstellen und zu trainieren. Das Anbringen von Tags auf Notebooks hilft bei der Überwachung der Nutzung und der Kostenkontrolle sowie bei der Sicherstellung der Eigentumsrechte und der Überprüfbarkeit.

Stellen Sie bei SageMaker Studio-Apps sicher, dass das Benutzerprofil markiert ist. Tags werden automatisch aus dem Benutzerprofil an Apps weitergegeben. Um die Erstellung von Benutzerprofilen mit Tags (unterstützt über CLI und SDK) zu erzwingen, sollten Sie erwägen, diese Richtlinie der Administratorrolle hinzuzufügen:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceUserProfileTags", "Effect": "Allow", "Action": "sagemaker:CreateUserProfile", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": [ "studiouserid" ] } } } ] }

Für andere Ressourcen, wie z. B. Trainingsjobs und Verarbeitungsjobs, können Sie mithilfe der folgenden Richtlinie Tags verpflichtend machen:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceTagsForJobs", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateProcessingJob", ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": [ "studiouserid" ] } } } ] }

Root-Zugriff in SageMaker Studio

In SageMaker Studio läuft das Notebook in einem Docker-Container, der standardmäßig keinen Root-Zugriff auf die Host-Instanz hat. In ähnlicher Weise werden alle anderen Benutzer-ID-Bereiche innerhalb des Containers, mit Ausnahme des standardmäßigen Run-as-Users, auf der Host-Instanz selbst als Benutzer-IDs ohne Zugriffsrechte neu zugeordnet. Daher beschränkt sich die Gefahr einer Rechteausweitung auf den Notebook-Container selbst.

Wenn Sie benutzerdefinierte Images erstellen, möchten Sie Ihrem Benutzer möglicherweise andere Rechte als Root-Rechte zur Verfügung stellen, um strengere Kontrollen zu ermöglichen. So können Sie beispielsweise verhindern, dass unerwünschte Prozesse als Root-Benutzer ausgeführt werden oder öffentlich verfügbare Pakete installiert werden. In solchen Fällen können Sie das Image so erstellen, dass es als Nicht-Root-Benutzer innerhalb der Docker-Datei ausgeführt wird. Unabhängig davon, ob Sie den Benutzer als Root oder als Nicht-Root-Benutzer erstellen, müssen Sie sicherstellen, dass die UID/GID des Benutzers mit der UID/GID in der für die benutzerdefinierte App angegebenen identisch ist, die die Konfiguration AppImageConfigfür die Ausführung einer App mit dem benutzerdefinierten Image erstellt. SageMaker Wenn Ihr Dockerfile beispielsweise für einen Benutzer erstellt wurde, der kein Root-Benutzer ist, wie zum Beispiel den folgenden:

ARG NB_UID="1000" ARG NB_GID="100" ... USER $NB_UID

Die AppImageConfig Datei muss dieselbe UID und GID enthalten: KernelGatewayConfig

{ "KernelGatewayImageConfig": { "FileSystemConfig": { "DefaultUid": 1000, "DefaultGid": 100 } } }

Die akzeptablen UID/GID-Werte für benutzerdefinierte Bilder sind 0/0 und 1000/100 für Studio-Bilder. Beispiele für die Erstellung benutzerdefinierter Images und die zugehörigen AppImageConfig Einstellungen finden Sie in diesem Github-Repository.

Um zu verhindern, dass Benutzer dies manipulieren, gewähren Sie SageMaker Studio-Notebook-Benutzern keine DeleteAppImageConfig Berechtigungen wie CreateAppImageConfigUpdateAppImageConfig, oder.