如何使用Azure Key Vault Python SDK添加Key Vault访问策略
核心结论
- 日常用来读写Key Vault内密钥、机密、证书的
azure-keyvault-*系列Python SDK属于数据平面SDK,不支持访问策略管理能力:访问策略是Key Vault资源层面的控制平面配置,不属于数据平面的操作范围。 - 官方提供的
azure-mgmt-keyvault控制平面Python SDK完全支持访问策略的增删改查,可以直接用来实现动态添加访问策略的需求,不需要重建Key Vault资源。
方案1:使用官方控制平面SDK直接操作
先安装依赖:pip install azure-mgmt-keyvault azure-identity
核心实现代码参考:
from azure.identity import DefaultAzureCredential from azure.mgmt.keyvault import KeyVaultManagementClient # 初始化管理客户端 subscription_id = "你的Azure订阅ID" credential = DefaultAzureCredential() kv_client = KeyVaultManagementClient(credential, subscription_id) # 配置待新增的访问策略规则 rg_name = "Key Vault所属资源组名称" kv_name = "目标Key Vault实例名称" policy_to_add = { "tenantId": "Azure AD租户ID", "objectId": "待授权主体(用户/服务主体/托管标识)的对象ID", "permissions": { "keys": ["get", "list"], "secrets": ["get", "list", "set"], "certificates": ["get", "list"] } } # 增量添加访问策略,不会覆盖已有配置 kv_client.vaults.update_access_policy( resource_group_name=rg_name, vault_name=kv_name, operation_kind="add", parameters={"properties": {"accessPolicies": [policy_to_add]}} )
接口参数说明:operation_kind支持三个值:add为增量新增策略、remove为删除指定策略、replace为全量替换所有现有策略,可以按需选择。
方案2:Pulumi原生声明式管理(推荐,贴合IaC流程)
你提到的Pulumi azure-native仅支持在创建Key Vault时配置访问策略的说法不准确:该 Provider 提供了独立的VaultAccessPolicy资源,和Key Vault实例生命周期解耦,可以随时动态新增、修改、删除访问策略,不需要重建Key Vault,也不需要额外写SDK调用逻辑,所有配置会纳入Pulumi状态管理,避免配置漂移。
Python 实现参考:
from pulumi_azure_native import keyvault from pulumi_azure_native.keyvault import KeyPermissions, SecretPermissions, CertificatePermissions # 假设kv_demo为你已经创建的Key Vault实例资源 new_policy = keyvault.VaultAccessPolicy( "workload-app-policy", vault_name=kv_demo.name, resource_group_name=kv_demo.resource_group_name, tenant_id=tenant_id, object_id=workload_managed_identity.object_id, permissions=keyvault.PermissionsArgs( keys=[KeyPermissions.GET, KeyPermissions.LIST], secrets=[SecretPermissions.GET, SecretPermissions.LIST], certificates=[CertificatePermissions.GET] ) )
其他可选替代方案
- 调用Azure CLI命令:在代码中通过子进程执行
az keyvault set-policy命令完成策略添加,适合环境中已经预装并配置好Azure CLI的场景,不需要额外引入SDK依赖。 - 直接调用Azure REST API:通过
azure-identity获取鉴权Token后,直接向Key Vault访问策略更新接口发送PATCH请求,适合轻量集成场景。
注意:所有操作访问策略的身份,必须提前被授予目标Key Vault的
Microsoft.KeyVault/vaults/accessPolicies/write权限,否则会返回403无权限错误。
内容的提问来源于stack exchange,提问作者frisko
相关产品推荐
相关产品推荐

