【实验】阿里云大数据助理工程师认证(ACA)- ACA认证配套实验-05-安全与权限基本操作

一、实验概述

大数据计算服务(MaxCompute,原名 ODPS)是一种快速、完全托管的 GB/TB/PB 级数据仓库解决方案。MaxCompute 向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。

本实验结合实际场景案例,演示如何对MaxCompute的权限及安全进行操作。

二、实验目标

本实验通过客户端方式进行实验,掌握如何对MaxCompute的权限及安全进行操作。

完成此实验后,可以掌握的能力有:

  1. A用户授权给B用户;

  2. 角色管理与授权;

  3. 鉴权模型查看与管理;

  4. 基于标签的安全控制;

  5. 跨项目空间的资源分享;

  6. 项目空间保护;

三、学习建议

  1. 掌握如何对MaxCompute的权限及安全进行操作;

  2. 提前安装 ODPS客户端(下载客户端软件)

第 1 章:实验准备

1.1 申请MaxCompute资源

在弹出的左侧栏中,点击 创建资源 按钮,开始创建实验资源。
资源创建过程需要1-3分钟。完成实验资源的创建后,用户可以通过 实验资源 查看实验中所需的资源信息,例如:阿里云账号等。

1.2 准备测试账号

该实验需要和其他同学配合完成,请找到一个可以和你互相配合的同学,下文中会提到A用户、B用户,其中A用户即为你本人使用的阿里云的账号,B用户为和你配合的同学的阿里云账号;

实验中两个账户均使用的是阿里云主账号(或者具有项目admin权限的用户),可在两台电脑中登录,亦或使用同一台电脑里两个不同的浏览器打开,或一个使用浏览器打开,另一个使用odpscmd客户端;

为方便区别相关的账号操作,下述实验过程中A账号的操作记录均采用的命令行的方式进行操作截图,账号B的操作记录均使用页面浏览器的操作截图;

实验中的配置文件、文件路径、账号、项目名称、授权表等,均需根据具体的项目进行修改。

1.3 资源环境准备

1)请点击页面左侧的实验资源,在左侧栏中,查看本次实验资源信息。如图案例:
在这里插入图片描述
2)点击“实验资源”,查看所需具体资源,如图案例:
3)在弹出的左侧栏中,点击 创建资源 按钮,开始创建实验资源。

  注意:由于实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建

4)创建资源,如图案例:(创建资源需要几分钟时间,请耐心等候……)资源创建成功,如图案例:(注意资源中的项目名称、子用户名称、子用户密码、AK ID、AK Secret信息)

1.4 进入实验环境

1、登录控制台

1)点击“前往控制台”
注意:此实验界面为使用者提供了进入实验的用户名称,如 u-bcofvgpr 以及登录密码,请先记录下来,密码需要鼠标点击直接拷贝下来,以及使用其他工具的 AK ID 以及 AK Secret 秘钥对 ,项目名称等信息。将AK ID 和 AK Secret配置在安装的客户端的配置文件中。
2)输入用户名
3)点击下一步,输入密码:(刚才实验环境创建时所提供)
4)进入控制台界面
5) 点击 “大数据(数加)”进入大数据开发控制台
6) 点击”大数据开发套件”进入工作区界面
7)点击“进入工作区”,进入工作环境(首次进入显示每个菜单的帮助信息)
8) 点击“跳过”或逐个菜单看看,最终显示
9)点击“新建脚本”设置实验临时文件
在这里插入图片描述
10)设置文件名称、类型(选择ODPS SQL)、描述信息(建议非必须)、文件保存目录信息,点击“提交”进入SQL操作环境
在这里插入图片描述
2、配置客户端

1)如果为提前安装客户端,请参考下面网址进行安装:

(https://help.aliyun.com/document_detail/27971.html?spm=5176.doc27834.6.730.xbOX5m)
在这里插入图片描述
3)解压安装
4)配置客户端文件,在XXX(个人目录)\odpscmd_public\conf\,打开文件 odps_config.ini,修改配置信息;即将上述实验资源中提供的AK ID 以及 AK Secret 和项目名称分别填写在上述配置文件中,其他信息不变,如图:
5) 检查测试即通过命令行,进入\ODPS_DEMO\odpscmd_public\bin\,执行 odpscmd,进入交互界面,确认安装是否配置成功。案例如图:
执行后进入如下界面:(测试案例项目为bigdata_train)
6) 通过创建一个数据表测试:

        ------输入语句创建表dual 

        create table dual (X string);

        ------数据表中插入一条记录并检查

         insert into table dual select count(*) from dual;

在这里插入图片描述
------检查插入结果

        select * from dual;

1.5 安装配置最新odpscmd 客户端

步骤1:客户端介质下载 (参考地址)

https://help.aliyun.com/document_detail/27971.html?spm=5176.doc27833.2.1.b6nngs
步骤2:解压odpscmd_public.zip 到本目录,如:解压至本地目录 E:\ ODPS_DEMO \odpscmd_public

步骤3:查看本次实验课用到的介质,可以看到如下的文件夹:
步骤4:在conf文件夹中有odps_config.ini文件。编辑此文件,填写相关信息:

project_name=<自己的项目名称>

access_id=<自己的项目生成的访问ID , www.aliyun.com网站上申请到的access_id>

access_key=<自己的项目生成的访问ID的密钥信息,即 www.aliyun.com网站上申请access_key>

end_point=http://service.odps.aliyun.com/api (tunnel JAVA SDK 需要)

tunnel_endpoint=http://dt.odps.aliyun.com (tunnel JAVA SDK 需要)

log_view_host=http://logview.odps.aliyun.com (默认)    

https_check=true  (默认)

注意: [在申请资源部分可获取实验所需的项目名称、所需的access_id(AK ID) 、access_key(AK Secre)等信息 ] 如下图开通资源后所示:步骤5:修改好配置文件后运行bin目录下的odpscmd(在Linux系统下是./bin/odpscmd,Windows下运行./bin/odpscmd.bat),现在可以运行 MaxCompute 命令,如:
注意:项目可以随时根据情况切换,上图表示环境设置成功.

将 E:\ODPS_DEMO\odpscmd_public\bin 加入环境变量 PATH,方便通过命令行调用 odpscmd
在这里插入图片描述

第 2 章:实验内容

####2.1 实验:A用户授权给B用户
提示:本章节所需操作均需使用阿里云主账号或者具有项目admin权限的用户进行实验,实验环境需在各阿里云主账号对应的项目中进行。

本实验中,所使用的配置文件、文件路径、账号、项目名称、授权表等,均需根据具体的项目进行修改,如下新建的几张表主要作用于演示。

新建表:

----新建DUAL

CREATE TABLE DUAL (

ID BIGINT

);

----新建T_TEST

CREATE TABLE T_TEST (

ID STRING

);

----新建T_TUNNEL

CREATE TABLE T_TUNNEL (

ID STRING

);

----新建T_TUNNEL_P

CREATE TABLE T_TUNNEL_P (

ID STRING,

NAME STRING,

ADRESS STRING,

PHONE STRING,

EMAIL STRING

);

1、登录odpscmd客户端,查看当前项目中用户权限情况:

show grants;

在这里插入图片描述
2、将用户B加入到当前项目空间中来:

add user [email protected];

在这里插入图片描述
3、将表dual的访问权限赋予用户B:

grant select, describe on table dual to user [email protected];

4、查看B用户拥有的权限:

 show grants for [email protected];

5、使用用户B去访问表 Lab_class.dual:

select * from Lab_class.dual;

6、用户A将用户B从项目中移除:

remove user [email protected];

7、使用用户B去访问表 Lab_class.dual,此时访问报错:

select * from Lab_class.dual;

8、查看B用户拥有的权限:

show grants for [email protected];

9、用户A将用户B加入到当前项目空间中来:

add user [email protected];

10、使用用户B去访问表 Lab_class.dual,成功,原有权限自动生效:

select * from Lab_class.dual;

11、用户A收回B用户对dual表的读的权限:

revoke select,describe on table dual from user [email protected];

12、再使用用户B进行查询,发现报错:

select * from Lab_class.dual;

2.2 实验:角色管理与授权

提示:本章节所需操作均需使用阿里云主账号或者具有项目admin权限的用户进行实验,实验环境需在各阿里云主账号对应的项目中进行。

1、用户A新建一个角色 reader:

create role reader;

2、用户A赋予角色reader几张表的读权限:

grant describe, select on table dual to role reader;

grant describe, select on table t_test to role reader;

3、用户A查看角色的权限:

desc role reader;

4、用户A查看B用户拥有的权限:

show grants for [email protected];

5、用户A将角色reader赋予用户B:

grant reader to [email protected];

6、用户A查看B用户拥有的权限:

show grants for [email protected];

7、用户A赋予角色reader另外几张表的读权限:

grant describe, select on table t_tunnel to role reader;

grant describe, select on table t_tunnel_p to role reader;

8、用户A查看角色的权限和使用情况:

desc role reader;

9、用户A查看B用户拥有的权限:

show grants for [email protected];

10、用户A删除角色reader(会报错,删除失败):

drop role reader;

11、用户A移除用户B(会报错,移除失败):

remove user [email protected];

12、用户A查看角色的权限和使用情况:

desc role reader;

13、用户A从用户B收回角色:

revoke reader from [email protected];

14、用户A删除角色reader:

drop role reader;

15、用户A移除用户B:

remove user [email protected];

2.3 实验:鉴权模型查看与管理

提示:本章节所需操作均需使用阿里云主账号或者具有项目admin权限的用户进行实验,实验环境需在各阿里云主账号对应的项目中进行。

1、用户A查看当前项目的鉴权模型:

show SecurityConfiguration;

2、用户A赋予用户B建表的权限:

add user [email protected];

grant createtable on project Lab_class to user [email protected];

3、用户B建表:

create table Lab_class.t_test_sg (id int);

desc Lab_class.t_test_sg;

select count(*) from Lab_class.t_test_sg;

image.png

image.png

image.png

4、用户A修改鉴权模型,将ObjectCreatorHasAccessPermission改为false:

set ObjectCreatorHasAccessPermission=false;

show SecurityConfiguration;

5、用户B访问Lab_class.t_test_sg(报错,权限不足):

desc Lab_class.t_test_sg;

select count(*) from Lab_class.t_test_sg;

image.png

image.png

6、用户B删除Lab_class.t_test_sg(报错,权限不足):

drop table Lab_class.t_test_sg;

image.png

7、用户A修改鉴权模型,将ObjectCreatorHasAccessPermission改为true:

set ObjectCreatorHasAccessPermission=true;

show SecurityConfiguration;

8、用户B访问Lab_class.t_test_sg:

desc Lab_class.t_test_sg;

select count(*) from Lab_class.t_test_sg;

image.png

image.png

9、用户B删除Lab_class.t_test_sg:

drop table Lab_class.t_test_sg;

image.png

10、用户A收回用户B建表的权限:

revoke createtable on project Lab_class from user [email protected];

remove user [email protected];

2.4 实验:基于标签的安全控制

提示:本章节所需操作均需使用阿里云主账号或者具有项目admin权限的用户进行实验,实验环境需在各阿里云主账号对应的项目中进行。

1、用户A查看当前项目的鉴权模型:

show SecurityConfiguration;

2、如果LabelSecurity的值为false,则需要将它设置成true:

set LabelSecurity=true;

3、增加用户B到当前项目Lab_class,并设置安全许可标签:

(默认安全标签为0,我们将用户B([email protected]) 安全许可标签设置为3)

add user [email protected];

set label 3 to user [email protected];

grant select,describe on table t_tunnel to user [email protected];

4、用户B此时可以访问Lab_class.t_tunnel:

select * from Lab_class.t_tunnel;

image.png

5、用户A将t_tunnel的id敏感等级提高成4:

set label 4 to table t_tunnel(id);

image.png

6、用户B此时因安全等级低,无法访问敏感等级高的数据Lab_class.t_tunnel:

select * from Lab_class.t_tunnel;

image.png

7、用户A将t_tunnel中的id字段的敏感度调整到3:

set label 3 to table t_tunnel(id);

8、用户B此时可以访问Lab_class.t_tunnel中敏感级别不大于3的列id:

select id from Lab_class.t_tunnel;

image.png

9、用户A可以设置对低权限用户B进行临时授权可以访问高敏感级别的表t_tunnel_p:

set label 3 to user [email protected];

grant select,describe on table t_tunnel_p to user [email protected];

set label 5 to table t_tunnel_p(name);

set label 4 to table t_tunnel_p (id);

grant label 4 on table t_tunnel_p to user [email protected] with exp 1;

10、用户B此时可以访问Lab_class.t_tunnel_p中敏感级别不大于4的所有列:

select id from Lab_class.t_tunnel_p;

select name from Lab_class.t_tunnel_p;

image.png

image.png

11、用户A查看当前有权限访问t_tunnel_p的表的用户列表:

show label grants on table t_tunnel_p;

12、用户A查看用户B有权限访问的所有的表的列表:

 show grants for [email protected];

13、用户A收回用户B权限,并从项目中移除用户B,并复原项目的鉴权模型:

revoke describe,select on table t_tunnel from user [email protected];

revoke describe,select on table t_tunnel_p from user [email protected];

remove user [email protected];

set LabelSecurity=false;

show SecurityConfiguration;

2.5 实验:跨项目空间的资源分享

提示:本章节所需操作均需使用阿里云主账号或者具有项目admin权限的用户进行实验,实验环境需在各阿里云主账号对应的项目中进行。

1、用户A创建package,并将表t_tunnel以及表t_tunnel_p的访问权限添加到该package:

create package pk_tunnel_read;

add table t_tunnel to package pk_tunnel_read with privileges select;

add table t_tunnel_p to package pk_tunnel_read with privileges describe;

2、用户A将pk_tunnel_read赋给用户B所在的项目Star_research:

allow project Star_research to install package pk_tunnel_read;

3、用户B查看所在项目空间可用的package:

show packages;

image.png

4、用户B安装pk_tunnel_read:

install package Lab_class.pk_tunnel_read;

show packages;

desc package Lab_class.pk_tunnel_read;

image.png

image.png

image.png

5、用户B访问package中包含的资源:

select * from Lab_class.t_tunnel;

desc Lab_class.t_tunnel_p;

image.png

image.png

6、用户B卸载package:

uninstall package Lab_class.pk_tunnel_read;

image.png

7、用户A删除package:

drop package pk_tunnel_read;

2.6 实验:项目空间保护

提示:本章节所需操作均需使用阿里云主账号或者具有项目admin权限的用户进行实验,实验环境需在各阿里云主账号对应的项目中进行。

1、用户A查看当前项目的鉴权模型,确认目前的ProjectProtection处于false状态:

show SecurityConfiguration;

2、增加用户B到当前项目Lab_class,并赋予表t_tunnel的读写权限:

add user [email protected];

grant all on table t_tunnel to user [email protected];

grant select on table dual to user [email protected];

3、用户B操作表t_tunnel:可以读取记录,或者插入数据

select * from Lab_class.t_tunnel;

insert into table Lab_class.t_tunnel select  '1' from Lab_class.dual;

image.png

image.png

4、用户B甚至可以把表中的数据搬到本地的项目中来:

create table iris as select * from Lab_class.t_tunnel;

image.png

5、用户A为了防止数据流出,打开项目保护选项:ProjectProtection:

set ProjectProtection=true;

6、用户B对t_tunnel的操作都被禁止,需要联系Lab_class的owner:

select * from Lab_class.t_tunnel;

insert into table Lab_class.t_tunnel select  '-2' from Lab_class.t_tunnel;

create table iris_again as select * from Lab_class.t_tunnel;

image.png

image.png

image.png

7、用户A为用户B设置例外:

set ProjectProtection=true with exception c:\pf_try;

其中,pf_try为一个授权策略文件(ANSI/ANSII格式),内容如下:

{

“Version”: “1”,

“Statement”:[{

"Effect":"Allow",

"Principal":"[email protected]",

"Action":["odps:Select"],

"Resource":["acs:odps:*:projects/Lab_class/tables/t_tunnel"],

"Condition":{

    "StringEquals": {

        "odps:TaskType":"SQL"

    } }

}]

}

8、用户B可以对表Lab_class.t_tunnel进行正常操作:

select * from Lab_class.t_tunnel;

create table iris_again as select * from Lab_class.t_tunnel;

image.png

image.png

9、用户A设置无例外项目保护:

set ProjectProtection=true;

第 3 章:实验总结

3.1 实验总结

通过本次实验,了解MaxCompute的用户授权、角色管理、鉴权模型、基于标签的安全控制、项目空间资源分享、项目空间保护等配置是如何实现,熟练掌握各种权限配置的方法,在后续的工作学习中,通过已学的配置方法,可较为方便的实现资源共享。

猜你喜欢

转载自blog.csdn.net/wyn_365/article/details/107283648