本文属于【Azure 架构师学习笔记】系列。
本文属于【Azure Storage Account】系列。
前言
存储帐户作为其中一个数据终端存储,对安全性的要求非常高,不管在云还是本地环境中,基于角色的权限定义(RBAC: Role-based Access Control)变得越来越普及。
RBAC通过预设或者自定义一些通用角色,然后分配常规权限,用户只需要于这些角色进行关联就可以获得对应的权限。 这种方式不是新东西,但是在云环境这种大规模,多租户的情况下,很好地降低了权限管理的难度和工作量。
每个资源几乎有自己的一套RBAC, 关于存储帐户也有,但是在讨论权限时,还要区分两个概念:Data Plane和Control Plane。
RBAC - Control Plane
简单来说,Control Plane就是控制RBAC 在Azure 资源层面的权限,没有数据操作。如果只给了Reader角色,那么没法访问上面的数据,因为还有额外的ACL和Data Plane的RBAC 需要授权。所以在允许用户、程序访问数据时, 更好的方式是授予Control Plane上的RBAC, 然后搭配文件和文件夹层面的ACL。
RBAC - Data Plane
Data Plane一旦使用,那么其他ACL 就会被覆盖,和Control Plane作用在资源层面不同, Data Plane可以作用在更低级别, 对于Blob Storage 来说,常用的有下面三种:
- Storage Blob Data Owner: 用于Azure Data Lake Storage Gen2类型,可以配置所有权和管理POSIX访问。
- Storage Blob Data Contributor: 可以在Blob Storage 上的资源进行read/write/delete 。
- Storage Blob Data Reader: 对Blob Storage 只有 read-only 。
除了上面的RBAC, 还可以对文件夹及文件级别进行细粒度的配置,俗称ACL 。ACL 也有两种类型:
- Access ACLs:控制对文件和文件夹的访问。
- Default ACLs:在子文件夹及文件中继承于Access ACLs
数据加密
除了访问控制,对数据本身的加密也是权限控制或者说安全控制方面极其重要的一环,毕竟你没法保证最大权限的账号,Key永不丢失。
默认情况下,ADLS 已经对存储在上面的数据进行了加密,可以是微软托管的加密,也可以是使用用户自定义的密钥进行加密。
如果使用微软托管的加密,会存储哎Azure Key Vault中。如果是用户自定义密钥,则需要额外存储。
对于传输中的数据,则通过TLS 1.2进行加解密。
网络配置
云服务中,PaaS默认都是公网访问,这显然不合适绝大多数的商业环境,这个时候对PaaS的改造就很有必要,首先先限制网络接入,通过对下图的【Enabled from selected virtual networks and IP addresses】来仅允许特定网络的资源可以对其进行访问从而收紧外部入口。
Private Endpoint
PaaS 服务是没有公网IP 的,那么当需要把网络访问收紧,进行site-to-point访问时则会遇到困难,其中一个办法就是让PaaS暴露出一个私网IP, 这个就是endpoint的作用。
Private Endpoint通过在资源所在的VNet上选定一个私有IP (如果在subnet上则需要使用service endpoint),然后通过private link使得特定VNet或者已用VPN, ExpressRoute等配对的外部网络可以访问这个通常被拒绝访问的私有资源。
一旦开启了Private Endpoint, 则其优先级会比上面提到的Selected Network和Firewall上的准入IP 优先级高。
对于企业级应用来说,Selected Network可以把网络从允许公网访问变成只允许特定网络访问,然后搭配Private Endpoint使得访问更加私有。