Azure Key Vault tarea

  • Asegúrese de que la conexión de servicio de Azure tenga al menos permisos Get y List en el almacén. Puede establecer estos permisos en el Azure Portal:

    • Abra la Configuración del almacén, elija Directivas de accesoy, a continuación, Agregar nuevo.
    • En la hoja Agregar directiva de acceso, elija Seleccionar entidad de seguridad y seleccione la entidad de servicio de la cuenta de cliente.
    • En la hoja Agregar directiva de acceso, elija Permisos secretos y asegúrese de que Get y List estén activados (activados).
    • Elija Aceptar para guardar los cambios.

Nota

Si usa un agente hospedado por Microsoft, debe agregar el intervalo IP del agente hospedado por Microsoft al firewall. Obtenga la lista semanal de intervalos IP del archivo JSON semanal,que se publica todos los miércoles. Los nuevos intervalos IP se hacen efectivos el lunes siguiente. Para obtener más información, vea Agentes hospedados por Microsoft. Para buscar los intervalos IP necesarios para su organización Azure DevOps, aprenda a identificar los posibles intervalos IP para los agentes hospedados por Microsoft.

Fragmento de código YAML

# Azure Key Vault
# Download Azure Key Vault secrets
- task: AzureKeyVault@2
  inputs:
    connectedServiceName: # Azure subscription
    keyVaultName: # Name of existing key vault
    secretsFilter: '*' # Downloads all secrets for the key vault
    runAsPreJob: true # Runs before the job starts

Argumentos

Parámetro Descripción
connectedServiceName
Suscripción de Azure
(Obligatorio) Seleccione la conexión de servicio para la suscripción de Azure que contiene la Azure Key Vault o cree una nueva conexión. Más información
keyVaultName
Key Vault
(Obligatorio) Seleccione el nombre de la Azure Key Vault desde la que se descargarán los secretos.
secretsFilter
Filtro de secretos
(Obligatorio) Lista separada por comas de nombres de secretos que se descargarán o para descargar todos los secretos * del almacén de claves seleccionado.
Valor predeterminado: *
runAsPreJob
Hacer que los secretos estén disponibles para todo el trabajo
(Obligatorio) Ejecute la tarea antes de que comience la ejecución del trabajo. Expone secretos a todas las tareas del trabajo, no solo a las tareas que siguen a esta.
Valor predeterminado: false
Parámetro Descripción
connectedServiceName
Suscripción de Azure
(Obligatorio) Seleccione la conexión de servicio para la suscripción de Azure que contiene la Azure Key Vault o cree una nueva conexión. Más información
keyVaultName
Key Vault
(Obligatorio) Seleccione el nombre de la Azure Key Vault desde la que se descargarán los secretos.
secretsFilter
Filtro de secretos
(Obligatorio) Lista separada por comas de nombres de secretos que se descargarán o para descargar todos los secretos * del almacén de claves seleccionado.
Valor predeterminado: *

Nota

Los valores se recuperan como cadenas. Por ejemplo, si hay un secreto denominado connectionString, se crea una variable de tarea con el valor más reciente del secreto correspondiente obtenido de Azure Key Vault. Esta variable está disponible en las tareas posteriores.

Si el valor obtenido del almacén es un certificado (por ejemplo, un archivo PFX), la variable de tarea contendrá el contenido del PFX en formato de cadena. Puede usar el siguiente código de PowerShell para recuperar el archivo PFX de la variable de tarea:

$kvSecretBytes = [System.Convert]::FromBase64String($(PfxSecret))
$certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$certCollection.Import($kvSecretBytes,$null,[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)

Si el archivo de certificado se almacenará localmente en el equipo, es una buena práctica cifrarlo con una contraseña:

 #Get the file created
$password = 'your password'
$protectedCertificateBytes = $certCollection.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password)
$pfxPath = [Environment]::GetFolderPath("Desktop") + "\MyCert.pfx"
[System.IO.File]::WriteAllBytes($pfxPath, $protectedCertificateBytes)

Para obtener más información, consulte Introducción a Azure Key Vault certificados.

Código Abierto

Esta tarea es de código abierto en GitHub. Los comentarios y las contribuciones son bienvenidos.

Preguntas más frecuentes

Aparece un forbidden error en las canalizaciones en el punto de obtención de credenciales de Azure Key Vault

Esto ocurre si faltan los permisos necesarios en el almacén de claves de Azure. Para resolver el problema, agregue una directiva de acceso con los permisos correctos.

¿Necesito un agente?

Necesita al menos un agente para ejecutar la compilación o versión.

Tengo problemas. ¿Cómo puedo solucionarlos?

Vea Solución de problemas de compilación y versión.

No se puede seleccionar un grupo de agentes predeterminado y no se puede poner en cola la compilación o versión. ¿Cómo puedo corregirlo?

Vea Grupos de agentes.

La tarea de envío de cambios de NuGet genera el error siguiente: "Error: no se puede obtener el certificado del emisor local". ¿Cómo lo puedo corregir?

Esto se puede corregir si se añade un certificado raíz de confianza. Puede agregar la variable de entorno NODE_EXTRA_CA_CERTS=file al agente de compilación, o bien la variable de tarea NODE.EXTRA.CA.CERTS=file en la canalización. Vea la documentación de Node.js para obtener más detalles sobre esta variable. Consulte Establecimiento de variables en una canalización para obtener instrucciones sobre cómo establecer una variable en la canalización.

No puedo conectarme con Key Vault desde Azure DevOps.

Esto sucede cuando Key Vault firewall no está configurado correctamente. Asegúrese de que el grupo de agentes y el centro de datos (TFS) pueden acceder al almacén de claves. Asegúrese de que se permiten los intervalos IP del agente para los agentes hospedados por Microsoft.

Azure Pipelines

Información general

Use esta tarea para descargar secretos como claves de autenticación, claves de cuenta de almacenamiento, claves de cifrado de datos, . Archivos PFX y contraseñas de una Azure Key Vault de datos. La tarea se puede usar para capturar los valores más recientes de todos o un subconjunto de secretos del almacén y establecerlos como variables que se pueden usar en las tareas posteriores de una canalización. La tarea está basada en Node y funciona con agentes en Linux, macOS y Windows.

Requisitos previos

La tarea tiene los siguientes requisitos previos:

Puede crear un almacén de claves:

Agregar secretos a un almacén de claves:

  • Mediante el cmdlet de PowerShell Set-AzureKeyVaultSecret. Si el secreto no existe, este cmdlet lo crea. Si el secreto ya existe, este cmdlet crea una nueva versión de ese secreto.

  • Mediante la CLI de Azure. Para agregar un secreto a un almacén de claves, por ejemplo, un secreto denominado SQLPassword con el valor Pa$$w 0rd, escriba:

    az keyvault secret set --vault-name 'ContosoKeyVault' --name 'SQLPassword' --value 'Pa$$w0rd'
    

Cuando quiera acceder a los secretos: