云存储访问的授权管理

实验描述:本实验会自动创建1台Windows系统的ECS实例。首先,安装并配置OSS Windows客户端。
        然后,创建一个bucket,并上传和下载文件。最后,结合RAM服务,限制资源访问的权限。
实验摘要:介绍OSS Windows客户端,通过OSS客户端实现文件的上传和下载,以及RAM授权
实验建议:掌握Windows系统的基本操作
实验特色:介绍OSS客户端的使用方法,通过OSS客户端可以快速对OSS的资源进行管理。
目标人群:研发人员;使用OSS存储海量文件的客户
实验目标:使用OSS Windows客户端上传和下载文件;
使用OSS Windows客户端实现RAM授权

背景知识

传统的自建服务器存储具有容易受限于硬件可靠性,易出问题,一旦出现磁盘坏道,容易出现不可逆转的数据丢失;
    存储受硬盘容量限制,需人工扩容;需要额外采购,单独部署等缺点。
    运维难度和部署成本居高不下。为了解决这些难题,阿里云引入了对象存储服务。  

    对象存储服务 (Object Storage Service,以下简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务。用户可以通过调用API,在任何应用,任何时间,任何地点上传下载数据。
    也可以通过Web控制台对数据进行简单的管理。OSS适合存放任意文件类型,适合各种网站,开发企业和开发者使用。

7,公有云实战——云存储访问的授权管理_客户端

在本实验中,OSS服务的相关术语如下:

- Bucket,作为OSS的存储空间,是存储文件(object)的容器;
- Region,表示OSS的数据中心所在区域,物理位置。一般来说,距离用户更近的Region访问速度更快
企业A的某个项目(Project-X)上云,购买了多种云资源(如:云服务器ECS、云存储服务OSS等)。
    项目里有多个员工需要操作这些云资源,比如有的负责购买,有的负责运维,还有的负责线上应用。
    由于每个员工的工作职责不一样,需要的权限也不一样。出于安全或信任的考虑,A不希望将云账号密钥直接透露给员工而希望能给员工创建相应的用户账号,授予相应的管理权限。

7,公有云实战——云存储访问的授权管理_云存储_02

企业A开发了一款移动App,并购买了OSS服务。
    移动App需要上传数据到OSS(或从OSS下载数据),A不希望所有App都通过AppServer来进行数据中转,而希望让App能直连OSS上传/下载数据。
    由于移动App运行在用户自己的终端设备上,这些设备并不受A的控制。
    出于安全考虑,A不能将访问密钥保存到移动App中。
    A希望将安全风险控制到最小,比如,每个移动App直连OSS时都必须使用最小权限的访问令牌,而且访问时效也要很短(比如30分钟)。

7,公有云实战——云存储访问的授权管理_上传_03


账号A和账号B分别代表不同的企业。
   A购买了多种云资源(如:云服务器ECS、云存储服务OSS等)来开展业务。
   A希望能专注于业务系统,而将云资源运维监控管理等任务委托(或授权)给企业B。
   此外,B还可以进一步将A的资源访问权限分配给B的某一个或多个员工。
   B可以精细控制其员工对A所控制的资源的操作权限。
   如果A和B的这种代运维合同终止,A随时可以撤销对B的授权。

7,公有云实战——云存储访问的授权管理_云存储_04


RAM(Resource Access Management,资源访问管理)是阿里云为客户提供的身份管理与访问控制服务。
    使用RAM,企业用户可以创建、管理用户账号(比如:员工、系统或应用程序),并可以控制这些用户账号,对企业用户名下资源具有操作权限。
    RAM允许一个云账号下创建并管理多个用户身份,并允许给单个身份或一组身份分配不同的授权策略,从而实现不同用户拥有不同的云资源访问权限。


本实验中涉及到关于RAM的基本概念:
    1.云账户(主账户),云账户是阿里云资源归属、资源使用计量计费的基本主体。
    当用户开始使用阿里云服务时,首先需要注册一个云账户。云账户为其名下所有的资源付费,并对其名下所有资源拥有完全权限。从权限管理的角度,云账户就是操作系统的root或Administrator,因此,我们也称其为“根账户”或“主账户”。
    
    2.RAM用户,RAM允许在一个云账户下创建多个RAM用户。
    RAM用户属于云账户,RAM用户不拥有资源,只能在所属云账户的空间下可见,而不是独立的云账户。
    RAM用户必须在获得云账户的授权后,才能登录控制台或使用API操作云账户下的资源。
    
    3.身份凭证-访问密钥(AccessKey),用户可以通过访问密钥构造一个API请求(或者使用云服务SDK)来操作资源。
    
    4.授权策略,描述权限集的一种简单语言规范。

实验详情

实验资源:

7,公有云实战——云存储访问的授权管理_上传_05

1,搭建云存储访问授权管理的环境

本小节的主要内容为:在OSS中创建bucket,搭建云存储访问授权管理的环境。

  在阿里云上可以通过不同方式对云存储OSS进行管理,包含阿里云OSS管理控制台、OSS API以及第三方管理客户端三种方式。
  本实验使用官方支持的客户端来管理云存储OSS,并结合访问控制(以下简称RAM)配置和管理不同子账户访问OSS服务的使用权限。

使用实验所给的主账号密码进行登录控制台:

7,公有云实战——云存储访问的授权管理_云存储_06

登录成功:

7,公有云实战——云存储访问的授权管理_云存储_07

使用windows主机远程连接到实验资源所给定的外网IP地址进行远程登录:

7,公有云实战——云存储访问的授权管理_客户端_08

输入账户密码:

7,公有云实战——云存储访问的授权管理_云存储_09

打开OSS实验平台:

7,公有云实战——云存储访问的授权管理_客户端_10

在如下图界面中,AccessKey IDAccessKey Secret 输入 实验资源 提供的的 AK IDAK Secret

勾选选项 本机是ECS云主机地域 选择 实验资源 所在 地域 。完成后,点击 登录

说明:因为本机是 ECS 云主机,所以勾选选项。若本机不是云主机则无需勾选 本机是云主机。
    配置中的 地域 信息是指:OSS 服务的数据中心所在地域。选择本机是ECS云主机,且选择地域与实验资源提供地域相同,则ECS与OSS之间可以通过内网传输,文件的传输速度最快。

7,公有云实战——云存储访问的授权管理_上传_11

在安全码的设置页面中,选择 跳过设置

说明:在真实环境中,建议用户设置复杂的安全密码,避免被黑客恶意破-解,导致数据信息流失。
用户在之后的登录中,无需使用 AccessKey ID 和 AccessKey Secret ,可以通过安全密码直接登录。

7,公有云实战——云存储访问的授权管理_上传_12

当前 OSS服务数据中心的 地域实验资源 提供的 地域 相同:

执行以下步骤,开始创建一个新的 bucket 。点击左上角的 新建

7,公有云实战——云存储访问的授权管理_上传_13

弹出的对话框中,输入 Bucket名称读写权限 设为 公共读写 。点击 确定

注意:bucket 是全局唯一。
因此,若创建 bucket 失败,请尝试自定义新的 bucket 名。
bucket命名规则:只能包含小写字母,数字和短横线;
必须以小写字母或数字开头和结尾;长度限制在 3-63 之间。
名称:sl052-oss-191025

7,公有云实战——云存储访问的授权管理_云存储_14

创建成功,在左侧列表中看到新建的 bucket 。此时,该 bucket 下没有任何文件:

7,公有云实战——云存储访问的授权管理_云存储_15

接下来,执行以下步骤,将 oss_icons 上传到新建 bucket 中。

说明:OSS客户端,不仅可以上传单个文件到 bucket 中,也可以上传文件夹到 bucket 中,用户只需选择本地要上传的文件夹,就可以将文件夹以及此文件夹下的所有文件上传到指定的 OSS bucket 中。

点击顶层栏 上传 ,弹出选择上传文件所在路径的对话框:

7,公有云实战——云存储访问的授权管理_客户端_16

进入 计算机:上传文件 目录:

7,公有云实战——云存储访问的授权管理_云存储_17

在主界面的底部的 上传队列 中,查看上传文件的大小和进度。

若文件成功上传到 bucket ,在主界面中,可以查看到已上传的文件 oss_icons 的文件大小以及文件的创建时间:

7,公有云实战——云存储访问的授权管理_云存储_18

2,使用RAM设置云存储访问权限

本小节主要介绍:使用RAM授权功能,为创建的子用户授予相应访问策略。

创建两个RAM用户(Tony)(Jack)

点击顶层栏中 RAM授权 ,弹出RAM授权的对话框:

7,公有云实战——云存储访问的授权管理_上传_19

在弹出对话框中,选择 用户授权 ,当前阿里云账号中没有任何用户。点击 创建用户 ,开始创建一个云账户下的子账户:

7,公有云实战——云存储访问的授权管理_云存储_20

进入创建用户的页面后,输入用户名为 Tony ,完成后,点击 确定 。弹出弹框提示 用户创建成功 ,再次点击 确定

说明:请注意用户名命名规则,此字段为必填字段。
其余字段可不填写,但是在真实的生产环境中,建议用户填写其余字段,可更好的记录 RAM子账户的信息。

7,公有云实战——云存储访问的授权管理_上传_21

返回用户授权页面,查看到当前新建的用户 Tony

同样地,我们点击 创建用户 ,输入用户名 Jack ,然后点击 确定

7,公有云实战——云存储访问的授权管理_客户端_22

弹出提示对话框提示 用户创建成功 ,点击 确定 。再次创建名为 Jack 的用户:

7,公有云实战——云存储访问的授权管理_云存储_23

返回用户授权页面,有两名用户 TonyJack

7,公有云实战——云存储访问的授权管理_客户端_24

切换到阿里云管理控制台,验证是否真的创建了Tony 和 Jack 。点击顶部导航栏处的 产品与服务 ,下拉菜单中依次选择 产品与服务 --- 访问控制

7,公有云实战——云存储访问的授权管理_上传_25

点击左侧栏中的 用户 ,用户列表中看到 Tony 和 Jack :

7,公有云实战——云存储访问的授权管理_上传_26

创建两个授权策略

回到 OSS客户端,在 RAM授权 对话框中,点击 授权策略 ,查看当前无任何自定义策略。

点击 创建授权策略 ,创建一条新的自定义策略:

说明:OSS客户端目前支持自定义策略,以及部分阿里云系统策略。
     因此,在真实的生产环境中,用户更多会根据自身的业务需求,创建相应的自定义策略。

7,公有云实战——云存储访问的授权管理_上传_27

在弹出的 创建授权策略 页面中,输入如下信息:

策略名称ossReadOnly;若自定义,请注意命名规则。

策略规则: 使用如下策略规则

说明:被授予该策略的用户对云账号下的资源拥有,可以读取的权限
{

  "Statement": [

    {

      "Action": [

        "oss:Get*",

        "oss:List*"

      ],

      "Effect": "Allow",

      "Resource": "*"

    }

  ],

  "Version": "1"

}

策略描述oss只读策略

7,公有云实战——云存储访问的授权管理_云存储_28

完成后,点击 确定 ,弹出弹框提示 授权策略创建成功 ,点击 确定

7,公有云实战——云存储访问的授权管理_上传_29

授权策略 界面,可以查看到新建的 ossReadOnly 策略。点击 创建授权策略 ,再次创建一条策略:

7,公有云实战——云存储访问的授权管理_客户端_30

在弹出的 创建授权策略 页面中,输入如下信息:

策略名称ossFullAccess;若自定义,请注意命名规则。

策略规则: 使用如下策略规则

说明:被授予该策略的用户对云账号下的资源拥有所有权限,可以读取、修改、删除等
{
  "Statement": [
    {
      "Action": "oss:*",
      "Effect": "Allow",
      "Resource": "*"
    }
  ],
  "Version": "1"
}

策略描述oss读写策略

完成后,点击 确定 ,弹出弹框提示 授权策略创建成功 ,点击 确定

7,公有云实战——云存储访问的授权管理_上传_31

页面有两条授权策略,分别为 只读策略读写策略

7,公有云实战——云存储访问的授权管理_云存储_32

为两个RAM用户分别授予授权策略

点击 用户授权 ,执行以下步骤,为账户 Tony 授予 oss只读策略

7,公有云实战——云存储访问的授权管理_上传_33

用户授权 列表中点击用户 Tony 右侧操作栏下的 授权 ,进入用户授权界面

7,公有云实战——云存储访问的授权管理_云存储_34

点击 ossReadOnly 右侧的 授权 操作,弹出对话框 授权成功 。点击 确定

7,公有云实战——云存储访问的授权管理_上传_35

ossReadOnly 策略右侧的操作栏中显示为 已授权 。证明已授权 oss只读策略 给Tony用户。

7,公有云实战——云存储访问的授权管理_上传_36

为用户 Jack 授予 oss读写策略

进入 用户授权 页面,点击 Jack 右侧的 授权

7,公有云实战——云存储访问的授权管理_云存储_37

点击左下角的 添加授权

7,公有云实战——云存储访问的授权管理_上传_38

点击策略 ossFullAccess 右侧的 授权 操作,弹框提示 授权成功 ,点击 确定 

7,公有云实战——云存储访问的授权管理_云存储_39

此时 ossFullAccess 策略右侧的操作已变为 已授权

7,公有云实战——云存储访问的授权管理_客户端_40

返回阿里云账户查看用户的权限:

7,公有云实战——云存储访问的授权管理_云存储_41

用户授权策略 页面中,看到JAck名称为 ossFullAccess 的授权策略 :

7,公有云实战——云存储访问的授权管理_客户端_42

至此,成功创建两个RAM用户 TonyJack,并授权 Tony oss只读策略 ,给予 Jack oss读写策略。

下面将验证授予的权限是否有效

3,查看授权结果

本小节主要介绍:验证为两个RAM用户Tony和Jack授予的访问权限是否有效。

获取两个RAM用户的AccessKey

之后的操作中,用户 Tony 和 Jack 将会各自登录 OSS客户端,这需要用到它们的的 AccessKey 信息。

但是,默认情况下,新建RAM子账户无 AccessKeyId 和 AccessKeySecret 信息,因此,需要通过 OSS客户端的 RAM 功能为它们创建一个新的AccessKey。

执行以下步骤,获取用户 TonyAccessKey 信息

用户授权 页面点击 Tony 右侧的 管理

7,公有云实战——云存储访问的授权管理_云存储_43

管理界面中,点击对话框顶部 AccessKey管理 ,进入 AccessKey 的管理页面,页面显示暂无数据。

点击左下角的 创建AccessKey ,为用户新建一个AccessKey。弹出对话框 创建成功 ,点击 确定

注意:默认一个阿里云账户最多为每个子账户创建 2 个 AccessKey 信息。

7,公有云实战——云存储访问的授权管理_云存储_44

此时,页面显示 AccessKeyIdSecret

7,公有云实战——云存储访问的授权管理_上传_45

点击 Secret ,显示 AccessKeySecret :

7,公有云实战——云存储访问的授权管理_云存储_46

同样Jack用户相同操作:

7,公有云实战——云存储访问的授权管理_客户端_47

7,公有云实战——云存储访问的授权管理_上传_48

执行以下步骤,在新建的记事本中,存储Tony和Jack的 AccessKeyId 以及 AccessKeySecret

7,公有云实战——云存储访问的授权管理_客户端_49


注意:请不要关闭此记事本,后续的操作将会使用Tony的AccessKey信息登录OSS客户端。

验证只读策略

完成如上操作后,退出 OSS客户端,然后双击图标,重新打开它。

在 OSS客户端的登陆界面中,输入如下信息,使用 Tony 用户访问 OSS服务。完成后,点击 登录

1)Access KeyID : Tony 用户的 AccessKeyId ;可从刚刚新建的记事本中拷贝。

2)Access KeySecret : Tony 用户的 AccessKeySecret ;可从刚刚新建的记事本中拷贝。 

3)勾选 本机是ECS云主机 ;

7,公有云实战——云存储访问的授权管理_云存储_50

点击 跳过设置 ,跳过安全密码设置。进入OSS客户端主界面:

7,公有云实战——云存储访问的授权管理_上传_51

左侧列表中看到已创建的bucket sl052-oss-bucket-191025 ,主页面有该 bucket 中 上传的文件 oss_icons

说明账号 Tony 下可以读主账号里的bucket。

在左侧栏中,点击 新建 ,弹框中输入bucket 名称,;读写权限为 公共读 。完成后,点击 确定

7,公有云实战——云存储访问的授权管理_云存储_52

弹出对话框提示 拒绝访问 。这是因为在 RAM授权 时,只为 Tony 授予了 oss只读策略 ,它不具有创建新的 bucket 的权限:

7,公有云实战——云存储访问的授权管理_客户端_53

验证读写策略

我们再次退出客户端,然后重新打开。在登陆界面中,输入如下信息,使用 Jack 用户访问 OSS服务。

1)Access KeyID : Jack 用户的 AccessKeyId ;可从刚刚新建的记事本中拷贝。

2)Access KeySecret : Jack 用户的 AccessKeySecret ;可从刚刚新建的记事本中拷贝。 

3)勾选 本机是ECS云主机 ;

7,公有云实战——云存储访问的授权管理_云存储_54

点击 跳过设置 ,跳过安全密码设置。进入OSS客户端主界面:

7,公有云实战——云存储访问的授权管理_云存储_55

左侧列表看到已创建的 bucket sl052-oss-bucket-191025 和 bucket 中的文件 oss_icons

在OSS客户端界面左侧栏中,点击 新建 ,弹框中输入 bucket 名称,读写权限为 公共读 。完成后,点击 确定

7,公有云实战——云存储访问的授权管理_客户端_56

左侧列表中看到新建的名称为 xin-00001 的 bucket 。Jack 能够创建 bucket 是由于为它授予了读写权限:

7,公有云实战——云存储访问的授权管理_云存储_57

至此,实验已经完成上述结果证明我们通过RAM授权的方式实现云存储OSS访问的授权管理是行之有效的