2.4.2 角色管理
角色管理,其实就是直接对运行期的角色进行创建、修改、删除等操作。在图2-30所示菜单中,创建角色和创建用户非常类似,在Role文件夹上右击,在弹出的快捷菜单中选择“New Role”命令,就可以打开创建角色(Role)向导界面。
图2-30 创建新角色
HANA角色到底包含着什么东西呢?
其实角色就是一组进行系统操作(例如,是否能够进行备份、恢复、重启等操作)和在系统中对对象进行访问控制(是否能读、写、删除那些数据库表中的数据)的权限集合。访问权限可以相互组合,从而形成不同的角色,不同的角色代表不同的职能,每个职能都用于完成一组相关的系统操作。
在图2-31所示界面中,可以看到系统有很多不同名称的角色,有的角色是系统自带的(例如,CONTENT_ADMIN、MODELING、PUBLIC),用户也可以根据业务需要创建新的角色。
图2-31 SAP HANA系统中的角色
这里用MODELING这个系统自带的角色举例说明。在图2-32所示界面中,在角色列表中双击MODELING这个角色,在右边的HANA工作台中会显示出该角色的详细信息。可以看到每个角色都由7个选项卡组成。
图2-32 角色的组成
接下来,就对7个选项卡中的内容进行简要介绍。
1. Granted Roles(包含的角色)
如果当前角色的Granted Roles选项卡中包含了一些其他的角色,则表示当前这个角色将自动从这些角色中继承其所有的权限。
举例来说:现在新创建的一个角色名为HANA_TEST,并且在其Granted Role中添加了CONTENT_ADMIN这个系统自带的角色,这意味着HANA_TEST角色拥有了CONTENT_ADMIN所拥有的全部权限。
2. Part of Roles(被其他角色继承)
这部分信息是无法修改的,只显示当前这个角色是否被其他角色继承了。如果删除当前这个角色,那么引用当前这个角色的其他角色也将失去从当前角色继承的所有权限。
举例来说:在显示CONTENT_ADMIN角色的信息时,切换到Part of Roles选项卡中,将显示HANA_TEST角色的名称,因为HANA_TEST角色中继承CONENT_ADMIN角色,以及其他的一些权限。
3. System Privileges(系统权限)
系统权限是SAP HANA系统默认自带的权限对象。为了简化用户对于权限的分配操作,SAP HANA根据不同的系统操作默认定义了一些系统权限对象,在使用时只需要从列表中选择好,然后加入当前角色就可以了。默认提供的系统权限对象如图2-33所示。
图2-33 系统自带权限对象
为了让读者对系统权限有一个较为清楚的认识,表2-5中列出了一些常用的系统权限所使用的场景和具体功能。
表2-5 系统默认的系统权限对象列表
4. 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所示。
图2-34 对象权限
但是,如果用户选中REORGANIZE_SHARED_MEMORY存储过程,则会发现该SQL对象只有4个可授权的操作,即ALTER、DROP、EXECUTE、DEBUG。
如何添加SQL对象的操作权限呢?
单击 按钮,然后输入关键字或者模糊查询,进行查找,找到所要的对象之后,将其选中并添加到SQL Object列表中,然后单击这个SQL对象,在右边的权限面板中就可以进行设定对该对象的哪些权限进行授权。
5. Analytic Privileges(分析权限)
首先,这里的分析权限指的是基于SAP HANA中的视图(属性视图、分析视图、计算视图)创建的分析权限对象。在这些分析权限对象中,用户可以设定对某个视图的访问限制条件。
在定义一个角色时,将某个分析权限加进来,即表示该角色需要执行所有该分析权限中所设定的访问限制条件等。
6. Package Privileges(开发包权限)
顾名思义,开发包权限就是对某个开发包(Package)的访问权限,这些访问权限包含对开发包资源的浏览、编辑修改、重新激活、引用等。切换到“Package Privileges”选项卡,可以看到图2-35所示的界面。
图2-35 Package权限
在“Package Name”列表中单击“ ”按钮,可以将需要访问的开发包添加到该列表中,然后单击这个开发包,在右侧权限面板中就会出现对该开发包进行授权的操作界面。
一旦完成授权操作,这些授权的操作对该开发包下的子开发包同样生效(开发包下面可以有若干层级的子开发包,并且可以设定多个层级)。表2-6对开发包上可以进行授权的操作进行了简要的说明。
表2-6 开发包权限对象及其说明
7. Application Privileges(应用权限)
这里的应用指的是基于SAP HANA开发的原生应用程序(即XS应用,第5章会详细介绍)。在XS应用被激活时,会在系统中创建一些应用权限对象,在这些应用权限对象中有对XS应用进行访问的权限设定,如图2-36所示。
图2-36 XS应用中定义的权限定义
在图2-36所示代码中,XS应用程序中定义了两个权限对象,即Basic和Admin。在XS应用被激活后,系统中就会自动生成两个应用权限。
在XS应用中可以使用应用权限来控制用户对XS应用的访问,如果某个用户需要访问这个XS应用,那么就需要将这个应用权限对象赋予这个用户,或者直接按照用户分类创建不同的角色,在角色中把应用权限放进来,然后再将角色赋予用户。这样,该用户就可以访问这个XS应用了。