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à.
Token di accesso multipli in CodeBuild
CodeBuild supporta il reperimento di token di accesso a provider di terze parti utilizzando i tuoi dati segreti all'interno AWS Secrets Manager o tramite le connessioni. AWS CodeConnections Puoi impostare il tuo segreto o la tua connessione come credenziale predefinita per le interazioni con un provider di terze parti specificato come GitHub Enterprise o GitHub Bitbucket.
Puoi impostare le tue credenziali di origine su tre diversi livelli:
-
Credenziali a livello di account per tutti i progetti: si tratta di credenziali predefinite per tutti i progetti in un account. AWS Verranno utilizzate in un progetto quando non sono specificate credenziali a livello di progetto o di origine.
-
Credenziali a livello di origine per un repository specifico: si tratta di quando un segreto o una CodeConnections connessione di Secrets Manager viene definito su una fonte del progetto. Queste credenziali verranno utilizzate solo per le operazioni sul repository di origine specificato. Ciò consente di impostare più token di accesso con diversi ambiti di autorizzazione nello stesso progetto e di non utilizzare le credenziali predefinite a livello di account.
-
Credenziali di riserva a livello di progetto: è possibile impostare una credenziale di riserva a livello di progetto utilizzandola
NO_SOURCEcome tipo di origine principale e definendo un segreto o una connessione su di essa. Usalo quando hai più fonti su un progetto ma desideri utilizzare le stesse credenziali per esse o quando non desideri utilizzare le credenziali predefinite a livello di account per il tuo progetto.
Argomenti
Passaggio 1: crea un segreto o una connessione di Secrets Manager CodeConnections
Usa le seguenti istruzioni per creare un segreto o una CodeConnections connessione di Secrets Manager:
Fase 2: Concedi al ruolo IAM CodeBuild del progetto l'accesso ai segreti di Secrets Manager
Nota
Prima di continuare, devi avere accesso al token creato in Secrets Manager o CodeConnections.
Per concedere l'accesso al ruolo IAM del CodeBuild progetto a Secrets Manager or CodeConnections, è necessario aggiungere la seguente policy IAM.
Per concedere l'accesso al ruolo IAM del CodeBuild progetto
-
Crea un ruolo IAM per il tuo CodeBuild progetto seguendo le istruzioni Permetti CodeBuild di interagire con altri AWS services per il tuo CodeBuild progetto.
-
Esegui una delle seguenti operazioni:
-
Aggiungi la seguente policy IAM al ruolo CodeBuild del tuo progetto per concedere l'accesso al tuo segreto.
(Facoltativo) Se utilizzi chiavi gestite AWS KMS dal cliente per crittografare un segreto di Secrets Manager, puoi aggiungere la seguente dichiarazione politica per concedere l'accesso.
-
Aggiungi la seguente policy IAM al tuo ruolo di CodeBuild progetto per concedere l'accesso alla tua connessione.
-
Passaggio 3: configura Secrets Manager o i CodeConnections token
Puoi impostare le tue credenziali di origine su tre diversi livelli con Secrets Manager o CodeConnections con i token.
Configura Secrets Manager o i CodeConnections token come credenziali a livello di account
È possibile configurare un segreto o una CodeConnections connessione di Secrets Manager come credenziale a livello di account e utilizzarli in un progetto.
Ora puoi usare il token nel tuo progetto di compilazione ed eseguirlo. Per ulteriori informazioni, consulta Crea un progetto di compilazione in AWS CodeBuild e Esegui AWS CodeBuild le build manualmente.
Configura più token come credenziali a livello di origine
Per utilizzare i segreti o CodeConnections le connessioni di Secrets Manager come credenziali a livello di origine, fai riferimento direttamente al token nel CodeBuild progetto e avvia una build.
Imposta un fallback delle credenziali di origine a livello di progetto
Per impostare il fallback delle credenziali di origine a livello di progetto, utilizzalo NO_SOURCE come fonte principale del progetto e fai riferimento al token.
aws codebuild create-project \ --name<project-name>\ --service-role<service-role-name>\ --artifacts type=NO_ARTIFACTS \ --environment "type=LINUX_CONTAINER, computeType=BUILD_GENERAL1_SMALL, image=aws/codebuild/amazonlinux-x86_64-standard:5.0" \ --service-role<service-role-name>\ --source "type=NO_SOURCE, auth={type=SECRETS_MANAGER,resource=<secret-or-connection-arn>}, buildspec=<buildspec>" --secondary-sources "type=GITHUB, location=<github-repository>, sourceIdentifier=secondary" aws codebuild start-build --region<aws-region>--project-name<project_name>
Quando si utilizzaNO_SOURCE, in genere viene fornito un buildspec all'interno del modello sorgente in quanto non è configurato direttamente per utilizzare una fonte esterna per recuperare il buildspec. Riferimento alle specifiche di compilazione per CodeBuild Comunemente, una NO_SOURCE fonte gestirà la clonazione di tutti i repository pertinenti dall'interno di buildspec. Per garantire che le credenziali configurate siano disponibili per tali operazioni, puoi abilitare l'opzione in buildspec. git-credential-helper
env: git-credential-helper: yes
Durante la compilazione, CodeBuild leggerà quindi il AuthServer campo dal token configurato e utilizzerà le credenziali del token per tutte le richieste git a quel particolare fornitore di sorgenti di terze parti.
Opzioni di configurazione aggiuntive
È possibile configurare le credenziali a livello di account di Secrets Manager utilizzando CloudFormation i modelli. È possibile utilizzare il seguente CloudFormation modello per impostare una credenziale a livello di account:
Parameters: GitHubToken: Type: String NoEcho: true Default: placeholder Resources: CodeBuildAuthTokenSecret: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token Name: codebuild-auth-token SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubToken - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token CodeBuildSecretsManagerAccountCredential: Type: AWS::CodeBuild::SourceCredential Properties: ServerType: GITHUB AuthType: SECRETS_MANAGER Token: !Ref CodeBuildAuthTokenSecret
Nota
Se stai creando anche un progetto nello stesso stack, utilizza l' CloudFormation DependsOnattributo per assicurarti che AccountCredential venga creato prima del progetto.
Puoi anche configurare più credenziali a livello di origine di Secrets Manager utilizzando CloudFormation i modelli. È possibile utilizzare il seguente CloudFormation modello per utilizzare più token per inserire più fonti:
Parameters: GitHubTokenOne: Type: String NoEcho: true Default: placeholder GitHubTokenTwo: Type: String NoEcho: true Default: placeholder Resources: CodeBuildSecretsManagerProject: Type: AWS::CodeBuild::Project Properties: Name: codebuild-multitoken-example ServiceRole:<service-role>Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/amazonlinux-x86_64-standard:5.0 Source: Type: GITHUB Location:<github-repository-one>Auth: Type: SECRETS_MANAGER Resource: !Ref CodeBuildAuthTokenSecretOne SecondarySources: - Type: GITHUB Location:<github-repository-two>Auth: Type: SECRETS_MANAGER Resource: !Ref CodeBuildAuthTokenSecretTwo SourceIdentifier: secondary Artifacts: Type: NO_ARTIFACTS LogsConfig: CloudWatchLogs: Status: ENABLED CodeBuildProjectIAMRoleSecretAccess: Type: AWS::IAM::RolePolicy Properties: RoleName:<role-name>PolicyName: CodeBuildProjectIAMRoleSecretAccessPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - secretsmanager:GetSecretValue Resource: - !Ref CodeBuildAuthTokenSecretOne - !Ref CodeBuildAuthTokenSecretTwo CodeBuildAuthTokenSecretOne: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token one Name: codebuild-auth-token-one SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubTokenOne - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token CodeBuildAuthTokenSecretTwo: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token two Name: codebuild-auth-token-two SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubTokenTwo - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token