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

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.

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'Denyinformativa 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
  1. Accedi AWS Management Console e apri la console all'indirizzo. IAM https://console.aws.amazon.com/iam/

  2. Nel pannello di navigazione, selezionare Policies (Policy).

  3. Scegli Create Policy (Crea policy).

  4. 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 di codecommit: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 principale e un ramo denominato prod in un repository denominatoMyDemoRepo:

    { "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 utilizzaReferences. L'istruzione Null è obbligatoria in ogni policy il cui effetto è Deny e dove GitPush è una delle operazioni. Ciò è necessario a causa del modo in cui Git e Git git-receive-pack funzionano quando si trasferiscono le modifiche da un repository locale a. CodeCommit

    Suggerimento

    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 (). *

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

  6. 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
  1. Accedi a AWS Management Console e apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. 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.

  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 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.