【Azure 环境】Azure Key Vault (密钥保管库)中所保管的Keys, Secrets,Certificates是否可以实现数据粒度的权限控制呢?

简介: 【Azure 环境】Azure Key Vault (密钥保管库)中所保管的Keys, Secrets,Certificates是否可以实现数据粒度的权限控制呢?

问题描述

Key Vault (密钥保管库) 能不能针对用户授权实现指定用户只能访问某个或某些特定的key? 如当前有两个用户(User1, User2),在Key Vault中有10个Key,User1只能访问前5个Key,User2只能访问后5个Key。

 

问题分析

Azure 密钥保管库是一种云服务,用于保护加密密钥和机密(例如证书、连接字符串和密码)。 因为此数据是敏感数据和业务关键数据,所以需要保护对密钥保管库的访问,只允许得到授权的应用程序和用户进行访问。

 

密钥保管库的访问分为两种:管理平面 和 数据平面。 这两个平面都使用 Azure Active Directory (Azure AD) 来进行身份验证。

本文的问题,就是解决数据平面中如何实现最小粒度的访问授权。在Key Vault的Access Policy的设置中,两种授权模式的选择分别为: ”Vault Access Policy“ 和 ”Azure role-based access control (RBAC)“。

 

Vault Access PolicyKey Vault 访问策略适用于保管库级别。 如果授予某个用户创建和删除密钥的权限,该用户可以针对该密钥保管库中的所有密钥执行这些操作。 密钥保管库访问策略不支持粒度、对象级别权限,例如特定的密钥、机密或证书。

 

Azure role-based access control (RBAC):(2021年4月上线的新功能Azure 基于角色的访问控制是另一种用于控制对 Azure Key Vault 数据平面的访问权限的权限模型,可在单个密钥保管库上启用。 可以将访问权限的范围限定于订阅、资源组或密钥保管库级别,或者限定于单个密钥、机密或证书。

Azure RBAC 权限模型是排他的,一旦设置,保管库访问策略就会变为非活动状态。 Azure Key Vault 定义了一组 Azure 内置角色,它们包含用于访问密钥、机密或证书的通用权限集。

 

问题答案

根据对Vault Access Policy和 Azure RBAC的权限模式分析, 问题的答案是:

1) 当使用Vault Access Policy时,是没有办法实现不同步用户访问不同Key的需求。只能通过变通(workaround)的方式,把10个Key分别存储到两个不同的Key Vault中,User 1和User 2单独访问各自的Key Vault。

(创建两个Key Vault服务,前5个Key保存在服务1中,只给User1赋权限访问,后5个Key保存在第二个Key Vault 服务中,并只给User2赋权限)

 

2)当使用Azure RBAC时,可以实现对单个Key进行独立的权限控制。进入当个的Keys查看页面,点击 Access control (IAM), 为单独的用户,或者组织赋予 ”Key Vault Reader“的角色。

 

当用户访问Key Vault中的key信息时,就只能查看到单位为他赋予了读取权限的Key。

 

参考资料

保护对密钥保管库的访问

用于 Key Vault 数据平面操作的 Azure 内置角色https://docs.azure.cn/zh-cn/key-vault/general/rbac-guide?tabs=azure-cli#azure-built-in-roles-for-key-vault-data-plane-operations

使用 Azure 门户分配 Key Vault 访问策略https://docs.azure.cn/zh-cn/key-vault/general/assign-access-policy-portal

 

相关文章
|
3月前
|
存储 数据安全/隐私保护
【Azure 环境】把OpenSSL生产的自签名证书导入到Azure Key Vault Certificate中报错
【Azure 环境】把OpenSSL生产的自签名证书导入到Azure Key Vault Certificate中报错
|
3月前
|
运维 Kubernetes 容器
【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client secret keys for app ****** are expired)
【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client secret keys for app ****** are expired)
【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client secret keys for app ****** are expired)
|
3月前
|
安全 Linux API
【Azure Key Vault】使用Azure CLI获取Key Vault 机密遇见问题后使用curl命令来获取机密内容
【Azure Key Vault】使用Azure CLI获取Key Vault 机密遇见问题后使用curl命令来获取机密内容
|
3月前
|
安全 Java 开发工具
【Azure Key Vault】是否有直接方法将Azure Key Vault中的机密名称/机密值到处成文件呢?
【Azure Key Vault】是否有直接方法将Azure Key Vault中的机密名称/机密值到处成文件呢?
|
3月前
|
存储 数据安全/隐私保护
【Azure Key Vault】在Alteryx中使用Azure Key Vault存储账号和密码并实现无交互登录
【Azure Key Vault】在Alteryx中使用Azure Key Vault存储账号和密码并实现无交互登录
|
3月前
|
存储 安全 Python
【Azure Key Vault】在Azure Databricks上获取Azure Key Vault中所存储的机密(secret)的两种方式
【Azure Key Vault】在Azure Databricks上获取Azure Key Vault中所存储的机密(secret)的两种方式
|
3月前
|
API C# 开发工具
【Azure Developer】使用Azure Key Vault 的Key签名后,离线验证的一些参考资料
【Azure Developer】使用Azure Key Vault 的Key签名后,离线验证的一些参考资料
|
3月前
|
存储 安全 API
【Azure Developer】Python代码通过AAD认证访问微软Azure密钥保管库(Azure Key Vault)中机密信息(Secret)
【Azure Developer】Python代码通过AAD认证访问微软Azure密钥保管库(Azure Key Vault)中机密信息(Secret)
|
3月前
|
存储 Shell 容器
【Azure 存储服务】使用PowerShell脚本创建存储账号(Storage Account)的共享访问签名(SASToken) : New-AzStorageContainerSASToken
【Azure 存储服务】使用PowerShell脚本创建存储账号(Storage Account)的共享访问签名(SASToken) : New-AzStorageContainerSASToken
|
3月前
|
存储 安全 Shell
【Azure 存储服务】关于Azure Storage Account(存储服务) 基于AAD用户的权限设定以及SAS key的管理问题
【Azure 存储服务】关于Azure Storage Account(存储服务) 基于AAD用户的权限设定以及SAS key的管理问题