View a markdown version of this page

Limita i push e le unioni alle filiali in AWS CodeCommit - 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à.

Limita i push e le unioni alle filiali 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 di quel 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. Puoi configurare questo accesso creando una policy condizionale che utilizza una chiave di contesto per uno o più rami in IAM.

Nota

Per completare alcune delle procedure descritte in questo argomento, devi accedere con un utente amministrativo con autorizzazioni sufficienti per configurare e applicare le policy IAM. Per ulteriori informazioni, consulta Creazione di un utente e gruppo di amministratori IAM.

Configura una policy IAM per limitare i push e le unioni a una filiale

Puoi creare una policy in IAM che impedisca agli utenti di aggiornare una filiale, incluso l'invio di commit a una filiale e l'unione delle 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 API incluse nell'istruzione Deny determinano quale azioni non sono consentite. Puoi configurare questa policy in modo che si applichi a una sola filiale in un repository, a più filiali in un repository o a tutte le filiali che soddisfano i criteri in tutti i repository di un account Amazon Web Services.

Per creare una policy condizionale per i rami
  1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. https://console.aws.amazon.com/iam/

  2. Nel riquadro di navigazione, scegli Policy.

  3. Scegli Create Policy (Crea policy).

  4. Scegliere JSON e incollare la policy di esempio seguente. Sostituire il valore di Resource con l'ARN del repository che contiene il ramo per cui si desidera limitare l'accesso. Sostituire il valore di codecommit:References con un riferimento al ramo o ai rami per cui si desidera limitare l'accesso. Ad esempio, questa policy nega l'invio di commit, l'unione di branch, l'eliminazione di branch, l'eliminazione di file, l'unione di pull request e l'aggiunta di file a un branch denominato e a un branch denominato in un main repository denominato: prod MyDemoRepo

    JSON
    { "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 branch in Git sono semplicemente puntatori (riferimenti) al SHA-1 valore dell'head commit, motivo per cui la condizione utilizza. References L'istruzione Null è obbligatoria in ogni policy il cui effetto è Deny e dove GitPush è una delle operazioni. Questo è necessario a causa del modo in cui Git e git-receive-pack funzionano quando si effettua il push delle modifiche da un repository locale a CodeCommit.

    Suggerimento

    Per creare una policy che si applichi a tutti i rami denominati main in tutti i repository di un account Amazon Web Services, modifica il valore di Resource from a repository ARN in un asterisco (). *

  5. Scegliere Esamina policy. Correggere gli eventuali errori nell'istruzione di policy e quindi continuare con Create policy (Crea policy).

  6. Quando il JSON è convalidato, viene visualizzata la pagina Create policy (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 Crea policy.

Applica la policy IAM a un gruppo o ruolo IAM

Hai creato una policy che limita i push e i merges a un branch, ma non ha effetto finché non la applichi a un utente, gruppo o ruolo IAM. Come best practice, valuta la possibilità di applicare la policy a un gruppo o ruolo IAM. L'applicazione delle policy ai singoli utenti IAM non è scalabile correttamente.

Per applicare la policy condizionale a un gruppo o un ruolo
  1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel pannello di navigazione, se desideri applicare la policy a un gruppo IAM, scegli Gruppi. Se vuoi applicare la policy a un ruolo che gli utenti assumono, scegli Ruolo. Scegliere il nome del gruppo o del ruolo.

  3. Nella scheda Permissions (Autorizzazioni), scegli Attach Policy (Associa policy).

  4. Selezionare la policy condizionale creata dall'elenco delle policy e quindi scegliere Attach policy (Collega policy).

Per maggiori informazioni, consulta Allegare e scollegare le policy IAM.

Verifica la policy

È 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 utente IAM che è membro di un gruppo IAM a cui è applicata la policy o assume un ruolo a cui è applicata la policy. 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 utente IAM che è membro di un gruppo IAM a cui è applicata la policy o assume un ruolo a cui è applicata la policy. 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 sul ramo in cui si applicano le restrizioni, quindi invia quel commit al CodeCommit repository. Viene visualizzato un messaggio di errore. I commit e i push effettuati da altri rami funzionano normalmente.