-
DLI 自定义策略样例 示例1:允许 授权用户拥有在所有区域中所有数据库的创建表权限。 {
"Version": "1.1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dli:database:createTable"
],
"Resource": [
"dli:*:*:database:*"
]
}
]
} 授权用户拥有在所在区域中数据库db中表tb中列col的查询权限。 {
"Version": "1.1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dli:column:select"
],
"Resource": [
"dli:xxx:*:column:databases.db.tables.tb.columns.col"
]
}
]
} 示例2:拒绝 拒绝策略需要同时配合其他策略使用,即用户需要先被授予部分操作权限策略后,才可以在权限内设置拒绝策略,否则用户无任何权限的情况下,拒绝策略无实际作用。 用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先。 授权用户不能创建数据库,删除数据库,提交作业(default队列除外),删除表。 {
"Version": "1.1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"dli:database:createDatabase",
"dli:database:dropDatabase",
"dli:queue:submitJob",
"dli:table:dropTable"
],
"Resource": [
"dli:*:*:database:*",
"dli:*:*:queue:*",
"dli:*:*:table:*"
]
}
]
} 授权用户不能在队列名为demo的队列上提交作业。 {
"Version": "1.1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"dli:queue:submitJob"
],
"Resource": [
"dli:*:*:queue:queues.demo"
]
}
]
} 示例3:标签鉴权,指定action绑定Condition,指定g:ResourceTag的key和value。 Condition g:ResourceTag使用表示带有标签key=value的资源,并且资源操作在策略action中包含的可以鉴权通过。 key不区分大小写,并且目前不支持value的模糊匹配。 {
"Version": "1.1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dli:database:dropDatabase",
"dli:table:select",
"dli:database:createTable",
"dli:table:dropTable"
],
"Condition": {
"StringEquals": {
"g:ResourceTag/key": [
"value"
]
}
}
}
]
}
-
策略字段介绍 以授权用户拥有在所有区域中所有数据库的创建表权限为例进行说明: {
"Version": "1.1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dli:database:createTable"
],
"Resource": [
"dli:*:*:database:*"
]
}
]
} Version 版本信息,1.1: 策略。
IAM 最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。 Effect 作用。包含两类:允许(Allow)和拒绝(Deny),既有Allow又有Deny的授权语句时,遵循Deny优先的原则。 Action 授权项,指对资源的具体操作权限,不超过100个,如图1所示。 图1 DLI授权项 格式为:服务名:资源类型:操作,例:dli:queue:submit_job。 服务名为产品名称,例如dli、evs和vpc等,服务名仅支持小写。资源类型和操作没有大小写,要求支持通配符号*,无需罗列全部授权项。 资源类型可以参考表4中的资源类型。 操作:操作以IAM服务中已经注册的action为准。 Condition 限制条件:使策略生效的特定条件,包括条件键和运算符。 条件键表示策略语句的 Condition 元素中的键值,分为全局级条件键和服务级条件键。 全局级条件键(前缀为g:)适用于所有操作。详细请参考策略语法中的条件键说明。 服务级条件键,仅适用于对应服务的操作。 运算符与条件键一起使用,构成完整的条件判断语句。具体内容请参考表1。 DLI通过IAM预置了一组条件键。下表显示了适用于DLI服务特定的条件键。 表1 DLI请求条件 DLI条件键 类型 运算符 描述 g:CurrentTime 全局级 Date and time 接收到鉴权请求的时间。 说明: 以“ISO 8601”格式表示,例如:2012-11-11T23:59:59Z。 g:MFAPresent 全局级 Boolean 用户登录时是否使用了多因素认证。 g:UserId 全局级 String 当前登录的用户ID。 g:UserName 全局级 String 当前登录的用户名。 g:ProjectName 全局级 String 当前登录的Project。 g:DomainName 全局级 String 当前登录的Domain。 g:ResourceTag 全局级 StringEquals 资源标签键值。 Resource 格式为:服务名:region:domainId:资源类型:资源路径, 通配符号*表示所有,资源类型和资源路径可以参考表4。 示例: "dli:*:*:queue:*": 表示所有的队列。
-
示例流程 图1 为IAM用户授权DataArts Insight资源权限 创建用户组并授权。 在IAM控制台创建用户组,并授予DataArts Insight服务普通用户权限“DataArts Insight ReadOnlyAccess”。 创建用户并加入用户组。 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限。 使用新创建的用户登录控制台,切换至授权区域,验证权限: 登录DataArts Insight管理控制台。如果在“数据集”页面可以查看数据集列表,但是无法创建数据集(假设当前权限仅包含DataArts Insight ReadOnlyAccess),表示“DataArts Insight ReadOnlyAccess”已生效。 在“服务列表”中选择除登录DataArts Insight外(假设当前策略仅包含DataArts Insight ReadOnlyAccess)的任一服务,如果提示权限不足,表示“DataArts Insight ReadOnlyAccess”已生效。
-
策略样例 示例1:授权用户拥有成本中心的所有权限。 {
"Version": "1.1",
"Statement": [
{
"Action": [
"BSS:*:*"
],
"Effect": "Allow"
}
]
} 示例2:授权用户拥有查看成本分析和导出分析结果的权限。 {
"Version": "1.1",
"Statement": [
{
"Action": [
"bss.costanalysis.view",
"bss.costanalysis.export",
],
"Effect": "Allow"
}
]
}
-
示例流程 图1 给用户授予Organizations权限流程 创建用户组并授权 在IAM控制台创建用户组,授予Organizations云服务只读权限“Organizations ReadOnlyAccess”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 使用新创建的用户登录控制台,能正常进入组织服务并可查看组织的相关信息,然后尝试添加组织单元报错,报错信息提示“权限不足,请联系管理员处理”,表示“Organizations ReadOnlyAccess”已生效,您只有组织的查看权限。
-
操作场景 访问控制列表(ACLs)是一种安全机制,用于控制用户或用户组对资源的访问权限。启用ACLs可以限制用户对应用程序历史记录的访问,确保敏感数据的安全性。 当Spark2x Web UI中有一些不允许其他用户看到的数据时,用户可能想对UI进行安全防护。用户一旦登录,Spark2x可以比较与这个用户相对应的视图ACLs来确认是否授权用户访问 UI。 Spark2x存在两种类型的Web UI,一种为运行中任务的Web UI,可以通过Yarn原生页面的应用链接或者REST接口访问。一种为已结束任务的Web UI,可以通过Spark2x JobHistory服务或者REST接口访问。 运行中任务Web UI ACL配置。 运行中的任务,可通过服务端对如下参数进行配置。 “spark.admin.acls”:指定Web UI的管理员列表。 “spark.admin.acls.groups”:指定管理员组列表。 “spark.ui.view.acls”:指定yarn界面的访问者列表。 “spark.modify.acls.groups”:指定yarn界面的访问者组列表。 “spark.modify.acls”:指定Web UI的修改者列表。 “spark.ui.view.acls.groups”:指定Web UI的修改者组列表。 运行结束后Web UI ACL配置。 运行结束的任务通过客户端的参数“spark.history.ui.acls.enable”控制是否开启ACL访问权限。 如果开启了ACL控制,由客户端的“spark.admin.acls”和“spark.admin.acls.groups”配置指定Web UI的管理员列表和管理员组列表,由客户端的“spark.ui.view.acls”和“spark.modify.acls.groups”配置指定查看Web UI任务明细的访问者列表和组列表,由客户端的“spark.modify.acls”和“spark.ui.view.acls.groups”配置指定修改Web UI任务明细的访问者列表和组列表。
-
操作场景 Hive是建立在Hadoop上的
数据仓库 框架,提供类似SQL的HQL操作结构化数据。
MRS 提供用户、用户组和角色,集群中的各类权限需要先授予角色,然后将用户或者用户组与角色绑定。用户只有绑定角色或者加入绑定角色的用户组,才能获得权限。更多Hive授权相关信息请参考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization。
-
Hive权限模型 使用Hive组件,必须对Hive数据库和表(含外表和视图)拥有相应的权限。在MRS中,完整的Hive权限模型由Hive元数据权限与HDFS文件权限组成。使用数据库或表时所需要的各种权限都是Hive权限模型中的一种。 Hive元数据权限。 与传统关系型数据库类似,MRS的Hive数据库包含“建表”和“查询”权限,Hive表和列包含“查询”、“插入”和“删除”权限。Hive中还包含拥有者权限“OWNERSHIP”和“Hive管理员权限”。 Hive数据文件权限,即HDFS文件权限。 Hive的数据库、表对应的文件保存在HDFS中。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。系统自动以数据库名称和数据库中表的名称创建子目录。访问数据库或者表,需要在HDFS中拥有对应文件的权限,包含“读”、“写”和“执行”权限。 用户对Hive数据库或表执行不同操作时,需要关联不同的元数据权限与HDFS文件权限。例如,对Hive数据表执行查询操作,需要关联元数据权限“查询”,以及HDFS文件权限“读”和“写”。 使用Manager界面图形化的角色管理功能来管理Hive数据库和表的权限,只需要设置元数据权限,系统会自动关联HDFS文件权限,减少界面操作,提高效率。
-
权限原则与约束 HetuEngine访问同集群数据源。 HetuEngine启用Ranger鉴权,则统一使用Ranger的PBAC权限策略做鉴权。 HetuEngine停用Ranger鉴权,则统一使用MetaStore的RBAC权限策略做鉴权。 HetuEngine访问跨集群数据源。 同时受HetuEngine端权限和数据源端权限管控(Hive场景下,依赖于HDFS)。 查询视图时,仅需给目标视图授予select权限即可;使用视图联表查询时,需要同时给两者授予select权限。 不支持
GaussDB 和HetuEngine数据源列脱敏。 HetuEngine服务在切换权限控制类型时,需要重启整个HetuEngine服务,包括HSConsole页面上正在运行的HetuEngine计算实例。
-
查看策略内容 在左侧导航栏选择“用户组”,单击需授权的用户组“操作”列下的“授权”。 给用户组选择策略时,单击策略前面的,可以查看策略的详细内容,以系统策略“IAM ReadOnlyAccess”为例。 图1 IAM ReadOnlyAccess策略内容 {
"Version": "1.1",
"Statement": [
{
"Action": [
"iam:*:get*",
"iam:*:list*",
"iam:*:check*"
],
"Effect": "Allow"
}
]
}
-
响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 domain_name String 域控服务器的
域名 ,在创建域服务器时指定 system_name String 存储系统在AD域中的名称 dns_server Array of strings DNS服务器IP地址,用于解析AD域的域名 organization_unit String 域中包含的一类目录对象如用户、计算机、打印机等资源的总称,加入后将作为其中的一员。若不填,则默认加入到computers组织单元。 vpc_id String vpc的id status String AD域当前状态信息 枚举值: JOINING AVAILABLE EXITING FAILED 状态码:500 表4 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表5 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述
-
响应示例 状态码:200 查询成功 查询LDAP的配置的响应示例。 {
"url" : "ldap://192.168.xx.xx:60000",
"base_dn" : "dc=example,dc=com",
"user_dn" : "cn=admin,dc=example,dc=com",
"vpc_id" : "15e1a488-0ee5-4742-8fb7-168100000000",
"backup_url" : "ldap://192.168.xx.xx:60000",
"schema" : "RFC2307",
"search_timeout" : 20
} 状态码:500 错误响应 {
"errCode" : "SFS.TURBO.0005",
"errMsg" : "Internal server error"
}
-
响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 url String LDAP服务器的url base_dn String 数据库中的域 user_dn String 用户区别名 filter_condition String 过滤条件。保留字段,暂不支持 vpc_id String 一般不涉及。仅在SFS Turbo支持多VPC的场景下,需要指定LDAP服务器可连通的VPC的id。 backup_url String LDAP备节点的url schema String LDAP的schema,不填写则默认为RFC2307 search_timeout Integer LDAP搜索的超时时间,单位为秒。不填写则默认为3秒 状态码:500 表4 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表5 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述
-
请求示例 {
"url" : "ldap://192.168.xx.xx:60000",
"base_dn" : "dc=example,dc=com",
"user_dn" : "cn=admin,dc=example,dc=com",
"password" : "pwdxxxxxx",
"vpc_id" : "26f6b565-xxxx-XXXX-xxxx-03f0bd975433",
"backup_url" : "ldap://192.168.xx.xx:60000",
"schema" : "RFC2307",
"search_timeout" : 10
}
-
响应参数 状态码:200 表4 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表5 响应Body参数 参数 参数类型 描述 jobId String LDAP异步任务的id。可通过查询job的状态详情接口查询job的执行状态。 状态码:400 表6 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表7 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述 状态码:500 表8 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表9 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述