更新时间:2024-03-04 GMT+08:00

部门/项目之间数据共享

企业不同部门/项目之间需要共享的数据,本部门/项目允许其他部门/项目用户下载共享数据,禁止写删,以降低共享数据被误删、篡改的风险。

本文以部门A共享存储在example-bucket桶中的数据给部门B的用户下载为例,介绍如何以最小权限原则对共享数据进行权限控制。在本场景下两个部门的管理员、用户与共享数据桶之间的逻辑关系如图1所示。

图1 逻辑关系

方案及流程

在此场景下A部门的管理员可以通过桶策略配置允许下载和禁止写删共享数据的权限给B部门的用户,具体配置流程如图2所示。

图2 共享数据权限控制流程

前提条件

A部门和B部门的管理员用户以及普通用户已由账号在IAM中创建。如何创建IAM用户请参见创建IAM用户

在创建管理员用户时,A部门的管理员由于要执行创建桶、配置桶策略等操作,因此需要管理员所属用户组至少拥有对象存储服务的“OBS Administrator”策略。

详细配置步骤

  1. 创建桶

    1. 使用部门A的管理员用户登录华为云控制台首页。
    2. 在控制台首页选择“所有服务 > 存储 > 对象存储服务 OBS”,进入OBS控制台。
    3. 在OBS控制台,单击页面右上角的“创建桶”按钮。
    4. 根据页面提示,选择“区域”、“桶名称”、“存储类别”及“桶策略”等,详情请参见创建桶

      为确保数据安全,“桶策略”建议选择“私有”,其他参数请根据页面提示进行配置。

    5. 单击“立即创建”,完成桶创建。

  2. 配置允许上传权限

    如果部门A用户所属用户组的权限中,对象存储服务的策略为“Tenant Administrator”、“OBS Administrator”或“OBS OperateAccess”,请略过此步骤,直接执行步骤3。如果没有配置对象存储服务策略或策略配置为“OBS Buckets Viewer”、“Tenant Guest”或“OBS ReadOnlyAccess”,部门A的管理员则需要先执行以下步骤,为本部门的用户配置允许上传共享数据的权限。
    1. 在OBS控制台,单击存放共享数据的桶名称,进入桶对象页面。
    2. 在左侧导航栏单击“访问权限控制 > 桶策略”。
    3. 单击“创建”。
    4. 根据使用习惯,策略配置方式以可视化视图为例。单击“可视化视图”。
    5. 配置如下参数,授予部门A用户访问桶(列举对象)和上传对象的权限。
      表1 授予访问桶和上传对象的权限参数配置

      参数

      说明

      策略名称

      输入自定义策略的名称

      策略内容

      效力

      允许

      被授权用户

      • 被授权用户:当前账号
      • 选择子用户:选择允许上传数据的部门A用户

      授权资源

      • 方式一:
        • 资源范围:整个桶(包括桶内对象)
      • 方式二:
        • 资源范围:当前桶、指定对象
        • 指定对象 - 资源路径:*(*表示桶内所有对象)
          说明:

          如果只允许上传到桶中的某个或多个文件夹下,桶内对象选择“指定对象”后,资源路径填写可上传的文件夹路径+通配符(例如:example-folder/*),支持配置多个资源路径。

      授权操作

      • 动作范围:自定义配置
      • 选择动作:
        • ListBucket(列举桶内对象,获取桶元数据)
        • PutObject(可用作于PUT上传,POST上传,上传段,初始化上传段任务,合并段)
    6. 单击右下角的“创建”,完成桶策略创建。

  3. 配置允许下载权限

    如果部门B用户所属用户组的权限中,对象存储服务的策略为“Tenant Administrator”、“Tenant Guest”、“OBS Administrator”或“OBS OperateAccess”,请略过此步骤, 直接执行步骤4。如果没有配置对象存储服务策略或策略配置为“OBS Buckets Viewer”或“OBS ReadOnlyAccess”,部门A的管理员则需要先执行以下步骤,为部门B的用户配置允许下载共享数据的权限。
    1. 在OBS控制台,单击存放共享数据的桶名称,进入桶对象页面。
    2. 在左侧导航栏单击“访问权限控制 > 桶策略”。
    3. 单击“创建”。
    4. 根据使用习惯,策略配置方式以可视化视图为例。单击“可视化视图”。
    5. 配置如下参数,授予部门B用户下载对象的权限。
      表2 授予下载对象的权限参数配置

      参数

      说明

      策略名称

      输入自定义策略的名称

      策略内容

      效力

      允许

      被授权用户

      • 被授权用户:当前账号
      • 选择子用户:选择允许下载数据的部门B用户

      授权资源

      • 方式一:
        • 资源范围:整个桶(包括桶内对象)
      • 方式二:
        • 资源范围:当前桶、指定对象
        • 指定对象 - 资源路径:*(*表示桶内所有对象)
          说明:

          如果只让下载桶中某一个文件夹或某一类对象,指定对象 - 资源路径输入待共享的文件夹名称(例如:example-folder/)或带有通配符的对象集(例如:*.doc,表示当前桶中所有以doc结尾的对象)。支持输入多个资源路径。

      授权操作

      • 动作范围:自定义配置
      • 选择动作:
        • ListBucket(列举桶内对象,获取桶元数据)
        • GetObject(可用作于获取对象内容,获取对象元数据)
        • GetObjectVersion(可用作于获取指定版本对象内容,获取指定版本对象元数据)
    6. 单击右下角的“创建”,完成桶策略创建。

  4. 配置禁止写删权限

    1. 在OBS控制台,单击存放共享数据的桶名称,进入桶对象页面。
    2. 在左侧导航栏单击“访问权限控制 > 桶策略”。
    3. 单击“创建”。
    4. 根据使用习惯,策略配置方式以可视化视图为例。单击“可视化视图”。
    5. 配置如下参数,禁止部门B用户进行写删操作。
      表3 禁止写删的权限参数配置

      参数

      说明

      策略名称

      输入自定义策略的名称

      策略内容

      效力

      拒绝

      被授权用户

      • 被授权用户:当前账号
      • 选择子用户:选择禁止写删的部门B用户

      授权资源

      • 方式一:
        • 资源范围:整个桶(包括桶内对象)
      • 方式二:
        • 资源范围:当前桶、指定对象
        • 指定对象 - 资源路径:*(*表示桶内所有对象)
          说明:

          如果只需要禁止写删桶中某一个文件夹或某一类对象,指定对象 - 资源路径输入待共享的文件夹名称(例如:example-folder/)或带有通配符的对象集(例如:*.doc,表示当前桶中所有以doc结尾的对象)。支持输入多个资源路径。

      授权操作

      • 动作范围:自定义配置
      • 选择动作:
        • PutObject(可用作于PUT上传,POST上传,上传段,初始化上传段任务,合并段)
        • PutObjectAcl(设置对象ACL)
        • PutObjectVersionAcl(设置指定版本对象ACL)
        • DeleteObject(删除对象)
        • DeleteObjectVersion(删除特定版本的对象)
        • AbortMultipartUpload(取消多段上传任务)
    6. 单击右下角的“创建”,完成桶策略创建。

  5. 上传数据

    A部门用户可以通过OBS控制台、OBS Browser+以及API&SDK等上传数据。此处以在OBS控制台上的操作为例,介绍如何上传数据。
    1. 使用部门A的用户登录OBS控制台。
    2. 在OBS桶列表页面,单击共享数据桶名称。
    3. 在左侧导航栏单击“对象 > 上传对象”。
    4. 在弹出的“上传对象”窗口,根据页面提示选择“上传方式”、“存储类别”及待上传数据。
    5. 单击“上传”。

      上传进度及结果可以单击页面下方的“任务管理”进行查看。

  6. 验证权限

    权限授予成功后,部门B的用户可以通过OBS控制台、OBS Browser+以及API&SDK等多种方式验证。此处以在OBS控制台上的操作为例,介绍如何验证B部门用户对共享数据的只读权限。
    1. 使用部门B的IAM用户登录OBS控制台。
    2. 在OBS桶列表页面,单击待操作桶的桶名称。
    3. 在左侧导航栏单击“对象”,进入对象列表页面。
    4. 单击任一公共数据所在行的“下载”。
      • 下载失败,表示下载权限配置失败,请检查用户组权限配置是否正确。
      • 下载成功,表示下载权限配置成功,请执行下一步骤。
    5. 单击“上传对象”,选择文件后单击“上传”。
      • 上传成功,表示写删权限配置失败,请检查桶策略配置是否正确。
      • 上传失败,表示写删权限配置成功,执行下一步骤。
    6. 单击任一公共数据所在行的“删除”。
      • 删除成功,表示写删权限配置失败,请检查桶策略配置是否正确。
      • 删除失败,表示写删权限配置成功。