《SAP HANA平台应用开发》—第2章2.4节用户、角色和授权管理-阿里云开发者社区

开发者社区> 华章出版社> 正文

《SAP HANA平台应用开发》—第2章2.4节用户、角色和授权管理

简介:

本节书摘来自华章出版社《SAP HANA平台应用开发》一书中的第2章,第2.4节用户、角色和授权管理,作者刘刚,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.4 用户、角色和授权管理
在2.2.节及之前的一些操作演示中,使用的都是SYSTEM这个SAP HANA默认的系统管理员账户。通常,SYSTEM用户只在做系统管理时使用,日常的应用层面的数据库技术支持还是建议使用单独的新用户来执行。在SAP HANA系统中,通常有以下5类用户:
系统用户:对整个HANA系统进行系统级别的配置和管理的用户。例如,SYSTEM用户就是其中之一。数据复制和备份恢复也建议创建单独的用户。
开发和应用支持用户:在HANA中创建数据库表,加载数据,创建信息模型、存储过程、XS应用程序,对开发的内容进行打包、导入/导出。应用支持用户通常是在系统上线运行之后被创建的,其被赋予一定预定义的角色,或者直接使用提供的默认角色和权限。
应用用户:在新开发的XS应用用户层面创建出来的HANA用户。其通常被赋予一些基本的应用角色,但不会赋予某个Schema操作角色,而且这些角色也不会使用SAP HANA工作台来登录系统。
监控用户:对HANA系统进行审计、日志和安全监控的用户,该用户对系统各项指标进行监控。
技术和通信用户:这类用户主要是供后台自动登录后运行使用,或者供其他外部系统访问SAP HANA时使用。例如,HANA系统中的_SYS、_SYS_REPO和_SYS_AFL等用户,这些是用于实现系统内部通信和系统管理功能而设定的。
2.4.1 用户管理
除了前面介绍的SYSTEM用户之外,HANA系统中还有很多默认的系统用户,这些系统用户在SAP HANA系统安装完成以后就存在,如表2-4所示。


35c2ab3bd263772ef321a4dfc506d44019a3ea9c

使用SYSTEM账户登录SAP HANA系统之后,这个用户有权限去创建新的用户,如图2-24所示。
首先,展开Security文件夹,然后在User文件夹上右击,在弹出的快捷菜单中选择“New User”命令,就可以新创建一个新用户。
同样的道理,可以选定已有用户,选择“Delete”命令即可删除该用户;选择“Open”命令,可以编辑该用户的一些信息(如修改密码、修改权限、激活/不激活用户等操作)。

01a5ff15f00363ec76569ff34f18706b3bc02a94

图2-25所示为创建新用户的界面,在这个界面上用户可以为新用户设定用户名、密码、所采用的登录方式,以及所拥有的权限和角色等属性。

5c23b46a70320714041beaee9a96caa7ea492562

在创建新用户时,可以直接为这个用户赋予各种权限对象,也可以创建一个对应的新角色,将权限对象赋予该角色,然后将该角色加入用户所拥有的角色中。此时用户、角色和权限对象的关系如图2-26所示。
在新创建一个用户之后,如何用新用户登录到SAP HANA系统呢?
打开SAP HANA工作台,然后在已有的SAP HANA系统上右击,在弹出的快捷菜单中选择“Add Additional User...”命令,如图2-27所示(如果是第一次使用SAP HANA工作台,请参考2.2.2节)。

8f6044bb58d88bbfa8d92486e2b63291a9d8d052

接着,在弹出来的对话框中,选择“Authentication by database user”单选按钮,然后输入新创建的用户名和密码,单击“Finish”按钮完成该过程,如图2-28所示。

5bfeab62c11b76f765a5d2ae99e2ad326702fe19

如图2-29所示,SAP HANA工作台会将刚才创建的SAP HANA系统连接并添加到用户导航区,并且在SAP HANA系统旁边显示登录的用户名。
同一个系统有两个登录用户,若用户对TR3(HANA_TPCH)连接下的任何对象进行操作,则表示用户当前是以“HANA_TPCH”用户在进行操作。
在图2-29所示界面中,展开HANA_TPCH用户连接的SAP HANA系统的Catalog文件夹,除了发现该用户自己拥有的HANA_TPCH这个Schema对象之外,还能看见DEMO这个Schema对象(SYS、_SYS_BI、_SYS_BIC等系统对象对所有用户都可见),其他的Schema对象均看不见,这其实和授权相关,接下来的章节将介绍和权限相关的内容。

5179f6aebd88c39d411eb27627741104b91cdba2

2.4.2 角色管理
角色管理,其实就是直接对运行期的角色进行创建、修改、删除等操作。在图2-30所示菜单中,创建角色和创建用户非常类似,在Role文件夹上右击,在弹出的快捷菜单中选择“New Role”命令,就可以打开创建角色(Role)向导界面。

8f4d49162ab1001dc14bb34c8276679b208dd5d6

HANA角色到底包含着什么东西呢?
其实角色就是一组进行系统操作(例如,是否能够进行备份、恢复、重启等操作)和在系统中对对象进行访问控制(是否能读、写、删除那些数据库表中的数据)的权限集合。访问权限可以相互组合,从而形成不同的角色,不同的角色代表不同的职能,每个职能都用于完成一组相关的系统操作。
在图2-31所示界面中,可以看到系统有很多不同名称的角色,有的角色是系统自带的(例如,CONTENT_ADMIN、MODELING、PUBLIC),用户也可以根据业务需要创建新的角色。
这里用MODELING这个系统自带的角色举例说明。在图2-32所示界面中,在角色列表中双击MODELING这个角色,在右边的HANA工作台中会显示出该角色的详细信息。可以看到每个角色都由7个选项卡组成。

79deffc1fd1e4140da08bee0f25f0cf8067e4e68

接下来,就对7个选项卡中的内容进行简要介绍。
  1. Granted Roles(包含的角色)
    如果当前角色的Granted Roles选项卡中包含了一些其他的角色,则表示当前这个角色将自动从这些角色中继承其所有的权限。

举例来说:现在新创建的一个角色名为HANA_TEST,并且在其Granted Role中添加了CONTENT_ADMIN这个系统自带的角色,这意味着HANA_TEST角色拥有了CONTENT_ADMIN所拥有的全部权限。

  1. Part of Roles(被其他角色继承)
    这部分信息是无法修改的,只显示当前这个角色是否被其他角色继承了。如果删除当前这个角色,那么引用当前这个角色的其他角色也将失去从当前角色继承的所有权限。

举例来说:在显示CONTENT_ADMIN角色的信息时,切换到Part of Roles选项卡中,将显示HANA_TEST角色的名称,因为HANA_TEST角色中继承CONENT_ADMIN角色,以及其他的一些权限。

  1. System Privileges(系统权限)
    系统权限是SAP HANA系统默认自带的权限对象。为了简化用户对于权限的分配操作,SAP HANA根据不同的系统操作默认定义了一些系统权限对象,在使用时只需要从列表中选择好,然后加入当前角色就可以了。默认提供的系统权限对象如图2-33所示。


99518a98003254004e07e211388c844987c29766

为了让读者对系统权限有一个较为清楚的认识,表2-5中列出了一些常用的系统权限所使用的场景和具体功能。

dfc881aaed63c58acd599e59cab7f00d01b96cb2


fa29301ae038c4ae1f06435e50476449ea57b64c
  1. Object Privileges(对象权限)
    这里所说的对象全都是SQL Object(SQL对象),这些SQL对象包括Schema、数据库表、视图、模型视图、存储过程、Sequence等。

所谓对象权限,指的是拥有对这些对象进行操作的权限(每一种权限都代表一种具体的操作),并且不同的SQL对象上所能执行的操作是不相同的。
举例来说,对于DEMO这个Schema类型的SQL对象,用户可以授予的权限有CREATE ANY、ALTER、DROP、EXECUTE、SELECT、INSERT、UPDATE、DELETE、TRIGGER、DEBUG、INDEX、REFERENCE等,如图2-34所示。
但是,如果用户选中REORGANIZE_SHARED_MEMORY存储过程,则会发现该SQL对象只有4个可授权的操作,即ALTER、DROP、EXECUTE、DEBUG。


bd7a4c70e545fd59c2f897c66205d14093bf9c6f

如何添加SQL对象的操作权限呢?
单击按钮,然后输入关键字或者模糊查询,进行查找,找到所要的对象之后,将其选中并添加到SQL Object列表中,然后单击这个SQL对象,在右边的权限面板中就可以进行设定对该对象的哪些权限进行授权。
  1. Analytic Privileges(分析权限)
    首先,这里的分析权限指的是基于SAP HANA中的视图(属性视图、分析视图、计算视图)创建的分析权限对象。在这些分析权限对象中,用户可以设定对某个视图的访问限制条件。

在定义一个角色时,将某个分析权限加进来,即表示该角色需要执行所有该分析权限中所设定的访问限制条件等。

  1. Package Privileges(开发包权限)
    顾名思义,开发包权限就是对某个开发包(Package)的访问权限,这些访问权限包含对开发包资源的浏览、编辑修改、重新激活、引用等。切换到“Package Privileges”选项卡,可以看到图2-35所示的界面。

在“Package Name”列表中单击“”按钮,可以将需要访问的开发包添加到该列表中,然后单击这个开发包,在右侧权限面板中就会出现对该开发包进行授权的操作界面。
一旦完成授权操作,这些授权的操作对该开发包下的子开发包同样生效(开发包下面可以有若干层级的子开发包,并且可以设定多个层级)。表2-6对开发包上可以进行授权的操作进行了简要的说明。


a1919d6fbc87d60897d8e39ee77c2839d180ca08


74b1020b5036ebde52369cfb50e17422b5dfe7d1
  1. Application Privileges(应用权限)
    这里的应用指的是基于SAP HANA开发的原生应用程序(即XS应用,第5章会详细介绍)。在XS应用被激活时,会在系统中创建一些应用权限对象,在这些应用权限对象中有对XS应用进行访问的权限设定,如图2-36所示。


6950dc367c93e6944fe0b3bdc6e91c4ff2a1bb32

在图2-36所示代码中,XS应用程序中定义了两个权限对象,即Basic和Admin。在XS应用被激活后,系统中就会自动生成两个应用权限。
在XS应用中可以使用应用权限来控制用户对XS应用的访问,如果某个用户需要访问这个XS应用,那么就需要将这个应用权限对象赋予这个用户,或者直接按照用户分类创建不同的角色,在角色中把应用权限放进来,然后再将角色赋予用户。这样,该用户就可以访问这个XS应用了。
2.4.3 关于授权
接着2.4.1节的例子,在使用HANA_TPCH用户连接SAP HANA系统之后,在这个用户的Schema列表中还能看到DEMO这个Schema对象,这是因为HANA_TPCH用户拥有对DEMO对象的操作权限。打开HANA_TPCH用户的信息,如图2-37所示。
切换到“Objective Privileges”选项卡,在SQL Object列表中能看到该用户拥有对DEMO对象进行SELECT操作的权限。同样,切换到其他权限选项卡,可以添加不同的权限对象,然后进行一一授权。通过图2-38所示的说明,可以大致了解SAP HANA是如何进行用户访问授权的。

af85fbb807bedefcc3afafc7db0d74af3c97ff7e

除此之外,用户也可以使用SQL 命令行的方式来进行授权。使用SQL命令行进行授权管理的相关语法如下。
语法:
ALTER USER <需要修改权限的用户名> <修改选项>
例子:
ALTER USER hana_tpch PASSWORD Sap12345
语法:
GRANT <系统权限> TO <用户名or角色名>
例子:
GRANT BACKUP ADMIN TO hana_tpch
语法:
GRANT ON SCHEMA TO <用户名or角色名>
例子:
GRANT TRIGGER DELETE DROP SELECT ON SCHEMA DEMO TO hana_tpch
语法:
GRANT <对象权限> ON <对象名称> TO <用户名or角色名>
例子:
GRANT ALL PRIVILEGES ON DEMO.TABLE_1 TO hana_tpch
语法:
GRANT TO <用户名or角色名>
下面介绍一个用SQL命令对用户访问控制进行授权的例子。创建一个用户,名为tester,然后修改其默认密码为Sap12345。接着创建一个新角色,将DEMO这个Schema对象的SELECT权限赋予该角色,并且将DEMO中的数据库表sales的INSERT、UPDATE、SELECT等权限也赋予该角色,最后将这个角色赋予用户tester。
CREATE USER tester PASSWORD initial1;
ALTER USER tester PASSWORD Sap12345;
CREATE ROLE role_for_modeling;
GRANT SELECT ON SCHEMA demo TO role_for_modeling;
GRANT SELECT INSERT UPDATE ON demo.sales TO role_for_modeling;
GRANT role_for_modeling TO tester;

**提示信息:
上面的SQL示例代码及语法只是权限访问控制中经常使用的一部分内容,更多关于访问权限相关的SQL命令请参考:SAP HANA SQL Reference文档→SQL Statement章节→Access Control Statement。
因为在SAP HANA工作台中,用户要通过向导操作来管理所有的授权操作,只需要掌握如何赋予权限,以及该权限的意义即可,并不需要用户掌握所有使用SQL来进行授权管理的命令语法。**

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接