Compartir a través de


Uso de secretos de Azure Key Vault en Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Con Azure Key Vault, puede almacenar y administrar de forma segura la información confidencial, como contraseñas, claves de API, certificados, etc. Con Azure Key Vault, puede crear y administrar fácilmente claves de cifrado para cifrar los datos. Azure Key Vault también se puede usar para administrar certificados de todos los recursos. En este artículo, aprenderá a:

  • Cree un almacén de Azure Key Vault.
  • Configure los permisos de Key Vault.
  • Cree una nueva conexión de servicio.
  • Consulte los secretos de la canalización de Azure.

Requisitos previos

  • Una organización de Azure DevOps. Si aún no tiene un proyecto, cree uno gratis.
  • Su propio proyecto. Si aún no tiene un proyecto, cree uno.
  • Su propio repositorio. Si aún no tiene un repositorio de Git, cree uno.
  • Suscripción a Azure. Si aún no tiene una cuenta de Azure gratuita, cree una.

Creación de un almacén de claves

  1. Inicie sesión en Azure Portal y seleccione Crear un recurso.

  2. En Key Vault, seleccione Crear para crear una instancia de Azure Key Vault.

  3. Seleccione la suscripción en el menú desplegable y, a continuación, seleccione un grupo de recursos existente o cree uno nuevo. Escriba un nombre de almacén de claves, seleccione una región, elija un plan de tarifa y seleccione Siguiente si desea configurar propiedades adicionales. De lo contrario, seleccione Revisar y crear para mantener la configuración predeterminada.

  4. Una vez finalizada la implementación, seleccione Ir al recurso.

Configuración de la autenticación

Creación de una identidad administrada asignada por el usuario

  1. Inicie sesión en Azure Portal y busque el servicio Identidades administradas en la barra de búsqueda.

  2. Seleccione Crear y rellene los campos obligatorios de la siguiente manera:

    • Suscripción: seleccione la suscripción en el menú desplegable.
    • Grupo de recursos: seleccione un grupo de recursos existente o cree uno nuevo.
    • Región: seleccione una región en el menú desplegable.
    • Nombre: Ingrese un nombre para su identidad administrada asignada por el usuario.
  3. Seleccione Revisar y crear cuando haya terminado.

  4. Una vez completada la implementación, seleccione Ir al recurso y, a continuación, copie los valores de Suscripción e Id. de cliente para usarlos en los próximos pasos.

  5. Vaya a Propiedades de configuración>y copie el valor de Id. de inquilino de la identidad administrada para su uso posterior.

Configuración de directivas de acceso al almacén de claves

  1. Vaya a Azure Portal y use la barra de búsqueda para buscar el almacén de claves que creó anteriormente.

  2. Seleccione Directivas de acceso y, después, Crear para agregar una nueva directiva.

  3. En Permisos secretos, active las casillas Obtener y Enumerar .

  4. Seleccione Siguiente y pegue el identificador de cliente de la identidad administrada que creó anteriormente en la barra de búsqueda. Seleccione su identidad administrada.

  5. Seleccione Siguiente y , una vez más, Siguiente .

  6. Revise las nuevas directivas y, a continuación, seleccione Crear cuando haya terminado.

Creación de una conexión de servicio

  1. Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.

  2. Seleccione Configuración del proyecto>Conexiones de servicio y, a continuación, seleccione Nueva conexión de servicio para crear una nueva conexión de servicio.

  3. Seleccione Azure Resource Manager y, después, siguiente.

  4. En Tipo de identidad, seleccione Identidad administrada en el menú desplegable.

  5. Para el paso 1: Detalles de la identidad administrada, rellene los campos como se indica a continuación:

    • Suscripción para identidad administrada: seleccione la suscripción que contiene la identidad administrada.

    • Grupo de recursos para identidad administrada: seleccione el grupo de recursos que hospeda la identidad administrada.

    • Identidad administrada: seleccione la identidad administrada en el menú desplegable.

  6. Para el paso 2: Ámbito de Azure, rellene los campos como se indica a continuación:

    • Nivel de ámbito para la conexión de servicio: seleccione Suscripción.

    • Suscripción para la conexión de servicio: seleccione la suscripción a la que accederá la identidad administrada.

    • Grupo de recursos para conexión de servicio: (opcional) Especifique para limitar el acceso de identidad administrada a un grupo de recursos.

  7. Para el paso 3: Detalles de conexión del servicio:

    • Nombre de la conexión de servicio: proporcione un nombre para la conexión de servicio.

    • Referencia de administración de servicios: (opcional) Información de contexto de una base de datos ITSM.

    • Descripción: (opcional) Agregue una descripción.

  8. En Seguridad, active la casilla Conceder permiso de acceso a todas las canalizaciones para permitir que todas las canalizaciones usen esta conexión de servicio. Si no selecciona esta opción, debe conceder manualmente acceso a cada canalización que use esta conexión de servicio.

  9. Seleccione Guardar para validar y crear la conexión de servicio.

    Captura de pantalla que muestra cómo crear una conexión de servicio arm de identidad administrada.

Consulta y uso de secretos en la canalización

Con la tarea Azure Key Vault podemos capturar el valor de nuestro secreto y usarlo en las tareas subsiguientes de nuestra canalización. Algo que hay que tener en cuenta es que los secretos se deben asignar explícitamente a la variable env, como se muestra en el ejemplo siguiente.

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: AzureKeyVault@1
  inputs:
    azureSubscription: 'SERVICE_CONNECTION_NAME'
    KeyVaultName: 'KEY_VAULT_NAME'
    SecretsFilter: '*'

- bash: |
    echo "Secret Found! $MY_MAPPED_ENV_VAR"        
  env:
    MY_MAPPED_ENV_VAR: $(SECRET_NAME)

La salida del último comando Bash debe tener este aspecto:

Secret Found! ***

Nota:

Si quiere consultar varios secretos de su instancia de Azure Key Vault, use el argumento SecretsFilter para pasar una lista separada por comas de nombres de secretos: "secret1, secret2".