As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Vários tokens de acesso em CodeBuild
CodeBuild suporta o fornecimento de tokens de acesso para provedores terceirizados a partir de seus segredos em AWS Secrets Manager ou por meio de Conexões de código da AWS conexões. Você pode definir seu segredo ou conexão como a credencial padrão para interações com um provedor terceirizado específico GitHub, como GitHub Enterprise ou Bitbucket.
Você pode definir suas credenciais de origem em três níveis diferentes:
-
Credenciais no nível da conta para todos os projetos: essas são as credenciais padrão para todos os projetos em uma conta da AWS . Elas serão usadas em um projeto quando nenhuma credencial de projeto ou de nível de origem for especificada.
-
Credenciais de nível de origem para um repositório específico: é quando um segredo ou CodeConnections conexão do Secrets Manager é definido em uma fonte de projeto. Essas credenciais serão usadas somente para operações no repositório de origem especificado. Isso permite que você configure vários tokens de acesso com diferentes escopos de permissão no mesmo projeto e não use as credenciais padrão no nível da conta.
-
Credenciais de fallback no nível do projeto: você pode definir uma credencial de fallback no nível do projeto usando
NO_SOURCEcomo tipo de fonte primária e definir um segredo ou uma conexão nela. Use isso quando você tiver várias fontes em um projeto, mas quiser usar as mesmas credenciais para elas, ou quando não quiser usar as credenciais padrão de nível de conta para seu projeto.
Tópicos
Etapa 1: criar um segredo ou uma CodeConnections conexão do Secrets Manager
Use as instruções a seguir para criar um segredo ou uma CodeConnections conexão do Secrets Manager:
Etapa 2: Conceder acesso à função IAM do CodeBuild projeto aos segredos do Secrets Manager
nota
Antes de continuar, você deve ter acesso ao token criado no Secrets Manager ou CodeConnections.
Para conceder acesso à função IAM do CodeBuild projeto ao Secrets Manager CodeConnections, você deve adicionar a seguinte política de IAM.
Para conceder acesso à função IAM do CodeBuild projeto
-
Crie uma função do IAM para seu CodeBuild projeto seguindo as instruções CodeBuild Permitir interagir com outros AWS serviços para seu CodeBuild projeto.
-
Execute um destes procedimentos:
-
Adicione a seguinte política do IAM à sua função de CodeBuild projeto para conceder acesso ao seu segredo.
(Opcional) Se você estiver usando chaves gerenciadas pelo AWS KMS cliente para criptografar um segredo do Secrets Manager, poderá adicionar a seguinte declaração de política para conceder acesso.
-
Adicione a seguinte política do IAM à sua função de CodeBuild projeto para conceder acesso à sua conexão.
-
Etapa 3: configurar o Secrets Manager ou CodeConnections tokens
Você pode definir suas credenciais de origem em três níveis diferentes com o Secrets Manager ou CodeConnections tokens.
Configurar o Secrets Manager ou CodeConnections tokens como credenciais no nível da conta
Você pode configurar um segredo ou CodeConnections conexão do Secrets Manager como uma credencial no nível da conta e usá-la em um projeto.
Agora você pode usar o token no projeto de compilação e executá-lo. Para obter mais informações, consulte Crie um projeto de construção em AWS CodeBuild e Execute AWS CodeBuild compilações manualmente.
Configurar vários tokens como credenciais no nível de origem
Para usar segredos ou CodeConnections conexões do Secrets Manager como credenciais de nível de origem, faça referência direta ao token no CodeBuild projeto e inicie uma compilação.
Defina um fallback de credencial de origem no nível do projeto
Para configurar o fallback da credencial de origem no nível do projeto, use NO_SOURCE como fonte primária do seu projeto e faça referência ao 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>
Ao usar NO_SOURCE, um buildspec normalmente é fornecido dentro do modelo de origem, pois não está diretamente configurado para usar uma fonte externa para buscar buildspec. Normalmente, uma origem NO_SOURCE lidará com a clonagem de todos os repositórios relevantes de dentro do buildspec. Para garantir que as credenciais configuradas estejam disponíveis para essas operações, você pode ativar a opção git-credential-helper no buildspec.
env: git-credential-helper: yes
Durante a compilação, então CodeBuild lerá o AuthServer campo do token configurado e usará as credenciais do token para todas as solicitações git para esse provedor de origem terceirizado específico.
Opções de configuração adicionais
Você pode configurar as credenciais de nível de conta do Secrets Manager usando CloudFormation modelos. Você pode usar o CloudFormation modelo a seguir para definir uma credencial no nível da conta:
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 você também estiver criando um projeto na mesma pilha, use o CloudFormation atributo DependsOn para garantir que o AccountCredential seja criado antes do projeto.
Você também pode configurar várias credenciais de nível de origem do Secrets Manager usando CloudFormation modelos. Você pode usar o CloudFormation modelo a seguir para usar vários tokens para obter várias fontes:
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