云服务器内容精选

  • 示例流程 图1 给用户授权SCM权限流程 创建用户组并授权 在IAM控制台创建用户组,并授予SSL证书管理服务的管理员权限“SCM Administrator”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择云证书管理服务,如果未提示权限不足,表示“SCM Administrator”已生效。
  • 示例流程 图1 给用户授权PCA权限流程 创建用户组并授权 在IAM控制台创建用户组,并授予私有证书管理服务管理员权限“PCA FullAccess”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择云证书管理服务,如果未提示权限不足,表示“PCA FullAccess”已生效。
  • 支持的授权项 策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下: 权限:自定义策略中授权项定义的内容即为权限。 对应API接口:自定义策略实际调用的API接口。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 IAM项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。管理员可以在授权项列表中查看授权项是否支持IAM项目或企业项目,“√”表示支持,“×”表示暂不支持。关于IAM项目与企业项目的区别,请参考IAM与企业管理的区别。 ServiceStage的支持自定义策略授权项,请参考表1。 表1 ServiceStage授权项明细 权限 对应API接口 授权项 IAM项目 企业项目 创建应用 POST /v3/{project_id}/cas/applications servicestage:app:create √ √ 删除应用 DELETE /v3/{project_id}/cas/applications/{application_id} servicestage:app:delete √ √ 更新应用 PUT /v3/{project_id}/cas/applications/{application_id} servicestage:app:modify √ √ 查看应用列表 GET /v3/{project_id}/cas/applications servicestage:app:list √ √ 查询应用信息 GET /v3/{project_id}/cas/applications/{application_id} servicestage:app:get √ √ 修改工程 - servicestage:project:modify √ √ 创建工程 - servicestage:project:create √ √ 审批应用 - servicestage:app:approve √ √ 查看流水线列表 - servicestage:pipeline:list √ √ 修改构建 - servicestage:assembling:modify √ √ 审批流水线 - servicestage:pipeline:review √ √ 执行流水线 - servicestage:pipeline:execute √ √ 查看构建信息 - servicestage:project:get √ √ 删除构建 - servicestage:assembling:delete √ √ 删除流水线 - servicestage:pipeline:delete √ √ 删除工程 - servicestage:project:delete √ √ 修改流水线 - servicestage:pipeline:modify √ √ 创建构建 - servicestage:assembling:create √ √ 查看构建列表 - servicestage:assembling:list √ √ 查看构建信息 - servicestage:assembling:get √ √ 查看工程列表 - servicestage:project:list √ √ 查看流水线信息 - servicestage:pipeline:get √ √ 创建流水线 - servicestage:pipeline:create √ √
  • 相关概念 表1 使用Hive表、列或数据库场景权限一览 操作场景 用户需要的权限 DESCRIBE TABLE 查询(Select) SHOW PARTITIONS 查询(Select) ANALYZE TABLE 查询(Select)、插入(Insert) SHOW COLUMNS 查询(Select) SHOW TABLE STATUS 查询(Select) SHOW TABLE PROPERTIES 查询(Select) SELECT 查询(Select) EXPLAIN 查询(Select) CREATE VIEW 查询(Select)、Select授权(Grant Of Select)、建表(Create) SHOW CREATE TABLE 查询(Select)、Select授权(Grant Of Select) CREATE TABLE 建表(Create) ALTER TABLE ADD PARTITION 插入(Insert) INSERT 插入(Insert) INSERT OVERWRITE 插入(Insert)、删除(Delete) LOAD 插入(Insert)、删除(Delete) ALTER TABLE DROP PARTITION 删除(Delete) CREATE FUNCTION Hive管理员权限(Hive Admin Privilege) DROP FUNCTION Hive管理员权限(Hive Admin Privilege) ALTER DATABASE Hive管理员权限(Hive Admin Privilege)
  • 操作场景 使用Hive表或者数据库时,如果用户访问别人创建的表或数据库,需要授予对应的权限。为了实现更严格权限控制,Hive也支持列级别的权限控制。如果要访问别人创建的表上某些列,需要授予列权限。以下介绍使用Manager角色管理功能在表授权、列授权和数据库授权三个场景下的操作。 安全模式支持配置Hive表、列或数据库的权限,普通模式不支持配置Hive表、列或数据库的权限。 如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Hive的Ranger访问权限策略。
  • 前提条件 获取一个拥有管理员权限的用户,例如“admin”。 请参考创建Hive角色,在Manager界面创建一个角色,例如“hrole”,不需要设置Hive权限,设置提交Hql命令到Yarn执行的权限。 在Manager界面创建两个使用Hive的“人机”用户并加入“hive”组,例如“huser1”和“huser2”。“huser2”需绑定“hrole”。使用“huser1”创建一个数据库“hdb”,并在此数据库中创建表“htable”。
  • 安全认证 Flink整个系统存在三种认证方式: 使用kerberos认证:Flink yarn client与Yarn Resource Manager、JobManager与Zookeeper、JobManager与HDFS、TaskManager与HDFS、Kafka与TaskManager、TaskManager和Zookeeper。 使用security cookie进行认证:Flink yarn client与Job Manager、JobManager与TaskManager、TaskManager与TaskManager。 使用YARN内部的认证机制:Yarn Resource Manager与Application Master(简称AM)。 Flink的JobManager与YARN的AM是在同一个进程下。 如果用户集群开启Kerberos认证需要使用kerberos认证。 表1 安全认证方式 安全认证方式 说明 配置方法 Kerberos认证 当前只支持keytab认证方式。 从FusionInsight Manager下载用户keytab,并将keytab放到Flink客户端所在主机的某个文件夹下。 在“flink-conf.yaml”上配置: keytab路径。 security.kerberos.login.keytab: /home/flinkuser/keytab/abc222.keytab 说明: “/home/flinkuser/keytab/abc222.keytab”表示的是用户目录。 principal名。 security.kerberos.login.principal: abc222 对于HA模式,如果配置了ZooKeeper,还需要设置ZK kerberos认证相关的配置。配置如下: zookeeper.sasl.disable: false security.kerberos.login.contexts: Client 如果用户对于Kafka client和Kafka broker之间也需要做kerberos认证,配置如下: security.kerberos.login.contexts: Client,KafkaClient Security Cookie 认证 - 在Flink客户端的“bin”目录下,调用“generate_keystore.sh”脚本,生成“Security Cookie”、“flink.keystore”文件和“flink.truststore”文件。 执行sh generate_keystore.sh,输入用户自定义密码。密码不允许包含#。 说明: 执行脚本后,在Flink客户端的“conf”目录下生成“flink.keystore”和“flink.truststore”文件,并且在客户端配置文件“flink-conf.yaml”中将以下配置项进行了默认赋值。 将配置项“security.ssl.keystore”设置为“flink.keystore”文件所在绝对路径。 将配置项“security.ssl.truststore”设置为“flink.truststore”文件所在的绝对路径。 将配置项“security.cookie”设置为“generate_keystore.sh”脚本自动生成的一串随机规则密码。 默认“flink-conf.yaml”中“security.ssl.encrypt.enabled: false”,“generate_keystore.sh”脚本将配置项“security.ssl.key-password”、“security.ssl.keystore-password”和“security.ssl.truststore-password”的值设置为调用“generate_keystore.sh”脚本时输入的密码。 如果需要使用密文时,设置“flink-conf.yaml”中“security.ssl.encrypt.enabled: true”,“generate_keystore.sh”脚本不会配置“security.ssl.key-password”、“security.ssl.keystore-password”和“security.ssl.truststore-password”的值,需要使用Manager明文加密API进行获取,执行curl -k -i -u user name:password -X POST -HContent-type:application/json -d '{"plainText":"password"}' 'https://x.x.x.x:28443/web/api/v2/tools/encrypt' 其中user name:password分别为当前系统登录用户名和密码;"plainText"的password为调用“generate_keystore.sh”脚本时的密码;x.x.x.x为集群Manager的浮动IP。命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。 查看是否打开“Security Cookie”开关,即查看配置“flink-conf.yaml”文件中的“security.enable: true”,查看“security cookie”是否已配置成功,例如: security.cookie: ae70acc9-9795-4c48-ad35-8b5adc8071744f605d1d-2726-432e-88ae-dd39bfec40a9 说明: 使用MRS客户端预制“generate_keystore.sh”脚本获取SSL证书有效期为5年。 如果要关闭默认的SSL认证方式,需在“flink-conf.yaml”文件中配置“security.ssl.enabled”的值为“false”,并且注释如下参数:security.ssl.key-password、security.ssl.keystore-password、security.ssl.keystore、security.ssl.truststore-password、security.ssl.trustore。 YARN内部认证方式 该方式是YARN内部的认证方式,不需要用户配置。 - 当前一个Flink集群只支持一个用户,一个用户可以创建多个Flink集群。
  • 配置HDFS文件和目录的权限 HDFS支持用户进行文件和目录默认权限的修改。HDFS默认用户创建文件和目录的权限的掩码为“022”,如果默认权限满足不了用户的需求,可以通过配置项进行默认权限的修改。 参数入口: 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面,在搜索框中输入参数名称。 表1 参数说明 参数 描述 默认值 fs.permissions.umask-mode 当客户端在HDFS上创建文件和目录时使用此umask值(用户掩码)。类似于linux上的文件权限掩码。 可以使用八进制数字也可以使用符号,例如:“022” (八进制,等同于以符号表示的u=rwx,g=r-x,o=r-x),或者“u=rwx,g=rwx,o=”(符号法,等同于八进制的“007”)。 说明: 8进制的掩码,和实际权限设置值正好相反,建议使用符号表示法,描述更清晰。 022
  • SparkSQL权限 类似于Hive,SparkSQL也是建立在Hadoop上的数据仓库框架,提供类似SQL的结构化数据。 MRS提供用户、用户组和角色,集群中的各类权限需要先授予角色,然后将用户或者用户组与角色绑定。用户只有绑定角色或者加入绑定角色的用户组,才能获得权限。 如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Spark2x的Ranger访问权限策略。 Spark2x开启或关闭Ranger鉴权后,需要重启Spark2x服务,并重新下载客户端,或刷新客户端配置文件spark/conf/spark-defaults.conf: 开启Ranger鉴权:spark.ranger.plugin.authorization.enable=true 关闭Ranger鉴权:spark.ranger.plugin.authorization.enable=false
  • SparkSQL使用场景及对应权限 用户通过SparkSQL服务创建数据库需要加入Hive组,不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限,可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。 如果用户访问别人创建的表或数据库,需要授予权限。所以根据SparkSQL使用场景的不同,用户需要的权限可能也不相同。 表1 SparkSQL使用场景 主要场景 用户需要的权限 使用SparkSQL表、列或数据库 使用其他用户创建的表、列或数据库,不同的场景需要不同的权限,例如: 创建表,需要“创建”。 查询数据,需要“查询”。 插入数据,需要“插入”。 关联使用其他组件 部分场景除了SparkSQL权限,还可能需要组件的权限,例如: 使用Spark on HBase,在SparkSQL中查询HBase表数据,需要设置HBase权限。 在一些特殊SparkSQL使用场景下,需要单独设置其他权限。 表2 SparkSQL授权注意事项 场景 用户需要的权限 创建SparkSQL数据库、表、外表,或者为已经创建的表或外表添加分区,且Hive用户指定数据文件保存在“/user/hive/warehouse”以外的HDFS目录。 需要此目录已经存在,客户端用户是目录的属主,且用户对目录拥有“读”、“写”和“执行”权限。同时用户对此目录上层的每一级目录都拥有“读”和“执行”权限。 在Spark2x中,在创建HBase的外表时,需要拥有Hive端database的“创建”权限。而在Spark 1.5中,在创建HBase的外表时,需要拥有Hive端database的“创建”权限,也需要拥有HBase端Namespace的“创建”权限。 用户使用load将指定目录下所有文件或者指定文件,导入数据到表中。 数据源为Linux本地磁盘,指定目录时需要此目录已经存在,系统用户“omm”对此目录以及此目录上层的每一级目录拥有“r”和“x”的权限。指定文件时需要此文件已经存在,“omm”对此文件拥有“r”的权限,同时对此文件上层的每一级目录拥有“r”和“x”的权限。 数据源为HDFS,指定目录时需要此目录已经存在,SparkSQL用户是目录属主,且用户对此目录及其子目录拥有“读”、“写”和“执行”权限,并且其上层的每一级目录拥有“读”和“执行”权限。指定文件时需要此文件已经存在,SparkSQL用户是文件属主,且用户对文件拥有“读”、“写”和“执行”权限,同时对此文件上层的每一级目录拥有“读”和“执行”权限。 创建函数、删除函数或者修改任意数据库。 需要授予“管理”权限。 操作Hive中所有的数据库和表。 需加入到supergroup用户组,并且授予“管理”权限。 对部分datasource表赋予insert权限后,执行insert|analyze操作前需要单独对hdfs上的表目录赋予写权限。 当前对spark datasource表赋予Insert权限时,如果表格式为:text|csv|json|parquet|orc,则不会修改表目录的权限。因此,对以上几种类型的datasource表赋予Insert权限后,还需要单独对hdfs上的表目录赋予写权限,用户才能成功对表执行insert|analyze操作。
  • SparkSQL权限模型 用户使用SparkSQL服务进行SQL操作,必须对SparkSQL数据库和表(含外表和视图)拥有相应的权限。完整的SparkSQL权限模型由元数据权限与HDFS文件权限组成。使用数据库或表时所需要的各种权限都是SparkSQL权限模型中的一种。 元数据权限 元数据权限即在元数据层上进行权限控制,与传统关系型数据库类似,SparkSQL数据库包含“创建”和“查询”权限,表和列包含“查询”、“插入”、“UPDATE”和“删除”权限。SparkSQL中还包含拥有者权限“OWNERSHIP”和Spark管理员权限“管理”。 数据文件权限,即HDFS文件权限 SparkSQL的数据库、表对应的文件保存在HDFS中。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。系统自动以数据库名称和数据库中表的名称创建子目录。访问数据库或者表,需要在HDFS中拥有对应文件的权限,包含“读”、“写”和“执行”权限。 用户对SparkSQL数据库或表执行不同操作时,需要关联不同的元数据权限与HDFS文件权限。例如,对SparkSQL数据表执行查询操作,需要关联元数据权限“查询”,以及HDFS文件权限“读”和“执行”。 使用Manager界面图形化的角色管理功能来管理SparkSQL数据库和表的权限,只需要设置元数据权限,系统会自动关联HDFS文件权限,减少界面操作,提高效率。
  • 操作场景 开启级联授权功能的集群极大地提升了鉴权易用性,用户只需在Ranger页面上对业务表进行一次授权,系统就会自动细粒度关联数据存储源的权限,不需要感知表的存储路径,无需进行二次授权。同时也补齐了基于存算分离授权功能缺陷,可以在Ranger上实现对存算分离表的授权鉴权。Hive表的级联授权功能主要体现为: 开启Ranger级联授权后,Ranger中创建策略对表授权时,只需创建表的Hive策略,无需对表存储源进行二次授权。 针对已授权的库/表,当存储源发生变动时,周期同步关联新存储源HDFS/OBS,生成对应权限。 不支持对视图表进行级联授权。 仅支持对数据库/表进行级联授权操作,不支持对分区做级联权限,如果分区路径不在表路径下,则需要用户手动授权分区路径。 不支持对Hive Ranger策略中的“Deny Conditions”进行级联授权,即“Deny Conditions”的权限仅限制表权限,不能生成HDFS/OBS存储源端的权限。 不支持在Hive Ranger中创建“database”为“*”且“table”为“*”的策略。 级联授权生成的HDFS/OBS存储源端的权限弱于HDFS Ranger策略的权限,即如果已经对表的HDFS存储源设置了HDFS Ranger权限,则级联权限将不会生效。 不支持对存储源为OBS的表级联授权后直接进行alter操作,需要给对应用户组额外授予OBS表路径的父目录的“Read”和“Write”权限才能使用alter功能,且用户组仅由数字0~9、字母a~Z、下划线或#组成,且最大长度为52个字符,否则将导致策略添加失败,可参考用户组管理修改用户组信息。 针对OBS存储源,需满足以下条件,否则OBS表将授权失败: 集群中必须已安装Guardian服务。 OBS表的授权只能针对用户组。 仅支持安全模式集群的OBS级联授权。
  • Flink用户权限说明 访问并使用Flink WebUI进行业务操作需为用户赋予FlinkServer相关权限,Manager的admin用户没有FlinkServer的业务操作权限。 FlinkServer中应用(租户)是最大管理范围,包含集群连接管理、数据连接管理、应用管理、流表和作业管理等。 FlinkServer中有如表1所示三种资源权限: 表1 FlinkServer资源权限 权限名称 权限描述 备注 FlinkServer管理员权限 具有所有应用的编辑、查看权限。 是FlinkServer的最高权限。如果已经具有FlinkServer管理员权限,则会自动具备所有应用的权限。 应用编辑权限 具有当前应用编辑权限的用户,可以执行创建、编辑和删除集群连接、数据连接,创建流表、创建作业及运行作业等操作。 同时具有当前应用查看权限。 应用查看权限 具有当前应用查看权限的用户,可以查看应用。 - 父主题: Flink用户权限管理
  • Doris用户权限说明 Doris目前支持的权限如表1所示。 表1 Doris权限列表 权限名称 权限介绍 Node_priv 节点变更权限。包括FE、BE、DBroker节点的添加、删除、下线等操作。 该权限只能赋予Global级别。 Admin_priv 除NODE_PRIV以外的所有权限。 Grant_priv 权限变更权限,允许执行授权、撤权、添加/删除/变更用户/角色 等操作。 拥有该权限的用户不能赋予其他用户“node_priv”权限,除非用户本身拥有“node_priv”权限。 Select_priv 对数据库、表的只读权限。 Load_priv 对数据库、表的写权限,包括Load、Insert、Delete等。 Alter_priv 对数据库、表的更改权限。包括重命名库/表、添加/删除/变更 列、添加/删除分区等操作。 Create_priv 创建数据库、表、视图的权限。 Drop_priv 删除数据库、表、视图的权限。 Usage_priv 资源的使用权限和workload group权限。 根据权限适用范围的不同,将库表的权限分为以下四个层级: CATALOG LEVEL:数据目录(Catalog)级权限。被授予的权限适用于指定Catalog中的任意库表。 DATABASE LEVEL:数据库级权限。被授予的权限适用于指定数据库中的任意表。 TABLE LEVEL:表级权限。被授予的权限适用于指定数据库中的指定表。 RESOURCE LEVEL: 资源级权限。被授予的权限适用于指定资源。 父主题: Doris用户权限管理
  • 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文件权限,减少界面操作,提高效率。