Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Servicios de Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Azure Key Vault es un servicio en la nube que ayuda a los desarrolladores a almacenar y administrar información confidencial de forma segura, como claves de API, credenciales y certificados. Key Vault admite dos tipos de contenedores: almacenes y grupos de módulos de seguridad de hardware (HSM) administrados. Los almacenes pueden almacenar claves, secretos y certificados respaldados tanto por software como por HSM. Los grupos de HSM gestionados son compatibles únicamente con claves respaldadas por HSM.
En este artículo, aprenderá a crear un almacén de claves, agregar un secreto, configurar directivas de acceso y, a continuación, usar ese secreto en Azure Pipelines. En este tutorial se usa un almacén de claves con acceso a la red pública. Si necesita acceder a un almacén de claves privado desde la canalización, consulte Acceso a un almacén de claves privado desde la canalización. Para vincular los secretos de Key Vault a grupos de variables, consulte Vincular un grupo de variables a secretos en Azure Key Vault.
Requisitos previos
| Categoría | Requisitos |
|---|---|
| Azure DevOps | - Una organización de Azure DevOps. - Un proyecto de Azure DevOps . |
| Azur | Una suscripción de Azure. |
Obtención del código
Si no tiene su propio proyecto, importe el repositorio de ejemplo siguiente en el repositorio de Azure:
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Seleccione Repos y luego seleccione Importar. Escriba la siguiente dirección URL del repositorio y seleccione Importar.
https://github.com/MicrosoftDocs/pipelines-dotnet-core
Creación de un Almacén de claves
Para crear un nuevo almacén de claves en Azure mediante el CLI de Azure, siga estos pasos:
Vaya al portal Azure y seleccione Azure Cloud Shell en la esquina superior derecha.
Si la cuenta está asociada a varias suscripciones de Azure, establezca la suscripción predeterminada.
az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>Establezca una región de Azure predeterminada. Para ver una lista de regiones disponibles, ejecute
az account list-locations.az config set defaults.location=<YOUR_REGION>Crear un nuevo grupo de recursos.
az group create --name <YOUR_RESOURCE_GROUP_NAME>Cree un nuevo almacén de claves.
az keyvault create \ --name <YOUR_KEY_VAULT_NAME> \ --resource-group <YOUR_RESOURCE_GROUP_NAME>Agregue un secreto al almacén de claves.
az keyvault secret set \ --name <YOUR_SECRET_NAME> \ --value <YOUR_ACTUAL_SECRET> \ --vault-name <YOUR_KEY_VAULT_NAME>
Configuración de la autenticación
Después de crear el almacén de claves, el siguiente paso es configurar la autenticación. Seleccione Identidad administrada o entidad de servicio y siga las instrucciones para configurar la autenticación.
Creación de una identidad administrada asignada por el usuario
Vaya al portal Azure y busque Administrar identidades en la barra de búsqueda.
Seleccione Crear y proporcione la siguiente información:
- Suscripción: seleccione la suscripción de Azure en el menú desplegable.
- Grupo de recursos: seleccione un grupo de recursos existente o cree uno nuevo.
- Región: seleccione la región donde se crea la identidad administrada.
- Nombre: escriba un nombre para la identidad administrada asignada por el usuario.
Seleccione Revisar y crear y, a continuación, seleccione Crear para iniciar la implementación.
Una vez finalizada la implementación, seleccione Ir al recurso y copie los valores id. de suscripción e Id. de cliente . Necesitará estos valores en pasos posteriores.
En Configuración, seleccione Propiedades y copie el valor de Id. de inquilino de la identidad administrada para su uso posterior.
Configurar directivas de acceso a la bóveda de claves
Vaya al portal Azure y use la barra de búsqueda para buscar el almacén de claves que creó anteriormente.
Seleccione Directivas de acceso y, a continuación, seleccione Crear para agregar una nueva directiva.
En Permisos secretos, active las casillas Obtener y Enumerar .
Seleccione Siguiente. Pegue el identificador de cliente de la identidad administrada que creó anteriormente en la barra de búsqueda y, a continuación, seleccione la identidad administrada.
Seleccione Siguiente y luego seleccione Siguiente otra vez.
Revise los detalles de la directiva de acceso y, a continuación, seleccione Crear para aplicar la directiva.
Creación de una conexión de servicio
Inicie sesión en Azure DevOps y vaya al proyecto.
Seleccione Configuración del proyecto>Conexiones de servicio>Nueva conexión de servicio.
Seleccione Azure Resource Manager y, a continuación, haga clic en Siguiente.
En Tipo de identidad, seleccione Identidad administrada.
En paso 1: Detalles de la identidad administrada, proporcione la siguiente informació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 la lista desplegable.
Para el paso 2: Ámbito de Azure, proporcione la siguiente informació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 accede la identidad administrada.
- Grupo de recursos para la conexión de servicio: (Opcional) Especifique un grupo de recursos para limitar el acceso de la identidad administrada a un grupo de recursos.
Para el paso 3: Detalles de conexión del servicio, proporcione la siguiente información:
- Nombre de la conexión de servicio: escriba un nombre para la conexión de servicio.
- Referencia de administración de servicios: (opcional) Incluir información de contexto de una base de datos ITSM.
- Descripción: (Opcional) Escriba una descripción.
En Seguridad, la opción Conceder permiso de acceso a todas las canalizaciones permite que todas las canalizaciones usen esta conexión de servicio. No se recomienda esta opción. En su lugar, autorice cada canalización individualmente para usar la conexión de servicio.
Seleccione Guardar para validar y crear la conexión de servicio.
Acceder a los secretos del Key Vault desde su canalización
Advertencia
Este tutorial tiene carácter educativo exclusivamente. Para conocer los procedimientos recomendados de seguridad y las instrucciones sobre cómo trabajar con secretos de forma segura, consulte Administración de secretos en las aplicaciones de servidor con Azure Key Vault.
Inicie sesión en Azure DevOps y vaya al proyecto.
Seleccione Canalizaciones>nueva canalización.
Seleccione Git de Azure Repos (YAML) y, a continuación, seleccione el repositorio.
Seleccione la plantilla Pipeline de inicio.
La canalización predeterminada incluye comandos de eco de ejemplo. No necesita estos comandos, por lo que puede quitarlos.
Agregue la tarea Azure Key Vault a la canalización. Sustituya los marcadores de posición por el nombre de la conexión de servicio que ha creado anteriormente y el nombre de su almacén de claves. El archivo YAML debe tener un aspecto similar al del ejemplo siguiente:
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 displayName: Azure Key Vault inputs: azureSubscription: 'SERVICE_CONNECTION_NAME' KeyVaultName: 'KEY_VAULT_NAME' SecretsFilter: '*' RunAsPreJob: falseAñada las siguientes tareas para copiar y publicar el secreto. Este ejemplo es solo para fines de demostración. No lo use en un entorno de producción.
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 displayName: Azure Key Vault inputs: azureSubscription: 'SERVICE_CONNECTION_NAME' KeyVaultName: 'KEY_VAULT_NAME' SecretsFilter: '*' RunAsPreJob: false - task: CmdLine@2 displayName: Create file inputs: script: 'echo $(SECRET_NAME) > secret.txt' - task: CopyFiles@2 displayName: Copy file inputs: Contents: secret.txt targetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 displayName: Publish Artifact inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container'Seleccione Guardar y ejecutar y, a continuación, selecciónelo una vez más para confirmar los cambios y desencadenar la canalización. Si se le solicita, seleccione Permitir para conceder a la canalización acceso a los recursos de Azure.
Una vez iniciada la canalización, seleccione la tarea CmdLine para ver los registros.
Cuando finalice la ejecución de la canalización, vuelva al resumen de la canalización y seleccione el artefacto publicado.
Seleccione descargar>secret.txt para descargar el archivo.
Abra el archivo de texto descargado. Debe contener el secreto recuperado del almacén de claves.
Limpieza de recursos
Para eliminar los recursos que creó, siga estos pasos:
Si ha creado una nueva organización para hospedar el proyecto, consulte 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. Ejecute el siguiente comando para eliminar el grupo de recursos y todos sus recursos.
az group delete --name <YOUR_RESOURCE_GROUP_NAME>
Solución de problemas
Error: "El usuario o grupo no tiene permiso de lista de secretos"
Este error se produce cuando la entidad de servicio o la identidad administrada que utiliza su canalización no tiene permiso para enumerar secretos en el almacén de claves. Para resolver este problema, asegúrese de que la identidad tenga los permisos Obtener y Enumerar para los secretos. Ejecute los siguientes comandos para conceder los permisos necesarios a su principal de servicio:
az login
az account set --subscription <YOUR_SUBSCRIPTION_ID>
$spnObjectId = az ad sp show --id <YOUR_SERVICE_PRINCIPAL_ID>
az keyvault set-policy --name <YOUR_KEY_VAULT_NAME> --object-id $spnObjectId --secret-permissions get list