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.
Sie können Ihre eigenen benutzerdefinierten IAM-Richtlinien erstellen, um Berechtigungen für CodeCommit Aktionen und Ressourcen zu gewähren. Die benutzerdefinierten Richtlinien können Sie dann den IAM-Benutzern oder -Gruppen zuweisen, die diese Berechtigungen benötigen. Sie können auch Ihre eigenen benutzerdefinierten IAM-Richtlinien für die Integration zwischen CodeCommit und anderen AWS Diensten erstellen.
Themen
Beispiele für vom Kunden verwaltete Identitätsrichtlinien
Das folgende Beispiel für IAM-Richtlinien gewährt Berechtigungen für verschiedene CodeCommit Aktionen. Verwenden Sie sie, um den CodeCommit Zugriff für Ihre IAM-Benutzer und -Rollen einzuschränken. Diese Richtlinien steuern die Fähigkeit, Aktionen mit der CodeCommit Konsole, der API oder dem AWS CLI auszuführen. AWS SDKs
Anmerkung
Alle Beispiele verwenden die Region USA West (Oregon) (us-west-2) und enthalten ein fiktives Konto. IDs
Beispiele
Beispiel 1: Erlauben Sie einem Benutzer, Operationen CodeCommit in einem einzigen AWS-Region
Die folgende Berechtigungsrichtlinie verwendet ein Platzhalterzeichen ("codecommit:*"
), damit Benutzer alle CodeCommit Aktionen in der Region us-east-2 und nicht von anderen aus ausführen können. AWS-Regionen
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "codecommit:*",
"Resource": "arn:aws:codecommit:us-east-2:111111111111:*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "us-east-2"
}
}
},
{
"Effect": "Allow",
"Action": "codecommit:ListRepositories",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "us-east-2"
}
}
}
]
}
Beispiel 2: Erlaube einem Benutzer, Git für ein einzelnes Repository zu verwenden
CodeCommitIn gelten die GitPull
IAM-Richtlinienberechtigungen für jeden Git-Client-Befehl CodeCommit, von dem Daten abgerufen werden git fetchgit clone, einschließlich, usw. In ähnlicher Weise gelten die GitPush
IAM-Richtlinienberechtigungen für jeden Git-Client-Befehl, an den Daten gesendet CodeCommit werden. Wenn die GitPush
IAM-Richtlinienberechtigung beispielsweise auf gesetzt istAllow
, kann ein Benutzer das Löschen eines Branches mithilfe des Git-Protokolls vorantreiben. Dieser Push wird nicht von den Berechtigungen beeinflusst, die für diesen IAM-Benutzer auf den DeleteBranch
Vorgang angewendet wurden. Die DeleteBranch
Berechtigung gilt für Aktionen, die mit der Konsole, der AWS CLI SDKs, der und der API ausgeführt werden, aber nicht mit dem Git-Protokoll.
Das folgende Beispiel ermöglicht es dem angegebenen Benutzer, Daten aus dem angegebenen CodeCommit Repository abzurufen und dorthin zu pushenMyDemoRepo
:
{
"Version": "2012-10-17",
"Statement" : [
{
"Effect" : "Allow",
"Action" : [
"codecommit:GitPull",
"codecommit:GitPush"
],
"Resource" : "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo"
}
]
}
Beispiel 3: Erlaubt einem Benutzer, der von einem bestimmten IP-Adressbereich aus eine Verbindung herstellt, Zugriff auf ein Repository
Sie können eine Richtlinie erstellen, die es Benutzern nur dann erlaubt, sich mit einem CodeCommit-Repository zu verbinden, wenn ihre IP-Adresse innerhalb eines bestimmten IP-Adressbereichs liegt. Dazu gibt es zwei gleichwertige Ansätze. Sie können eine Deny
Richtlinie erstellen, die CodeCommit Operationen verbietet, wenn sich die IP-Adresse des Benutzers nicht in einem bestimmten Block befindet, oder Sie können eine Allow
Richtlinie erstellen, die CodeCommit Operationen zulässt, wenn sich die IP-Adresse des Benutzers innerhalb eines bestimmten Blocks befindet.
Sie können eine Deny
-Richtlinie erstellen, die den Zugriff für alle Benutzer verweigert, die sich nicht aus einem bestimmten IP-Adressbereich stammen. Beispielsweise können Sie die verwaltete Richtlinie AWSCodeCommitPowerUser und eine vom Kunden verwaltete Richtlinie allen Benutzern anfügen, die Zugriff auf Ihr Repository benötigen. Die folgende Beispielrichtlinie verweigert Benutzern, deren IP-Adressen nicht innerhalb des angegebenen IP-Adressblocks 203.0.113.0/16 liegen, alle CodeCommit Berechtigungen:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"codecommit:*"
],
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"203.0.113.0/16"
]
}
}
}
]
}
Mit der folgenden Beispielrichtlinie kann der angegebene Benutzer nur dann auf ein CodeCommit Repository zugreifen, das MyDemoRepo mit den entsprechenden Berechtigungen der AWSCode CommitPowerUser verwalteten Richtlinie benannt ist, wenn sich seine IP-Adresse innerhalb des angegebenen Adressblocks 203.0.113.0/16 befindet:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codecommit:BatchGetRepositories",
"codecommit:CreateBranch",
"codecommit:CreateRepository",
"codecommit:Get*",
"codecommit:GitPull",
"codecommit:GitPush",
"codecommit:List*",
"codecommit:Put*",
"codecommit:Post*",
"codecommit:Merge*",
"codecommit:TagResource",
"codecommit:Test*",
"codecommit:UntagResource",
"codecommit:Update*"
],
"Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"203.0.113.0/16"
]
}
}
}
]
}
Beispiel 4: Aktionen für Branches verweigern oder zulassen
Sie können eine Richtlinie erstellen, die Benutzern die Berechtigungen für Aktionen verweigert, die Sie für eine oder mehrere Verzweigungen angeben. Alternativ können Sie eine Richtlinie erstellen, die Aktionen für eine oder mehrere Verzweigungen erlaubt, die sie sonst nicht in anderen Verzweigungen eines Repositories haben. Sie können diese Richtlinien mit den entsprechenden verwalteten (vordefinierten) Richtlinien verwenden. Weitere Informationen finden Sie unter Beschränken Sie die Anzahl von Pushs und Merges auf Branches in AWS CodeCommit.
Sie können beispielsweise eine Deny
Richtlinie erstellen, die Benutzern die Möglichkeit verweigert, Änderungen an einem Branch namens main vorzunehmen, einschließlich des Löschens dieses Branches, in einem Repository mit dem NamenMyDemoRepo
. Sie können diese Richtlinien mit der verwalteten Richtlinie AWSCodeCommitPowerUser verwenden. Benutzer, auf die diese beiden Richtlinien angewendet wurden, könnten Branches erstellen und löschen, Pull Requests erstellen und alle anderen Aktionen ausführen, sofern dies von erlaubt ist. Sie wären jedoch nicht in der Lage AWSCodeCommitPowerUser, Änderungen an den Branch mit dem Namen main zu pushen, eine Datei im Main Branch in der CodeCommit Konsole hinzuzufügen oder zu bearbeiten oder Branches oder eine Pull-Anfrage mit dem Main Branch zusammenzuführen. Da Deny
auf GitPush
angewendet wird,, müssen Sie eine Null
-Anweisung in die Richtlinie aufnehmen, um die Analyse anfänglicher GitPush
-Aufrufe auf Gültigkeit zu gestatten, wenn Benutzer Sendeoperationen von ihren lokalen Repositories aus ausführen.
Tipp
Wenn Sie eine Richtlinie erstellen möchten, die für alle Branches mit dem Namen main in allen Repositorys in Ihrem Amazon Web Services Services-Konto giltResource
, geben Sie ein Sternchen (*
) anstelle eines Repository-ARN ein.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"codecommit:GitPush",
"codecommit:DeleteBranch",
"codecommit:PutFile",
"codecommit:Merge*"
],
"Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
"Condition": {
"StringEqualsIfExists": {
"codecommit:References": [
"refs/heads/main"
]
},
"Null": {
"codecommit:References": "false"
}
}
}
]
}
Die folgende Beispielrichtlinie ermöglicht es einem Benutzer, Änderungen an einem Branch namens main in allen Repositorys eines Amazon Web Services Services-Kontos vorzunehmen. Sie erlaubt keine Änderungen an anderen Zweigen. Sie können diese Richtlinie zusammen mit der AWSCode CommitReadOnly verwalteten Richtlinie verwenden, um automatisierte Pushs an das Repository im Hauptzweig zu ermöglichen. Der Effekt ist Allow
, deshalb würde diese Beispielrichtlinie nicht mit verwalteten Richtlinien funktionieren, wie z. B. AWSCodeCommitPowerUser.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codecommit:GitPush",
"codecommit:Merge*"
],
"Resource": "*",
"Condition": {
"StringEqualsIfExists": {
"codecommit:References": [
"refs/heads/main"
]
}
}
}
]
}
Beispiel 5: Aktionen für Repositorys mit Tags verweigern oder zulassen
Sie können eine Richtlinie erstellen, die Aktionen für Repositorys auf der Grundlage der mit diesen Repositorys verknüpften AWS Tags erlaubt oder verweigert, und diese Richtlinien dann auf die IAM-Gruppen anwenden, die Sie für die Verwaltung von IAM-Benutzern konfigurieren. Sie können beispielsweise eine Richtlinie erstellen, die alle CodeCommit Aktionen in beliebigen Repositorys mit dem AWS Tag-Schlüssel Status und dem Schlüsselwert Secret verweigert, und diese Richtlinie dann auf die IAM-Gruppe anwenden, die Sie für allgemeine Entwickler erstellt haben (). Developers
Anschließend müssen Sie sicherstellen, dass die Entwickler, die an diesen markierten Repositorys arbeiten, nicht Mitglieder dieser allgemeinen Developers
Gruppe sind, sondern einer anderen IAM-Gruppe angehören, auf die die restriktive Richtlinie nicht angewendet wurde (). SecretDevelopers
Im folgenden Beispiel werden alle CodeCommit Aktionen für Repositorys verweigert, die mit dem Schlüssel Status und dem Schlüsselwert Secret gekennzeichnet sind:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"codecommit:Associate*",
"codecommit:Batch*",
"codecommit:CancelUploadArchive",
"codecommit:CreateBranch",
"codecommit:CreateCommit",
"codecommit:CreatePullRequest*",
"codecommit:CreateRepository",
"codecommit:CreateUnreferencedMergeCommit",
"codecommit:DeleteBranch",
"codecommit:DeleteCommentContent",
"codecommit:DeleteFile",
"codecommit:DeletePullRequest*",
"codecommit:DeleteRepository",
"codecommit:Describe*",
"codecommit:DisassociateApprovalRuleTemplateFromRepository",
"codecommit:EvaluatePullRequestApprovalRules",
"codecommit:GetBlob",
"codecommit:GetBranch",
"codecommit:GetComment*",
"codecommit:GetCommit",
"codecommit:GetDifferences*",
"codecommit:GetFile",
"codecommit:GetFolder",
"codecommit:GetMerge*",
"codecommit:GetObjectIdentifier",
"codecommit:GetPullRequest*",
"codecommit:GetReferences",
"codecommit:GetRepository*",
"codecommit:GetTree",
"codecommit:GetUploadArchiveStatus",
"codecommit:Git*",
"codecommit:ListAssociatedApprovalRuleTemplatesForRepository",
"codecommit:ListBranches",
"codecommit:ListPullRequests",
"codecommit:ListTagsForResource",
"codecommit:Merge*",
"codecommit:OverridePullRequestApprovalRules",
"codecommit:Post*",
"codecommit:Put*",
"codecommit:TagResource",
"codecommit:TestRepositoryTriggers",
"codecommit:UntagResource",
"codecommit:UpdateComment",
"codecommit:UpdateDefaultBranch",
"codecommit:UpdatePullRequest*",
"codecommit:UpdateRepository*",
"codecommit:UploadArchive"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/Status": "Secret"
}
}
}
]
}
Sie können diese Strategie weiter verfeinern, indem Sie bestimmte Repositorys und nicht alle Repositorys als Ressourcen angeben. Sie können auch Richtlinien erstellen, die CodeCommit Aktionen für alle Repositorys zulassen, die nicht mit bestimmten Tags gekennzeichnet sind. Die folgende Richtlinie erlaubt beispielsweise das Äquivalent von AWSCodeCommitPowerUserBerechtigungen für CodeCommit Aktionen, mit der Ausnahme, dass sie nur Aktionen für Repositorys zulässt CodeCommit , die nicht mit den angegebenen Tags gekennzeichnet sind:
Anmerkung
Dieses Richtlinienbeispiel umfasst nur Aktionen für CodeCommit. Es umfasst keine Aktionen für andere AWS Dienste, die in der AWSCodeCommitPowerUserverwalteten Richtlinie enthalten sind. Weitere Informationen finden Sie unter AWS verwaltete Richtlinie: AWSCode CommitPowerUser..
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codecommit:Associate*",
"codecommit:Batch*",
"codecommit:CancelUploadArchive",
"codecommit:CreateBranch",
"codecommit:CreateCommit",
"codecommit:CreatePullRequest*",
"codecommit:CreateRepository",
"codecommit:CreateUnreferencedMergeCommit",
"codecommit:DeleteBranch",
"codecommit:DeleteCommentContent",
"codecommit:DeleteFile",
"codecommit:DeletePullRequest*",
"codecommit:Describe*",
"codecommit:DisassociateApprovalRuleTemplateFromRepository",
"codecommit:EvaluatePullRequestApprovalRules",
"codecommit:GetBlob",
"codecommit:GetBranch",
"codecommit:GetComment*",
"codecommit:GetCommit",
"codecommit:GetDifferences*",
"codecommit:GetFile",
"codecommit:GetFolder",
"codecommit:GetMerge*",
"codecommit:GetObjectIdentifier",
"codecommit:GetPullRequest*",
"codecommit:GetReferences",
"codecommit:GetRepository*",
"codecommit:GetTree",
"codecommit:GetUploadArchiveStatus",
"codecommit:Git*",
"codecommit:ListAssociatedApprovalRuleTemplatesForRepository",
"codecommit:ListBranches",
"codecommit:ListPullRequests",
"codecommit:ListTagsForResource",
"codecommit:Merge*",
"codecommit:OverridePullRequestApprovalRules",
"codecommit:Post*",
"codecommit:Put*",
"codecommit:TagResource",
"codecommit:TestRepositoryTriggers",
"codecommit:UntagResource",
"codecommit:UpdateComment",
"codecommit:UpdateDefaultBranch",
"codecommit:UpdatePullRequest*",
"codecommit:UpdateRepository*",
"codecommit:UploadArchive"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:ResourceTag/Status": "Secret",
"aws:ResourceTag/Team": "Saanvi"
}
}
},
{
"Effect": "Allow",
"Action": [
"codecommit:CreateApprovalRuleTemplate",
"codecommit:GetApprovalRuleTemplate",
"codecommit:ListApprovalRuleTemplates",
"codecommit:ListRepositories",
"codecommit:ListRepositoriesForApprovalRuleTemplate",
"codecommit:UpdateApprovalRuleTemplateContent",
"codecommit:UpdateApprovalRuleTemplateDescription",
"codecommit:UpdateApprovalRuleTemplateName"
],
"Resource": "*"
}
]
}
Beispiele für vom Kunden verwaltete Integrationsrichtlinien
Dieser Abschnitt enthält Beispiele für vom Kunden verwaltete Benutzerrichtlinien, die Berechtigungen für Integrationen zwischen CodeCommit und anderen AWS Diensten gewähren. Spezifische Beispiele für Richtlinien, die den kontoübergreifenden Zugriff auf ein CodeCommit-Repository erlauben, finden Sie unter Konfiguriere den kontoübergreifenden Zugriff auf ein AWS CodeCommit Repository mithilfe von Rollen.
Anmerkung
Alle Beispiele verwenden die Region USA West (Oregon) (us-west-2), wenn ein erforderlich AWS-Region ist, und enthalten ein fiktives Konto. IDs
Beispiele
Beispiel 1: Erstellen Sie eine Richtlinie, die den kontoübergreifenden Zugriff auf ein Amazon SNS SNS-Thema ermöglicht
Sie können ein CodeCommit Repository so konfigurieren, dass Code-Pushs oder andere Ereignisse Aktionen auslösen, z. B. das Senden einer Benachrichtigung von Amazon Simple Notification Service (Amazon SNS). Wenn Sie das Amazon SNS SNS-Thema mit demselben Konto erstellen, das für die Erstellung des CodeCommit Repositorys verwendet wurde, müssen Sie keine zusätzlichen IAM-Richtlinien oder -Berechtigungen konfigurieren. Sie können das Thema und dann den Auslöser für das Repository erstellen. Weitere Informationen finden Sie unter Einen Auslöser für ein Amazon SNS SNS-Thema erstellen.
Wenn Sie Ihren Auslöser jedoch so konfigurieren möchten, dass er ein Amazon SNS SNS-Thema in einem anderen Amazon Web Services Services-Konto verwendet, müssen Sie dieses Thema zunächst mit einer Richtlinie konfigurieren, die es ermöglicht, CodeCommit zu diesem Thema zu veröffentlichen. Öffnen Sie von diesem anderen Konto aus die Amazon SNS SNS-Konsole, wählen Sie das Thema aus der Liste aus und wählen Sie für Andere Themenaktionen die Option Themenrichtlinie bearbeiten aus. Ändern Sie auf der Registerkarte „Erweitert“ die Richtlinie für das Thema, sodass es CodeCommit zu diesem Thema veröffentlicht werden kann. Wenn es sich bei der Richtlinie beispielsweise um die Standardrichtlinie handelt, würden Sie die Richtlinie wie folgt ändern und die Elemente so ändern, red italic text
dass sie den Werten für Ihr Repository, Ihr Amazon SNS SNS-Thema und Ihr Konto entsprechen:
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "sns:Subscribe", "sns:ListSubscriptionsByTopic", "sns:DeleteTopic", "sns:GetTopicAttributes", "sns:Publish", "sns:RemovePermission", "sns:AddPermission", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:
us-east-2
:111111111111
:NotMySNSTopic
", "Condition": { "StringEquals": { "AWS:SourceOwner": "111111111111
" } } }, { "Sid": "CodeCommit-Policy_ID
", "Effect": "Allow", "Principal": { "Service": "codecommit.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2
:111111111111
:NotMySNSTopic
", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo
", "AWS:SourceAccount": "111111111111
" } } } ] }
Beispiel 2: Erstellen Sie eine Amazon Simple Notification Service (Amazon SNS) -Themenrichtlinie, damit Amazon CloudWatch Events Ereignisse zu diesem Thema veröffentlichen CodeCommit kann
Sie können CloudWatch Ereignisse so konfigurieren, dass sie bei Eintreten von Ereignissen, einschließlich CodeCommit Ereignissen, in einem Amazon SNS SNS-Thema veröffentlicht werden. Dazu müssen Sie sicherstellen, dass CloudWatch Events berechtigt ist, Ereignisse zu Ihrem Amazon SNS SNS-Thema zu veröffentlichen, indem Sie eine Richtlinie für das Thema erstellen oder eine bestehende Richtlinie für das Thema ändern, die der folgenden ähnelt:
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__default_statement_ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sns:Publish",
"Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "123456789012"
}
}
},
{
"Sid": "Allow_Publish_Events",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "sns:Publish",
"Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic"
}
]
}
Weitere Informationen zu CodeCommit und CloudWatch Veranstaltungen finden Sie unter Beispiele für CloudWatch Ereignisse und Ereignisse von Supported Services. Weitere Informationen zu IAM und der Richtliniensprache finden Sie unter Grammatik der IAM-JSON-Richtliniensprache.
Beispiel 3: Erstellen Sie eine Richtlinie für die AWS Lambda Integration mit einem Trigger CodeCommit
Sie können ein CodeCommit Repository so konfigurieren, dass Code-Pushs oder andere Ereignisse Aktionen auslösen, z. B. das Aufrufen einer Funktion in. AWS Lambda Weitere Informationen finden Sie unter Erstellen Sie einen Trigger für eine Lambda-Funktion. Diese Informationen beziehen sich nur auf Trigger und nicht CloudWatch auf Ereignisse.
Wenn Sie möchten, dass Ihr Trigger eine Lambda-Funktion direkt ausführt (anstatt ein Amazon SNS SNS-Thema zum Aufrufen der Lambda-Funktion zu verwenden), und Sie den Trigger nicht in der Lambda-Konsole konfigurieren, müssen Sie eine Anweisung ähnlich der folgenden in die ressourcenbasierte Richtlinie der Funktion aufnehmen:
{ "Statement":{ "StatementId":"
Id-1
", "Action":"lambda:InvokeFunction", "Principal":"codecommit.amazonaws.com", "SourceArn":"arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo
", "SourceAccount":"111111111111
" } }
Wenn Sie einen CodeCommit Trigger manuell konfigurieren, der eine Lambda-Funktion aufruft, müssen Sie auch den AddPermissionLambda-Befehl verwenden, um die Erlaubnis zum Aufrufen der Funktion CodeCommit zu erteilen. Ein Beispiel finden Sie im Abschnitt Um die Ausführung einer Lambda-Funktion CodeCommit zu ermöglichen von Erstellen Sie einen Trigger für eine bestehende Lambda-Funktion.
Weitere Informationen zu Ressourcenrichtlinien für Lambda-Funktionen finden Sie unter AddPermissionund The Pull/Push Event Models im AWS Lambda Developer Guide.