Esempi di policy gestite dal cliente - AWS CodeCommit

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

Puoi creare le tue policy IAM personalizzate per consentire le CodeCommit autorizzazioni per azioni e risorse. Puoi associare queste policy personalizzate agli utenti o ai gruppi IAM che richiedono tali autorizzazioni. Puoi anche creare policy IAM personalizzate per l'integrazione tra CodeCommit e altri AWS servizi.

Esempi di politiche di identità gestite dai clienti

I seguenti esempi di policy IAM concedono autorizzazioni per varie CodeCommit azioni. Utilizzale per limitare CodeCommit l'accesso degli utenti e dei ruoli IAM. Queste policy controllano la possibilità di eseguire operazioni con la console CodeCommit , l'API, gli SDK di AWS o AWS CLI.

Nota

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

Examples (Esempi)

Esempio 1: consenti a un utente di eseguire CodeCommit operazioni in un'unica soluzione 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 policy GitPull IAM 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 policy GitPush IAM si applicano a qualsiasi comando client Git a CodeCommit cui vengono inviati i dati. Ad esempio, se l'autorizzazione della policy GitPush IAM è impostata suAllow, un utente può inviare l'eliminazione di un ramo utilizzando il protocollo Git. Tale push non è influenzato da alcuna autorizzazione applicata all'DeleteBranchoperazione per quell'utente IAM. L'autorizzazione DeleteBranch si applica alle operazioni eseguite tramite console, AWS CLI, SDK e API, ma non con il protocollo Git.

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

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

Puoi creare una policy che consente agli utenti di connettersi a un repository CodeCommit 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 collegare la policy gestita AWSCodeCommitPowerUser e una policy gestita dal cliente a tutti gli utenti che richiedono l'accesso al 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 Puoi usare questa policy con la policy gestita AWSCodeCommitPowerUser. Gli utenti con queste due politiche applicate 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 tutti i repository del tuo account Amazon Web Services, perResource, specifica un asterisco (*) anziché un ARN del repository.

{ "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é l'effetto è Allow, questa policy di esempio non funzionerebbe con le 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

Puoi creare una policy che consenta o neghi azioni sui repository in base ai AWS tag associati a tali repository e quindi applicare tali policy ai gruppi IAM 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 gruppo IAM che hai creato per sviluppatori generici (Developers). Devi quindi assicurarti che gli sviluppatori che lavorano su quei repository con tag non siano membri di quel gruppo generale di sviluppatori, ma appartengano invece a un gruppo IAM diverso a cui non viene 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 AWSpolitica 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 policy che consentono l'accesso multi-account a un repository CodeCommit, consulta Configura l'accesso tra account a un AWS CodeCommit repository utilizzando i ruoli.

Nota

Tutti gli esempi utilizzano la regione degli Stati Uniti occidentali (Oregon) (us-west-2) quando richiesto e contengono ID di account Regione AWS fittizi.

Examples (Esempi)

Esempio 1: creare 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 (Amazon SNS). Se crei l'argomento Amazon SNS con lo stesso account utilizzato per creare il CodeCommit repository, non è necessario configurare policy o autorizzazioni IAM aggiuntive. Puoi creare l'argomento, quindi creare il trigger per il repository. Per ulteriori informazioni, consulta Creare un trigger per un argomento di Amazon SNS.

Tuttavia, se desideri configurare il trigger per utilizzare un argomento Amazon SNS in un altro account Amazon Web Services, devi prima configurare quell'argomento con una policy che CodeCommit consenta la pubblicazione su quell'argomento. Da quell'altro account, apri la console Amazon SNS, scegli l'argomento dall'elenco e, per Altre azioni sull'argomento, scegli Modifica politica dell'argomento. Nella scheda Avanzate, modifica la politica relativa all'argomento CodeCommit per consentirne la pubblicazione. Ad esempio, se la policy è la policy predefinita, puoi modificarla come segue, cambiando gli elementi in corsivo rosso in modo che corrispondano ai valori del tuo repository, argomento Amazon SNS 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: creazione di una policy tematica di Amazon Simple Notification Service (Amazon SNS) per consentire ad CloudWatch Amazon Events di CodeCommit pubblicare eventi sull'argomento

Puoi configurare CloudWatch gli eventi per pubblicarli su un argomento di Amazon SNS quando si verificano eventi, inclusi CodeCommit gli eventi. A tal fine, devi assicurarti che CloudWatch Events sia autorizzato a pubblicare eventi sul tuo argomento Amazon SNS creando una policy per l'argomento o modificando una policy 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 Events Event Examples from CloudWatch Supported Services. Per ulteriori informazioni su IAM e sul linguaggio delle policy, consulta Grammar of the IAM JSON Policy Language.

Esempio 3: creazione di una policy 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 argomento di Amazon SNS 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