实验概述
现代企业中,不同的岗位拥有不同的权限。比如会计对能够查看、修改公司的账务;人事可以调动、编写公司员工的个人档案;总经理管理公司的所有事务......在网络应用中考虑到安全和管理方面的需求,我们也会为用户授予相应的权限,管理网络资产。
本实验使用访问控制RAM结合云存储OSS客户端,通过配置自定义授权策略,实现不同子用户访问云存储OSS的权限管理。
背景知识
传统的自建服务器存储具有容易受限于硬件可靠性,易出问题,一旦出现磁盘坏道,容易出现不可逆转的数据丢失 ;存储受硬盘容量限制,需人工扩容;需要额外采购,单独部署等缺点。运维难度和部署成本居高不下。为了解决这些难题,阿里云引入了对象存储服务。
对象存储服务 (Object Storage Service,以下简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务。用户可以通过调用API,在任何应用,任何时间,任何地点上传下载数据。也可以通过Web控制台对数据进行简单的管理。OSS适合存放任意文件类型,适合各种网站,开发企业和开发者使用。
在本实验中,OSS服务的相关术语如下:
- Bucket,作为OSS的存储空间,是存储文件(object)的容器;
- Region,表示OSS的数据中心所在区域,物理位置。一般来说,距离用户更近的Region访问速度更快
企业A的某个项目(Project-X)上云,购买了多种云资源(如:云服务器ECS、云存储服务OSS等)。项目里有多个员工需要操作这些云资源,比如有的负责购买,有的负责运维,还有的负责线上应用。由于每个员工的工作职责不一样,需要的权限也不一样。出于安全或信任的考虑,A不希望将云账号密钥直接透露给员工,而希望能给员工创建相应的用户账号,授予相应的管理权限。
企业A开发了一款移动App,并购买了OSS服务。移动App需要上传数据到OSS(或从OSS下载数据),A不希望所有App都通过AppServer来进行数据中转,而希望让App能直连OSS上传/下载数据。由于移动App运行在用户自己的终端设备上,这些设备并不受A的控制。出于安全考虑,A不能将访问密钥保存到移动App中。A希望将安全风险控制到最小,比如,每个移动App直连OSS时都必须使用最小权限的访问令牌,而且访问时效也要很短(比如30分钟)。
账号A和账号B分别代表不同的企业。A购买了多种云资源(如:云服务器ECS、云存储服务OSS等)来开展业务。A希望能专注于业务系统,而将云资源运维监控管理等任务委托(或授权)给企业B。此外,B还可以进一步将A的资源访问权限分配给B的某一个或多个员工。B可以精细控制其员工对A所控制的资源的操作权限。如果A和B的这种代运维合同终止,A随时可以撤销对B的授权。
RAM(Resource Access Management,资源访问管理)是阿里云为客户提供的身份管理与访问控制服务。使用RAM,企业用户可以创建、管理用户账号(比如:员工、系统或应用程序),并可以控制这些用户账号,对企业用户名下资源具有操作权限。RAM允许一个云账号下创建并管理多个用户身份,并允许给单个身份或一组身份分配不同的授权策略,从而实现不同用户拥有不同的云资源访问权限。
本实验中涉及到关于RAM的基本概念:
- 云账户(主账户),云账户是阿里云资源归属、资源使用计量计费的基本主体。当用户开始使用阿里云服务时,首先需要注册一个云账户。云账户为其名下所有的资源付费,并对其名下所有资源拥有完全权限。从权限管理的角度,云账户就是操作系统的root或Administrator,因此,我们也称其为“根账户”或“主账户”。
- RAM用户,RAM允许在一个云账户下创建多个RAM用户。RAM用户属于云账户,RAM用户不拥有资源,只能在所属云账户的空间下可见,而不是独立的云账户。RAM用户必须在获得云账户的授权后,才能登录控制台或使用API操作云账户下的资源。
- 身份凭证-访问密钥(AccessKey),用户可以通过访问密钥构造一个API请求(或者使用云服务SDK)来操作资源。
- 授权策略,描述权限集的一种简单语言规范。
实验目标
完成此实验后,可以掌握的能力有:
1. 了解云存储访问的不同管理权限。
2. 使用访问控制RAM为云存储的子用户授予权限。
实验实施
2.1 搭建云存储访问授权管理的环境
实验资源:
本小节的主要内容为:在OSS中创建bucket,搭建云存储访问授权管理的环境。
在阿里云上可以通过不同方式对云存储OSS进行管理,包含阿里云OSS管理控制台、OSS API以及第三方管理客户端三种方式。本实验使用官方支持的客户端来管理云存储OSS,并结合访问控制(以下简称RAM)配置和管理不同子账户访问OSS服务的使用权限。
1. 首先在ECS中安装好OSS客户端,然后远程登录到 ECS 服务器。登录到 Windows系统 ECS 服务器后,双击桌面的 OSS 图标,进入 OSS 客户端。
2. 在如下图界面中,AccessKey ID 和 AccessKey Secret 输入 实验资源 提供的的 AK ID 和 AK Secret 。勾选选项 本机是ECS云主机 , 地域 选择 实验资源 所在 地域 。完成后,点击 登录 。
说明:因为本机是 ECS 云主机,所以勾选选项。若本机不是云主机则无需勾选 本机是云主机 。配置中的 地域 信息是指:OSS 服务的数据中心所在地域。选择本机是ECS云主机,且选择地域与实验资源提供地域相同,则ECS与OSS之间可以通过内网传输,文件的传输速度最快。
3. 在安全码的设置页面中,选择 跳过设置 。
说明:在真实环境中,建议用户设置复杂的安全密码,避免被黑客恶意,导致数据信息流失。用户在之后的登录中,无需使用 AccessKey ID 和 AccessKey Secret ,可以通过安全密码直接登录。
4. 当前 OSS服务数据中心的 地域 与 实验资源 提供的 地域 相同。执行以下步骤,开始创建一个新的 bucket 。
1)点击左上角的 新建 。
2)弹出的对话框中,输入 Bucket名称 ; 读写权限 设为 公共读写 。完成后,点击 确定 。
注意:bucket 是全局唯一。因此,若创建 bucket 失败,请尝试自定义新的 bucket 名。bucket命名规则:只能包含小写字母,数字和短横线;必须以小写字母或数字开头和结尾;长度限制在 3-63 之间。
3)创建成功,在左侧列表中看到新建的 bucket 。此时,该 bucket 下没有任何文件。
5. 接下来,执行以下步骤,将 oss_icons 上传到新建 bucket 中。
说明:OSS客户端,不仅可以上传单个文件到 bucket 中,也可以上传文件夹到 bucket 中,用户只需选择本地要上传的文件夹,就可以将文件夹以及此文件夹下的所有文件上传到指定的 OSS bucket 中。
1)点击顶层栏 上传 ,弹出选择上传文件所在路径的对话框。
2)进入 计算机:\C:\Slab052\上传文件 目录。
3)选择 oss_icons ,然后点击 选择 ,
4)在主界面的底部的 上传队列 中,查看上传文件的大小和进度。若文件成功上传到 bucket ,在主界面中,可以查看到已上传的文件 oss_icons 的文件大小以及文件的创建时间。
2.2 使用RAM设置云存储访问权限
本小节主要介绍:使用RAM授权功能,为创建的子用户授予相应访问策略。
创建两个RAM用户
1. OSS客户端,执行以下步骤,创建一个用户 Tony。
1)点击顶层栏中 RAM授权 ,弹出RAM授权的对话框。
2)在弹出对话框中,选择 用户授权 ,当前阿里云账号中没有任何用户。点击 创建用户 ,开始创建一个云账户下的子账户。
3)进入创建用户的页面后,输入用户名为 Tony ,完成后,点击 确定 。弹出弹框提示 用户创建成功 ,再次点击 确定 。
说明:请注意用户名命名规则,此字段为必填字段。其余字段可不填写,但是在真实的生产环境中,建议用户填写其余字段,可更好的记录 RAM子账户的信息。
4)返回用户授权页面,查看到当前新建的用户 Tony 。
2. 同样地,我们点击 创建用户 ,输入用户名 Jack ,然后点击 确定 。弹出提示对话框提示 用户创建成功 ,点击 确定 。再次创建名为 Jack 的用户。
3. 返回用户授权页面,有两名用户 Tony 和 Jack 。
创建两个授权策略
4. 回到 OSS客户端,在 RAM授权 对话框中,点击 授权策略 ,查看当前无任何自定义策略。点击 创建授权策略 ,创建一条新的自定义策略。
说明:OSS客户端目前支持自定义策略,以及部分阿里云系统策略。因此,在真实的生产环境中,用户更多会根据自身的业务需求,创建相应的自定义策略。
5. 在弹出的 创建授权策略 页面中,输入如下信息:
1)策略名称:ossReadOnly;若自定义,请注意命名规则。
2)策略规则: 使用如下策略规则
说明:被授予本策略的用户对云账号下的资源只有读取权限,无法进行别的操作。
{
"Statement": [
{
"Action": [
"oss:Get*",
"oss:List*"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}
3)策略描述:oss只读策略。
6. 完成后,点击 确定 ,弹出弹框提示 授权策略创建成功 ,点击 确定 。
在 授权策略 界面,可以查看到新建的 ossReadOnly 策略。点击 创建授权策略 ,再次创建一条策略。
7. 在弹出的 创建授权策略 页面中,输入如下信息:
1)策略名称:ossFullAccess;若自定义,请注意命名规则。
2)策略规则: 使用如下策略规则
说明:被授予该策略的用户对云账号下的资源拥有所有权限,可以读取、修改、删除等
{
"Statement": [
{
"Action": "oss:*",
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}
3)策略描述:oss读写策略。
8. 完成后,点击 确定 ,弹出弹框提示 授权策略创建成功 ,点击 确定 。
9. 页面有两条授权策略,分别为 只读策略 和 读写策略 。
为两个RAM用户分别授予授权策略
10. 点击 用户授权 ,执行以下步骤,为账户 Tony 授予 oss只读策略。
1)在 用户授权 列表中点击用户 Tony 右侧操作栏下的 授权 ,进入用户授权界面。
2)跳转到 授权策略 页面,当前显示没有数据,也就是说 Tony 当前无任何权限,点击左下角的 添加授权 ,为 Tony 添加权限。
3)点击 ossReadOnly 右侧的 授权 操作,弹出对话框 授权成功 。点击 确定 。
4)ossReadOnly 策略右侧的操作栏中显示为 已授权 。证明已授权 oss只读策略 给Tony用户。
12. 执行以下步骤,为用户 Jack 授予 oss读写策略 。
1)点击右下角的 取消 按钮。
2)进入 用户授权 页面,点击 Jack 右侧的 授权 。
3)点击左下角的 添加授权 。
4)点击策略 ossFullAccess 右侧的 授权 操作,弹框提示 授权成功 ,点击 确定 。
5)此时 ossFullAccess 策略右侧的操作已变为 已授权 。
13. 至此,成功创建两个RAM用户 Tony 和 Jack,并授权 Jack oss只读策略 ,给予 tony oss读写策略 。下一小节,验证授予的权限是否有效。
2.3 查看授权结果
本小节主要介绍:验证为两个RAM用户Tony和Jack授予的访问权限是否有效。
获取两个RAM用户的AccessKey
1. 之后的操作中,用户 Tony 和 Jack 将会各自登录 OSS客户端,这需要用到它们的的 AccessKey 信息。但是,默认情况下,新建RAM子账户无 AccessKeyId 和 AccessKeySecret 信息,因此,需要通过 OSS客户端的 RAM 功能为它们创建一个新的AccessKey。
2. 执行以下步骤,获取用户 Tony 的 AccessKey 信息。
1)如下图 授权策略 页面中,点击右下角处 取消 按钮 。
2)用户授权 页面点击 Tony 右侧的 管理 。
3)管理界面中,点击对话框顶部 AccessKey管理 ,进入 AccessKey 的管理页面,页面显示暂无数据。点击左下角的 创建AccessKey ,为用户新建一个AccessKey。弹出对话框 创建成功 ,点击 确定 。
注意:默认一个阿里云账户最多为每个子账户创建 2 个 AccessKey 信息。
4)此时,页面显示 AccessKeyId 和 Secret。
5)点击 Secret ,显示 AccessKeySecret 。
3. 执行以下步骤,在新建的记事本中,存储Tony的 AccessKeyId 以及 AccessKeySecret 。
注意:请不要关闭此记事本,后续的操作将会使用Tony的AccessKey信息登录OSS客户端。
4. 同样地,执行以下步骤,获取 Jack 的 AccessKey 信息。
1)点击右下角处的 取消 按钮。
2)点击用户 Jack 右侧的 管理 。
3)AccessKey管理 页面点击 创建AccessKey 。提示 创建成功,点击 确定 。
4)同样得到 Jack 的 AccessKeyId 和 AccessKeySecret 后,复制到记事本中,之后我们会用到。
验证只读策略
4. 完成如上操作后,退出 OSS客户端,然后双击图标,重新打开它。在 OSS客户端的登陆界面中,输入如下信息,使用 Tony 用户访问 OSS服务。完成后,点击 登录 。
1)Access KeyID : Tony 用户的 AccessKeyId ;可从刚刚新建的记事本中拷贝。
2)Access KeySecret : Tony 用户的 AccessKeySecret ;可从刚刚新建的记事本中拷贝。
3)勾选 本机是ECS云主机 ;
4)地域:选择与 OSS客户端 ECS 实例相同地域。
5. 点击 跳过设置 ,跳过安全密码设置。进入OSS客户端主界面。
6. 左侧列表中看到已创建的bucket sl052-oss-bucket-32509 ,主页面有该 bucket 中 上传的文件 oss_icons 。说明账号 Tony 下可以读主账号里的bucket。在左侧栏中,点击 新建 ,弹框中输入bucket 名称,;读写权限为 公共读 。完成后,点击 确定 。
弹出对话框提示 拒绝访问 。这是因为在 RAM授权 时,只为 Tony 授予了 oss只读策略 ,它不具有创建新的 bucket 的权限。
验证读写策略
7. 我们再次退出客户端,然后重新打开。在登陆界面中,输入如下信息,使用 Jack 用户访问 OSS服务。
1)Access KeyID : Jack 用户的 AccessKeyId ;可从刚刚新建的记事本中拷贝。
2)Access KeySecret : Jack 用户的 AccessKeySecret ;可从刚刚新建的记事本中拷贝。
3)勾选 本机是ECS云主机 ;
4)地域:选择与 OSS客户端 ECS 实例相同地域。
8. 点击 跳过设置 ,跳过安全密码设置。进入OSS客户端主界面。
9. 左侧列表看到已创建的 bucket sl052-oss-bucket-32509 和 bucket 中的文件 oss_icons 。在OSS客户端界面左侧栏中,点击 新建 ,弹框中输入 bucket 名称,读写权限为 公共读 。完成后,点击 确定 。
左侧列表中看到新建的名称为 sl052-oss-bucket-32510 的 bucket 。Jack 能够创建 bucket 是由于为它授予了读写权限。
10. 至此,实验已经完成。上述结果证明我们通过RAM授权的方式实现云存储OSS访问的授权管理是行之有效的。
标签:实战,存储,运维,OSS,RAM,bucket,用户,点击,授权 From: https://blog.51cto.com/lyx888/6217683