You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:48:20