AWS CodeCommit ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. Erfahren Sie mehr“
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 Verzweigungen in verwendetIAM.
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 IAM Anwenden von Richtlinien verfügt. Weitere Informationen finden Sie unter IAMAdmin-Benutzer und Administratorgruppe erstellen.
Themen
Konfigurieren Sie eine IAM Richtlinie, um Pushs und Merges auf einen Branch zu beschränken
Sie können eine Richtlinie erstellenIAM, 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 AngabenAPIs, die Sie in die Deny
Anweisung aufnehmen, bestimmen, welche Aktionen nicht zulässig 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
-
Melden Sie sich bei der an AWS Management Console und öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich Richtlinien.
-
Wählen Sie Create Policy (Richtlinie erstellen) aus.
-
Wählen Sie JSONdie folgende Beispielrichtlinie aus, und fügen Sie sie ein. Ersetzen Sie den Wert von
Resource
durch den Wert ARN des Repositorys, das den Branch enthält, für den Sie den Zugriff einschränken möchten. Ersetzen Sie den Wert voncodecommit:References
durch einen Verweis auf den Branch oder die Branches, für die Sie den Zugriff einschränken möchten. Mit dieser Richtlinie werden beispielsweise das Pushen von Commits, das Zusammenführen von Branches, das Löschen von Branches, das Löschen von Dateien, das Zusammenführen von Pull-Requests und das Hinzufügen von Dateien zu einem Branch mit dem Namen verweigert
und ein Zweig mit dem NamenHaupt
in einem Repository mit dem Namenprod
:MyDemoRepo
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:GitPush", "codecommit:DeleteBranch", "codecommit:DeleteFile", "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 (Verweise) auf den Wert SHA -1 des Head-Commits, weshalb die Bedingung verwendet
References
. DieNull
-Anweisung in jeder Richtlinie erforderlich, die einDeny
bewirkt, und wobei eine der AktionenGitPush
ist. Dies ist aufgrund der Art und Weise erforderlich, wie Git und Gitgit-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 von
Resource
von einem Repository ARN in ein Sternchen ()*
. -
Wählen Sie Richtlinie prüfen. Korrigieren Sie alle Fehler in Ihrer Richtlinienanweisung und fahren Sie dann mit Create policy (Richtlinie erstellen) fort.
-
Wenn das validiert JSON ist, wird die Seite 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 Create Policy (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 Zweig beschränkt, aber die Richtlinie ist erst wirksam, wenn Sie sie auf einen IAM Benutzer, eine Gruppe oder eine 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
-
Melden Sie sich bei der an AWS Management Console und öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
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.
-
Wählen Sie auf der Registerkarte Permissions (Berechtigungen) die Option Attach Policy (Richtlinie zuweisen) aus.
-
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 Richtlinien anhängen und trennen IAM.
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.