【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) 来进行身份验证。
- 管理平面:用于管理密钥保管库本身。 此平面中的操作包括创建和删除密钥保管库、检索密钥保管库属性以及更新访问策略。 对于授权,管理平面使用 Azure 基于角色的访问控制 (Azure RBAC),
- 数据平面:用于处理密钥保管库中存储的数据。 可以添加、删除和修改密钥、机密及证书。对于授权,数据平面使用 Key Vault 访问策略和适用于 Key Vault 数据平面操作的 Azure RBAC。
本文的问题,就是解决数据平面中如何实现最小粒度的访问授权。在Key Vault的Access Policy的设置中,两种授权模式的选择分别为: ”Vault Access Policy“ 和 ”Azure role-based access control (RBAC)“。

Vault Access Policy:Key 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
【Azure 环境】Azure Key Vault (密钥保管库)中所保管的Keys, Secrets,Certificates是否可以实现数据粒度的权限控制呢?的更多相关文章
- Azure Kay Vault(一).NET Core Console App 获取密钥保管库中的机密信息
一,引言 Azure 密钥保管库用于存储敏感信息,例如链接字符串,密码,API 密钥等.我们无法直接从Azure 密钥库中访问机密!那么我们如何才能访问应用程序中的机密信息?比如,在我们的实际项目中, ...
- C标准函数库中获取时间与日期、对时间与日期数据操作及格式化
表示时间的三种数据类型[编辑] 日历时间(calendar time),是从一个标准时间点(epoch)到现在的时间经过的秒数,不包括插入闰秒对时间的调整.开始计时的标准时间点,各种编译器一般使用19 ...
- Azure Key Vault (1) 入门
<Windows Azure Platform 系列文章目录> 为什么要使用Azure Key Vault? 我们假设在微软云Azure上有1个场景,在Windows VM里面有1个.NE ...
- Azure Key Vault(二)- 入门简介
一,引言 在介绍 Azure Key Vault 之前,先简单介绍一下 HSM(硬件安全模块). -------------------- 我是分割线 -------------------- 1,什 ...
- 【Azure Developer】记录一次使用Java Azure Key Vault Secret示例代码生成的Jar包,单独运行出现 no main manifest attribute, in target/demo-1.0-SNAPSHOT.jar 错误消息
问题描述 创建一个Java Console程序,用于使用Azure Key Vault Secret.在VS Code中能正常Debug,但是通过mvn clean package打包为jar文件后, ...
- 【Azure Developer】使用 CURL 获取 Key Vault 中 Secrets 中的值
问题描述 在使用CURL通过REST API获取Azure Key Vaualt的Secrets值,提示Missing Token, 问如何来生成正确的Token呢? # curl 命令 curl - ...
- 【应用服务 App Service】App Service证书导入,使用Key Vault中的证书
问题描述 正常情况下,如果需要为应用服务安装SSL证书,可以在证书准备好的情况,通过门户上传即可,详细步骤可以参考微软官方文档(在 Azure 应用服务中添加 TLS/SSL 证书:https://d ...
- 第一个lucene程序,把一个信息写入到索引库中、根据关键词把对象从索引库中提取出来、lucene读写过程分析
新建一个Java Project :LuceneTest 准备lucene的jar包,要加入的jar包至少有: 1)lucene-core-3.1.0.jar (核心包) 2) lucene- ...
- 【Azure Developer】Python代码通过AAD认证访问微软Azure密钥保管库(Azure Key Vault)中机密信息(Secret)
关键字说明 什么是 Azure Active Directory?Azure Active Directory(Azure AD, AAD) 是 Microsoft 的基于云的标识和访问管理服务,可帮 ...
随机推荐
- Day06_30_抽象类(Abstract)
抽象类 Abstract 什么是抽象类? 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就 ...
- hdu4411 经典费用里建图
题意: 给以一个无向图,0 - n,警察在0,他们有k个警队,要派一些警队去1--n个城市抓小偷, 问所有吧所有小偷全抓到然后在返回0的最小路径和是多少,当地i个城市被攻击的时候他会通知i ...
- cf534D 枚举握手次数
题意: 有n个学生进教室,先后顺序不同,每个人进去后会和当前在教室里的人握手,并且记录人数,而且当教室里有超过三个人的时候 他们有可能组队去参加比赛,后来的人看不到他们. 思路: ...
- mongodb 在PHP中常见问题及解决方法
1.$in needs an array 解决:查询用到in操作的时候,说in操作对应的不是我一个数组,或者数组索引不是以0开始的 方法:array_values重新生成一个索引为0开始的数组即可 $ ...
- php基础-php中使用变量
- spring mvc简单使用
spring mvc pom.xml依赖与插件 导入servlet.springmvc.Jackson的依赖,编译插件.tomcat <?xml version="1.0" ...
- c++通讯录管理系统
代码拷贝 #include<iostream> #include<string> #include<stdlib.h> #define MAX 1000 using ...
- 拦截器(Interceptor)与过滤器(Filter)
目录 用户的普通Http请求执行顺序 过滤器.拦截器添加后的执行顺序 拦截器(Interceptor)的基本定义 拦截器(Interceptor)必须实现的三个方法 单个拦截器(Interceptor ...
- c#私钥加密统一JAVA
public static string RSADecryptByPavKey(string pavKey,string strEncryptString) { string clearText = ...
- CRM的未来发展前景有哪些?
随着时代的发展,近年来越来越多的国内中小企业开始采用CRM客户关系管理系统,CRM从此不再是大企业的专利,也开始让中小企业得以不断成长.国内CRM行业的发展越来越快, 它的前景是什么?今天小Z就来给大 ...