部门/项目之间数据共享
企业不同部门/项目之间需要共享的数据,本部门/项目允许其他部门/项目用户下载共享数据,禁止写删,以降低共享数据被误删、篡改的风险。
本文以部门A共享存储在example-bucket桶中的数据给部门B的用户下载为例,介绍如何以最小权限原则对共享数据进行权限控制。在本场景下两个部门的管理员、用户与共享数据桶之间的逻辑关系如图1所示。
前提条件
A部门和B部门的管理员用户以及普通用户已由账号在IAM中创建。如何创建IAM用户请参见创建IAM用户。
在创建管理员用户时,A部门的管理员由于要执行创建桶、配置桶策略等操作,因此需要管理员所属用户组至少拥有对象存储服务的“OBS Administrator”策略。
详细配置步骤
- 创建桶
- 使用部门A的管理员用户登录华为云控制台首页。
- 在控制台首页选择“所有服务 > 存储 > 对象存储服务 OBS”,进入OBS控制台。
- 在OBS控制台,单击页面右上角的“创建桶”按钮。
- 根据页面提示,选择“区域”、“桶名称”、“存储类别”及“桶策略”等,详情请参见创建桶。
为确保数据安全,“桶策略”建议选择“私有”,其他参数请根据页面提示进行配置。
- 单击“立即创建”,完成桶创建。
- 配置允许上传权限
如果部门A用户所属用户组的权限中,对象存储服务的策略为“Tenant Administrator”、“OBS Administrator”或“OBS OperateAccess”,请略过此步骤,直接执行步骤3。如果没有配置对象存储服务策略或策略配置为“OBS Buckets Viewer”、“Tenant Guest”或“OBS ReadOnlyAccess”,部门A的管理员则需要先执行以下步骤,为本部门的用户配置允许上传共享数据的权限。
- 在OBS控制台,单击存放共享数据的桶名称,进入桶对象页面。
- 在左侧导航栏单击“访问权限控制 > 桶策略”。
- 单击“创建”。
- 根据使用习惯,策略配置方式以可视化视图为例。单击“可视化视图”。
- 配置如下参数,授予部门A用户访问桶(列举对象)和上传对象的权限。
表1 授予访问桶和上传对象的权限参数配置 参数
说明
策略名称
输入自定义策略的名称
策略内容
效力
允许
被授权用户
- 被授权用户:当前账号
- 选择子用户:选择允许上传数据的部门A用户
授权资源
- 方式一:
- 资源范围:整个桶(包括桶内对象)
- 方式二:
- 资源范围:当前桶、指定对象
- 指定对象 - 资源路径:*(*表示桶内所有对象)
说明:
如果只允许上传到桶中的某个或多个文件夹下,桶内对象选择“指定对象”后,资源路径填写可上传的文件夹路径+通配符(例如:example-folder/*),支持配置多个资源路径。
授权操作
- 动作范围:自定义配置
- 选择动作:
- ListBucket(列举桶内对象,获取桶元数据)
- PutObject(可用作于PUT上传,POST上传,上传段,初始化上传段任务,合并段)
- 单击右下角的“创建”,完成桶策略创建。
- 配置允许下载权限
如果部门B用户所属用户组的权限中,对象存储服务的策略为“Tenant Administrator”、“Tenant Guest”、“OBS Administrator”或“OBS OperateAccess”,请略过此步骤, 直接执行步骤4。如果没有配置对象存储服务策略或策略配置为“OBS Buckets Viewer”或“OBS ReadOnlyAccess”,部门A的管理员则需要先执行以下步骤,为部门B的用户配置允许下载共享数据的权限。
- 在OBS控制台,单击存放共享数据的桶名称,进入桶对象页面。
- 在左侧导航栏单击“访问权限控制 > 桶策略”。
- 单击“创建”。
- 根据使用习惯,策略配置方式以可视化视图为例。单击“可视化视图”。
- 配置如下参数,授予部门B用户下载对象的权限。
表2 授予下载对象的权限参数配置 参数
说明
策略名称
输入自定义策略的名称
策略内容
效力
允许
被授权用户
- 被授权用户:当前账号
- 选择子用户:选择允许下载数据的部门B用户
授权资源
- 方式一:
- 资源范围:整个桶(包括桶内对象)
- 方式二:
- 资源范围:当前桶、指定对象
- 指定对象 - 资源路径:*(*表示桶内所有对象)
说明:
如果只让下载桶中某一个文件夹或某一类对象,指定对象 - 资源路径输入待共享的文件夹名称(例如:example-folder/)或带有通配符的对象集(例如:*.doc,表示当前桶中所有以doc结尾的对象)。支持输入多个资源路径。
授权操作
- 动作范围:自定义配置
- 选择动作:
- ListBucket(列举桶内对象,获取桶元数据)
- GetObject(可用作于获取对象内容,获取对象元数据)
- GetObjectVersion(可用作于获取指定版本对象内容,获取指定版本对象元数据)
- 单击右下角的“创建”,完成桶策略创建。
- 配置禁止写删权限
- 在OBS控制台,单击存放共享数据的桶名称,进入桶对象页面。
- 在左侧导航栏单击“访问权限控制 > 桶策略”。
- 单击“创建”。
- 根据使用习惯,策略配置方式以可视化视图为例。单击“可视化视图”。
- 配置如下参数,禁止部门B用户进行写删操作。
表3 禁止写删的权限参数配置 参数
说明
策略名称
输入自定义策略的名称
策略内容
效力
拒绝
被授权用户
- 被授权用户:当前账号
- 选择子用户:选择禁止写删的部门B用户
授权资源
- 方式一:
- 资源范围:整个桶(包括桶内对象)
- 方式二:
- 资源范围:当前桶、指定对象
- 指定对象 - 资源路径:*(*表示桶内所有对象)
说明:
如果只需要禁止写删桶中某一个文件夹或某一类对象,指定对象 - 资源路径输入待共享的文件夹名称(例如:example-folder/)或带有通配符的对象集(例如:*.doc,表示当前桶中所有以doc结尾的对象)。支持输入多个资源路径。
授权操作
- 动作范围:自定义配置
- 选择动作:
- PutObject(可用作于PUT上传,POST上传,上传段,初始化上传段任务,合并段)
- PutObjectAcl(设置对象ACL)
- PutObjectVersionAcl(设置指定版本对象ACL)
- DeleteObject(删除对象)
- DeleteObjectVersion(删除特定版本的对象)
- AbortMultipartUpload(取消多段上传任务)
- 单击右下角的“创建”,完成桶策略创建。
- 上传数据
- 验证权限
权限授予成功后,部门B的用户可以通过OBS控制台、OBS Browser+以及API&SDK等多种方式验证。此处以在OBS控制台上的操作为例,介绍如何验证B部门用户对共享数据的只读权限。
- 使用部门B的IAM用户登录OBS控制台。
- 在OBS桶列表页面,单击待操作桶的桶名称。
- 在左侧导航栏单击“对象”,进入对象列表页面。
- 单击任一公共数据所在行的“下载”。
- 下载失败,表示下载权限配置失败,请检查用户组权限配置是否正确。
- 下载成功,表示下载权限配置成功,请执行下一步骤。
- 单击“上传对象”,选择文件后单击“上传”。
- 上传成功,表示写删权限配置失败,请检查桶策略配置是否正确。
- 上传失败,表示写删权限配置成功,执行下一步骤。
- 单击任一公共数据所在行的“删除”。
- 删除成功,表示写删权限配置失败,请检查桶策略配置是否正确。
- 删除失败,表示写删权限配置成功。