Compartir a través de


Inicio rápido: Biblioteca cliente de certificados de Azure Key Vault para Python

Introducción a la biblioteca cliente de certificados de Azure Key Vault para Python. Siga estos pasos para instalar el paquete y probar el código de ejemplo para realizar tareas básicas. Si usa Key Vault para almacenar certificados, no tendrá que almacenarlos en el código, lo que aumenta la seguridad de las aplicaciones.

Documentación de referencia de API | Código fuente de la biblioteca | Paquete (índice de paquetes de Python)

Prerrequisitos

En este inicio rápido se supone que está ejecutando la CLI de Azure o Azure PowerShell en una ventana de terminal de Linux.

Configuración de un entorno local

En este inicio rápido se usa la biblioteca de identidades de Azure, junto con la CLI de Azure o Azure PowerShell, para autenticar al usuario en los servicios de Azure. Los desarrolladores también pueden usar Visual Studio o Visual Studio Code para autenticar las llamadas. Para más información, consulte Autenticación del cliente con la biblioteca cliente de Identidad de Azure.

Inicio de sesión en Azure

  1. Ejecute el comando login.

    az login
    

    Si la CLI puede abrir el explorador predeterminado, lo hará y cargará una página de inicio de sesión de Azure.

    En caso contrario, abra una página del explorador en https://aka.ms/devicelogin y escriba el código de autorización que se muestra en el terminal.

  2. Inicie sesión con las credenciales de su cuenta en el explorador.

Instalación de los paquetes

  1. En un terminal o símbolo del sistema, cree una carpeta de proyecto adecuada y, a continuación, cree y active un entorno virtual de Python como se describe en Uso de entornos virtuales de Python

  2. Instale la biblioteca de identidades de Microsoft Entra:

    pip install azure.identity
    
  3. Instale la biblioteca cliente de certificados de Key Vault:

    pip install azure-keyvault-certificates
    

Creación de un grupo de recursos y de un almacén de claves

  1. Utilice el az group create comando para crear un grupo de recursos:

    az group create --name myResourceGroup --___location eastus
    

    Si lo prefiere, puede cambiar "eastus" a una ubicación más cercana.

  2. Use az keyvault create para crear el almacén de claves:

    az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
    

    Reemplace <your-unique-keyvault-name> por un nombre único en todas las instancias de Azure. Normalmente, se usa el nombre personal o de la empresa, junto con otros números e identificadores.

Establece la variable de entorno KEY_VAULT_NAME

Nuestro script usará el valor asignado a la variable de entorno KEY_VAULT_NAME como el nombre del almacén de claves. Por lo tanto, debe establecer este valor mediante el comando siguiente:

export KEY_VAULT_NAME=<your-unique-keyvault-name>

Da acceso a tu almacén de claves

Para obtener permisos para el almacén de claves mediante Control de acceso basado en roles (RBAC), asigne un rol a su "Nombre principal de usuario" (UPN) mediante el comando de la CLI de Azure az role assignment create.

az role assignment create --role "Key Vault Certificates Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Reemplaza <upn>, <subscription-id>, <resource-group-name> y <your-unique-keyvault-name> con tus valores reales. Tu UPN normalmente tendrá el formato de una dirección de correo electrónico (por ejemplo, username@___domain.com).

Creación del código de ejemplo

La biblioteca cliente de certificados de Azure Key Vault para Python permite administrar certificados. En el siguiente código de ejemplo se muestra cómo crear un cliente, establecer un certificado, recuperar un certificado y eliminar un certificado.

Cree un archivo llamado kv_certificates.py que contenga este código.

import os
from azure.keyvault.certificates import CertificateClient, CertificatePolicy
from azure.identity import DefaultAzureCredential

keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"

credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)

certificateName = input("Input a name for your certificate > ")

print(f"Creating a certificate in {keyVaultName} called '{certificateName}' ...")

policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()

print(" done.")

print(f"Retrieving your certificate from {keyVaultName}.")

retrieved_certificate = client.get_certificate(certificateName)

print(f"Certificate with name '{retrieved_certificate.name}' was found'.")
print(f"Deleting your certificate from {keyVaultName} ...")

poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()

print(" done.")

Ejecución del código

Asegúrese de que el código de la sección anterior se encuentra en un archivo llamado kv_certificates.py. Luego, ejecute el código con el siguiente comando:

python kv_certificates.py
  • Si se producen errores de permisos, asegúrese de que ha ejecutado el az keyvault set-policy o Set-AzKeyVaultAccessPolicy comando.
  • Al volver a ejecutar el código con el mismo nombre de la clave, puede producirse el error "(Conflicto) El certificado <name> está actualmente en un estado eliminado pero recuperable." Utilice un nombre de clave diferente.

Detalles del código

Autenticación y creación de un cliente

Deben autorizarse las solicitudes de aplicación a la mayor parte de servicios de Azure. El uso de la clase DefaultAzureCredential proporcionada por la biblioteca cliente de Azure Identity es el enfoque recomendado para implementar conexiones sin contraseña a los servicios de Azure en su código. DefaultAzureCredential admite varios métodos de autenticación y determina cuál se debe utilizar durante la ejecución. Este enfoque permite que la aplicación use diferentes métodos de autenticación en distintos entornos (local frente a producción) sin implementar código específico del entorno.

En este inicio rápido, DefaultAzureCredential se autentica en Azure Key Vault mediante las credenciales del usuario de desarrollo local que inició sesión en la CLI de Azure. Cuando la aplicación se implementa en Azure, el mismo DefaultAzureCredential código puede detectar y usar automáticamente una identidad administrada asignada a un App Service, máquina virtual u otros servicios. Para más información, consulte Introducción a la identidad administrada.

En el código de ejemplo, el nombre del almacén de claves se expande al URI del almacén de claves, con el formato https://\<your-key-vault-name>.vault.azure.net.

credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)

Guardar certificado

Una vez que haya obtenido el objeto cliente del almacén de claves, puede crear un certificado utilizando el método begin_create_certificate:

policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()

Aquí, el certificado requiere una política obtenida con el método CertificatePolicy.get_default.

Llamar a un método begin_create_certificate genera una llamada asincrónica a la API REST de Azure para el almacén de claves. La llamada asincrónica devuelve un objeto de sondeo. Para esperar el resultado de la operación, llame al método result del sondeo.

Cuando Azure administra la solicitud, autentica la identidad del autor de la llamada (la entidad de servicio) mediante el objeto de credencial que proporcionó al cliente.

Recuperación de un certificado

Para leer un certificado de Key Vault, use el método get_certificate:

retrieved_certificate = client.get_certificate(certificateName)

También puede comprobar que el certificado se ha establecido con el comando de la CLI de Azure az keyvault certificate show o el cmdlet de Azure PowerShell Get-AzKeyVaultCertificate

Eliminación de un certificado

Para eliminar un certificado, use el método begin_delete_certificate:

poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()

El método begin_delete_certificate es asincrónico y devuelve un objeto de sondeo. Al llamar al método result del sondeo, se espera su finalización.

Puede comprobar que el certificado se elimina con el comando de la CLI de Azure az keyvault certificate show o el cmdlet de Azure PowerShell Get-AzKeyVaultCertificate.

Aun después de haberse eliminado, los certificados permanecen en estado eliminado, pero recuperable, durante un tiempo. Si vuelve a ejecutar el código, use otro nombre de certificado.

Limpieza de recursos

Si también desea experimentar con secretos y claves, puede volver a utilizar el Key Vault creado en este artículo.

De lo contrario, cuando haya terminado con los recursos creados en este artículo, utilice el siguiente comando para eliminar el grupo de recursos y todos los recursos que contiene:

az group delete --resource-group myResourceGroup

Pasos siguientes