Clientbibliotheek voor Azure Key Vault-certificaten voor Python - versie 4.7.0
Met Azure Key Vault kunt u de volgende problemen oplossen:
- Certificaatbeheer (deze bibliotheek): openbare en persoonlijke SSL/TLS-certificaten maken, beheren en implementeren
- Cryptografisch sleutelbeheer (azure-keyvault-keys): de toegang tot de sleutels die worden gebruikt voor het versleutelen van uw gegevens maken, opslaan en beheren
- Geheimenbeheer (azure-keyvault-secrets): veilig de toegang tot tokens, wachtwoorden, certificaten, API-sleutels en andere geheimen opslaan en beheren
- Kluisbeheer (azure-keyvault-administration) - op rollen gebaseerd toegangsbeheer (RBAC) en opties voor back-up en herstel op kluisniveau
Broncode | Pakket (PyPI) | Pakket (Conda) | API-referentiedocumentatie | Productdocumentatie | Monsters
Disclaimer
Ondersteuning voor Azure SDK Python-pakketten voor Python 2.7 is beëindigd op 1 januari 2022. Raadpleeg https://github.com/Azure/azure-sdk-for-python/issues/20691voor meer informatie en vragen. Python 3.7 of hoger is vereist voor het gebruik van dit pakket. Raadpleeg het ondersteuningsbeleid voor Azure SDK voor Python-versies voor meer informatie.
Aan de slag
Het pakket installeren
Installeer azure-keyvault-certificates en azure-identity met pip:
pip install azure-keyvault-certificates azure-identity
azure-identity wordt gebruikt voor Azure Active Directory-verificatie, zoals hieronder wordt weergegeven.
Vereisten
- Een Azure-abonnement
- Python 3.7 of hoger
- Een bestaande Azure-Key Vault. Als u er een wilt maken, kunt u dit doen met behulp van de Azure CLI door de stappen in dit document te volgen.
De client verifiëren
Als u wilt communiceren met de Azure Key Vault-service, hebt u een exemplaar van een CertificateClient nodig, evenals een kluis-URL en een referentieobject. Dit document laat zien hoe u een DefaultAzureCredential gebruikt. Dit is geschikt voor de meeste scenario's, waaronder lokale ontwikkelings- en productieomgevingen. U wordt aangeraden een beheerde identiteit te gebruiken voor verificatie in productieomgevingen.
Zie documentatie over azure-identity voor meer informatie over andere verificatiemethoden en de bijbehorende referentietypen.
Client maken
Nadat u uw omgeving hebt geconfigureerd voor de DefaultAzureCredential om een geschikte verificatiemethode te gebruiken, kunt u het volgende doen om een certificaatclient te maken (waarbij u de waarde van vervangt door de URL van VAULT_URL
uw kluis):
VAULT_URL = os.environ["VAULT_URL"]
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=VAULT_URL, credential=credential)
OPMERKING: Voor een asynchrone client importeert u
azure.keyvault.certificates.aio
in plaats daarvan 'sCertificateClient
.
Belangrijkste concepten
CertificateClient
Met een CertificateClient kunt u certificaten ophalen uit de kluis, nieuwe certificaten en nieuwe versies van bestaande certificaten maken, metagegevens van certificaten bijwerken en certificaten verwijderen. U kunt ook certificaatverleners, contactpersonen en beheerbeleid van certificaten beheren. Dit wordt geïllustreerd in de onderstaande voorbeelden .
Voorbeelden
Deze sectie bevat codefragmenten die betrekking hebben op algemene taken:
- Een certificaat maken
- Een certificaat ophalen
- Eigenschappen van een bestaand certificaat bijwerken
- Een certificaat verwijderen
- Eigenschappen van certificaten weergeven
- Asynchrone bewerkingen
- Asynchroon een certificaat maken
- Eigenschappen van certificaten asynchroon weergeven
Een certificaat maken
begin_create_certificate maakt een certificaat dat moet worden opgeslagen in de Azure Key Vault. Als er al een certificaat met dezelfde naam bestaat, wordt er een nieuwe versie van het certificaat gemaakt. Voordat u een certificaat maakt, kan een beheerbeleid voor het certificaat worden gemaakt of wordt ons standaardbeleid gebruikt. Deze methode retourneert een langlopende bewerking poller.
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())
Als u de status van het maken van het certificaat wilt controleren, kunt u de poller aanroepen status()
of get_certificate_operation met de naam van het certificaat.
Een certificaat ophalen
get_certificate haalt de nieuwste versie op van een certificaat dat eerder is opgeslagen in de 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 haalt een specifieke versie van een certificaat op.
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)
Eigenschappen van een bestaand certificaat bijwerken
update_certificate_properties werkt een certificaat bij dat eerder is opgeslagen in de 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)
Een certificaat verwijderen
begin_delete_certificate vraagt Key Vault een certificaat te verwijderen en retourneert een poller waarmee u kunt wachten tot de verwijdering is voltooid.
Wachten is handig wanneer voor de kluis voorlopig verwijderen is ingeschakeld en u het certificaat zo snel mogelijk wilt opschonen (definitief verwijderen). Wanneer voorlopig verwijderen is uitgeschakeld, begin_delete_certificate
is dit permanent.
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)
Eigenschappen van certificaten weergeven
list_properties_of_certificates bevat de eigenschappen van alle certificaten in de opgegeven 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)
certificates = certificate_client.list_properties_of_certificates()
for certificate in certificates:
# this list doesn't include versions of the certificates
print(certificate.name)
Asynchrone bewerkingen
Deze bibliotheek bevat een volledige set asynchrone API's. Als u deze wilt gebruiken, moet u eerst een asynchroon transport installeren, zoals aiohttp. Zie azure-core-documentatie voor meer informatie.
Asynchrone clients en referenties moeten worden gesloten wanneer ze niet meer nodig zijn. Deze objecten zijn asynchrone contextbeheerders en definiëren asynchrone close
methoden. Bijvoorbeeld:
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:
...
Asynchroon een certificaat maken
create_certificate maakt een certificaat dat moet worden opgeslagen in de Azure Key Vault. Als er al een certificaat met dezelfde naam bestaat, wordt er een nieuwe versie van het certificaat gemaakt. Voordat u een certificaat maakt, kan een beheerbeleid voor het certificaat worden gemaakt of wordt ons standaardbeleid gebruikt. Wachten retourneert create_certificate
het gemaakte certificaat als het maken is geslaagd, en een CertificateOperation als dat niet zo is.
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)
Eigenschappen van certificaten asynchroon weergeven
list_properties_of_certificates bevat alle eigenschappen van de certificaten in de kluis van de 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)
Problemen oplossen
Zie de azure-keyvault-certificates
handleiding voor probleemoplossing voor meer informatie over het diagnosticeren van verschillende foutscenario's.
Algemeen
Key Vault clients genereren uitzonderingen die zijn gedefinieerd in azure-core. Als u bijvoorbeeld probeert een sleutel op te halen die niet in de kluis bestaat, wordt Met CertificateClientResourceNotFoundError opgehaald:
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)
Logboekregistratie
Deze bibliotheek gebruikt de standaardbibliotheek voor logboekregistratie voor logboekregistratie. Basisinformatie over HTTP-sessies (URL's, headers, enzovoort) wordt geregistreerd op INFO-niveau.
Gedetailleerde logboekregistratie op foutopsporingsniveau, inclusief aanvraag-/antwoordteksten en niet-geredigeerde headers, kan worden ingeschakeld op een client met het logging_enable
argument:
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
)
Logboekregistratie van netwerktracering kan ook worden ingeschakeld voor elke bewerking:
certificate = certificate_client.get_certificate(certificate_name="cert-name", logging_enable=True)
Volgende stappen
Er zijn verschillende voorbeelden beschikbaar in de GitHub-opslagplaats azure SDK voor Python. Deze voorbeelden bevatten voorbeeldcode voor aanvullende Key Vault scenario's: | Bestand | Beschrijving | |-------------|-------------| | hello_world.py (asynchrone versie) | certificaten maken/ophalen/bijwerken/verwijderen | | backup_restore_operations.py (asynchrone versie) | back-ups maken van certificaten en deze herstellen | | import_certificate.py (asynchrone versie) | PKCS#12(PFX)- en PEM-certificaten importeren in Key Vault | | list_operations.py (asynchrone versie) | certificaten weergeven | | recover_purge_operations.py (asynchrone versie) | certificaten herstellen en opschonen | | issuers.py (asynchrone versie) | certificaatverleners beheren | | contacts.py (asynchrone versie) | certificaatcontactpersonen beheren | | parse_certificate.py (asynchrone versie) | de persoonlijke sleutel van een certificaat ophalen |
Aanvullende documentatie
Zie de API-referentiedocumentatie voor uitgebreidere documentatie over Azure Key Vault.
Bijdragen
Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar https://cla.microsoft.com voor meer informatie.
Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit maar eenmaal te doen voor alle repo's waar gebruik wordt gemaakt van onze CLA.
Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Raadpleeg de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op met opencode@microsoft.com als u meer vragen of opmerkingen hebt.
Azure SDK for Python