Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Uso de varios tokens de acceso en CodeBuild

Modo de enfoque
Uso de varios tokens de acceso en CodeBuild - AWS CodeBuild

CodeBuild admite el suministro de tokens de acceso a proveedores externos a partir de secretos en AWS Secrets Manager o mediante conexiones de AWS CodeConnections. Puede establecer su secreto o conexión como credencial predeterminada para las interacciones con un proveedor externo específico, como GitHub, GitHub Enterprise o Bitbucket.

Puede establecer las credenciales de origen en tres niveles distintos:

  1. Credenciales de nivel de cuenta para todos los proyectos: son las credenciales predeterminadas para todos los proyectos de una cuenta de AWS. Se usarán en un proyecto cuando no se especifique ninguna credencial de nivel de origen o proyecto.

  2. Credenciales de nivel de origen para un repositorio específico: esto ocurre cuando se define una conexión de secreto de Secrets Manager o CodeConnections en un origen de proyecto. Estas credenciales solo se utilizarán para las operaciones en el repositorio de origen especificado. Esto le permite configurar varios tokens de acceso con distintos ámbitos de permiso en el mismo proyecto y no utilizar las credenciales de nivel de cuenta predeterminadas.

  3. Credenciales alternativas de nivel de proyecto: puede establecer una credencial alternativa de nivel de proyecto si usa NO_SOURCE como tipo de origen principal y define un secreto o una conexión en este. Se puede usar cuando tiene varios orígenes en un proyecto pero quiere utilizar las mismas credenciales para todos, o bien cuando no quiere usar las credenciales de nivel de cuenta predeterminadas para su proyecto.

Paso 1: Crear un secreto de Secrets Manager o una conexión de CodeConnections

Siga las instrucciones a continuación para crear un secreto de Secrets Manager o una conexión de CodeConnections:

Paso 2: Conceder al rol de IAM del proyecto de CodeBuild acceso a los secretos de Secrets Manager

nota

Antes de continuar, debe tener acceso al token creado en Secrets Manager o CodeConnections.

Para conceder al rol de IAM del proyecto de CodeBuild acceso a Secrets Manager o CodeConnections, debe agregar la siguiente política de IAM.

Para conceder acceso al rol de IAM del proyecto de CodeBuild
  1. Siga las instrucciones de Cómo permitir que CodeBuild interactúe con otros servicios de AWS para su proyecto de CodeBuild a fin de crear un rol de IAM para CodeBuild.

  2. Realice una de las siguientes acciones:

    • Agregue la siguiente política de IAM a su rol de proyecto de CodeBuild para conceder acceso a su secreto.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "<secret-arn>" ] } ] }

      (Opcional) Si utiliza claves administradas por el cliente de AWS KMS para cifrar un secreto de Secrets Manager, puede agregar la siguiente declaración de política para conceder acceso.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "<kms-key-arn>", "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "<secret-arn>" } } } ] }
    • Agregue la siguiente política de IAM a su rol de proyecto de CodeBuild para conceder acceso a su conexión.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:GetConnectionToken", "codeconnections:GetConnection" ], "Resource": [ <connection-arn> ] } ] }

Paso 3: Configurar tokens de Secrets Manager o de CodeConnections

Con los tokens de Secrets Manager o de CodeConnections, puede establecer sus credenciales de origen en tres niveles distintos.

Configuración de tokens de Secrets Manager o de CodeConnections como credenciales de nivel de cuenta

Puede configurar una conexión de secreto de Secrets Manager o de CodeConnections como una credencial de nivel de cuenta y utilizarla en un proyecto.

AWS Management Console
Para configurar una conexión como credencial de nivel de cuenta en la AWS Management Console
  1. En Proveedor de origen, seleccione Bitbucket, GitHub o GitHub Enterprise.

  2. En Credencial, realice una de las siguientes acciones:

    • Elija Credencial de origen predeterminada para aplicar la credencial de origen predeterminada de su cuenta a todos los proyectos.

      1. Si no está conectado a su proveedor de origen, elija Administrar la credencial de origen predeterminada.

      2. En Tipo de credencial, elija un tipo de credencial.

      3. Si ha seleccionado CodeConnections, elija usar una conexión existente o cree una nueva.

        Si ha elegido un tipo de credencial distinto, elija en Servicio el servicio que quiere usar para almacenar el token y haga lo siguiente:

        • Si ha elegido usar Secrets Manager, puede elegir entre usar una conexión de secreto existente o crear un secreto nuevo y elegir Guardar. Para obtener más información sobre cómo crear un secreto nuevo, consulte Creación y almacenamiento de un token en un secreto de Secrets Manager.

        • Si ha elegido usar CodeBuild, especifique su token o nombre de usuario y contraseña de aplicación y elija Guardar.

    • Elija Credencial de origen personalizada a fin de usar una credencial de este tipo para anular la configuración predeterminada de su cuenta.

      1. En Tipo de credencial, elija un tipo de credencial.

      2. En Conexión, elija usar una conexión existente o cree una nueva.

AWS CLI
Para configurar una conexión como credencial de nivel de cuenta en la AWS CLI
  • Abra un terminal (Linux, macOS o Unix) o un símbolo del sistema (Windows). Utilice la AWS CLI para ejecutar el comando import-source-credentials.

    Utilice el comando siguiente para configurar un secreto de Secrets Manager:

    aws codebuild import-source-credentials \ --token "<secret-arn>" \ --server-type <source-provider> \ --auth-type SECRETS_MANAGER \ --region <aws-region>

    Utilice el comando siguiente para configurar una conexión de CodeConnections:

    aws codebuild import-source-credentials \ --token "<connection-arn>" \ --server-type <source-provider> \ --auth-type CODECONNECTIONS \ --region <aws-region>

    Este comando permite importar un token como credenciales de origen predeterminadas de nivel de cuenta. Al importar una credencial mediante la API ImportSourceCredentials, CodeBuild usará el token para todas las interacciones con el proveedor de origen, como los webhooks, los informes de estado de la compilación y las operaciones del clon de git, a menos que se haya configurado un conjunto de credenciales más específico en el proyecto.

Para configurar una conexión como credencial de nivel de cuenta en la AWS Management Console
  1. En Proveedor de origen, seleccione Bitbucket, GitHub o GitHub Enterprise.

  2. En Credencial, realice una de las siguientes acciones:

    • Elija Credencial de origen predeterminada para aplicar la credencial de origen predeterminada de su cuenta a todos los proyectos.

      1. Si no está conectado a su proveedor de origen, elija Administrar la credencial de origen predeterminada.

      2. En Tipo de credencial, elija un tipo de credencial.

      3. Si ha seleccionado CodeConnections, elija usar una conexión existente o cree una nueva.

        Si ha elegido un tipo de credencial distinto, elija en Servicio el servicio que quiere usar para almacenar el token y haga lo siguiente:

        • Si ha elegido usar Secrets Manager, puede elegir entre usar una conexión de secreto existente o crear un secreto nuevo y elegir Guardar. Para obtener más información sobre cómo crear un secreto nuevo, consulte Creación y almacenamiento de un token en un secreto de Secrets Manager.

        • Si ha elegido usar CodeBuild, especifique su token o nombre de usuario y contraseña de aplicación y elija Guardar.

    • Elija Credencial de origen personalizada a fin de usar una credencial de este tipo para anular la configuración predeterminada de su cuenta.

      1. En Tipo de credencial, elija un tipo de credencial.

      2. En Conexión, elija usar una conexión existente o cree una nueva.

Ahora puede usar el token en el proyecto de compilación y ejecutarlo. Para obtener más información, consulte Creación de un proyecto de compilación en AWS CodeBuild y Ejecución de compilaciones de AWS CodeBuild de forma manual.

Configuración de varios tokens como credenciales de nivel de origen

Para usar secretos de Secrets Manager o conexiones de CodeConnections como credenciales de nivel de origen, haga referencia al token directamente en el proyecto de CodeBuild e inicie una compilación.

AWS Management Console
Para configurar varios tokens como credenciales de nivel de origen en la AWS Management Console
  1. En Source provider (Proveedor de código fuente), elija GitHub.

  2. En Credencial, realice una de las siguientes acciones:

    • Elija Credencial de origen predeterminada para aplicar la credencial de origen predeterminada de su cuenta a todos los proyectos.

      1. Si no está conectado a GitHub, elija Administrar la credencial de origen predeterminada.

      2. En Tipo de credencial, elija Aplicación GitHub.

      3. En Conexión, elija usar una conexión existente o cree una nueva.

    • Elija Credencial de origen personalizada a fin de usar una credencial de este tipo para anular la configuración predeterminada de su cuenta.

      1. En Tipo de credencial, elija Aplicación GitHub.

      2. En Conexión, elija usar una conexión existente o cree una nueva.

  3. Elija Agregar el origen y repita el proceso de elegir el proveedor de origen y las credenciales.

AWS CLI
Para configurar varios tokens como credenciales de nivel de origen en la AWS CLI
  • Abra un terminal (Linux, macOS o Unix) o un símbolo del sistema (Windows). Utilice la AWS CLI para ejecutar el comando create-project.

    Utilice el siguiente comando:

    aws codebuild create-project --region <aws-region> \ --name <project-name> \ --artifacts type=NO_ARTIFACTS \ --environment "type=LINUX_CONTAINER, computeType=BUILD_GENERAL1_SMALL, image=aws/codebuild/amazonlinux2-x86_64-standard:5.0" \ --service-role <service-role-name> \ --source "type=GITHUB, location=<github-repository-1>, auth={type=SECRETS_MANAGER,resource=<secret-or-connection-arn-1>}" \ --secondary-sources "type=GITHUB, location=<github-repository-2>, auth={type=SECRETS_MANAGER,resource=<secret-or-connection-arn-2>}, sourceIdentifier=secondary" aws codebuild start-build --region <aws-region> --project-name <project-name>
Para configurar varios tokens como credenciales de nivel de origen en la AWS Management Console
  1. En Source provider (Proveedor de código fuente), elija GitHub.

  2. En Credencial, realice una de las siguientes acciones:

    • Elija Credencial de origen predeterminada para aplicar la credencial de origen predeterminada de su cuenta a todos los proyectos.

      1. Si no está conectado a GitHub, elija Administrar la credencial de origen predeterminada.

      2. En Tipo de credencial, elija Aplicación GitHub.

      3. En Conexión, elija usar una conexión existente o cree una nueva.

    • Elija Credencial de origen personalizada a fin de usar una credencial de este tipo para anular la configuración predeterminada de su cuenta.

      1. En Tipo de credencial, elija Aplicación GitHub.

      2. En Conexión, elija usar una conexión existente o cree una nueva.

  3. Elija Agregar el origen y repita el proceso de elegir el proveedor de origen y las credenciales.

Establecimiento de una alternativa para las credenciales de origen de nivel de proyecto

Para configurar una alternativa a las credenciales de origen de nivel de proyecto, use NO_SOURCE como origen principal del proyecto y haga referencia 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/amazonlinux2-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>

Cuando se usa NO_SOURCE, suele proporcionarse una especificación de compilación en el modelo de origen, ya que no está configurado directamente para usar un origen externo para obtener la especificación de compilación. Por lo general, un origen NO_SOURCE se encarga de clonar todos los repositorios pertinentes desde la especificación de compilación. Para asegurarse de que las credenciales configuradas estén disponibles para esas operaciones, puede habilitar la opción git-credential-helper en la especificación de compilación.

env: git-credential-helper: yes

Durante la compilación, CodeBuild leerá el campo AuthServer del token configurado y usará las credenciales del token para todas las solicitudes de git a ese proveedor de origen externo en particular.

Opciones de configuración adicionales

Puede configurar credenciales de nivel de cuenta de Secrets Manager mediante plantillas de AWS CloudFormation. Para establecer una credencial de nivel de cuenta, puede usar la siguiente plantilla de AWS CloudFormation:

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

Si también va a crear un proyecto en la misma pila, use el atributo DependsOn de AWS CloudFormation para asegurarse de que AccountCredential se crea antes del proyecto.

También puede configurar varias credenciales de nivel de origen de Secrets Manager mediante plantillas de AWS CloudFormation. Puede usar la siguiente plantilla de AWS CloudFormation para usar varios tokens a fin de incluir varios orígenes:

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/amazonlinux2-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
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.