Uso de secretos de Azure Key Vault en Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Azure Key Vault permite a los desarrolladores almacenar y administrar secretos de forma segura, como claves de API, credenciales o certificados. El servicio Azure Key Vault admite dos tipos de contenedores: almacenes y grupos de HSM (módulo de seguridad de hardware) administrados. Los almacenes admiten el almacenamiento de software y de claves, secretos y certificados respaldados por HSM; mientras que los grupos de HSM administrados solo admiten claves respaldadas por HSM.
En este tutorial, aprenderá a:
- Crear una instancia de Azure Key Vault mediante la CLI de Azure.
- Incorporar un secreto y configurar el acceso a Azure Key Vault.
- Uso de secretos en la canalización
Prerrequisitos
- Una organización de Azure DevOps. Si no tiene ninguna, puede crearla gratis.
- Suscripción a Azure. Cree una cuenta de Azure de forma gratuita si aún no tiene una.
Crear una instancia de Azure Key Vault
Inicie sesión en Azure Portal y, luego, seleccione el botón Cloud Shell en la esquina superior derecha.
Si tiene más de una suscripción de Azure asociada a su cuenta, use el siguiente comando para especificar una suscripción predeterminada. Puede usar
az account list
para generar una lista de las suscripciones.az account set --subscription <your_subscription_name_or_ID>
Establezca la región de Azure predeterminada. Puede usar
az account list-locations
para generar una lista de regiones disponibles.az config set defaults.location=<your_region>
Por ejemplo, este comando seleccionará la región westus2:
az config set defaults.location=westus2
Cree un nuevo grupo de recursos. Un grupo de recursos es un contenedor que almacena los recursos relacionados con una solución de Azure.
az group create --name <your-resource-group>
Cree un nuevo almacén de claves.
az keyvault create \ --name <your-key-vault> \ --resource-group <your-resource-group>
Cree un nuevo secreto en el almacén de claves de Azure.
az keyvault secret set \ --name "Password" \ --value "mysecretpassword" \ --vault-name <your-key-vault-name>
Crear un proyecto
Inicie sesión en su organización de Azure DevOps.
Si no tiene ningún proyecto en la organización, seleccione Cree un proyecto para empezar. De lo contrario, seleccione Nuevo proyecto en la esquina superior derecha.
Creación de un repositorio
Usaremos YAML para crear nuestra canalización, pero primero es necesario crear un nuevo repositorio.
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Seleccione Repositorios y, luego, elija Inicializar para inicializar un nuevo repositorio con un archivo LÉAME.
Creación de una canalización
Seleccione Canalizaciones y elija Nueva canalización.
Seleccione GIT de Azure Repos (YAML).
Seleccione el repositorio que creó en el paso anterior.
Seleccione la plantilla Canalización inicial.
La canalización predeterminada incluirá algunos scripts que ejecutan comandos de eco. No son necesarios, así que se pueden eliminar. El nuevo archivo YAML debería tener este aspecto:
trigger: - main pool: vmImage: 'ubuntu-latest' steps:
Seleccione Mostrar asistente para expandir el panel del asistente. Este panel proporciona una práctica lista de tareas de canalización en la que se puede hacer búsquedas.
Busque almacén y seleccione la tarea Azure Key Vault.
En Suscripción de Azure, seleccione su suscripción y, luego, elija Autorizar. Seleccione su almacén de claves en el menú desplegable y, luego, elija Agregar para agregar la tarea a la canalización YAML.
Nota:
La característica Poner secretos a disposición de todo el trabajo no se admite en Azure DevOps Server 2019 y 2020.
El archivos YAML debe tener un aspecto parecido al siguiente:
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 inputs: azureSubscription: 'Your-Azure-Subscription' KeyVaultName: 'Your-Key-Vault-Name' SecretsFilter: '*' RunAsPreJob: false - task: CmdLine@2 inputs: script: 'echo $(Your-Secret-Name) > secret.txt' - task: CopyFiles@2 inputs: Contents: secret.txt targetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container'
No guarde ni ponga en cola todavía la canalización. Primero debemos conceder a nuestra canalización los permisos adecuados para acceder a Azure Key Vault. Mantenga abierta la pestaña del explorador, ya reanudaremos los pasos restantes una vez configurados los permisos del almacén de claves.
Configuración de las directivas de acceso de Azure Key Vault
Para acceder a nuestra instancia de Azure Key Vault, primero debemos configurar una entidad de servicio para conceder acceso a Azure Pipelines. Siga esta guía para crear la entidad de servicio y, luego, continúe con los pasos siguientes de esta sección.
Navegue hasta Azure Portal.
Use la barra de búsqueda para buscar el almacén de claves que creó anteriormente.
En Configuración, seleccione Directivas de acceso.
Seleccione Agregar directiva de acceso para agregar una nueva directiva.
En Permisos de secretos, seleccione Obtener y enumerar.
Seleccione la opción para elegir una entidad de servicio y busque la que creó al principio de esta sección. Una entidad de seguridad es un objeto que representa un usuario, un grupo o una entidad de servicio que solicita acceso a recursos de Azure.
Seleccione Agregar para crear la directiva de acceso y, cuando haya acabado, elija Guardar.
Nota
No se admiten los almacenes de Claves de Azure que usan el control de acceso basado en rol de Azure (RBAC de Azure).
Ejecución y revisión de la canalización
Vuelva a la pestaña anterior donde nos quedamos.
Seleccione Guardar y, luego, elija de nuevo Guardar para confirmar los cambios y desencadenar la canalización. Es posible que se le pida que permita el acceso de canalización a los recursos de Azure; si este es el caso, seleccione Permitir. Solo tendrá que aprobar la canalización una vez.
Seleccione la tarea CmdLine para ver los registros.
Vuelva al resumen de la canalización y seleccione el artefacto publicado.
Seleccione el artefacto secret.txt para abrirlo.
El archivo de texto debe contener nuestro secreto: mysecretpassword.
Advertencia
Este tutorial tiene carácter educativo exclusivamente. Para conocer los procedimientos recomendados de seguridad y cómo trabajar de forma segura con secretos, consulte Administración de secretos en las aplicaciones de servidor con Azure Key Vault.
Limpieza de recursos
Siga los pasos que se indican a continuación para eliminar los recursos que ha creado:
Si ha creado una nueva organización para hospedar el proyecto, vea cómo eliminar la organización; de lo contrario, elimine el proyecto.
Todos los recursos de Azure creados durante este tutorial se hospedan en un único grupo de recursos, PipelinesKeyVaultResourceGroup. Ejecute el comando siguiente para eliminar el grupo de recursos y todos sus recursos.
az group delete --name PipelinesKeyVaultResourceGroup
Preguntas más frecuentes
P: Recibo el siguiente error: "El usuario o grupo no tiene permiso de lista de secretos". ¿Qué debo hacer?
R: Si encuentra un error que indica que el usuario o grupo no tiene el permiso de lista de secretos en un almacén de claves, ejecute los siguientes comandos para autorizar a la aplicación el acceso a la clave o el secreto en Azure Key Vault:
$ErrorActionPreference="Stop";
$Credential = Get-Credential;
Connect-AzAccount -SubscriptionId <YOUR_SUBSCRIPTION_ID> -Credential $Credential;
$spn=(Get-AzureRmADServicePrincipal -SPN <YOUR_SERVICE_PRINCIPAL_ID>);
$spnObjectId=$spn.Id;
Set-AzureRmKeyVaultAccessPolicy -VaultName key-vault-tutorial -ObjectId $spnObjectId -PermissionsToSecrets get,list;
Pasos siguientes
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de