azure-keyvault-py – DevOps & Infrastructure skill for AI agents
Azure Key Vault SDK for Python. Use for secrets, keys, and certificates management with secure storage.
Install the azure-keyvault-py skill with one command
Pick the tool you use, copy the command and paste it in your terminal. The skill lands in that tool's skills folder and is ready in your next session.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/azure-keyvault-py-e94cd.tgz | tar xz -C ~/.claude/skills
Call it in Claude Code: /azure-keyvault-py – then describe the task you want done.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/azure-keyvault-py-e94cd.tgz | tar xz -C ~/.codex/skills
Call it in Codex: $azure-keyvault-py – then describe the task you want done.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/azure-keyvault-py-e94cd.tgz | tar xz -C ~/.hermes/skills
Call it in Hermes Agent: /azure-keyvault-py – then describe the task you want done.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/azure-keyvault-py-e94cd.tgz | tar xz -C ~/.deepcode/skills
Call it in DeepSeek: /azure-keyvault-py – then describe the task you want done.
SKILL.md content
Azure Key Vault SDK for Python
Secure storage and management for secrets, cryptographic keys, and certificates.
Installation
# Secrets
pip install azure-keyvault-secrets azure-identity
# Keys (cryptographic operations)
pip install azure-keyvault-keys azure-identity
# Certificates
pip install azure-keyvault-certificates azure-identity
# All
pip install azure-keyvault-secrets azure-keyvault-keys azure-keyvault-certificates azure-identityEnvironment Variables
AZURE_KEYVAULT_URL=https://<vault-name>.vault.azure.net/Mutation and recovery boundary
Confirm exact vault/object/version and approved effects before writes, deletes or purge. Independent snippets reuse client names; recovery and purge are alternatives, not sequential cleanup steps. Purge can be irreversible and subject to purge protection; certificate secret export can disclose a private key. Use least privilege, protected outputs and a verified dependency/recovery plan.
Secrets
SecretClient Setup
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
credential = DefaultAzureCredential()
vault_url = "https://<vault-name>.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)Secret Operations
# Set secret
secret = client.set_secret("database-password", "super-secret-value")
print(f"Created: {secret.name}, version: {secret.properties.version}")
# Get secret
secret = client.get_secret("database-password")
print(f"Retrieved secret: {secret.name}") # Never print secret values.
# Get specific version
secret = client.get_secret("database-password", version="abc123")
# List secrets (names only, not values)
for secret_properties in client.list_properties_of_secrets():
print(f"Secret: {secret_properties.name}")
# List versions
for version in client.list_properties_of_secret_versions("database-password"):
print(f"Version: {version.version}, Created: {version.created_on}")
# Delete secret (soft delete)
poller = client.begin_delete_secret("database-password")
deleted_secret = poller.result()
# Purge (permanent delete, if soft-delete enabled)
client.purge_deleted_secret("database-password")
# Recover deleted secret
client.begin_recover_deleted_secret("database-password").result()Keys
KeyClient Setup
from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient
credential = DefaultAzureCredential()
vault_url = "https://<vault-name>.vault.azure.net/"
client = KeyClient(vault_url=vault_url, credential=credential)Key Operations
from azure.keyvault.keys import KeyType
# Create RSA key
rsa_key = client.create_rsa_key("rsa-key", size=2048)
# Create EC key
ec_key = client.create_ec_key("ec-key", curve="P-256")
# Get key
key = client.get_key("rsa-key")
print(f"Key type: {key.key_type}")
# List keys
for key_properties in client.list_properties_of_keys():
print(f"Key: {key_properties.name}")
# Delete key
poller = client.begin_delete_key("rsa-key")
deleted_key = poller.result()Cryptographic Operations
from azure.keyvault.keys.crypto import CryptographyClient, EncryptionAlgorithm
# Get crypto client for a specific key
crypto_client = CryptographyClient(key, credential=credential)
# Or from key ID
crypto_client = CryptographyClient(
"https://<vault>.vault.azure.net/keys/<key-name>/<version>",
credential=credential
)
# Encrypt
plaintext = b"Hello, Key Vault!"
result = crypto_client.encrypt(EncryptionAlgorithm.rsa_oaep, plaintext)
ciphertext = result.ciphertext
# Decrypt
result = crypto_client.decrypt(EncryptionAlgorithm.rsa_oaep, ciphertext)
decrypted = result.plaintext
# Sign
from azure.keyvault.keys.crypto import SignatureAlgorithm
import hashlib
digest = hashlib.sha256(b"data to sign").digest()
result = crypto_client.sign(SignatureAlgorithm.rs256, digest)
signature = result.signature
# Verify
result = crypto_client.verify(SignatureAlgorithm.rs256, digest, signature)
print(f"Valid: {result.is_valid}")Certificates
CertificateClient Setup
from azure.identity import DefaultAzureCredential
from azure.keyvault.certificates import CertificateClient, CertificatePolicy
credential = DefaultAzureCredential()
vault_url = "https://<vault-name>.vault.azure.net/"
client = CertificateClient(vault_url=vault_url, credential=credential)Certificate Operations
# Create self-signed certificate
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate("my-cert", policy=policy)
certificate = poller.result()
# Get certificate
certificate = client.get_certificate("my-cert")
print(f"Thumbprint: {certificate.properties.x509_thumbprint.hex()}")
# Get certificate with private key (as secret)
from azure.keyvault.secrets import SecretClient
secret_client = SecretClient(vault_url=vault_url, credential=credential)
cert_secret = secret_client.get_secret("my-cert")
# cert_secret.value contains PEM or PKCS12
# List certificates
for cert in client.list_properties_of_certificates():
print(f"Certificate: {cert.name}")
# Delete certificate
poller = client.begin_delete_certificate("my-cert")
deleted = poller.result()Client Types Table
| Client | Package | Purpose |
|--------|---------|---------|
| SecretClient | azure-keyvault-secrets | Store/retrieve secrets |
| KeyClient | azure-keyvault-keys | Manage cryptographic keys |
| CryptographyClient | azure-keyvault-keys | Encrypt/decrypt/sign/verify |
| CertificateClient | azure-keyvault-certificates | Manage certificates |
Async Clients
from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.secrets.aio import SecretClient
async def get_secret():
credential = DefaultAzureCredential()
client = SecretClient(vault_url=vault_url, credential=credential)
async with client:
secret = await client.get_secret("my-secret")
# Consume the value only in the authorized application; do not print it.
import asyncio
asyncio.run(get_secret())Error Handling
from azure.core.exceptions import ResourceNotFoundError, HttpResponseError
try:
secret = client.get_secret("nonexistent")
except ResourceNotFoundError:
print("Secret not found")
except HttpResponseError as e:
if e.status_code == 403:
print("Access denied - check RBAC permissions")
raiseBest Practices
1. Use DefaultAzureCredential for authentication
2. Use managed identity in Azure-hosted applications
3. Enable soft-delete for recovery (enabled by default)
4. Use RBAC over access policies for fine-grained control
5. Rotate secrets regularly using versioning
6. Use Key Vault references in App Service/Functions config
7. Cache secrets appropriately to reduce API calls
8. Use async clients for high-throughput scenarios
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Related skills
- azure-keyvault-secrets-ts – Manage secrets using Azure Key Vault Secrets SDK for JavaScript…
- azure-maps-search-dotnet – Azure Maps SDK for .NET. Location-based services including geocoding, routing…
- azure-messaging-webpubsubservice-py – Azure Web PubSub Service SDK for Python. Use for real-time messaging, WebSocket…
- azure-mgmt-apicenter-dotnet – Azure API Center SDK for .NET. Centralized API inventory management with governance…
- azure-mgmt-apicenter-py – Azure API Center Management SDK for Python. Use for managing API inventory, metadata…
- azure-mgmt-apimanagement-dotnet – Azure Resource Manager SDK for API Management in .NET.
- azure-mgmt-apimanagement-py – Azure API Management SDK for Python. Use for managing APIM services, APIs, products…
- nextflow – Builds, runs, and debugs Nextflow DSL2 pipelines and nf-core workflows. Use for…