CodeBuild creazione di ruoli di provisioning - 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à.

CodeBuild creazione di ruoli di provisioning

Gli strumenti Infrastructure as a Code (IaaC) come AWS CloudFormation Terraform richiedono autorizzazioni per i diversi tipi di risorse. AWS Ad esempio, se un modello IaaC dichiara un bucket Amazon S3, necessita delle autorizzazioni per creare, leggere, aggiornare ed eliminare i bucket Amazon S3. Limitare i ruoli alle autorizzazioni minime richieste è considerata una best practice di sicurezza. Data l'ampiezza delle AWS risorse, è difficile creare politiche con privilegi minimi per i modelli IaaC, soprattutto quando le risorse gestite da tali modelli possono cambiare in seguito. Ad esempio, nelle ultime modifiche apportate a un modello gestito da, si aggiunge una risorsa di database. AWS Proton RDS

La configurazione delle autorizzazioni corrette aiuta a semplificare le implementazioni del tuo IAc. AWS Proton CodeBuild Il provisioning esegue CLI comandi arbitrari forniti dal cliente in un CodeBuild progetto situato nell'account del cliente. In genere, questi comandi creano ed eliminano l'infrastruttura utilizzando uno strumento Infrastructure as Code (IaaC) come. AWS CDK Quando una AWS risorsa distribuisce il cui modello utilizza CodeBuild Provisioning, AWS avvia una compilazione in un CodeBuild progetto gestito da. AWS Viene passato un ruolo a CodeBuild, che CodeBuild presuppone l'esecuzione di comandi. Questo ruolo, denominato CodeBuild Provisioning Role, viene fornito dal cliente e contiene le autorizzazioni necessarie per il provisioning dell'infrastruttura. È pensato per essere assunto solo da CodeBuild e nemmeno AWS Proton può assumerlo.

Creazione del ruolo

Il ruolo CodeBuild Provisioning può essere creato nella IAM console o in. AWS CLI Per crearlo in: AWS 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 al CodeBuild servizio per eseguire una build.

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

  1. Per entità affidabile, seleziona AWS servizio, quindi seleziona CodeBuild.

  2. Nel passaggio Aggiungi autorizzazioni, seleziona AWSProtonCodeBuildProvisioningBasicAccess e tutte le altre politiche che desideri allegare.

Accesso amministratore

Se alleghi la AdministratorAccess policy al CodeBuild Provisioning Role, garantirai che qualsiasi modello IaaC non fallirà 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 l'utente non è un amministratore. AWS Proton non ne consiglia l'utilizzo AdministatorAccess con il Provisioning Role CodeBuild . Se decidi di utilizzarlo AdministratorAccess con il CodeBuild Provisioning Role, fallo in un ambiente sandbox.

Puoi creare un ruolo AdministratorAccess nella IAM console 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 ambito minimo

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

  • Esegui la distribuzione con autorizzazioni di amministratore, quindi riduci l'ambito del ruolo. Ti consigliamo di utilizzare IAMAccess Analyzer.

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

AWS CDK

Se utilizzi AWS CDK with e AWS Proton l'hai eseguito cdk bootstrap su ogni account/area di ambiente, esiste già un ruolo per. cdk deploy In questo caso, allega la seguente politica al ruolo di CodeBuild provisioning:

{ "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" }
Personalizzato VPC

Se decidi di utilizzare CodeBuild un programma personalizzato VPC, avrai bisogno delle seguenti autorizzazioni per il tuo CodeBuild ruolo:

{ "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 utilizzare la politica AmazonEC2FullAccess gestita, sebbene includa autorizzazioni che potrebbero non essere necessarie. Per allegare la politica gestita utilizzando: 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