SageMaker Notebook-Instances temporären Zugriff auf ein CodeCommit Repository in einem anderen AWS-Konto gewähren - AWS Prescriptive Guidance

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.

SageMaker Notebook-Instances temporären Zugriff auf ein CodeCommit Repository in einem anderen AWS-Konto gewähren

Erstellt von Helge Aufderheide (AWS)

Umgebung: Produktion

Technologien: Analytik DevOps, maschinelles Lernen und KI, Management und Unternehmensführung

AWS-Services: AWS CodeCommit; AWS Identity and Access Management; Amazon SageMaker

Übersicht

Dieses Muster zeigt, wie Amazon SageMaker Notebook-Instances und Benutzern temporären Zugriff auf ein CodeCommit AWS-Repository gewährt wird, das sich in einem anderen AWS-Konto befindet. Dieses Muster zeigt auch, wie Sie detaillierte Berechtigungen für bestimmte Aktionen gewähren können, die jede Entität in jedem Repository ausführen kann.

Organizations speichern CodeCommit Repositorys häufig in einem anderen AWS-Konto als dem Konto, das ihre Entwicklungsumgebung hostet. Diese Einrichtung mit mehreren Konten hilft bei der Kontrolle des Zugriffs auf die Repositorys und reduziert das Risiko, dass sie versehentlich gelöscht werden. Um diese kontoübergreifenden Berechtigungen zu gewähren, empfiehlt es sich, AWS Identity and Access Management (IAM) -Rollen zu verwenden. Anschließend können vordefinierte IAM-Identitäten in jedem AWS-Konto vorübergehend die Rollen übernehmen, um eine kontrollierte Vertrauenskette zwischen den Konten aufzubauen.

Hinweis: Sie können ein ähnliches Verfahren anwenden, um anderen IAM-Identitäten kontoübergreifenden Zugriff auf ein Repository zu gewähren. CodeCommit Weitere Informationen finden Sie unter Kontenübergreifendes Zugriff auf ein CodeCommit AWS-Repository mithilfe von Rollen konfigurieren im CodeCommit AWS-Benutzerhandbuch.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS-Konto mit einem CodeCommit Repository (Konto A)

  • Ein zweites aktives AWS-Konto mit einer SageMaker Notebook-Instance (Konto B)

  • Ein AWS-Benutzer mit ausreichenden Berechtigungen zum Erstellen und Ändern von IAM-Rollen in Konto A

  • Ein zweiter AWS-Benutzer mit ausreichenden Berechtigungen zum Erstellen und Ändern von IAM-Rollen in Konto B

Architektur

Das folgende Diagramm zeigt einen Beispiel-Workflow, um einer SageMaker Notebook-Instance und Benutzern in einem AWS-Konto kontoübergreifenden Zugriff auf ein CodeCommit Repository zu gewähren:

Workflow für kontoübergreifenden Zugriff auf CodeCommit

Das Diagramm zeigt den folgenden Workflow:

  1. Die AWS-Benutzerrolle und die SageMaker Notebook-Instance-Rolle in Konto B gehen von einem benannten Profil aus.

  2. Die Berechtigungsrichtlinie des benannten Profils spezifiziert eine CodeCommit Zugriffsrolle in Konto A, die das Profil dann annimmt.

  3. Die Vertrauensrichtlinie der CodeCommit Zugriffsrolle in Konto A ermöglicht es dem benannten Profil in Konto B, die CodeCommit Zugriffsrolle zu übernehmen.

  4. Die IAM-Berechtigungsrichtlinie des CodeCommit Repositorys in Konto A ermöglicht der CodeCommit Zugriffsrolle den Zugriff auf das CodeCommit Repository.

Technologie-Stack

  • CodeCommit

  • Git

  • IAM

  • pip

  • SageMaker

Tools

  • AWS CodeCommit ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.

  • Mit AWS Identity and Access Management (IAM) können Sie den Zugriff auf Ihre AWS-Ressourcen sicher verwalten, indem Sie kontrollieren, wer authentifiziert und autorisiert ist, diese zu verwenden.

  • Git ist ein verteiltes Versionskontrollsystem zur Nachverfolgung von Änderungen im Quellcode während der Softwareentwicklung.

  • git-remote-codecommitist ein Hilfsprogramm, mit dem du Code aus CodeCommit Repositorys pushen und abrufen kannst, indem es Git erweitert.

  • pip ist der Paket-Installer für Python. Sie können pip verwenden, um Pakete aus dem Python-Paketindex und anderen Indizes zu installieren.

Bewährte Methoden

Wenn Sie Berechtigungen mit IAM-Richtlinien festlegen, stellen Sie sicher, dass Sie nur die für die Ausführung einer Aufgabe erforderlichen Berechtigungen gewähren. Weitere Informationen finden Sie unter Geringste Berechtigungen anwenden in der IAM-Dokumentation.

Achten Sie bei der Implementierung dieses Musters darauf, dass Sie wie folgt vorgehen:

  • Vergewissern Sie sich, dass die IAM-Prinzipien nur über die Berechtigungen verfügen, die für die Durchführung bestimmter, erforderlicher Aktionen innerhalb jedes Repositorys erforderlich sind. Es wird beispielsweise empfohlen, genehmigten IAM-Prinzipien die Übertragung und Zusammenführung von Änderungen an bestimmten Repository-Branches zu gestatten, aber nur Zusammenführungen mit geschützten Branches anzufordern.

  • Vergewissern Sie sich, dass den IAM-Prinzipien je nach ihren jeweiligen Rollen und Verantwortlichkeiten für jedes Projekt unterschiedliche IAM-Rollen zugewiesen werden. Ein Entwickler hat beispielsweise andere Zugriffsberechtigungen als ein Release-Manager oder AWS-Administrator.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Konfigurieren Sie die CodeCommit Zugriffsrolle und die Berechtigungsrichtlinie.

Hinweis: Um den in diesem Epos dokumentierten manuellen Einrichtungsprozess zu automatisieren, können Sie eine CloudFormation AWS-Vorlage verwenden.

Gehen Sie in dem Konto, das das CodeCommit Repository enthält (Konto A), wie folgt vor:

  1. Erstellen Sie eine IAM-Rolle, die von der SageMaker Notebook-Instanzrolle in Konto B übernommen werden kann.

  2. Erstellen Sie eine IAM-Richtlinie, die Zugriff auf das Repository gewährt, und fügen Sie die Richtlinie der Rolle hinzu. Wählen Sie nur zu Testzwecken die von AWSCodeCommitPowerUserAWS verwaltete Richtlinie. Diese Richtlinie gewährt alle CodeCommit Berechtigungen mit Ausnahme der Möglichkeit, Ressourcen zu löschen.

  3. Ändern Sie die Vertrauensrichtlinie der Rolle, sodass Konto B als vertrauenswürdige Entität aufgeführt wird.

Wichtig: Bevor Sie dieses Setup in Ihre Produktionsumgebung verschieben, empfiehlt es sich, Ihre eigene IAM-Richtlinie zu schreiben, die Berechtigungen mit den geringsten Rechten anwendet. Weitere Informationen finden Sie im Abschnitt Zusätzliche Informationen dieses Musters.

Allgemein AWS, AWS DevOps

Erteilen Sie der Rolle der SageMaker Notebook-Instance in Konto B die Berechtigungen, um die CodeCommit Zugriffsrolle in Konto A zu übernehmen.

Gehen Sie in dem Konto, das die IAM-Rolle der SageMaker Notebook-Instanz enthält (Konto B), wie folgt vor:

  1. Erstellen Sie eine IAM-Richtlinie, die es einer IAM-Rolle oder einem IAM-Benutzer ermöglicht, die CodeCommit Zugriffsrolle in Konto A zu übernehmen.

    Beispiel für eine IAM-Berechtigungsrichtlinie, die es einer IAM-Rolle oder einem IAM-Benutzer ermöglicht, eine kontoübergreifende Rolle anzunehmen

    {   "Version": "2012-10-17",   "Statement": [       {     "Sid": "VisualEditor0",     "Effect": "Allow",     "Action": "sts:AssumeRole",     "Resource": "arn:aws:iam:::accountA_ID:role/accountArole_ID"   } }
  2. Ordnen Sie die Richtlinie der Rolle Ihrer SageMaker Notebook-Instanz in Konto B zu.

  3. Lassen Sie die Rolle der SageMaker Notebook-Instanz in Konto B die CodeCommit Zugriffsrolle in Konto A übernehmen.

Hinweis: Informationen zum Anzeigen des Amazon-Ressourcennamens (ARN) Ihres Repositorys finden Sie unter CodeCommit Repository-Details anzeigen im CodeCommit AWS-Benutzerhandbuch.

Allgemein AWS, AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Richten Sie ein Benutzerprofil auf der SageMaker AWS-Notebook-Instance ein, um die Rolle in Konto A zu übernehmen.

Wichtig: Stellen Sie sicher, dass Sie die neueste Version der AWS-Befehlszeilenschnittstelle (AWS CLI) installiert haben.

Gehen Sie in dem Konto, das die SageMaker Notebook-Instance enthält (Konto B), wie folgt vor:

  1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die SageMaker Konsole.

  2. Greifen Sie auf Ihre SageMaker Notebook-Instance zu. Die Jupyter-Schnittstelle wird geöffnet.

  3. Wählen Sie Neu und dann Terminal. In Ihrer Jupyter-Umgebung wird ein neues Terminalfenster geöffnet.

  4. Navigieren Sie zur Datei SageMaker ~/.aws/config der Notebook-Instanz. Fügen Sie dann der Datei ein Benutzerprofil hinzu, indem Sie die folgende Anweisung eingeben:

------.aws/config-------------- [profile remoterepouser] role_arn = arn:aws:iam::<ID of Account A>:role/<rolename> role_session_name = remoteaccesssession region = eu-west-1 credential_source = Ec2InstanceMetadata ----------------------------------
Allgemein AWS, AWS DevOps

Installieren Sie das git-remote-codecommit Hilfsprogramm.

Folgen Sie den Anweisungen in Schritt 2: Installation git-remote-codecommit im CodeCommit AWS-Benutzerhandbuch.

Data Scientist
AufgabeBeschreibungErforderliche Fähigkeiten

Greifen Sie mit Git-Befehlen oder auf das CodeCommit Repository zu SageMaker.

Um Git zu verwenden

IAM-Prinzipale, die die Rolle der SageMaker Notebook-Instanz in Konto B übernehmen, können jetzt Git-Befehle ausführen, um auf das CodeCommit Repository in Konto A zuzugreifen. Benutzer können beispielsweise Befehle wie git clonegit pull, und ausführen. git push

Anweisungen finden Sie unter Connect zu einem CodeCommit AWS-Repository herstellen im CodeCommit AWS-Benutzerhandbuch.

Informationen zur Verwendung von Git mit CodeCommit finden Sie unter Erste Schritte mit AWS CodeCommit im CodeCommit AWS-Benutzerhandbuch.

Zu verwenden SageMaker

Um Git von der SageMaker Konsole aus zu verwenden, müssen Sie Git erlauben, Anmeldeinformationen aus Ihrem CodeCommit Repository abzurufen. Anweisungen finden Sie in der SageMaker Dokumentation unter Verknüpfen eines CodeCommit Repositorys in einem anderen AWS-Konto mit einer Notebook-Instance.

Git, Bash-Konsole

Zugehörige Ressourcen

Zusätzliche Informationen

Beschränken CodeCommit von Berechtigungen auf bestimmte Aktionen

Um die Aktionen einzuschränken, die ein IAM-Principal im CodeCommit Repository ausführen kann, ändern Sie die Aktionen, die in der CodeCommit Zugriffsrichtlinie zulässig sind.

Weitere Informationen zu CodeCommit API-Vorgängen finden Sie in der CodeCommit Berechtigungsreferenz im CodeCommit AWS-Benutzerhandbuch.

Hinweis: Sie können die von AWSCodeCommitPowerUserAWS verwaltete Richtlinie auch an Ihren Anwendungsfall anpassen.

Beschränkung der CodeCommit Berechtigungen auf bestimmte Repositorys

Gehen Sie wie folgt vor, um eine mandantenfähige Umgebung zu erstellen, in der mehr als ein Code-Repository nur bestimmten Benutzern zugänglich ist:

  1. Erstellen Sie mehrere CodeCommit Zugriffsrollen in Konto A. Konfigurieren Sie anschließend die Vertrauensrichtlinie jeder Zugriffsrolle so, dass bestimmte Benutzer in Konto B die Rolle übernehmen können.

  2. Schränken Sie ein, welche Code-Repositorys jede Rolle annehmen kann, indem Sie der Richtlinie jeder CodeCommit Zugriffsrolle die Bedingung „Ressource“ hinzufügen.

Beispiel für eine „Ressource“ -Bedingung, die den Zugriff eines IAM-Prinzipals auf ein bestimmtes Repository einschränkt CodeCommit

"Resource" : [<REPOSITORY_ARN>,<REPOSITORY_ARN> ]

Hinweis: Um mehrere Code-Repositorys in demselben AWS-Konto identifizieren und unterscheiden zu können, können Sie den Namen der Repositorys unterschiedliche Präfixe zuweisen. Sie können Code-Repositorys beispielsweise mit Präfixen benennen, die unterschiedlichen Entwicklergruppen zugeordnet sind, wie myproject-subproject1-repo1 und myproject-subproject2-repo1. Anschließend können Sie eine IAM-Rolle für jede Entwicklergruppe auf der Grundlage der ihnen zugewiesenen Präfixe erstellen. Sie könnten beispielsweise eine Rolle mit dem Namen myproject-subproject1-repoaccess erstellen und ihr Zugriff auf alle Code-Repositorys gewähren, die das Präfix myproject-subproject1 enthalten.

Beispiel für eine „Ressource“ -Bedingung, die sich auf einen Code-Repository-ARN bezieht, der ein bestimmtes Präfix enthält

"Resource" : arn:aws:codecommit:<region>:<account-id>:myproject-subproject1-*