Esempi di policy gestite dal cliente - AWS CodeCommit

AWS CodeCommit non è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Scopri di più»

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempi di policy gestite dal cliente

È possibile creare IAM politiche personalizzate per consentire le CodeCommit autorizzazioni per azioni e risorse. È possibile allegare queste politiche personalizzate agli IAM utenti o ai gruppi che richiedono tali autorizzazioni. È inoltre possibile creare IAM politiche personalizzate per l'integrazione CodeCommit tra altri AWS servizi.

Esempi di politiche di identità gestite dai clienti

Le IAM politiche di esempio seguenti concedono le autorizzazioni per varie CodeCommit azioni. Usali per limitare CodeCommit l'accesso per IAM utenti e ruoli. Queste politiche controllano la capacità di eseguire azioni con la CodeCommit consoleAPI, AWS SDKs, o il AWS CLI.

Nota

Tutti gli esempi utilizzano la regione degli Stati Uniti occidentali (Oregon) (us-west-2) e contengono account fittizi. IDs

Examples (Esempi)

Esempio 1: consentire a un utente di eseguire operazioni in un'unica soluzione CodeCommit Regione AWS

La seguente politica di autorizzazione utilizza un carattere jolly ("codecommit:*") per consentire agli utenti di eseguire tutte le CodeCommit azioni nella regione us-east-2 e non da altre. Regioni AWS

{ "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" } } } ] }

Esempio 2: consentire a un utente di utilizzare Git per un singolo repository

In CodeCommit, le autorizzazioni della GitPull IAM policy si applicano a qualsiasi comando client Git da cui vengono recuperati i dati CodeCommit, inclusi git fetchgit clone, e così via. Allo stesso modo, le autorizzazioni della GitPush IAM policy si applicano a qualsiasi comando client Git a CodeCommit cui vengono inviati i dati. Ad esempio, se l'autorizzazione della GitPush IAM policy è impostata suAllow, un utente può inviare l'eliminazione di un ramo utilizzando il protocollo Git. Tale push non è influenzato dalle autorizzazioni applicate all'DeleteBranchoperazione per quell'IAMutente. L'DeleteBranchautorizzazione si applica alle azioni eseguite con la console AWS CLI, ilSDKs, e ilAPI, ma non il protocollo Git.

L'esempio seguente consente all'utente specificato di estrarre e inviare messaggi dal CodeCommit repository denominatoMyDemoRepo:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource" : "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" } ] }

Esempio 3: consentire a un utente che si connette da un intervallo di indirizzi IP specificato di accedere a un repository

È possibile creare una policy che consenta agli utenti di connettersi a un CodeCommit repository solo se il loro indirizzo IP rientra in un determinato intervallo di indirizzi IP. Sono disponibili due approcci altrettanto validi a questo scopo. È possibile creare una Deny politica che non consenta CodeCommit le operazioni se l'indirizzo IP dell'utente non si trova all'interno di un blocco specifico oppure creare una Allow politica che consenta CodeCommit le operazioni se l'indirizzo IP dell'utente si trova all'interno di un blocco specifico.

Puoi creare una policy Deny che rifiuta l'accesso a tutti gli utenti non inclusi in un determinato intervallo di indirizzi IP. Ad esempio, puoi allegare la policy AWSCodeCommitPowerUser gestita e una policy gestita dal cliente a tutti gli utenti che richiedono l'accesso al tuo repository. La seguente politica di esempio nega tutte le CodeCommit autorizzazioni agli utenti i cui indirizzi IP non rientrano nel blocco di indirizzi IP specificato di 203.0.113.0/16:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:*" ], "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "203.0.113.0/16" ] } } } ] }

La seguente politica di esempio consente all'utente specificato di accedere a un CodeCommit archivio denominato MyDemoRepo con le autorizzazioni equivalenti della politica AWSCodeCommitPowerUser gestita solo se il relativo indirizzo IP si trova all'interno del blocco di indirizzi specificato di 203.0.113.0/16:

{ "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" ] } } } ] }

Esempio 4: negare o consentire azioni sulle filiali

Puoi creare una policy che rifiuta agli utenti le autorizzazioni per eseguire le operazioni specificate su uno o più rami. In alternativa, puoi creare una policy che consente di eseguire operazioni su uno o più rami che altrimenti non sarebbero consentite in altri rami di un repository. Puoi utilizzare queste policy con le policy gestite (predefinite) appropriate. Per ulteriori informazioni, consulta Limita i push e le unioni ai rami in AWS CodeCommit.

Ad esempio, è possibile creare una Deny politica che neghi agli utenti la possibilità di apportare modifiche a un ramo denominato main, inclusa l'eliminazione del ramo, in un repository denominato MyDemoRepo. È possibile utilizzare questa politica con la politica AWSCodeCommitPowerUsergestita. Gli utenti a cui vengono applicate queste due politiche sarebbero in grado di creare ed eliminare rami, creare richieste pull e tutte le altre azioni consentite da AWSCodeCommitPowerUser, ma non sarebbero in grado di inviare modifiche al ramo denominato main, aggiungere o modificare un file nel ramo principale della CodeCommit console o unire rami o una richiesta pull nel ramo principale. Poiché la policy Deny viene applicata a GitPush, devi includervi un'istruzione Null per consentire l'analisi della validità delle chiamate GitPush iniziali quando gli utenti eseguono push dai loro repository locali.

Suggerimento

Se desideri creare una politica che si applichi a tutti i rami denominati main in all repository del tuo account Amazon Web Services, perResource, specifica un asterisco (*) anziché un repository. ARN

{ "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" } } } ] }

La seguente politica di esempio consente a un utente di apportare modifiche a un ramo denominato main in tutti i repository di un account Amazon Web Services. Non consente modifiche a nessun altro ramo. È possibile utilizzare questa politica con la politica AWSCodeCommitReadOnly gestita per consentire push automatici al repository nel ramo principale. Poiché The Effect isAllow, questa policy di esempio non funzionerebbe con policy gestite come. AWSCodeCommitPowerUser

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPush", "codecommit:Merge*" ], "Resource": "*", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/main" ] } } } ] }

Esempio 5: Negare o consentire azioni sui repository con tag

È possibile creare una politica che consenta o neghi azioni sui repository in base ai AWS tag associati a tali repository e quindi applicare tali politiche ai IAM gruppi configurati per la gestione degli utenti. IAM Ad esempio, puoi creare una policy che neghi tutte le CodeCommit azioni su qualsiasi repository con il AWS tag key Status e il valore chiave Secret, quindi applicare tale policy al IAM gruppo che hai creato per gli sviluppatori generici (Developers). È quindi necessario assicurarsi che gli sviluppatori che lavorano su quei repository etichettati non siano membri di quel generale Developers group, ma appartengono invece a un IAM gruppo diverso a cui non è applicata la politica restrittiva () SecretDevelopers.

L'esempio seguente nega tutte le CodeCommit azioni sui repository contrassegnati con la chiave Status e il valore chiave di Secret:

{ "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" } } } ] }

È possibile perfezionare ulteriormente questa strategia specificando repository specifici, anziché tutti i repository, come risorse. È inoltre possibile creare politiche che consentano CodeCommit azioni su tutti gli archivi che non sono etichettati con tag specifici. Ad esempio, la seguente politica consente l'equivalente delle AWSCodeCommitPowerUser CodeCommit autorizzazioni per le azioni, tranne per il fatto che consente solo CodeCommit azioni su repository non contrassegnati con i tag specificati:

Nota

Questo esempio di politica include solo azioni per. CodeCommit Non include azioni per altri AWS servizi inclusi nella politica AWSCodeCommitPowerUsergestita. Per ulteriori informazioni, consulta AWS politica gestita: AWSCodeCommitPowerUser.

{ "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": "*" } ] }

Esempi di politiche di integrazione gestite dal cliente

Questa sezione fornisce esempi di politiche utente gestite dal cliente che concedono autorizzazioni per le integrazioni tra e CodeCommit altri servizi. AWS Per esempi specifici di politiche che consentono l'accesso a un repository da più account, consulta. CodeCommit Configura l'accesso tra account a un AWS CodeCommit repository utilizzando i ruoli

Nota

Tutti gli esempi utilizzano la regione Stati Uniti occidentali (Oregon) (us-west-2) quando richiesto e contengono Regione AWS un account fittizio. IDs

Examples (Esempi)

Esempio 1: crea una policy che consenta l'accesso tra account diversi a un argomento di Amazon SNS

Puoi configurare un CodeCommit repository in modo che i push di codice o altri eventi attivino azioni, come l'invio di una notifica da Amazon Simple Notification Service (AmazonSNS). Se crei l'SNSargomento Amazon con lo stesso account utilizzato per creare il CodeCommit repository, non è necessario configurare IAM politiche o autorizzazioni aggiuntive. Puoi creare l'argomento, quindi creare il trigger per il repository. Per ulteriori informazioni, consulta Crea un trigger per un SNS argomento Amazon.

Tuttavia, se desideri configurare il trigger per utilizzare un SNS argomento Amazon in un altro account Amazon Web Services, devi prima configurare quell'argomento con una politica che CodeCommit consenta la pubblicazione su quell'argomento. Da quell'altro account, apri la SNS console Amazon, scegli l'argomento dall'elenco e, per Altre azioni sull'argomento, scegli Modifica politica dell'argomento. Nella scheda Avanzate, modifica la politica dell'argomento CodeCommit per consentirne la pubblicazione. Ad esempio, se la politica è la politica predefinita, è possibile modificare la politica come segue, cambiando gli elementi in red italic text per abbinare i valori del tuo repository, SNS argomento Amazon e account:

{ "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" } } } ] }

Esempio 2: creare una policy tematica di Amazon Simple Notification Service (AmazonSNS) per consentire ad Amazon CloudWatch Events di pubblicare CodeCommit eventi sull'argomento

Puoi configurare CloudWatch gli eventi in modo che vengano pubblicati su un SNS argomento Amazon quando si verificano eventi, inclusi CodeCommit gli eventi. A tal fine, devi assicurarti che CloudWatch Events sia autorizzato a pubblicare eventi sul tuo SNS argomento Amazon creando una politica per l'argomento o modificando una politica esistente per l'argomento simile alla seguente:

{ "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" } ] }

Per ulteriori informazioni sugli CodeCommit CloudWatch eventi, consulta CloudWatch Events Event Examples from Supported Services. Per ulteriori informazioni sul linguaggio delle IAM politiche, vedere Grammar of the IAM JSON Policy Language.

Esempio 3: creare una politica per AWS Lambda l'integrazione con un trigger CodeCommit

È possibile configurare un CodeCommit repository in modo che i push di codice o altri eventi attivino azioni, come l'invocazione di una funzione in. AWS Lambda Per ulteriori informazioni, consulta Creare un trigger per una funzione Lambda. Queste informazioni sono specifiche dei trigger e non degli eventi. CloudWatch

Se desideri che il trigger esegua direttamente una funzione Lambda (anziché utilizzare un SNS argomento Amazon per richiamare la funzione Lambda) e non configuri il trigger nella console Lambda, devi includere un'istruzione simile alla seguente nella politica basata sulle risorse della funzione:

{ "Statement":{ "StatementId":"Id-1", "Action":"lambda:InvokeFunction", "Principal":"codecommit.amazonaws.com", "SourceArn":"arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "SourceAccount":"111111111111" } }

Quando si configura manualmente un CodeCommit trigger che richiama una funzione Lambda, è necessario utilizzare anche il AddPermissioncomando Lambda per concedere l'autorizzazione a richiamare la funzione. CodeCommit Per un esempio, consulta la sezione Per consentire CodeCommit l'esecuzione di una funzione Lambda di Creare un trigger per una funzione Lambda esistente.

Per ulteriori informazioni sulle politiche delle risorse per le funzioni Lambda, consulta AddPermissione The Pull/Push Event Models nella Developer Guide.AWS Lambda