azure-keyvault-py
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAzure Key Vault SDK for Python
Azure Key Vault SDK for Python
Secure storage and management for secrets, cryptographic keys, and certificates.
用于机密、加密密钥和证书的安全存储与管理。
Installation
安装
bash
undefinedbash
undefinedSecrets
机密管理
pip install azure-keyvault-secrets azure-identity
pip install azure-keyvault-secrets azure-identity
Keys (cryptographic operations)
密钥(加密操作)
pip install azure-keyvault-keys azure-identity
pip install azure-keyvault-keys azure-identity
Certificates
证书管理
pip install azure-keyvault-certificates azure-identity
pip install azure-keyvault-certificates azure-identity
All
全部安装
pip install azure-keyvault-secrets azure-keyvault-keys azure-keyvault-certificates azure-identity
undefinedpip install azure-keyvault-secrets azure-keyvault-keys azure-keyvault-certificates azure-identity
undefinedEnvironment Variables
环境变量
bash
AZURE_KEYVAULT_URL=https://<vault-name>.vault.azure.net/bash
AZURE_KEYVAULT_URL=https://<vault-name>.vault.azure.net/Secrets
机密管理
SecretClient Setup
SecretClient 配置
python
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)python
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
机密操作
python
undefinedpython
undefinedSet secret
设置机密
secret = client.set_secret("database-password", "super-secret-value")
print(f"Created: {secret.name}, version: {secret.properties.version}")
secret = client.set_secret("database-password", "super-secret-value")
print(f"已创建: {secret.name}, 版本: {secret.properties.version}")
Get secret
获取机密
secret = client.get_secret("database-password")
print(f"Value: {secret.value}")
secret = client.get_secret("database-password")
print(f"值: {secret.value}")
Get specific version
获取指定版本的机密
secret = client.get_secret("database-password", version="abc123")
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}")
for secret_properties in client.list_properties_of_secrets():
print(f"机密: {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}")
for version in client.list_properties_of_secret_versions("database-password"):
print(f"版本: {version.version}, 创建时间: {version.created_on}")
Delete secret (soft delete)
删除机密(软删除)
poller = client.begin_delete_secret("database-password")
deleted_secret = poller.result()
poller = client.begin_delete_secret("database-password")
deleted_secret = poller.result()
Purge (permanent delete, if soft-delete enabled)
清除(永久删除,若启用软删除)
client.purge_deleted_secret("database-password")
client.purge_deleted_secret("database-password")
Recover deleted secret
恢复已删除的机密
client.begin_recover_deleted_secret("database-password").result()
undefinedclient.begin_recover_deleted_secret("database-password").result()
undefinedKeys
密钥管理
KeyClient Setup
KeyClient 配置
python
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)python
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
密钥操作
python
from azure.keyvault.keys import KeyTypepython
from azure.keyvault.keys import KeyTypeCreate RSA key
创建RSA密钥
rsa_key = client.create_rsa_key("rsa-key", size=2048)
rsa_key = client.create_rsa_key("rsa-key", size=2048)
Create EC key
创建EC密钥
ec_key = client.create_ec_key("ec-key", curve="P-256")
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}")
key = client.get_key("rsa-key")
print(f"密钥类型: {key.key_type}")
List keys
列出密钥
for key_properties in client.list_properties_of_keys():
print(f"Key: {key_properties.name}")
for key_properties in client.list_properties_of_keys():
print(f"密钥: {key_properties.name}")
Delete key
删除密钥
poller = client.begin_delete_key("rsa-key")
deleted_key = poller.result()
undefinedpoller = client.begin_delete_key("rsa-key")
deleted_key = poller.result()
undefinedCryptographic Operations
加密操作
python
from azure.keyvault.keys.crypto import CryptographyClient, EncryptionAlgorithmpython
from azure.keyvault.keys.crypto import CryptographyClient, EncryptionAlgorithmGet crypto client for a specific key
为指定密钥获取加密客户端
crypto_client = CryptographyClient(key, credential=credential)
crypto_client = CryptographyClient(key, credential=credential)
Or from key ID
或通过密钥ID获取
crypto_client = CryptographyClient(
"https://<vault>.vault.azure.net/keys/<key-name>/<version>",
credential=credential
)
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
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
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
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}")
undefinedresult = crypto_client.verify(SignatureAlgorithm.rs256, digest, signature)
print(f"有效: {result.is_valid}")
undefinedCertificates
证书管理
CertificateClient Setup
CertificateClient 配置
python
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)python
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
证书操作
python
undefinedpython
undefinedCreate self-signed certificate
创建自签名证书
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate("my-cert", policy=policy)
certificate = poller.result()
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()}")
certificate = client.get_certificate("my-cert")
print(f"指纹: {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")
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
cert_secret.value 包含PEM或PKCS12格式内容
List certificates
列出证书
for cert in client.list_properties_of_certificates():
print(f"Certificate: {cert.name}")
for cert in client.list_properties_of_certificates():
print(f"证书: {cert.name}")
Delete certificate
删除证书
poller = client.begin_delete_certificate("my-cert")
deleted = poller.result()
undefinedpoller = client.begin_delete_certificate("my-cert")
deleted = poller.result()
undefinedClient Types Table
客户端类型对照表
| Client | Package | Purpose |
|---|---|---|
| | Store/retrieve secrets |
| | Manage cryptographic keys |
| | Encrypt/decrypt/sign/verify |
| | Manage certificates |
| 客户端 | 包 | 用途 |
|---|---|---|
| | 存储/检索机密 |
| | 管理加密密钥 |
| | 加密/解密/签名/验证 |
| | 管理证书 |
Async Clients
异步客户端
python
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")
print(secret.value)
import asyncio
asyncio.run(get_secret())python
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")
print(secret.value)
import asyncio
asyncio.run(get_secret())Error Handling
错误处理
python
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")
raisepython
from azure.core.exceptions import ResourceNotFoundError, HttpResponseError
try:
secret = client.get_secret("nonexistent")
except ResourceNotFoundError:
print("机密不存在")
except HttpResponseError as e:
if e.status_code == 403:
print("访问被拒绝 - 检查RBAC权限")
raiseBest Practices
最佳实践
- Use DefaultAzureCredential for authentication
- Use managed identity in Azure-hosted applications
- Enable soft-delete for recovery (enabled by default)
- Use RBAC over access policies for fine-grained control
- Rotate secrets regularly using versioning
- Use Key Vault references in App Service/Functions config
- Cache secrets appropriately to reduce API calls
- Use async clients for high-throughput scenarios
- 使用DefaultAzureCredential进行身份验证
- 在Azure托管应用中使用托管标识
- 启用软删除以便恢复(默认已启用)
- 使用RBAC而非访问策略实现细粒度控制
- 利用版本控制定期轮换机密
- 在App Service/Functions配置中使用Key Vault引用
- 适当缓存机密以减少API调用
- 在高吞吐量场景中使用异步客户端