CodeBuildfornitura della creazione di ruoli - AWS Proton

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

CodeBuildfornitura della creazione di ruoli

Strumenti Infrastructure as a Code (IaaC) comeAWS CloudFormatione Terraform richiedono autorizzazioni per i diversi tipi diAWSrisorse. Ad esempio, se un modello IAAC dichiara un bucket Amazon S3, ha bisogno delle autorizzazioni per creare, leggere, aggiornare ed eliminare i bucket Amazon S3. È considerata una best practice di sicurezza limitare i ruoli alle autorizzazioni minime richieste. Data l'ampiezza diAWSrisorse, è difficile creare politiche di privilegi minimi per i modelli IAAC, soprattutto quando le risorse gestite da tali modelli possono cambiare in seguito. Ad esempio, nelle ultime modifiche a un modello gestito daAWS Proton, si aggiunge una risorsa del database RDS.

La configurazione delle autorizzazioni corrette aiuta a semplificare l'implementazione del tuo iAC.AWS Proton CodeBuildIl provisioning esegue comandi CLI arbitrari forniti dal cliente in unCodeBuildprogetto situato nell'account del cliente. In genere, questi comandi creano ed eliminano l'infrastruttura utilizzando uno strumento Infrastructure as Code (IaaC) comeAWS CDK. Quando unAWSdistribuzioni di risorse il cui modello utilizzaCodeBuildApprovvigionamento,AWSavvierà una build in unCodeBuildprogetto gestito daAWS. Un ruolo viene passato aCodeBuild, cheCodeBuildpresuppone l'esecuzione di comandi. Questo ruolo, chiamatoCodeBuildProvisioning Role, viene fornito dal cliente e contiene le autorizzazioni necessarie per fornire l'infrastruttura. È pensato per essere assunto solo daCodeBuilde ancheAWS Protonnon posso darlo per scontato.

Creazione del ruolo

LaCodeBuildIl ruolo di provisioning può essere creato nella console IAM o nelAWS CLI. Per crearlo nelAWS CLI:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AWSProtonCodeBuildProvisioningBasicAccess

Questo allega anche ilAWSProtonCodeBuildProvisioningBasicAccess, che contiene le autorizzazioni minime necessarie alCodeBuildservizio per eseguire una build.

Se preferisci usare la console, assicurati di quanto segue quando crei il ruolo:

  1. Per entità attendibile, selezionaAWSservizio e quindi selezionaCodeBuild.

  2. Nella fase Aggiungi autorizzazioni, selezionaAWSProtonCodeBuildProvisioningBasicAccesse qualsiasi altra politica che desideri allegare.

Accesso amministratore

Se alleghi ilAdministratorAccesspolitica per ilCodeBuildProvisioning Role, garantirà che qualsiasi modello IAAC non fallisca a causa della mancanza di autorizzazioni. Significa anche che chiunque sia in grado di creare un modello di ambiente o un modello di servizio può eseguire azioni a livello di amministratore, anche se tale utente non è un amministratore.AWS Protonnon consiglia di utilizzareAdministatorAccesscon ilCodeBuildRuolo di approvvigionamento. Se decidi di utilizzareAdministratorAccesscon ilCodeBuildProvisioning Role, esegui l'operazione in un ambiente sandbox.

Puoi creare un ruolo conAdministratorAccessnella console IAM o eseguendo questo comando:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
Creazione di un ruolo con un ambito minimo

Se desideri creare un ruolo con autorizzazioni minime, esistono diversi approcci:

  • Esegui la distribuzione con le autorizzazioni di amministratore, quindi definisci l'ambito del ruolo. Si consiglia di utilizzareAnalizzatore di accesso IAM.

  • Utilizza politiche gestite per consentire l'accesso ai servizi che intendi utilizzare.

AWS CDK

Se stai usandoAWS CDKconAWS Protone tu sei scappatocdk bootstrapsu ogni account/regione dell'ambiente, esiste già un ruolo percdk deploy. In questo caso, allega la seguente politica alCodeBuildRuolo di approvvigionamento:

{ "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::account-id:role/cdk-*-deploy-role-*", "arn:aws:iam::account-id:role/cdk-*-file-publishing-role-*" ], "Effect": "Allow" }

VPC personalizzato

Se decidi di correreCodeBuildin unVPC personalizzato, avrai bisogno delle seguenti autorizzazioni nel tuoCodeBuildruolo:

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:*/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:region:account-id:network-interface/*", "Condition": { "StringEquals": { "ec2:AuthorizedService": "codebuild.amazonaws.com" } } }

Puoi anche usare ilAmazonEC2FullAccesspolitica gestita, sebbene includa autorizzazioni che potrebbero non essere necessarie. Per allegare la policy gestita utilizzando la CLI:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess