Beschränken Sie die Anzahl von Pushs und Merges auf Branches in AWS CodeCommit - AWS CodeCommit

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 die Anzahl von Pushs und Merges auf Branches in AWS CodeCommit

Standardmäßig kann jeder CodeCommit Repository-Benutzer, der über ausreichende Berechtigungen verfügt, um Code in das Repository zu übertragen, zu jedem Branch in diesem Repository beitragen. Dies gilt unabhängig davon, wie Sie einen Branch zum Repository hinzuzufügen: über die Konsole, die Befehlszeile oder Git. Sie können jedoch einen Branch konfigurieren, sodass nur einige Repository-Benutzer Code zu diesem Branch senden oder mit ihm zusammenführen können. Beispielsweise können Sie eine Verzweigung für den Produktionscode so konfigurieren, dass nur bestimmte erfahrene Entwickler Änderungen an dieser Verzweigung vornehmen oder zusammenführen können. Andere Entwickler können etwas aus der Verzweigung abrufen, ihre eigenen Verzweigungen erstellen und Pull-Anforderungen erstellen, aber sie können keine Änderungen an diese Verzweigung senden oder mit dieser zusammenführen. Sie können diesen Zugriff konfigurieren, indem Sie eine bedingte Richtlinie erstellen, die einen Kontextschlüssel für einen oder mehrere Zweige in IAM verwendet.

Anmerkung

Um einige der Verfahren in diesem Thema abzuschließen, müssen Sie sich mit einem Administratorbenutzer anmelden, der über ausreichende Berechtigungen zum Konfigurieren und Anwenden von IAM-Richtlinien verfügt. Weitere Informationen finden Sie unter Einen IAM-Admin-Benutzer und eine IAM-Admin-Gruppe erstellen.

Konfigurieren Sie eine IAM-Richtlinie, um Pushs und Merges auf einen Branch zu beschränken

Sie können in IAM eine Richtlinie erstellen, die verhindert, dass Benutzer einen Branch aktualisieren, einschließlich der Übertragung von Commits an einen Branch und der Zusammenführung von Pull-Requests an einen Branch. Dazu verwendet Ihre Richtlinie eine bedingte Anweisung, sodass die Wirkung der Anweisung Deny nur stattfindet, wenn die Bedingung erfüllt ist. Die APIs, die Sie in die Anweisung Deny aufnehmen, bestimmen, welche Aktionen nicht erlaubt sind. Sie können diese Richtlinie so konfigurieren, dass sie nur für einen Branch in einem Repository, eine Reihe von Branches in einem Repository oder für alle Branches gilt, die den Kriterien in allen Repositorys in einem Amazon Web Services Services-Konto entsprechen.

So erstellen Sie eine bedingte Richtlinie für Verzweigungen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Richtlinien.

  3. Wählen Sie Richtlinie erstellen aus.

  4. Wählen Sie JSON, und fügen Sie dann die folgende Beispielrichtlinie ein. Ersetzen Sie den Wert von Resource durch den ARN des Repositories, das die Verzweigung enthält, für die Sie den Zugriff einschränken möchten. Ersetzen Sie den Wert von codecommit:References durch einen Verweis auf den Branch oder die Branches, für die Sie den Zugriff einschränken möchten. Diese Richtlinie verbietet beispielsweise das Senden von Commits, das Zusammenführen von Branches, das Löschen von Branches, das Zusammenführen von Pull-Requests und das Hinzufügen von Dateien zu einem Branch mit dem Namen und einem Branch mit dem Namen mainin einem Repository mit dem Namenprod: MyDemoRepo

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:GitPush", "codecommit:DeleteBranch", "codecommit:PutFile", "codecommit:MergeBranchesByFastForward", "codecommit:MergeBranchesBySquash", "codecommit:MergeBranchesByThreeWay", "codecommit:MergePullRequestByFastForward", "codecommit:MergePullRequestBySquash", "codecommit:MergePullRequestByThreeWay" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/main", "refs/heads/prod" ] }, "Null": { "codecommit:References": "false" } } } ] }

    Branches in Git sind einfach Zeiger (Referenzen) auf den SHA-1-Wert des HEAD-Commit, weshalb die Bedingung References verwendet. Die Null -Anweisung in jeder Richtlinie erforderlich, die ein Deny bewirkt, und wobei eine der Aktionen GitPush ist. Dies ist aufgrund der Art und Weise erforderlich, wie Git und Git git-receive-pack funktionieren, wenn Änderungen von einem lokalen Repo übertragen werden CodeCommit.

    Tipp

    Um eine Richtlinie zu erstellen, die für alle Branches mit dem Namen main in allen Repositorys eines Amazon Web Services Services-Kontos gilt, ändern Sie den Wert Resource von einem Repository-ARN in ein Sternchen ()*.

  5. Wählen Sie Richtlinie prüfen. Korrigieren Sie alle Fehler in Ihrer Richtlinienanweisung und fahren Sie dann mit Create policy (Richtlinie erstellen) fort.

  6. Wenn JSON validiert wird, wird die Seite Seite Create policy (Richtlinie erstellen) angezeigt. Eine Warnung wird im Abschnitt Summary (Zusammenfassung angezeigt, die Sie darauf hinweist, dass diese Richtlinie keine Berechtigungen gewährt. Das ist normal.

    • Geben Sie unter Name einen Namen für diese Richtlinie wie DenyChangesToMain ein.

    • Geben Sie in Description (Beschreibung) eine Beschreibung zum Zweck der Richtlinie ein. Dies ist zwar optional, wird aber empfohlen.

    • Wählen Sie Richtlinie erstellen aus.

Wenden Sie die IAM-Richtlinie auf eine IAM-Gruppe oder -Rolle an

Sie haben eine Richtlinie erstellt, die Push- und Merge-Vorgänge auf einen Branch beschränkt, aber die Richtlinie ist erst wirksam, wenn Sie sie auf einen IAM-Benutzer, eine IAM-Gruppe oder eine IAM-Rolle anwenden. Es hat sich bewährt, die Richtlinie auf eine IAM-Gruppe oder -Rolle anzuwenden. Die Anwendung von Richtlinien auf einzelne IAM-Benutzer lässt sich nicht gut skalieren.

Anwendung der bedingten Richtlinie auf eine Gruppe oder Rolle
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wenn Sie die Richtlinie auf eine IAM-Gruppe anwenden möchten, wählen Sie im Navigationsbereich Gruppen aus. Wenn Sie die Richtlinie auf eine Rolle anwenden möchten, die Benutzer übernehmen, wählen Sie Rolle aus. Wählen Sie den Namen der Gruppe oder Rolle aus.

  3. Wählen Sie auf der Registerkarte Permissions (Berechtigungen) die Option Attach Policy (Richtlinie zuweisen) aus.

  4. Wählen Sie die bedingte Richtlinie, die Sie zuvor erstellt haben, aus der Liste der Richtlinien aus, und klicken Sie auf Attach policy (Richtlinie hinzufügen).

Weitere Informationen finden Sie unter IAM-Richtlinien anhängen und trennen.

Testen Sie die Richtlinie

Sie sollten die Auswirkungen der von Ihnen auf die Gruppe oder Rolle angewendeten Richtlinie testen, um sicherzustellen, dass sie wie erwartet funktioniert. Es gibt viele Möglichkeiten, dies zu realisieren. Wenn Sie beispielsweise eine ähnliche Richtlinie wie die oben gezeigte testen möchten, können Sie wie folgt vorgehen:

  • Melden Sie sich bei der CodeCommit Konsole mit einem IAM-Benutzer an, der entweder Mitglied einer IAM-Gruppe ist, auf die die Richtlinie angewendet wurde, oder der eine Rolle annimmt, auf die die Richtlinie angewendet wurde. In der Konsole fügen Sie der Verzweigung, für die die Einschränkungen gelten, eine Datei hinzu. Sie sollten eine Fehlermeldung sehen, wenn Sie versuchen, eine Datei in dieser Verzweigung zu speichern oder eine Datei in die Verzweigung hochzuladen. Fügen Sie einer anderen Verzweigung eine Datei hinzu. Die Operation sollte erfolgreich sein.

  • Melden Sie sich bei der CodeCommit Konsole mit einem IAM-Benutzer an, der entweder Mitglied einer IAM-Gruppe ist, auf die die Richtlinie angewendet wurde, oder der eine Rolle annimmt, auf die die Richtlinie angewendet wurde. Erstellen Sie eine Pull-Anforderung, die mit dem Branch zusammengeführt wird, für den die Einschränkungen gelten. Sie sollten in der Lage sein, die Pull-Anforderung zu erstellen, erhalten aber einen Fehler, wenn Sie versuchen, sie zusammenzuführen.

  • Erstellen Sie über das Terminal oder die Befehlszeile einen Commit für den Branch, für den die Einschränkungen gelten, und übertragen Sie diesen Commit dann per Push in das CodeCommit Repository. Sie sollten eine Fehlermeldung sehen. Commits und Sendeoperationen von anderen Verzweigungen aus sollten wie gewohnt funktionieren.