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.
Crear una instancia de Azure Key Vault
Navegue hasta Azure Portal.
Seleccione Crear un recurso en el panel de navegación izquierdo.
Busque key Vault y luego presione Entrar.
Seleccione Crear para crear una nueva instancia de Azure Key Vault.
En Suscripción, seleccione la suscripción y, en Grupo de recursos, agregue un nuevo grupo de recursos. En Nombre del almacén de claves, elija un nombre y complete los campos de Región y Plan de tarifa. Seleccione Revisar y crear cuando haya terminado.
Cuando finalice la implementación del nuevo recurso, seleccione Ir al recurso.
Creación de una entidad de servicio
En este paso, crearemos una nueva entidad de servicio en Azure, lo que nos permitirá consultar nuestra instancia de Azure Key Vault desde Azure Pipelines.
Navegue hasta Azure Portal.
En la barra de menús, seleccione el icono >_ para abrir el de Cloud Shell.
Seleccione PowerShell o déjelo como Bash según sus preferencias.
Ejecute el comando siguiente para crear una entidad de servicio:
az ad sp create-for-rbac --name YOUR_SERVICE_PRINCIPAL_NAME
La salida debe coincidir con el ejemplo siguiente. Asegúrese de copiar la salida del comando, ya que la necesitará para crear la conexión de servicio en el próximo paso.
{ "appId": "p951q3e2-8e5r-z697-e9q52aviu8a2", "displayName": "MyServicePrincipal", "password": "***********************************", "tenant": "85wes2u6-63sh-95zx-2as3-qw58wex269df" }
Configuración de los permisos de acceso de Key Vault
Navegue hasta Azure Portal.
Seleccione el nombre del almacén de claves que creó en el paso anterior.
Seleccione Directivas de acceso.
Seleccione Agregar directiva de acceso para agregar una nueva directiva.
Agregue un permiso Obtener y Enumerar a Permisos de secretos.
En Seleccionar entidad de seguridad, seleccione una entidad de servicio para agregar y elija la que creó anteriormente.
Cuando haya terminado, haga clic en Guardar.
Nota:
No se admiten las instancias de Azure Key Vault que usan el control de acceso basado en rol de Azure (RBAC de Azure).
Creación de una nueva conexión de servicio
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Seleccione Configuración del proyecto y, a continuación, seleccione Conexiones de servicio.
Si va a configurar una conexión de servicio por primera vez en el proyecto, seleccione Crear conexión de servicio. Si ha realizado conexiones de servicio antes, seleccione Nueva conexión de servicio.
Seleccione Azure Resource Manager y, a continuación, haga clic en Siguiente.
Seleccione Entidad de servicio (manual), y a continuación, seleccione Siguiente.
Seleccione Suscripción para el nivel de ámbito y rellene los campos necesarios con información de la entidad de servicio creada anteriormente. Seleccione Comprobar cuando haya terminado:
- id.de entidad de servicio: su entidad de servicioappId.
- Clave de entidad de servicio: su entidad de servicio contraseña.
- id. de inquilino: su entidad de servicio inquilino.
Proporcione un nombre para la conexión de servicio y asegúrese de comprobar la casilla Conceder permiso de acceso a todas las canalizaciones.
Seleccione Comprobar y guardar cuando haya terminado.
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: 'repo-kv-demo' ## YOUR_SERVICE_CONNECTION_NAME
KeyVaultName: 'kv-demo-repo' ## YOUR_KEY_VAULT_NAME
SecretsFilter: 'secretDemo' ## YOUR_SECRET_NAME. Default value: *
RunAsPreJob: false ## Make the secret(s) available to the whole job
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
- task: DotNetCoreCLI@2
inputs:
command: 'run'
projects: '**/*.csproj'
env:
mySecret: $(secretDemo)
- bash: |
echo "Secret Found! $MY_MAPPED_ENV_VAR"
env:
MY_MAPPED_ENV_VAR: $(mySecret)
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".