简介
阿里云云存储网关(Cloud Storage Gateway:简称CSG)支持以传统的NFS与SMB文件访问协议)来访问阿里云对象存储服务,CSG通过暴露一个文件共享将传统文件系统的目录/文件结构同OSS Bucket中的对象结构建立映射关系,这样用户在对文件共享进行操作时也就相当于在相应的OSS Bucket中进行操作。同时,云存储网关还利用缓存技术将一部分热数据缓存在共享的缓存盘中,在读写数据时减少对OSS Bucket的请求数量,大大提高了数据访问效率。
Active Directory(活动目录)是Windows Server提供的一种服务,可以用来集中管理用户和计算机账号,并提供单一登录的功能,是一种应用非常广泛的企业服务。因此文件共享服务器一般会和Active Directory做集成,从而提供统一的用户鉴权功能。由于在WIndows操作系统中一般使用SMB协议来进行文件共享访问,因此本文将讨论的如何将云存储网关中的SMB共享结合AD域进行使用。
SMB共享加入AD域共享实践
要使用AD域里的账号信息来访问SMB共享,首先需要满足两个条件:
1. AD域控制器与文件网关在同一个专用网络(VPC)内;
2. AD域控制器中加入云服务器(ECS)安全组,并且对云存储网关IP放行53端口、389端口、445端口、88端口,如下图所示:
满足上述两个条件后,就可以在网关侧配置AD域相关信息了,主要包含两个步骤,第一步骤就是在网关控制台中设置DNS服务器,该步骤主要用来解析与AD服务相关的一些域名地址,一般来说,AD域控制器同时也是DNS服务器。
第二个步骤就是配置具体的AD域的相关管理员账号密码等信息了。同样也是在网关控制台中AD/LDAP/DNS页签,选择加入AD,填写相应的信息即可,
注意:
1. 服务器IP即为AD服务器的IP地址,用户名需要是管理员用户;
2. 当前CSG不支持配置多个域控,例如父域和子域智能配置其中一种;
3. 成功加入AD后,当前SMB共享配置中原有的本地用户的权限将被移除。
当成功加入AD域后,接下来就可以针对不同的用户配置权限了。对于云存储网关而言,其支持两种级别上的权限设置,一是在共享级别的权限设置,也就是说单个用户或用户组对共享里面所有的文件夹均具有同样的权限,另一种是文件夹级别的权限设置,即让同一用户或用户组对不用的文件夹拥有不同的权限,但这种在文件夹级别的权限设置需要额外使用到云存储网关的WIndows权限控制相关功能。那么接下来,笔者将对这两种级别上权限设置流程以及在配置实践中需要注意的一些事项分别作简单介绍。
共享级别权限设置
在共享级别上实现不同用户的权限隔离比较简单,在共享的设置菜单里就能够做到。在加入AD域成功后,在网关控制台的共享页签里找到需要配置权限的SMB共享,点击设置,在读写权限用户与只读权限用户中通过输入相应的用户或者用户组的名字即可。
添加SMB共享AD域用户或用户组的格式有所不同,可以参开:添加SMB共享AD域用户或用户组
比如这里笔者已提前在AD域里创建了两个用户user1和user2,分别在控制台对其设置有不同的权限:user1具有读写权限;user2具有只读权限。
接下来,就可以用WIndows客户端来访问这个文件共享了。首先在添加网络文件夹映射时以user1的域账号进行登录,点击确定挂载成功后,由于已经赋予user1读写权限,所以试着创建了一个文件夹完全没有问题。
接着我们切换到只读用户user2,同样以域账号登录,可以发现对共享进行访问完全没有问题,但如果创建一个新文件夹则会报错,不被允许。
这里需要注意的是,如果以完全没有访问权限的用户在WIndows客户端进行挂载访问,则在输入用户名密码时,就会看到无法访问共享的提示,这里笔者以一个AD域中的user3用户为例,得到的结果如图所示:
在共享级别对不同用户设置权限就介绍在这里,下面将对在文件/文件夹级别的权限设置进行介绍。
文件/文件夹级别权限设置
若对同一用户在不同文件夹或文件上配置不同的权限。需要使用到云存储网关提供的Windows权限控制相关功能,Windows权限控制功能是云存储网关在1.1.0版本推出的新特性,其目的就是给用户提供更加灵活的用户权限配置,满足不同用户的需求,具体来说它能够允许用户进行精细到每个文件或者文件夹粒度的权限控制,能够有效的保证数据安全性。
Windows权限控制功能是需要结合AD域服务一起使用的,所以在使用该功能时首先需要将文件网关加入到AD域。
同在共享级别进行权限隔离不同,在使用Windows权限控制功能来对文件/文件夹进行权限配置时,需要在创建SMB共享时勾选上“Windows权限支持”功能,在勾选上该功能够,会自动弹出一个“基于枚举的访问”选项,其功能可以进一步对访问者隐藏没有访问权限的文件夹和文件。这里为了更加直观的展示对同一用户不同文件/文件夹配置权限,开启了“基于枚举的访问”功能,如果不需要的话,可以在创建共享时不勾选该选项。
共享创建成功之后,就可以在WIndow客户端通过右键对单个文件夹和文件进行权限设置。首先登录一台在域里面的机器,笔者的客户端是Windows Server 2016,由于并没有在云存储网关配置进行任何权限配置,任意域账号均可以访问该共享,这个我们就以user3进行登录,成功创建了一个文件夹user3-dir。同时为了后续的对比,也创建了一个文件夹every-dir。
右键user3-dir这个文件夹,点击“属性”->“安全”->“高级”可以看到当前这个目录具体的一些权限配置信息。如图所示:
user3是当前文件夹的所有者,对这个文件夹有完全的控制权限。“Domain Users”是user3所在的用户组,对当前文件夹拥有读和执行的权限,“Everyone”具有与“Domain Users”相同的权限配置。“CREATOR OWNER”和“CREATOR GROUP”是会被子文件夹和子文件继承的权限,指新建出来的子文件或者文件夹的默认所有者以及对应组的权限。由于目前没有对该文件夹进行任何设置,使用其他用户进行挂载访问时,该文件夹均能正常显示与访问。
接下来,笔者将演示如何通过设置权限来是这个文件夹只能被user3访问。首先需要删除“Domain Users和“Everyone”这两个组的权限信息,由于这两个的权限是从父目录继承下来的,所以需要禁止掉当前文件夹的继承功能。
接下来,使用域账号用户user1登录进行挂载访问,可以看到在文件管理器中只有every-dir这一个文件夹,而user3-dir文件夹被隐藏掉了(开启了基于枚举的访问功能)
同样的,我们可以再创建一个user1-dir的目录,并配置成这个文件夹只有user1可以访问。这样我们共享里面的user1-dir与user3-dir这两个就可以分别给不同的用户进行访问使用,在权限上做到了隔离,提高了安全性。
通过前面的例子笔者在共享里面创建了两个文件夹,并且两个不同的用户对这两个文件夹具有不同的控制权限。在实际使用时用户可以根据自己的选择将某个文件夹授予给更多的用户或者用户组,只需要右键属性->安全->编辑对某个文件夹添加新的用户即可。
在使用Windows权限控制时,文件或文件夹的权限信息保存在其对应OSS对象的元数据中。SMB文件共享的根目录的默认权限为所有人可以完全访问。建议您不要修改根目录的权限,而是对根目录下的顶级文件夹进行设置。根目录的权限只保存在网关本地。无法保存在OSS对象中。
用户设置AD信息时输入的管理员账号仍然拥有管理员权限,可以访问所有共享里面的文件夹和文件。所以在权限配置有误的时候,可以使用管理员账号重新设置。
总结
本文通过笔者实践展示了如何利用云存储网关搭建一个和Active Directory集成的文件共享服务器,同时具体介绍了如何在共享级别针对不同的域用户设置权限,以及利用Windows权限控制功能实现在文件夹级别设置不同的权限。