前言
七牛云在国内虽然说比不上那种腾讯阿里那种超级大厂,但也还是小有名气。尤其是他们家的对象储存,他跟每一位注册用户都免费提供了10G的标准对象储存空间,以及一定的操作额度。所以我个人认为拿他们家的对象储存来做服务器数据备份非常合适。
要做备份,肯定是我所有的服务器都要备份。每隔一段时间自动将网站文件以及数据库文件传输到对象储存。但是根据最小权限原则,我不希望一台服务器能访问另外一台服务器的数据(尤其是我之前在我别的文章中提到的,有的云厂商本身非常不靠谱,可能由于云厂商的失误导致虚拟机被入侵)。所以我们需要做权限隔离,所以就有了我这一篇文章。
七牛云每个账号最多只能有两个Ak和Sk,这两个AK和Sk是拥有最高操作权限的,并且无法限制这Ak Sk的操作范围,这两个能够操作所有的数据储存桶。如果将这个AccessKey 以及SecretKey放在要备份的服务器中,如果这台备份服务器被入侵导致AccessKey以及SecretKey泄露,那么所有备份的数据库以及站点文件全部都会泄露,这可是灾难性的。所以这篇文章就是介绍一个方案,在七牛云上对AK SK秘钥的权限进行管控,让某一对AK SK秘钥只能执行限定的操作,操作限定的储存桶。
大体的思路
我咨询过七牛云的工单客服关于这个问题,工程师的回应是“可以通过IAM子账号的方式,用子账号的AK SK来进行处理”。
按照工程师的说法,以及查询文档。具体的限制思路是通过给用户创建子账号,(每个子账号有自己的AK和SK,与主账号不同),然后可以通过七牛云的一个策略规则,通过创建一个规则,来限制这个子账户的访问权限,(同样的 子账户的Ak Sk也一样限制住了),这样子就可以做到Ak Sk密钥的访问权限隔离。
实现流程
实现目标
首先 我们假设我在七牛云我有一个储存桶 叫做q20191cn,我现在想设置一个Ak Sk密钥对,只能对q20191cn执行读与写以及删除文件的操作,其他权限以及其他储存桶该对Ak Sk 无权操作。
创建子账号
首先我们需要创建一个子账号,登录后再在七牛云的控制台的右上角的访问管理,如图1中红框圈出来的地方。
进入界面后点击用户管理,然后点击创建用户功能,如图2所示
接下来系统要求输入用户名等,这个我就不截图了,关于是否启用控制台功能,我个人建议如果只是单纯想要做访问权限隔离,我建议不开启这个功能,免的日后出现奇怪的问题。
创建策略
接下来会到图2中的界面。在用户管理界面中有个子用户列表,旁边每个用户对应了一些操作,点击授权按钮,可以看到可以给子用户一些功能的授权,但是默认情况下,关于对象储存的权限只有两个,分别为“
QiniuKodoReadOnlyAccess 对象存储(Kodo)只读访问权限”以及“QiniuKodoFullAccess 对象存储(Kodo)完全访问权限”,这两个权限是给所有储存桶的操作权限,与我们的需求不符,我们接下来就是要创建一个符合我们需求的规则。
为了创建符合我们要求的规则,我们先再次回到七牛云控制台的访问管理界面,接下来点中策略管理这个页栏,并点击创建策略,如图3所示
在策略管理界面,请输入如图4所示的策略名(随便取一个),并在另一个红框框中圈出选择服务 这个板块中,选中对象储存。接下来请点击下一步
然后页面会被引导到图5所示的权限分配面板,我们勾选我们需要的权限(就是要赋予我们指定的那个储存桶哪些权限)。我们在需要的权限处,将右侧的开关打开即可,配置完后点击下一步
接下来就是关联这个策略与相应资源的界面,如图6,请点击关联按钮,在弹出来的窗口点击指定空间,然后选择对应需要配置策略的储存桶按钮,选中后点击保存按钮,弹出框关闭后 再点击完成按钮,对应的权限配置已经完成了
获取子账号的Ak Sk
接下来我们就要获取子账号的Ak与Sk的信息。前往访问管理的用户管理界面,点击子账号的用户名。如图7所示
进入新的界面后,点击图8中的创建秘钥的按钮,即可新建子账号的Ak 与Sk 。这一串Ak与Sk代表的就是这个子用户,而这个子用户只能执行限定的操作,也只能访问限定的储存桶,这也达成了我标题所说的“设置七牛云中单个AK SK访问密钥限定只能访问操作特定储存桶”