需求场景描述
在金融领域,特定公司面临着保障客户隐私文件严格隔离的挑战。由于处理的是高度敏感的客户信息,这些企业必须施行精细且严谨的权限管理体系。为了满足这一严格要求,有些企业开发的面向消费者的应用程序(to C APP)嵌入了基于标签的访问控制结构,以确保只有经过对应标签授权的人员才能够访问到敏感文件,进一步加固了客户隐私的安全防线。市面上已有云存储服务原生支持使用标签来实现精确的访问权限配置,即所谓的基于标签的访问控制(Tag-Based Access Control)。本文具体阐述了如何借助阿里云资源访问管理(RAM)服务,结合标签功能来实行文件访问及管理权限的细节控制。
相关功能介绍
1. OSS Tag功能
OSS支持使用标签对存储空间(Bucket)中的存储桶(Bucket)对象(Object)进行分类,您能够根据业务需求灵活地设置和调整资源的标签,并为Bucket设定访问权限、Object设置生命周期规则及访问权限等。
2. Ossutil介绍
Ossutil 是一个命令行工具,用于管理阿里云OSS(Object Storage Service)服务中的数据。它为用户提供了一个简单、功能强大的方法来操作OSS存储空间(Bucket)和对象(Object),使得能够在不同的操作系统环境中通过命令行与OSS进行交互。
3. RAM Policy介绍
阿里云RAM(Resource Access Management)服务中的策略(Policy)是定义和控制用户(身份)对阿里云资源访问权限的核心工具。策略是一组权限的集合,它明确了可以执行哪些操作,以及允许或拒绝对哪些资源的访问。
解决方案呈现
1. 前置资源准备
- 已创建Linux系统ECS服务器
- 已安装ossutil工具并完成配置(需要创建RAM用户,并填入生成获得的AK及SK),具体安装及配置见:osssutil概述
- 已创建操作bucket并准备好测试文件
2. 操作过程
2.1 增加Tag权限策略
在RAM访问控制控制台选择权限策略功能,新增自定义策略,并将策略添加至已创建的RAM用户。策略规则解释:当用户上传文件到OSS(如需限制访问具体bucket可参考:OSS的RAM Policy的常见实例)时,需要给文件打以下三个tag:group_id=DIRECTSELLING_GROUP、user_id=DIRECTSELL_USER、app_id=simple_buy_service,否则无法上传;当用户进行下载操作时,只能下载带有tag:app_id=simple_buy_service的文件,否则无法下载。
策略代码如下:
{ "Statement": [ { "Action": [ "oss:PutObject", "oss:PutObjectTagging" ], "Effect": "Allow", "Resource": "acs:oss:*:*:*", "Condition": { "StringEquals": { "oss:RequestObjectTag/group_id": "DIRECTSELLING_GROUP", "oss:RequestObjectTag/user_id": "DIRECTSELL_USER", "oss:RequestObjectTag/app_id": "simple_buy_service" } } }, { "Action": "oss:GetObject", "Effect": "Allow", "Resource": "acs:oss:*:*:*", "Condition": { "StringEquals": { "oss:ExistingObjectTag/app_id": "simple_buy_service" } } } ], "Version": "1" }
2.2 功能实现验证
2.2.1 上传文件操作
在Linux服务器命令行分别输入以下内容,测试文件是否上传成功,理论上只带有一个或者两个标签的指令会返回上传失败的结果。
ossutil cp testfile.png #上传文件名称 oss://bucketname/desfolder/ #上传至对应路径 --tagging "group_id=DIRECTSELLING_GROUP" #带一个tag上传 ossutil cp testfile.png #上传文件名称 oss://bucketname/desfolder/ --tagging #上传至对应路径 "group_id=DIRECTSELLING_GROUP&user_id=DIRECTSELL_USER" #带两个tag上传 ossutil cp testfile.png #上传文件名称 oss://bucketname/desfolder/ --tagging #上传至对应路径 "group_id=DIRECTSELLING_GROUP&user_id=DIRECTSELL_USER&app_id=simple_buy_service"。#带三个tag上传
2.2.2 下载文件操作
为了验证是否精确给予对应权限,您可以先将上述上传成功文件的标签的value值修改,测试能否禁止其下载,比如:
然后用一下命令测试,理论上下载操作会失败:
ossutil cp oss://bucketname/desfolder/testfile.png #文件路径及名称 abac/ #本地下载路径
将value值修改回原来的值,再重复一次上述指令,理论上下载能成功。
总结
阿里云 RAM服务的Policy策略结合OSS标签功能,能有效实现OSS文件访问及管理权限的细节控制,为客户提供更细粒度的业务的连续性与安全保障。