Libreria client certificati di Azure Key Vault per Python - versione 4.7.0
Azure Key Vault contribuisce a risolvere i problemi seguenti:
- Gestione certificati (questa libreria) - Creare, gestire e distribuire certificati SSL/TLS pubblici e privati
- Gestione delle chiavi crittografiche (azure-keyvault-keys) - creare, archiviare e controllare l'accesso alle chiavi usate per crittografare i dati
- Gestione dei segreti (azure-keyvault-secrets) - Archiviare e controllare in modo sicuro l'accesso ai token, password, certificati, chiavi API e altri segreti
- Amministrazione dell'insieme di credenziali (azure-keyvault-administration) - Controllo degli accessi in base al ruolo e opzioni di backup e ripristino a livello di insieme di credenziali
Codice | sorgente Pacchetto (PyPI) | Pacchetto (Conda) | Documentazione di | riferimento sulle API Documentazione | del prodotto Campioni
Dichiarazione di non responsabilità
Il supporto dei pacchetti Python di Azure SDK per Python 2.7 è terminato 01 gennaio 2022. Per altre informazioni e domande, vedere https://github.com/Azure/azure-sdk-for-python/issues/20691. Python 3.7 o versione successiva è necessario per usare questo pacchetto. Per altre informazioni, vedere Criteri di supporto per la versione di Azure SDK per Python.
Introduzione
Installare il pacchetto
Installare azure-keyvault-certificates e azure-identity con pip:
pip install azure-keyvault-certificates azure-identity
azure-identity viene usato per l'autenticazione di Azure Active Directory, come illustrato di seguito.
Prerequisiti
- Una sottoscrizione di Azure
- Python 3.7 o versione successiva
- Un Key Vault di Azure esistente. Se è necessario crearne uno, è possibile usare l'interfaccia della riga di comando di Azure seguendo la procedura descritta in questo documento.
Autenticare il client
Per interagire con il servizio azure Key Vault, sarà necessaria un'istanza di CertificateClient, nonché un URL dell'insieme di credenziali e un oggetto credenziale. Questo documento illustra l'uso di un oggetto DefaultAzureCredential, appropriato per la maggior parte degli scenari, tra cui lo sviluppo locale e gli ambienti di produzione. È consigliabile usare un'identità gestita per l'autenticazione negli ambienti di produzione.
Per altre informazioni su altri metodi di autenticazione e sui relativi tipi di credenziali corrispondenti, vedere la documentazione di azure-identity .
Creare un client
Dopo aver configurato l'ambiente per DefaultAzureCredential per usare un metodo appropriato di autenticazione, è possibile eseguire le operazioni seguenti per creare un client certificato (sostituendo il valore di VAULT_URL
con l'URL dell'insieme di credenziali):
VAULT_URL = os.environ["VAULT_URL"]
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=VAULT_URL, credential=credential)
NOTA: Per un client asincrono, importare
azure.keyvault.certificates.aio
invece.CertificateClient
Concetti chiave
CertificateClient
Con un CertificateClient è possibile ottenere certificati dall'insieme di credenziali, creare nuovi certificati e nuove versioni di certificati esistenti, aggiornare i metadati dei certificati ed eliminare i certificati. È anche possibile gestire le autorità di certificazione, i contatti e i criteri di gestione dei certificati. Questo argomento è illustrato negli esempi seguenti.
Esempio
Questa sezione contiene frammenti di codice che coprono le attività comuni:
- Creare un certificato
- Recuperare un certificato
- Aggiornare le proprietà di un certificato esistente
- Eliminare un certificato
- Elencare le proprietà dei certificati
- Operazioni asincrone
- Creare in modo asincrono un certificato
- Elencare in modo asincrono le proprietà dei certificati
Creare un certificato
begin_create_certificate crea un certificato da archiviare nell'Key Vault di Azure. Se esiste già un certificato con lo stesso nome, viene creata una nuova versione del certificato. Prima di creare un certificato, è possibile creare un criterio di gestione per il certificato o usare i criteri predefiniti. Questo metodo restituisce un poller di operazione a esecuzione prolungata.
from azure.identity import DefaultAzureCredential
from azure.keyvault.certificates import CertificateClient, CertificatePolicy
credential = DefaultAzureCredential()
certificate_client = CertificateClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
create_certificate_poller = certificate_client.begin_create_certificate(
certificate_name="cert-name", policy=CertificatePolicy.get_default()
)
print(create_certificate_poller.result())
Se si vuole controllare lo stato della creazione del certificato, è possibile chiamare status()
il poller o get_certificate_operation con il nome del certificato.
Recuperare un certificato
get_certificate recupera la versione più recente di un certificato archiviato in precedenza nella Key Vault.
from azure.identity import DefaultAzureCredential
from azure.keyvault.certificates import CertificateClient
credential = DefaultAzureCredential()
certificate_client = CertificateClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
certificate = certificate_client.get_certificate("cert-name")
print(certificate.name)
print(certificate.properties.version)
print(certificate.policy.issuer_name)
get_certificate_version recupera una versione specifica di un certificato.
from azure.identity import DefaultAzureCredential
from azure.keyvault.certificates import CertificateClient
credential = DefaultAzureCredential()
certificate_client = CertificateClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
certificate = certificate_client.get_certificate_version(certificate_name="cert-name", version="cert-version")
print(certificate.name)
print(certificate.properties.version)
Aggiornare le proprietà di un certificato esistente
update_certificate_properties aggiorna un certificato archiviato in precedenza nella Key Vault.
from azure.identity import DefaultAzureCredential
from azure.keyvault.certificates import CertificateClient
credential = DefaultAzureCredential()
certificate_client = CertificateClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
# we will now disable the certificate for further use
updated_certificate= certificate_client.update_certificate_properties(
certificate_name="cert-name", enabled=False
)
print(updated_certificate.name)
print(updated_certificate.properties.enabled)
Eliminare un certificato
begin_delete_certificate richieste Key Vault eliminare un certificato, restituendo un poller che consente di attendere il completamento dell'eliminazione.
L'attesa è utile quando l'insieme di credenziali ha abilitato l'eliminazione temporanea e si vuole eliminare definitivamente il certificato non appena possibile. Quando l'eliminazione temporanea è disabilitata, begin_delete_certificate
se stessa è permanente.
from azure.identity import DefaultAzureCredential
from azure.keyvault.certificates import CertificateClient
credential = DefaultAzureCredential()
certificate_client = CertificateClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
deleted_certificate_poller = certificate_client.begin_delete_certificate("cert-name")
deleted_certificate = deleted_certificate_poller.result()
print(deleted_certificate.name)
print(deleted_certificate.deleted_on)
Elencare le proprietà dei certificati
list_properties_of_certificates elenca le proprietà di tutti i certificati nella Key Vault specificata.
from azure.identity import DefaultAzureCredential
from azure.keyvault.certificates import CertificateClient
credential = DefaultAzureCredential()
certificate_client = CertificateClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
certificates = certificate_client.list_properties_of_certificates()
for certificate in certificates:
# this list doesn't include versions of the certificates
print(certificate.name)
Operazioni asincrone
Questa libreria include un set completo di API asincrone. Per usarli, è prima necessario installare un trasporto asincrono, ad esempio aiohttp. Per altre informazioni, vedere la documentazione di azure-core .
I client e le credenziali asincroni devono essere chiusi quando non sono più necessari. Questi oggetti sono gestioni contesto asincrone e definiscono metodi asincroni close
. Ad esempio:
from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.certificates.aio import CertificateClient
credential = DefaultAzureCredential()
# call close when the client and credential are no longer needed
client = CertificateClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
...
await client.close()
await credential.close()
# alternatively, use them as async context managers (contextlib.AsyncExitStack can help)
client = CertificateClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
async with client:
async with credential:
...
Creare in modo asincrono un certificato
create_certificate crea un certificato da archiviare nell'Key Vault di Azure. Se esiste già un certificato con lo stesso nome, viene creata una nuova versione del certificato. Prima di creare un certificato, è possibile creare un criterio di gestione per il certificato o usare i criteri predefiniti. create_certificate
In attesa di restituire il certificato creato se la creazione ha esito positivo e un CertificatoOperation se non lo è.
from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.certificates.aio import CertificateClient
from azure.keyvault.certificates import CertificatePolicy
credential = DefaultAzureCredential()
certificate_client = CertificateClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
create_certificate_result = await certificate_client.create_certificate(
certificate_name="cert-name", policy=CertificatePolicy.get_default()
)
print(create_certificate_result)
Elencare in modo asincrono le proprietà dei certificati
list_properties_of_certificates elenca tutte le proprietà dei certificati nell'insieme di credenziali del client:
from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.certificates.aio import CertificateClient
credential = DefaultAzureCredential()
certificate_client = CertificateClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
certificates = certificate_client.list_properties_of_certificates()
async for certificate in certificates:
print(certificate.name)
Risoluzione dei problemi
Per informazioni dettagliate su come diagnosticare vari scenari di errore, vedere la azure-keyvault-certificates
guida alla risoluzione dei problemi .
Generale
Key Vault client generano eccezioni definite in azure-core. Ad esempio, se si tenta di ottenere una chiave che non esiste nell'insieme di credenziali, CertificateClient genera ResourceNotFoundError:
from azure.identity import DefaultAzureCredential
from azure.keyvault.certificates import CertificateClient
from azure.core.exceptions import ResourceNotFoundError
credential = DefaultAzureCredential()
certificate_client = CertificateClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
try:
certificate_client.get_certificate("which-does-not-exist")
except ResourceNotFoundError as e:
print(e.message)
Registrazione
Questa libreria usa la libreria di registrazione standard per la registrazione. Le informazioni di base sulle sessioni HTTP (URL, intestazioni e così via) vengono registrate a livello di INFO.
La registrazione dettagliata del livello DEBUG, inclusi i corpi di richiesta/risposta e le intestazioni non attendibili, può essere abilitata in un client con l'argomento logging_enable
:
from azure.identity import DefaultAzureCredential
from azure.keyvault.certificates import CertificateClient
import sys
import logging
# Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
credential = DefaultAzureCredential()
# This client will log detailed information about its HTTP sessions, at DEBUG level
client = CertificateClient(
vault_url="https://my-key-vault.vault.azure.net/",
credential=credential,
logging_enable=True
)
La registrazione di traccia di rete può essere abilitata anche per qualsiasi singola operazione:
certificate = certificate_client.get_certificate(certificate_name="cert-name", logging_enable=True)
Passaggi successivi
Diversi esempi sono disponibili nel repository GitHub di Azure SDK per Python. Questi esempi forniscono codice di esempio per scenari di Key Vault aggiuntivi: | File | Descrizione | |-------------|-------------| | hello_world.py (versione asincrona) | certificati create/get/update/delete | | backup_restore_operations.py (versione asincrona) | eseguire il backup e il ripristino dei certificati | | import_certificate.py (versione asincrona) | importare i certificati PKCS#12 (PFX) e PEM formattati in Key Vault | | list_operations.py (versione asincrona) | certificati elenco | | recover_purge_operations.py (versione asincrona) | recuperare ed eliminare i certificati | | issuers.py (versione asincrona) | gestire le autorità di certificazione | | contacts.py (versione asincrona) | gestire i contatti del certificato | | parse_certificate.py (versione asincrona) | estrarre la chiave privata di un certificato |
Documentazione aggiuntiva
Per una documentazione più completa su Azure Key Vault, vedere la documentazione di riferimento sulle API.
Contributo
In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, vedere https://cla.microsoft.com.
Quando si invia una richiesta pull, un bot CLA determina automaticamente se è necessario specificare un contratto CLA e completare la richiesta pull in modo appropriato (ad esempio con un'etichetta e un commento). Seguire le istruzioni specificate dal bot. È sufficiente eseguire questa operazione una sola volta per tutti i repository che usano il contratto CLA Microsoft.
Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.
Azure SDK for Python
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per