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à.
Limita i push e le unioni ai rami in AWS CodeCommit
Per impostazione predefinita, qualsiasi utente del CodeCommit repository che dispone di autorizzazioni sufficienti per inviare codice al repository può contribuire a qualsiasi ramo del repository. Questo è vero indipendentemente da come aggiungi un ramo al repository: utilizzando la console, la riga di comando o Git. Tuttavia, è possibile configurare un ramo in modo tale che solo alcuni utenti del repository possano inserire o eseguire il push del codice in quel ramo. Ad esempio, potresti configurare un ramo utilizzato per il codice di produzione in modo che solo un sottoinsieme di sviluppatori senior possa eseguire il push o unire le modifiche a tale ramo. Gli altri sviluppatori possono ancora estrarre dal ramo, creare propri rami e creare richieste pull, ma non possono eseguire push o unioni delle modifiche a quel ramo. È possibile configurare questo accesso creando una politica condizionale che utilizza una chiave di contesto per una o più filiali in. IAM
Nota
Per completare alcune delle procedure descritte in questo argomento, è necessario accedere con un utente amministrativo che disponga di autorizzazioni sufficienti per configurare e applicare le politiche. IAM Per ulteriori informazioni, vedere Creazione di un utente e un gruppo di IAM amministratori.
Argomenti
Configura una IAM politica per limitare i push e le unioni a una filiale
Puoi creare una politica IAM che impedisca agli utenti di aggiornare una filiale, ad esempio inviare commit a una filiale e unire le richieste pull a una filiale. A tale scopo, la policy utilizza un'istruzione condizionale, in modo che l'effetto dell'istruzione Deny
si applichi solo se la condizione è soddisfatta. Le APIs azioni incluse nell'Deny
informativa determinano quali azioni non sono consentite. Puoi configurare questa politica in modo che si applichi a un solo ramo in un repository, a più rami in un repository o a tutti i rami che soddisfano i criteri in tutti i repository di un account Amazon Web Services.
Per creare una policy condizionale per i rami
-
Accedi AWS Management Console e apri la console all'indirizzo. IAM https://console.aws.amazon.com/iam/
-
Nel pannello di navigazione, selezionare Policies (Policy).
-
Scegli Create Policy (Crea policy).
-
Scegli JSON, quindi incolla la seguente politica di esempio. Sostituisci il valore di
Resource
con quello ARN del repository che contiene il ramo per il quale desideri limitare l'accesso. Sostituire il valore dicodecommit:References
con un riferimento al ramo o ai rami per cui si desidera limitare l'accesso. Ad esempio, questa politica vieta l'invio di commit, l'unione di rami, l'eliminazione di rami, l'eliminazione di file, l'unione di richieste pull e l'aggiunta di file a un ramo denominato
e un ramo denominatoprincipale
in un repository denominatoprod
: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" } } } ] }I rami in Git sono semplicemente puntatori (riferimenti) al valore SHA -1 del commit head, motivo per cui la condizione utilizza
References
. L'istruzioneNull
è obbligatoria in ogni policy il cui effetto èDeny
e doveGitPush
è una delle operazioni. Ciò è necessario a causa del modo in cui Git e Gitgit-receive-pack
funzionano quando si trasferiscono le modifiche da un repository locale a. CodeCommitSuggerimento
Per creare una politica che si applichi a tutte le filiali denominate main in tutti i repository di un account Amazon Web Services, modifica il valore di
Resource
da un repository ARN a un asterisco ().*
-
Scegli Verifica policy. Correggere gli eventuali errori nell'istruzione di policy e quindi continuare con Create policy (Crea policy).
-
Una volta convalidato, JSON viene visualizzata la pagina Crea policy. Viene visualizzato un avviso nella sezione Summary (Riepilogo) indicante che questa policy non concede autorizzazioni. Si tratta di un comportamento normale.
-
In Name (Nome), immettere un nome per la policy, ad esempio
DenyChangesToMain
. -
In Description (Descrizione), immettere una descrizione dello scopo della policy. Questo passaggio è facoltativo, ma è consigliato.
-
Scegli Create Policy (Crea policy).
-
Applica la IAM politica a un IAM gruppo o a un ruolo
Hai creato una policy che limita i push e le fusioni a una filiale, ma la policy non ha effetto finché non la applichi a un IAM utente, gruppo o ruolo. Come best practice, valuta la possibilità di applicare la policy a un IAM gruppo o a un ruolo. L'applicazione delle policy ai singoli IAM utenti non offre una scalabilità adeguata.
Per applicare la policy condizionale a un gruppo o un ruolo
-
Accedi a AWS Management Console e apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/
. -
Nel riquadro di navigazione, se desideri applicare la politica a un IAM gruppo, scegli Gruppi. Se desideri applicare la politica a un ruolo assunto dagli utenti, scegli Ruolo. Scegliere il nome del gruppo o del ruolo.
-
Nella scheda Permissions (Autorizzazioni), scegli Attach Policy (Associa policy).
-
Selezionare la policy condizionale creata dall'elenco delle policy e quindi scegliere Attach policy (Collega policy).
Per ulteriori informazioni, consulta Allegare e scollegare i criteri. IAM
Verifica la politica
È necessario testare gli effetti della policy che hai applicato al gruppo o al ruolo per assicurarti che funzioni come previsto. Esistono molti modi per eseguire questa operazione. Ad esempio, per testare una policy simile a quella mostrata sopra, è possibile:
-
Accedi alla CodeCommit console con un IAM utente che è membro di un IAM gruppo a cui è stata applicata la politica o che assume un ruolo a cui è applicata la politica. Nella console aggiungi un file nel ramo in cui si applicano le restrizioni. Viene visualizzato un messaggio di errore quando tenti di salvare o caricare un file nel ramo. Aggiungi un file a un ramo diverso. L'operazione è completata.
-
Accedi alla CodeCommit console con un IAM utente che è membro di un IAM gruppo a cui è stata applicata la politica o che assume un ruolo a cui è applicata la politica. Creare una richiesta di pull che viene unita al ramo in cui si applicano le restrizioni. Potrai creare la richiesta di pull, ma riceverai un messaggio di errore se la tenti di unire.
-
Dal terminale o dalla riga di comando, crea un commit nel ramo in cui si applicano le restrizioni, quindi trasferiscilo nel CodeCommit repository. Viene visualizzato un messaggio di errore. I commit e i push effettuati da altri rami funzionano normalmente.