云服务器内容精选

  • 高可靠事务处理 GaussDB (DWS)提供集群事务管理功能,此功能是集群HA、集群故障切换的基础,负责保证集群所有节点间事务的ACID特性,保证故障可恢复,以及恢复后满足数据的ACID(Atomicity,Consistency,Isolation,Durability)特性,并负责节点的并发控制。 故障恢复 为了在集群出现故障时尽可能地不中断服务,GaussDB(DWS)提供了高可靠机制。通过保护关键用户程序对外不间断提供服务,把因为硬件、软件和人为造成的故障对业务的影响程度降到最低,以保证业务的持续性。 硬件级高可靠:磁盘Raid、交换机堆叠及网卡bond、不间断电源UPS(Uninterruptible Power Supply)。 软件级高可靠:GaussDB(DWS)集群CN、GTM、DN等全方位HA。 事务管理 支持事务块,用户可以通过start transaction命令显式启动一个事务块。 支持单语句事务,用户不显式启动事务,则单条语句就是一个事务。 分布式事务管理。支持全局事务信息管理,包括gxid、snapshot、timestamp的管理,分布式事务状态管理,gxid溢出的处理。 分布式事务支持ACID特性。 支持分布式死锁预防,保证在出现死锁时自动解锁或者预防死锁。 父主题: 系统概述
  • 示例事件 SMN 示例事件 { "record": [ { "event_version": "1.0", "smn": { "topic_urn": "urn:smn:{region}:0162c0f220284698b77a3d264376343a:{function_name}", "timestamp": "2018-01-09T07:11:40Z", "message_attributes": null, "message": "this is smn message content", "type": "notification", "message_id": "a51671f77d4a479cacb09e2cd591a983", "subject": "this is smn message subject" }, "event_subscription_urn": "urn:fss:{region}:0162c0f220284698b77a3d264376343a:function:default:read-smn-message:latest", "event_source": "smn" } ], "functionname": "test", "requestId": "7c307f6a-cf68-4e65-8be0-4c77405a1b2c", "timestamp": "Wed Nov 15 2017 12:00:00 GMT+0800 ( CS T)" } 表1 参数说明 参数 类型 示例值 描述 event_version String 1.0 事件协议的版本。 topic_urn String 参考示例 SMN事件唯一编号 type String notification 事件的类型 RequestID String 7c307f6a-cf68-4e65-8be0-4c77405a1b2c 请求ID。每个请求的ID取值唯一。 message_id String a51671f77d4a479cacb09e2cd591a983 消息ID。每条消息的ID取值唯一。 Message String this is smn message content 消息内容 event_source String smn 事件源 event_subscription_urn String 参考示例 添加的订阅唯一编号 timestamp String Wed Nov 15 2017 12:00:00 GMT+0800 (CST) 事件发生的时间 APIG示例事件 { "body": "{\"test\":\"body\"}", "requestContext": { "apiId": "bc1dcffd-aa35-474d-897c-d53425a4c08e", "requestId": "11cdcdcf33949dc6d722640a13091c77", "stage": "RELEASE" }, "queryStringParameters": { "responseType": "html" }, "httpMethod": "GET", "pathParameters": { "path":"value" }, "headers": { "accept-language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "accept-encoding": "gzip, deflate, br", "x-forwarded-port": "443", "x-forwarded-for": "103.218.216.98", "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "upgrade-insecure-requests": "1", "host": "50eedf92-c9ad-4ac0-827e-d7c11415d4f1.apigw.region.cloud.com", "x-forwarded-proto": "https", "pragma": "no-cache", "cache-control": "no-cache", "x-real-ip": "103.218.216.98", "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0" }, "path": "/apig-event-template", "isBase64Encoded": true } 通过APIG服务调用函数服务时,isBase64Encoded的值默认为true,表示APIG传递给FunctionGraph的请求体body已经进行Base64编码,需要先对body内容Base64解码后再处理。 函数必须按以下结构返回字符串。 { "isBase64Encoded": true|false, "statusCode": httpStatusCode, "headers": {"headerName":"headerValue",...}, "body": "..." } 表2 参数说明 参数 类型 示例值 描述 body String "{\"test\":\"body\"}" 记录实际请求转换为String字符串后的内容。 requestContext Map 参考示例 请求来源的API网关的配置信息、请求标识、认证信息、来源信息。 httpMethod String GET 记录实际请求的HTTP方法 queryStringParameters Map 参考示例 记录在API网关中配置过的Query参数以及实际取值。 pathParameters Map 参考示例 记录在API网关中配置过的Path参数以及实际取值。 headers Map 参考示例 记录实际请求的完整Header内容 path String /apig-event-template 记录实际请求的完整的Path信息 isBase64Encoded Boolean True 默认为true DIS示例事件 { "ShardID": "shardId-0000000000", "Message": { "next_partition_cursor": "eyJnZXRJdGVyYXRvclBhcmFtIjp7InN0cmVhbS1uYW1lIjoiZGlzLXN3dGVzdCIsInBhcnRpdGlvbi1pZCI6InNoYXJkSWQtMDAwMDAwMDAwMCIsImN1cnNvci10eXBlIjoiVFJJTV9IT1JJWk9OIiwic3RhcnRpbmctc2VxdWVuY2UtbnVtYmVyIjoiNCJ9LCJnZW5lcmF0ZVRpbWVzdGFtcCI6MTUwOTYwNjM5MjE5MX0", "records": [ { "partition_key": "shardId_0000000000", "data": "d2VsY29tZQ==", "sequence_number": "0" }, { "partition_key": "shardId_0000000000", "data": "dXNpbmc=", "sequence_number": "1" }, { "partition_key": "shardId_0000000000", "data": "RnVuY3Rpb25TdGFnZQ==", "sequence_number": "2" }, { "partition_key": "shardId_0000000000", "data": "c2VydmljZQ==", "sequence_number": "3" } ], "millis_behind_latest": "" }, "Tag": "latest", "StreamName": "dis-swtest" } 表3 参数说明 参数 类型 示例值 描述 ShardID String shardId-0000000000 数据下载分区的ID next_partition_cursor String 参考示例 下一个分区的游标 Records Map 参考示例 存储在DIS通道中的数据单元 partition_key String 参考示例 分区键 data String 参考示例 数据块,由数据生产者添加到数据通道 sequence_number Int 参考示例 每个记录的唯一标识符,由DIS服务自动分配 Tag String latest 通道的标签 StreamName String dis-swtest 通道名称 TIMER示例事件 { "version": "v1.0", "time": "2018-06-01T08:30:00+08:00", "trigger_type": "TIMER", "trigger_name": "Timer_001", "user_event": "User Event" } 表4 参数说明 参数 类型 示例值 描述 version String V1.0 事件协议的版本 time String 2018-06-01T08:30:00+08:00 事件产生的时间 trigger_type String TIMER 触发器的类型 trigger_name String Timer_001 触发器的名字 user_event String User Event 在创建触发器时配置的附加信息 LTS示例事件 { "lts": { "data": "ICB7CiAgICAibG9ncyI6W3sKICAgICAgICAgIm1lc3NhZ2UiOiIyMDE4LTA4LTA4LzA4OjA4OjA4IFtXUk5dIFt0ZXN0LmdvOjA4XVRoaXMgaXMgYSB0ZXN0IG1lc3NhZ2UuIiwKICAgICAgICAgInRpbWUiOjE1MzAwMDk2NTMwNTksCiAgICAgICAgICJob3N0X25hbWUiOiJlY3MtdGVzdCIsCiAgICAgICAgICJpcCI6IjE5Mi4xNjguMS4xIiwKICAgICAgICAgInBhdGgiOiJ2YXIvbG9nL3Rlc3QubG9nIiwKICAgICAgICAgImxvZ191aWQiOiI2NjNkNjkzMC03OTJkLTExZTgtOGIwOC0yODZlZDQ4OGNlNzAiLAogICAgICAgICAibGluZV9ubyI6MQogICAgIH1dLAogICAgIm93bmVyIjogIjYyODBlMTcwYmQ5MzRmNjBhNGQ4NTFjZjVjYTA1MTI5IiwKICAgICJsb2dfZ3JvdXBfaWQiOiAiOTdhOWQyODQtNDQ0OC0xMWU4LThmYTQtMjg2ZWQ0ODhjZTcwIiwKICAgICJsb2dfdG9waWNfaWQiOiAiMWE5Njc1YTctNzg0ZC0xMWU4LTlmNzAtMjg2ZWQ0ODhjZTcwIgogfQ==" } } 表5 Event中涉及的参数解释 参数 类型 示例值 描述 data Sting 参考示例 Base64编码后的数据 CTS 示例事件 { "cts": { "time": "2018/06/26 08:54:07 GMT+08:00", "user": { "name": "userName", "id": "5b726c4fbfd84821ba866bafaaf56aax", "domain": { "name": "domainName", "id": "b2b3853af40448fcb9e40dxj89505ba" } }, "request": {}, "response": {}, "code": 204, "service_type": "vpc", "resource_type": "VPC", "resource_name": "workflow-2be1", "resource_id": "urn:fgs:{region}:2d1d891d93054bbaa69b9e866c0971ac:graph:workflow-2be1", "trace_name": "deleteGraph", "trace_type": "ConsoleAction", "record_time": "2018/06/26 08:54:07 GMT+08:00", "trace_id": "69be64a7-0233-11e8-82e4-e5d37911193e", "trace_status": "normal" } } 表6 参数说明 参数 类型 示例值 描述 User Map 参考示例 本次请求的发起用户信息 Request Map 参考示例 事件请求内容 Response Map 参考示例 事件响应内容 Code Int 204 事件响应码,例如200、400 service_type String vpc 发送方的简写,比如vpc,ecs等等 resource_type String VPC 发送方资源类型,比如vm,vpn等等 resource_name String workflow-2be1 资源名称,例如ecs服务中某个虚拟机的名称 trace_name String deleteGraph 事件名称,比如:startServer, shutDown等 trace_type String ConsoleAction 事件发生源头类型,例如ApiCall record_time string 2018/06/26 08:54:07 GMT+08:00 cts服务接受到这条trace的时间 trace_id String 69be64a7-0233-11e8-82e4-e5d37911193e 事件的唯一标识符 trace_status String normal 事件的状态 DDS示例事件 { "records": [ { "event_source": "dds", "event_name": "insert", "region": "{region}", "event_version": "1.0", "dds": { "size_bytes": "100", "token": "{\"_data\": \"825D8C2F4D0000001529295A100474039A3412A64BA89041DC952357FB4446645F696400645D8C2F8E5BECCB6CF5370D6A0004\"}", "full_document": "{\"_id\": {\"$oid\": \"5d8c2f8e5beccb6cf5370d6a\"},\"name\": \"dds\",\"age\": {\"$numberDouble\": \"52.0\"}}", "ns": "{\"db\": \"functiongraph\",\"coll\": \"person\"}" }, "event_source_id": "e6065860-f7b8-4cca-80bd-24ef2a3bb748" } ] } 表7 参数说明 参数 类型 示例值 描述 region String cn-north-1 DDS实例所在的地域 event_version String 1.0 事件协议的版本 event_source String dds 事件的来源 event_name String insert 事件的名字 size_bytes Int 100 消息的字节数 token String 参考示例 Base64编码后的数据 full_document String 参考示例 完整的文件信息 ns String 参考示例 列名 event_source_id e6065860-f7b8-4cca-80bd-24ef2a3bb748 参考示例 事件源唯一标识符 Kafka示例事件 { "event_version": "v1.0", "event_time": 1576737962, "trigger_type": "KAFKA", "region": "{region}", "instance_id": "81335d56-b9fe-4679-ba95-7030949cc76b", "records": [ { "messages": [ "kafka message1", "kafka message2", "kafka message3", "kafka message4", "kafka message5" ], "topic_id": "topic-test" } ] } 表8 参数说明 参数 类型 示例值 描述 event_version String v1.0 事件协议的版本 event_time String 2018-01-09T07:50:50.028Z 事件发生的时间 trigger_type String KAFKA 事件类型 region String cn-north-1 Kafka实例所在的地域 instance_id String 81335d56-b9fe-4679-ba95-7030949cc76b 创建的Kafka实例的唯一标识符。 messages String 参考示例 消息内容 topic_id String topic-test 消息的唯一标识符 GeminiDB示例事件 { "records": [ { "event_name": "\"insert\"", "event_version": "1.0", "event_source": "gemini_mongo", "region": "{region}", "gemini_mongo": { "full_document": "{\"_id\": {\"$oid\":\"5f61de944778db5fcded3f87\"},\"zhangsan\": \"zhangsan\"}", "ns": "{\"db\": \"zhangsan\",\"coll\": \"zhangsan\"}", "size_bytes": "100", "token": "{\"_data\": \"825F61DE940000000129295A1004A2D9AE61206C43A5AF47CAF7C5C00C5946645F696400645F61DE944778DB5FCDED3F870004\"}" }, "event_source_id": "51153d19-2b7d-402c-9a79-757163258a36" } ], "vernier": "{\"_data\": \"825F61DE940000000129295A1004A2D9AE61206C43A5AF47CAF7C5C00C5946645F696400645F61DE944778DB5FCDED3F870004\"}" } 表9 参数说明 参数 类型 示例值 描述 region String cn-north-1 GeminiDB实例所在的地域 event_source String gemini_mongo 事件的来源 event_version String 1.0 事件协议的版本 full_document String 参考示例 完整的文件信息 size_bytes Int 100 消息的字节数 token String 参考示例 Base64编码后的数据 vernier String 参考示例 游标 RabbitMQ示例事件 { "event_version": "v1.0", "event_time": 1576737962, "trigger_type": "RABBITMQ", "region": "{region}", "records": [ { "messages": [ "rabbitmq message1", "rabbitmq message2", "rabbitmq message3", "rabbitmq message4", "rabbitmq message5" ], "instance_id": "81335d56-b9fe-4679-ba95-7030949cc76b", "exchange": "exchange-test" } ] } 表10 参数说明 参数 类型 示例值 描述 event_version String v1.0 事件协议的版本 Region String cn-north-1 RabbitMQ实例所在的地域 instance_id String 81335d56-b9fe-4679-ba95-7030949cc76b 创建的RabbitMQ实例的唯一标识符。 EG示例事件 RocketMQ自定义事件源 { "datacontenttype": "application/json", "data": { "context": "yyyyy" }, "subject": "ROCKETMQ:region:domainId/projectId:ROCKETMQ:eventSourceName", "specversion": "1.0", "id": "016d5bd3-6231-4e9e-86ef-e451a070d598", "source": "eventSourceName", "time": "2023-04-07T11:51:10Z", "type": "ROCKETMQ:CloudTrace:RocketmqCall" } OBS应用事件源 { "channel_id":"b65779ed-d9d0-4a6c-b312-c767226964cf", "description":"", "name":"subscription-xeak", "sources":[ { "id":null, "name":"HC.OBS.DWR", "detail":{ "bucket":"eventbucket", "objectKeyEncode":true }, "filter":{ "source":[ { "op":"StringIn", "values":[ "HC.OBS.DWR" ] } ], "type":[ { "op":"StringIn", "values":[ "OBS:DWR:ObjectCreated:PUT", "OBS:DWR:ObjectCreated:POST" ] } ], "subject":{ "and":[ { "op":"StringStartsWith", "values":[ "/ddd" ] } ] }, "data":{ "obs":{ "bucket":{ "name":[ { "op":"StringIn", "values":[ "output-your" ] } ] } } } }, "provider_type":"OFFICIAL" } ], "targets":[ { "id":null, "name":"HC.FunctionGraph", "detail":{ "urn":"urn:fss:cn-north-7:c53626012ba84727b938ca8bf03108ef:function:A-nodejs-lqz:pylog:latest", "agency_name":"EG_AGENCY" }, "dead_letter_queue":null, "provider_type":"OFFICIAL", "transform":{ "type":"ORIGINAL", "value":"" } } ] } 云服务事件源: { "specversion":"1.0", "id":"eaf3b6a6-d525-11ed-a4ca-1baaeb906770", "source":"HC.OBS", "type":"OBS:CloudTrace:Others", "datacontenttype":"application/json", "subject":"OBS:cn-north-5:1d60cc02b9814b9e8cab1ff36886cacb/a5b94f2084a14e3eb8273dd224b89d9a:OBJECT", "time":"2023-04-07T09:21:53.271Z", "data":{ "code":"200", "source_ip":"10.62.9.176", "trace_type":"Others", "event_type":"data", "project_id":"a5b94f2084a14e3eb8273dd224b89d9a", "total_time":"138", "content_length":"6887848", "trace_id":"eaf3b6a6-d525-11ed-a4ca-1baaeb906770", "trace_name":"GET.OBJECT", "resource_type":"OBJECT", "trace_rating":"normal", "service_type":"OBS", "tracker_name":"obs-eg", "time":"1680859313271", "resource_name":"fangxin-sdk:SDK/nodejs-sdk.zip", "record_time":"1680859313271", "request_id":"000001875B05B4AB8411EF94DDE202C0", "user":{ "domain":{ "id":"1d60cc02b9814b9e8cab1ff36886cacb", "name":"hwstaff_pub_fcspaasw3" }, "name":"devuser", "id":"0d8880584b0090271f7cc00857a7c7b9" } } } 更多云服务事件源,请参见云服务事件源。 表11 参数说明 参数 类型 示例值 描述 datacontenttype String application/json 数据类型 data Map 见示例 数据 subject String 见示例 目标值 specversion String 1.0 版本 id String 见示例 唯一键值 source String eventSourceName 来源名称 time String 见示例 发布订阅时间 type String ROCKETMQ:CloudTrace:RocketmqCall 订阅类型
  • API Gateway 可以通过HTTPS调用FunctionGraph函数,使用API Gateway自定义REST API和终端节点来实现。可以将各个API操作(如GET和PUT)映射到特定的FunctionGraph函数,当向该API终端节点发送HTTPS请求时(APIG示例事件),API Gateway会调用相应的FunctionGraph函数。HTTPS调用触发函数的使用过程请参考使用APIG触发器。
  • 云审计 服务触发器CTS 可以编写FunctionGraph函数,根据CTS云审计服务类型和操作订阅所需要的事件通知,当CTS云审计服务获取已订阅的操作记录后,通过CTS触发器将采集到的操作记录作为参数传递(CTS示例事件)来调用FunctionGraph函数。经由函数对日志中的关键信息进行分析和处理,对系统、网络等业务模块进行自动修复,或通过短信、邮件等形式产生告警,通知业务人员进行处理。CTS触发器的使用请参考使用CTS触发器。
  • 数据范围 成本中心提供的与您相关的成本和使用量数据,供您参考和使用。 成本中心默认为您提供近18个月的成本和使用量数据。在“选项”处开启“月粒度的多年数据”,将为您最多提供近38个月的成本和使用量数据。 如果您是普通账号,则成本中心提供您在华为云上消费产生的成本和使用量数据。 如果您是企业主账号,且没有开通财务托管,则成本中心为您提供的数据如下: 企业主账号本身消费产生的成本和使用量数据。 企业子账号在关联还款期间的成本和使用量数据。 为企业主账号授权查看其消费数据的企业子账号自身消费产生的成本和使用量数据。 如果您是企业主账号,且开通了财务托管,则成本中心为您提供的数据如下: 企业主账号本身消费产生的成本和使用量数据; 财务托管企业子账号消费产生的成本和使用量数据。 如果您是财务托管下的企业子账号,则成本中心只为您提供财务托管期间产生的成本和使用量数据;企业子账号取消关联企业主账号成为普通账号后,则只能访问未关联企业主账号期间的成本和使用量数据,同时不再有权访问关联企业主账号期间的数据。 如果您是非财务托管企业子账号,则可以查看您在华为云上消费产生的成本和使用量数据(和普通普通账号一致)。 如果您是伙伴转售类子账号,则成本中心提供您在华为云上消费产生的成本和使用量数据。在您被转售期间,成本中心提供的相关统计均是基于华为云官网价计算,仅供参考。 成本中心暂不支持经销商伙伴(含精英服务商)使用。 若您的摊销成本出现异常增高,详细请参见为什么当月最近一天的摊销成本会异常增高? 父主题: 概述
  • 关键特性 表1 华为乾坤安全办公园区解决方案关键特性 特性类型 特性名称 简介 云管理网络 站点管理 支持按站点管理网络,可以查看网络拓扑、调整拓扑结构、配置站点业务。 设备管理 支持纳管网络设备(交换机、AP、AR、WAC)、安全设备(防火墙)。 准入认证 提供了802.1X、Portal、MAC等多种认证方式,可按需对接入用户进行策略管控。 IPsec VPN 提供一种静态VPN,通过在站点之间建立IPsec隧道来创建VPN通道,实现分支与分支、分支与总部、分支与云之间的业务互访。 网络环境监控 支持网络健康度评估、网络问题分析、无线智能去噪。 用户体验保障 支持用户旅程回放、协议回放、用户问题分析。 应用分析 支持全网应用数据监控,保障网络应用畅通无阻。 智能调优 支持智能无线射频调优、智能无线漫游。 智能终端安全服务 终端识别与管理 终端自动识别:提供自动化终端资产清点能力,安装HiSec Endpoint Agent后,该终端即被自动识别。 资产信息管理:自动化统一管理主机列表、进程、端口、组件等终端资产信息。 终端安全管理:智能分析终端安全,呈现终端资产安全分析评分和风险总览。 威胁检测 与处置 入侵检测:基于行为检测引擎,提供终端行为检测能力,检测暴力破解、异常登录、权限提升等恶意行为。 事件聚合:将离散的勒索类告警事件,基于进程调用链聚合成相应的勒索事件,且支持对其一键处置。 病毒查杀与处置 病毒查杀:基于华为第三代反病毒引擎,每日更新病毒特征库,实时更新紧急病毒,提供高质量病毒文件检测能力。 威胁分析:支持对检出的病毒文件进行威胁分析,展示详细的威胁信息,如病毒标识、风险值、置信度等。 主动防御 诱饵捕获:基于勒索病毒特征放置诱饵文件,实时检测并及时上报异常行为。 文件防篡改:对重点文件进行访问权限控制并实时检测,及时发现篡改行为。 实时防护:实时扫描全盘目录,及时识别病毒文件并阻断其传送行为。 溯源分析 取证分析:采集和存储终端信息,并通过数据挖掘、关联分析等方法,对威胁事件进行取证分析。 攻击可视化:通过EDR(Endpoint Detection and Response,端点侦测与回归)数字化建模、溯源推理算法,实现攻击可视化,精准还原威胁攻击链路。 父主题: 方案概述
  • ServiceComb引擎微服务开发框架版本要求 微服务开发框架推荐版本如下表所示。 如果已经使用低版本的微服务开发框架构建应用,建议升级到推荐版本,以获取最稳定和丰富的功能体验。 如果已使用Spring Cloud微服务开发框架开发了应用,推荐使用Spring Cloud Huawei接入应用。 Spring Cloud Huawei各分支版本与Spring Boot、Spring Cloud、Java Chassis及JDK编译版本的配套关系请参考版本配套说明。 如果基于开源开放和业界生态组件新开发微服务应用,可选择Spring Cloud框架。 如果希望使用ServiceComb引擎提供的开箱即用的治理能力和高性能的RPC框架,可选择Java Chassis框架。 框架 推荐版本 说明 Spring Cloud Huawei 1.10.9-2021.0.x及以上 采用Spring Cloud Huawei项目提供接入支持: 适配的Spring Cloud版本为2021.0.5 适配的Spring Boot版本为2.6.13 Spring Cloud微服务开发框架的版本说明请参见:https://github.com/huaweicloud/spring-cloud-huawei/releases。 Java Chassis 2.7.10及以上 可以直接使用开源项目提供的软件包接入,不需要引用其他第三方软件包。 Java Chassis微服务开发框架的版本说明请参见:https://github.com/apache/servicecomb-java-chassis/releases。 系统升级、改造过程中,三方软件冲突是最常见的问题。随着软件迭代速度越来越快,传统的软件兼容性管理策略已经不适应软件的发展,您可以参考三方软件版本管理策略来解决版本冲突。
  • 基于策略的权限控制 Ranger组件通过PBAC(policy-based access control,基于策略的权限控制)方式进行权限管理,可对HDFS、Hive、HBase等组件进行更加细粒度的数据访问控制。 组件同时只支持一种权限控制机制,当组件启用Ranger权限控制策略后,通过 FusionInsight Manager创建的角色中关于该组件的权限将失效(HDFS与Yarn的组件ACL规则仍将生效),用户需通过Ranger管理界面添加策略进行资源的赋权。 Ranger的权限模型由多条权限策略组成,权限策略主要由以下几方面组成: 资源 组件所提供的可由用户访问的对象,例如HDFS的文件或文件夹、Yarn中的队列、Hive中的数据库/表/列等。 用户 系统的访问者,每个用户的权限由该用户关联的策略来获得。LDAP中的用户、用户组、角色信息会周期性的同步至Ranger。 权限 策略中针对资源可配置各种访问条件,例如文件的读写,具体可以配置允许条件、拒绝条件以及例外条件等。
  • 基于角色的权限控制 MRS 集群通过采用RBAC(role-based access control,基于角色的权限控制)方式对大数据系统进行权限管理,将系统中各组件零散的权限管理功能集中呈现和管理,对普通用户屏蔽掉了内部的权限管理细节,对管理员简化了权限管理的操作方法,提升权限管理的易用性和用户体验。 MRS集群权限模型由“用户-用户组-角色-权限”四类对象构成。 图1 权限模型 权限 由组件侧定义,允许访问组件某个资源的能力。不同组件针对自己的资源,有不同的权限。 例如: HDFS针对文件资源权限,有读、写、执行等权限。 HBase针对表资源权限,有创建、读、写等权限。 角色 组件权限的一个集合,一个角色可以包含多个组件的多个权限,不同的角色也可以拥有同一个组件的同一个资源的权限。 用户组 用户的集合,当用户组关联某个或者多个角色后,该用户组内的用户就将拥有这些角色所定义的组件权限。 不同用户组可以关联同一个角色,一个用户组也可以不关联任何角色,该用户组原则上将不具有任何组件资源的权限。 部分组件针对特定的默认用户组,系统默认赋予了部分权限。 用户 系统的访问者,每个用户的权限由该用户关联的用户组和角色所对应的权限构成,用户需要加入用户组或者关联角色来获得对应的权限。
  • 权限机制 MRS集群采用LDAP存储用户和用户组的数据;角色的定义信息保存在关系数据库中,角色和权限的对应关系则保存在组件侧。 MRS使用Kerberos进行统一认证。 用户权限校验流程大致如下: 客户端(用户终端或MRS组件服务)调用MRS认证接口。 MRS使用登录用户名和密码,到Kerberos进行认证。 如果认证成功,客户端会发起访问服务端(MRS组件服务)的请求。 服务端会根据登录的用户,找到其属于的用户组和角色。 服务端获得用户组拥有的所有权限和角色拥有的所有权限的并集。 服务端判断客户端是否有权限访问其请求的资源。 示例场景(RBAC): HDFS中有三个文件fileA、fileB、fileC。 定义角色roleA对fileA有读和写权限,角色roleB对fileB有读权限。 定义groupA属于roleA;groupB属于roleB。 定义userA属于groupA和roleB,userB属于GroupB。 当userA登录成功并访问HDFS时: HDFS获得useA属于的所有角色(roleB)。 HDFS同时还会获得userA属于的所有用户组所属于的角色(roleA)。 此时,userA拥有roleA和roleB对应权限的并集。 因此对于fileA,则userA有读写权限;对fileB,有读权限;对于fileC,无任何权限。 同理userB登录后: userB只拥有roleB对应的权限。 对于fileA,则userB无权限;对fileB,有读权限;对于fileC,无任何权限。
  • 安全模式 安全模式的集群统一使用Kerberos认证协议进行安全认证。Kerberos协议支持客户端与服务端进行相互认证,提高了安全性,可有效消除使用网络发送用户凭据进行模拟认证的安全风险。集群中由KrbServer服务提供Kerberos认证支持。 Kerberos用户对象 Kerberos协议中,每个用户对象即一个principal。一个完整的用户对象包含两个部分信息:用户名和 域名 。在运维管理或应用开发的场景中,需要在客户端认证用户身份后才能连接到集群服务端。系统操作运维与业务场景中主要使用的用户分为“人机”用户和“机机”用户。二者主要区别在于“机机”用户密码由系统随机生成。 Kerberos认证 Kerberos认证支持两种方式:密码认证及keytab认证。认证有效时间默认为24小时。 密码认证:通过输入用户正确的密码完成身份认证。主要在运维管理场景中使用“人机”用户进行认证,命令为kinit 用户名。 keytab认证:keytab文件包含了用户principal和用户凭据的加密信息。使用keytab文件认证时,系统自动使用加密的凭据信息进行认证无需输入用户密码。主要在组件应用开发场景中使用“机机”用户进行认证。keytab文件也支持在kinit命令中使用。
  • 普通模式 普通模式的集群不同组件使用原生开源的认证机制,不支持kinit认证命令。FusionInsight Manager(含DBService、KrbServer和LdapServer)使用的认证方式为用户名密码方式。组件使用的认证机制如表1所示。 表1 组件认证方式一览表 服务 认证方式 IoTDB simple认证 CDL 无认证 ClickHouse simple认证 Flume 无认证 HBase WebUI:无认证 客户端:simple认证 HDFS WebUI:无认证 客户端:simple认证 HetuEngine WebUI:无认证 客户端:无认证 Hive simple认证 Hue 用户名密码认证 Kafka 无认证 Loader WebUI:用户名密码认证 客户端:无认证 Mapreduce WebUI:无认证 客户端:无认证 Oozie WebUI:用户名密码认证 客户端:simple认证 Spark2x WebUI:无认证 客户端:simple认证 Storm 无认证 Yarn WebUI:无认证 客户端:simple认证 ZooKeeper simple认证 认证方式解释如下: “simple认证”:在客户端连接服务端的过程中,默认以客户端执行用户(例如操作系统用户“root”或“omm”)自动进行认证,管理员或业务用户不显式感知认证,不需要kinit完成认证过程。 “用户名密码认证”:使用集群中“人机”用户的用户名与密码进行认证。 “无认证”:默认任意的用户都可以访问服务端。
  • 同步 IAM 用户 创建用户并授权使用MRS服务,具体请参考创建IAM用户并授权使用MRS。 登录MRS控制台并创建集群,具体请参考自定义购买MRS集群。 在左侧导航栏中选择“现有集群”,单击集群名称进入集群详情页面。 在“概览”页签单击“IAM用户同步”右侧的“单击同步”进行IAM用户同步。 在弹窗“IAM用户同步”的“待同步”页面,搜索需要同步IAM用户所在的用户组,单击对应的用户组名称。在“用户”中勾选需要同步的IAM用户,单击“同步”。 如需同步所有的用户,在“待同步”中勾选“全部同步”即可。 如只勾选“用户组”,该用户组下的用户不会同步,必须勾选“用户组”下对应的用户名称才能同步。 在“IAM用户同步”页面会显示所有的用户组,所有灰色不能选择的用户组和用户则不能进行IAM用户同步。 同步请求下发后,返回MRS控制台在左侧导航栏中选择“操作日志”页面查看同步是否成功,日志相关说明请参考查看MRS云服务操作日志。 同步成功后,即可使用IAM同步用户进行后续操作。 当IAM用户的用户组的所属策略从MRS ReadOnlyAccess向MRS CommonOperations、MRS FullAccess、MRS Administrator变化时,由于集群节点的SSSD(System Security Services Daemon)缓存刷新需要时间,因此同步完成后,请等待5分钟,等待新修改策略生效之后,再进行提交作业。否则,会出现提交作业失败的情况。 当IAM用户的用户组的所属策略从MRS CommonOperations、MRS FullAccess、MRS Administrator向MRS ReadOnlyAccess变化时,由于集群节点的SSSD缓存刷新需要时间,因此同步完成后,请等待5分钟,新修改策略才能生效。 单击“IAM用户同步”右侧的“同步”后,集群详情页面会出现短时间空白,这是由于正在进行用户数据同步中,请耐心等待,数据同步完成后,页面将会正常显示。 安全集群提交作业:安全集群中用户可通过界面“作业管理”功能提交作业,具体请参考运行MapReduce作业。 集群详情页面页签显示完整(包含“组件管理”,“租户管理”和“备份恢复”)。 登录Manager页面。 使用admin账号登录Manager,具体请参考访问MRS集群Manager。 初始化IAM同步用户密码,具体请参考初始化MRS集群用户密码。 修改用户所在用户组绑定的角色,精确控制Manager下用户权限,具体请参考管理MRS集群用户组修改用户组绑定的角色,如需创建修改角色请参考添加角色。用户所在用户组绑定的组件角色修改后,权限生效需要一定时间,请耐心等待。 使用IAM同步用户及7.b初始化后的密码登录Manager。 当IAM用户权限发生变化时,需要执行4进行二次同步。对于系统用户,二次同步后用户的权限为IAM系统策略定义的权限和用户在Manager自行添加角色的权限的并集。对于自定义用户,二次同步后用户的权限以Manager配置的权限为准。 系统用户:如果IAM用户所在用户组全部都绑定系统策略(RABC策略和细粒度策略均属于系统策略),则该用户为系统用户。 自定义用户:如果IAM用户所在用户组只要有绑定任何自定义策略,则该用户为自定义用户。 取消IAM用户同步。 需要取消某个IAM用户同步时,在“已同步”的“用户”中勾选需要取消的用户名称,单击“取消同步”。 需要取消某个IAM用户组下的所有用户同步时,在“已同步”的“用户组”中勾选需要取消的用户组,单击“取消同步”。
  • 场景示例B 根据分摊金额查看账单金额。 客户在成本中心的“成本分析”页面查看到07月存在9.19元的云硬盘摊销成本,想要查看原始订单消费情况。 在当前页面导出的07月的摊销成本明细。 通过产品类型筛选当前分摊月的成本详情。 绿色框中是成本分摊到07月的所有订单号,红色框中是分摊月中的成本构成: 第一行订单原始成本为3.5,表示订单金额为3.5,期初分摊为0,本月分摊金额为3.390625,期末未分摊0.109375,0+3.390625+0.109375=3.5。 第二行订单原始成本为7,表示订单金额为7,期初分摊为0,本月分摊金额为5.6875,期末未分摊1.3125,0+5.6875+1.3125=7。 第三行订单原始成本为3.5,表示订单金额为3.5,期初分摊为3.3870966,本月分摊金额为0.11290322,期末未分摊0,3.3870966+0.11290322+0=3.5。 当月摊销金额=3.390625+5.6875+0.11290322=9.19102822,截取分之后的小数后,“成本分析”页面展示的摊销金额为9.19元。
  • 在函数中引入动态链接库 函数运行环境中已经默认将代码根目录和根目录下的lib目录加入到LD_LIBRARY_PATH中,只需要将动态链接库放到此处即可。 在代码中直接修改LD_LIBRARY_PATH环境变量。 如果依赖的.so文件放在其他目录,可以在配置页面设置LD_LIBRARY_PATH环境变量指明对应的目录,具体请参考配置环境变量。 如下所示,其中,/opt/function/code、/opt/function/code/lib表示函数代码的工程目录。 图1 配置环境变量 如果使用了挂载文件系统中的库,可以在配置页面设置LD_LIBRARY_PATH环境变量指明挂载文件系统中对应的目录。 父主题: 概述