在SMB协议文件系统服务中,用户身份的认证是由域控制器来提供的。用户可以在配置了域控制器的Windows或者Linux服务器上,以域身份连接并访问SMB文件系统,然后文件系统服务器得到用户的域身份,来达到目录和文件级别的访问权限控制。
目前的阿里云SMB协议文件存储服务不支持多用户的文件/目录级别的权限访问控制,只提供了一种支持云账号以及源地址IP为基础的文件系统级别的鉴权和访问控制。随着越来越多的企业客户的上云,也出现了更多的阿里云客户对我们提出了对不同的用户进行文件及目录级别的访问控制的要求。比如某医院,他们目前使用的是EMC Isilon存储,采用了Isilon自带的用户管理。他们希望在上云后,能够有和EMC Isilon类似的用户管理体验以及类似的对不同用户的文件目录访问权限控制。另外比如某渲染公司,他们目前的本地存储采用了微软AD域的用户认证,希望在上云后他们的文件存储能够和他们本地的AD域控制器打通,这样他们的用户不管从本地或者云上的VM都能进行同样的用户认证,而且云上的文件存储权限控制和线下一致。
今天,我们很高兴地宣布,阿里云SMB协议文件存储服务也可以支持基于AD域系统的用户身份认证及访问权限控制了,使线下传统的基于微软的Active Directory域的文件系统及应用可以无缝地迁移到阿里云上来,进一步降低SMB协议的文件系统使用和运维成本。阿里云SMB协议文件存储服务可以依赖用户部署在线下或者阿里云上的AD域控制器,通过Kerberos网络身份认证协议来进行AD域用户身份的认证,然后基于认证的域身份来进行目录和文件级别的访问权限控制。
如果要使用阿里云SMB协议文件存储服务的基于AD域系统的用户身份认证及访问权限控制功能,请在阿里云文件系统控制台打开配置该功能。具体请参考将阿里云SMB协议文件系统挂载点接入AD域。
在本文中,我们首先简单介绍文件系统的用户认证和访问权限控制的概念,然后介绍阿里云SMB协议文件存储服务支持基于AD域系统的用户身份认证及访问权限控制的实现。
什么是文件系统的用户认证和访问权限控制
我们来简单介绍一下文件系统的用户认证和访问权限控制的概念。顾名思义,这里包含两个层次的概念。首先是用户认证,也就是身份识别,这是识别一个用户在一个系统中的身份及所在的组的过程。在网络文件系统的应用场景中,这是一个涉及到三方的过程。用户管理认证模块负责管理用户的信息,包括身份ID,所在的组等,并且提供身份认证服务。客户端拿着他所声称的身份去访问文件服务器,文件服务器必须能够以某种方式确认这个身份确实是用户管理认证模块认可的身份。在SMB文件访问协议中,支持的用户认证协议有Kerberos以及NTLM。《Kerberos网络身份认证协议介绍及SMB文件系统对其的支持》具体介绍了这Kerberos网络身份认证协议以及和文件服务器的交互过程。而用户认证模块,比较常用的有文件系统本地的用户管理认证,以及外部的AD域、LDAP域或者NIS域用户管理认证。
文件访问权限控制, 包括文件的访问权限授权和访问权限控制两个方面。在文件系统中,目录和文件的属主能够对系统中的用户进行读、写、修改等访问的授权。当一个用户访问目录和文件时,文件系统会根据认证后的用户身份,对比系统中之前设置的授权信息进行比对,来决定这个访问是否被允许。在兼容POSIX的文件系统语义中(如Linux),这个是通过大家熟悉的mode来进行文件访问控制。具体来说,每个文件或目录的拥有者(owner)是由uid和gid描述的,基本的访问控制mode也即经典的rwxrwxrwx控制串。其中前三位是表示owner uid对应的用户拥有的权限读、写和执行权限,中间三位和最后三位分别是是owner gid对应的组以及所有其他用户(others)所拥有的读、写和执行权限。而在Windows的文件系统中,访问控制是通过ACL(Access Control List)来描述和控制。ACL即权限控制表,用于描述一个对象(文件或目录)上的一系列存取权限。ACL中的每条权限控制项(Access Control Entry, ACE)通常由一个可以验证身份的Security Principal(如用户、用户组,服务账号等)和该Security Principal在这个对象上拥有的一系列权限组成。常见的权限可能包括读、写、执行、删除、审计等。稍具体的请参考《阿里云SMB协议文件系统ACL权限控制使用指南》中相关的介绍。
目前阿里云SMB协议文件存储服务的访问权限控制
目前的阿里云SMB协议文件存储服务不支持多用户的文件/目录级别的权限访问控制,但是提供了一种支持云账号以及源地址IP为基础的文件系统级别的鉴权和访问控制。在这种文件系统级别的访问控制中,首先云账号可以通过设置访问权限组,设置一个文件系统可以被访问的源IP地址列表以及相应的读写权限。然后,在用户建立TCP连接请求时,从TCP连接中提取对应的VPC以及源IP地址信息,通过查找匹配权限组来设置该链接的读写权限。如下图所示:
在这种通过权限组进行文件系统级别的权限控制下,用户只要能登录授权的机器,就能以权限组配置的权限访问相应的文件系统。不同的用户登录机器后,不再进行用户认证,有着相同的权限(匿名用户访问)。另外,由于权限控制基于文件系统级别,不能细粒度地在文件和目录级别做访问权限控制。
阿里云SMB协议文件存储服务基于AD域系统的用户身份认证及访问控制
经过对客户需求以及友商产品类似功能的分析,我们也设计了支持客户VPC或者客户IDC内的AD域控制器的用户管理和文件系统访问权限控制,这样可以打通混合云客户的云上和云下用户认证以及文件系统权限控制。
在我们的实现中,采用的Kerberos用户认证协议,主要考虑是在NTLM协议的实现中,需要从文件服务向AD发起认证请求,而AD在用户的VPC网络中或者在线下IDC内。在阿里云中,这样从云服务向用户VPC或者IDC资源发起的请求需要开通反向网络访问并且需要客户的授权,这样其复杂性要大大增加。而Kerberos的认证协议不需要文件服务和客户AD的直接交流,也就避免了反向网络打通的复杂性。
基于AD域系统的用户认证及访问控制的流程大概如下图所示:
- 用户的账号信息管理在客户AD上进行。客户在AD系统上创建并管理用户,并创建阿里云文件系统的服务账号,注册NAS文件系统挂载点域名,并为NAS文件系统挂载点服务生成Keytab密钥表文件。然后下载阿里云文件系统服务账号的keytab。具体步骤请参考《将阿里云SMB协议文件系统挂载点接入AD域》
- 客户通过阿里云控制台管理文件系统,配置文件系统的用户认证和访问控制,并上传阿里云文件系统服务账号的keytab。
- Keytab信息保存到阿里云文件系统。
用户访问及权限控制。用户通过IDC内的应用资源或者VPC内的VM访问文件系统建立连接的时候,首先通过目前已经实现的文件系统权限组进行权限验证,根据配置的权限组信息控制客户端的连接及访问,然后根据下面的逻辑进行用户认证和访问控制:
a.用户访问文件系统建立连接后,通过 SMB协议协商用户认证协议
b.文件服务器通过查找用户文件系统的配置,查询是否配置了Kerberos认证支持
c.如果用户文件系统配置了Kerberos认证,向客户端返回支持Kerberos认证协议
d.客户端向AD(用户VPC内或者用户IDC内的AD服务器)发出访问阿里云文件系统服务的请求,AD域控制器认证用户后用阿里云文件系统服务账号的密钥加密用户信息,返回给用户客户端
e.用户客户端将加密的用户信息通过SMB Session Setup传给SMB文件服务器
f.文件服务器通过用户提供的文件系统keytab解密用户信息,然后其后在该session的所有访问都用该用户做为授权对象。
g.通过认证后,文件系统返回用户客户端认证通过。否则拒绝session setup请求
h.应用向文件系统发出文件系统访问,读写及其他请求。
i.文件访问控制由文件系统服务器执行。文件服务器根据Session的用户信息和文件系统的目录/文件的访问权限配置,允许或者拒绝用户访问。
j.文件服务器向用户系统返回文件访问结果。在这个实现中,文件及目录的访问授权可以通过Windows提供的文件浏览器进行。
阿里云SMB协议文件存储服务基于AD域系统的用户身份认证及访问控制的相关文章
下面是使用基于AD域系统的用户身份认证及访问权限控制可能需要的相关知识点:
- 阿里云SMB协议文件存储服务支持基于AD域的用户身份认证及权限访问控制介绍,总体介绍阿里云SMB协议文件存储服务支持基于AD域的用户身份认证及权限访问控制的设计实现。
- Kerberos网络身份认证协议介绍及SMB文件系统对其的支持,介绍Kerberos网络身份认证协议以及与SMB协议问系统的交互。
- 安装并启用Active Directory域服务与DNS服务,介绍如何在VPC中安装并启用AD域服务和DNS服务。
- 将Windows系统机器加入AD域,介绍如何将windows机器加入AD域。
- 将阿里云SMB协议文件系统挂载点接入AD域,介绍如何在AD域服务器以及阿里云SMB协议文件系统中进行必要的配置来支持基于AD域的用户身份认证及权限访问控制。
- 从Windows以AD域用户身份挂载使用阿里云SMB协议文件系统,介绍如何从windows客户端以域用户身份挂载使用阿里云SMB协议文件系统。
- Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统,介绍如何从Linux客户端以域用户身份挂载使用阿里云SMB协议文件系统。
- 阿里云SMB协议文件系统ACL权限控制使用指南,介绍如何正确地配置阿里云SMB协议文件系统的ACL以及相应的规则描述。
- 阿里云SMB协议文件系统AD身份认证和ACL权限控制使用场景 - Home Directory / User Profile,介绍使用权限控制的域用户Home Directory以及User Profile两个场景下的相关配置及实现。
- MacOS客户端连接阿里云NAS SMB文件系统,介绍如何从MacOS客户端挂载使用阿里云SMB协议文件系统。
- Linux客户端以AD域用户身份挂载使用阿里云SMB协议文件系统,介绍如何把Linux客户端加入AD域,如何挂载以及自动挂载阿里云SMB协议文件系统。