云服务器内容精选
-
相关文档 如果元数据删除策略配置为“删除冗余元数据”后,运行迁移任务显示部分成功。查看日志发现迁移任务运行成功,删除冗余元数据失败,具体操作请参考迁移元数据任务运行成功,仅删除冗余元数据失败如何处理?。 运行元数据迁移任务时,报错“No privilege to this kms operation”,具体处理步骤请参考运行元数据迁移任务时,报错“No privilege to this kms operation” 如果需要迁移 MRS 本地数据库数据至LakeFormation,详细指导可以参考配置LakeFormation对接MRS服务章节进行操作。
-
前提条件 当前实例已创建存储迁移元数据的Catalog。 待操作用户具有OBS相关操作权限、具有已创建存储迁移元数据的Catalog的操作权限。 已创建了用于存储迁移数据的OBS并行文件系统。 表的Owner只能包含字母、数字和下划线(_),且长度为1~49个字符。不能包含中划线(-)等其他字符。 如果需要迁移多个MRS集群中的元数据到同一个LakeFormation实例,MRS集群之间的Database名称不能重复。 如果需要进行多次迁移,表的列更新需要满足列排序和列类型一致的兼容性要求。
-
运行日志常见报错分析 表2 日志中常见报错 日志报错信息 报错原因 Invalid input parameter 元数据的入参非法,或者LakeFormation暂时不支持此类元数据。 Incorrect type of column xxx. 列类型非法,或者LakeFormation不兼容此列类型。 No permission to perform this operation on resources. 请检查默认缺省Owner是否配置正确,以及是否有元数据操作权限。 Error creating transactional connection factory LakeFormation服务端与数据源连接不通。解决思路如下: 数据源的用户名/密码或AK/SK是否正常。 JDBC URL中填写的数据库是否准确。 JDBC URL中填写的IP是否准确。 如果数据源类型为MRS本地元数据,DBServer可能发生主备倒换,需要重新绑定弹性IP到主节点。 数据库连接端口安全组是否放开。 如果选择EIP连接方式,任务运行前,数据源的安全组规则需要把0.0.0.0/0全部放开。 如果选择VPC对等连接方式,任务运行前,数据源的安全组规则需要把对等连接中对端访问IP放开。 输入的vpc网段与lakeformation网段冲突 选择VPC对等连接时,数据源所在的VPC网段和LakeFormation服务端所在网段冲突。此时可以选择EIP方式进行迁移。 无日志内容 请确认日志路径是否存在。 日志路径已存在,请联系LakeFormation运维人员协助处理。 日志路径不存在,请修改任务配置中的日志路径,确保日志路径在OBS中存在。 The path should be a sub path of the catalog storage location or database location list 路径应为Catalog存储位置或者数据库存储位置列表的子路径。 Incorrect Partition Value 输入的分区值错误, 请检查输入的表的分区键列表与输入的分区值列表数量和类型是否匹配。 Database does not exist 数据库不存在,请检查数据库是否存在。 Location doesn't exist in the OBS Parallel File Systems 路径在OBS并行文件系统中不存在。 Folder obs://xxxx/yyyy/ is not empty in the OBS 建表时OBS目录不能非空,迁移时需要勾选强制建表选项跳过该建表限制。
-
操作场景 用户可以通过迁移外部元数据至LakeFormation,并将数据存储在OBS中,实现元数据的统一管理、数据的集中存储和全生命周期管理。 当前支持迁移的数据源类型如下: DLF:第三方 数据湖 构建(Data Lake Formation,DLF) MRS云数据库RDS(for MySQL) 开源HiveMetastore(for MySQL) MRS云数据库RDS(for PostgreSQL) MRS本地数据库
-
MRS对接LakeFormation约束与限制(已开启Kerberos认证) MRS对接LakeFormation前,需要注意以下约束限制: MRS集群已开启Kerberos认证。 MRS集群和LakeFormation实例必须同在一个云账户下且属于同一个Region。 LakeFormation侧创建的接入客户端所在虚拟私有云,必须与MRS集群在同一虚拟私有云下。 MRS集群仅支持对接LakeFormation实例中名称为hive的Catalog。 MRS存量集群需要先完成元数据库和权限策略向LakeFormation实例上迁移,再配置对接。 如果需要迁移多个MRS集群中的元数据到同一个LakeFormation实例,MRS集群之间的Database名称不能重复。 MRS对接LakeFormation后,MRS组件功能约束限制: Hive暂不支持临时表功能。(MRS 3.3.1及之后版本无该约束) Hive暂不支持列加密表功能。 Hive WebHCat暂不支持对接LakeFormation。 Hudi表创建前,需要先在LakeFormation上添加Hudi表目录的路径授权,赋予OBS读写权限。 Hudi表不支持在LakeFormation管理面编辑表的字段,只能通过Hudi客户端增删改表的字段。 Flink读写Hudi场景下同步Hive表,仅支持使用hive_sync.mode=jdbc,不支持hms方式。 Spark使用小权限用户登录客户端创建数据库时,如果用户没有default库的OBS路径权限,将提示缺少权限,实际创建数据库成功。(MRS 3.3.1及之后版本无该约束) MRS对接LakeFormation后,权限策略约束限制: 通过LakeFormation授权仅支持将LakeFormation角色作为授权主体,不支持 IAM 用户或IAM用户组作为授权主体。 PolicySync进程不会修改集群内RangerAdmin Hive模块的默认策略,默认策略仍然生效。 PolicySync进程启动后,会与LakeFormation实例的权限进行比对,删除LakeFormation上不存在的非默认策略,请先完成权限策略迁移到LakeFormation实例上。 RangerAdmin WebUI界面的Hive模块,禁止执行添加、删除权限非默认策略的操作,统一在LakeFormation实例的数据权限界面进行授权操作。 MRS集群取消对接LakeFormation后,RangerAdmin的非默认策略不会清理,需要人工进行清理。 Hive暂不支持Grant授权的SQL语句,需统一在LakeFormation实例的数据权限界面进行授权操作。 MRS暂不支持LakeFormation行过滤权限能力。
-
应用场景 LakeFormation是企业级一站式 湖仓构建 服务,提供元数据统一管理的可视化界面及API,兼容Hive元数据模型以及Ranger权限模型,支持无缝对接多种计算引擎及大数据云服务,使客户便捷高效地构建数据湖和运营相关业务,加速释放业务数据价值。 您可以创建一个LakeFormation实例并与MRS集群对接,实现统一的数据湖元数据及权限管理。本操作为您介绍已开启Kerberos认证的MRS集群对接LakeFormation。
-
前提条件 有可用的LakeFormation实例。详情请参见创建LakeFormation实例。 在LakeFormation控制台中的“接入管理”页面创建DWS集群所在VPC下的客户端,详情请参见管理接入客户端。 创建包含LakeFormation权限的委托(需包含最小权限),可参见创建LakeFormation委托配置,如果不配置在使用时将会报错。 DWS调用LakeFormation管理面API时,账号如果为子账号则需要包含LakeFormation权限(至少包含lakeformation:instance:access、lakeformation:instance:describe)。
-
前提条件 已参考迁移元数据至LakeFormation完成元数据迁移。 当前用户具有OBS相关操作权限,且已创建用于存储数据的OBS并行文件系统。 需将待迁移的权限策略文件导出,并上传至OBS并行文件系统中。权限导出操作可联系对应服务支持人员。 权限策略中授权主体(除角色外)需要提前创建,且名称需保持一致;权限策略中包含的元数据已存在,且名称一致。 如果迁移类型为DLF,其对应关系及迁移策略如下: RAM 用户:IAM用户(如果对应的IAM用户不存在,该权限策略不进行迁移) RAM角色:IAM用户组(如果对应的IAM用户组不存在,该权限策略不进行迁移) DLF角色:LakeFormation角色(不存在会自动创建) 如果迁移类型为Ranger,则仅支持Ranger的allow权限迁移,不支持deny权限迁移。
-
创建集群时配置LakeFormation数据连接 进入购买MRS集群页面。 单击“购买集群”,进入“购买集群”页面。 在购买集群页面,选择“自定义购买”。 参考购买自定义拓扑集群进行配置并创建集群,且集群需满足表1中要求。 表1 LakeFormation数据连接参数说明 参数 参数说明 版本类型 LTS版 集群版本 选择配置对接的MRS集群版本。 当前仅MRS 3.3.0-LTS及之后版本支持在创建集群时配置LakeFormation数据连接。 组件选择 必须包含Hadoop、Ranger、Hive、Guardian、Spark(可选)、Flink(可选)等组件。 例如,配置如下图所示,不同版本集群可能存在差异,具体界面显示以实际为准。 元数据 选择“外置数据连接”,并配置以下参数: LakeFormation元数据:单击按钮开启。 LakeFormation连接实例:选择创建LakeFormation数据连接已创建的LakeFormation数据连接名称。 数据连接类型:保持默认。 例如,配置如下图所示,不同版本集群可能存在差异,具体界面显示以实际为准。 虚拟私有云 与LakeFormation数据连接所在的虚拟私有云保持一致。 子网 选择子网名称。 拓扑调整 选择“开启”,并确认Ranger组件至少添加1个PolicySync(PSC)实例(该实例部署节点需要同时包含RangerAdmin实例)、Guardian组件至少添加2个TokenSever(TS)实例。 例如,配置如下图所示,不同版本集群可能存在差异,具体界面显示以实际为准。 Kerberos认证 开启 委托 勾选“高级配置”后的“现在配置”,“委托”选择“现有委托”,并选择创建对接E CS /BMS云服务委托创建的委托。 例如,配置如下图所示,不同版本集群可能存在差异,具体界面显示以实际为准。 等待集群创建完成后,在“现有集群”页面单击已创建的MRS集群名称,在“概览”页签单击“IAM用户同步”后的“同步”,根据界面提示同步当前用户。 参考配置MRS 3.3.0-LTS及之后版本集群配置组件存算分离、下载客户端等操作。
-
如何使用LakeFormation 湖仓构建(DataArts Lake Formation,简称LakeFormation)是企业级数据湖一站式构建服务,在存算分离架构基础上提供数据湖元数据统一管理的可视化界面及API,兼容Hive元数据模型以及Ranger权限模型,支持对接多种计算引擎及大数据云服务,使用户可以便捷高效地构建数据湖和运营相关业务,加速释放业务数据价值。 LakeFormation产品通过底层资源实现跨AZ部署及高可靠、弹性伸缩、元数据统一管理、元数据与文件目录联动授权、对接多计算引擎等功能,是一个Serverless服务。 LakeFormation服务的使用流程如下所示: 图1 LakeFormation使用流程 表1 LakeFormation使用流程介绍 主流程 子任务 说明 使用指导 准备工作 配置云服务授权 在使用LakeFormation之前,您需要注册华为云账号并进行云服务授权操作。 配置LakeFormation云服务授权 配置IAM用户权限 您可以根据需要配置IAM用户的权限进行精细的权限管理。 创建IAM用户并授权使用LakeFormation 创建LakeFormation自定义IAM策略 创建LakeFormation实例 - 在使用LakeFormation时,您首先需要创建一个实例,后续的操作,如管理元数据、设置元数据权限等,都是基于您创建的实例进行的。 创建LakeFormation实例 规划数据湖 创建元数据存储路径 LakeFormation元数据映射的数据文件和目录存储在OBS中。在创建LakeFormation元数据之前,需要提前创建数据存储使用的OBS对象桶或OBS并行文件系统。 创建LakeFormation元数据存储路径 创建元数据 通过创建元数据对象(包括Catalog、数据库、数据表等),提供统一的元数据管理能力。 创建LakeFormation元数据 配置元数据权限 对元数据或OBS路径进行授权,实现细粒度的权限管理。 配置LakeFormation元数据权限 迁移元数据及权限 迁移元数据 将外部元数据迁移至LakeFormation,实现元数据的统一管理。 迁移元数据至LakeFormation 迁移权限 将已迁移元数据的权限迁移至LakeFormation,保证用户在元数据迁移前后,数据访问控制策略的连续性与一致性。 迁移元数据权限至LakeFormation 对接LakeFormation元数据 创建接入客户端 通过创建接入客户端,用于其他云服务接入LakeFormation实例。 对接LakeFormation元数据 配置与云服务对接 配置LakeFormation与其他云服务(例如:MRS、DWS、 DLI 等)对接,对接完成后可通过云服务对LakeFormation上的元数据进行访问和管理。 管理LakeFormation 管理实例 对LakeFormation实例进行扩容、删除、设置为默认实例等操作。 管理LakeFormation实例 管理元数据 对LakeFormation元数据(Catalog、数据库、数据表、函数等)进行查看、修改、授权、删除等操作。 同时支持配置删除策略、恢复已删除的元数据。 管理LakeFormation元数据 管理数据权限 对已配置完成的数据权限进行查询、修改、取消授权等。 同时支持创建角色并授权,为用户绑定角色。 管理LakeFormation数据权限
-
责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 与传统的本地数据中心相比,云计算的运营方和使用方分离,提供了更好的灵活性和控制力,有效降低了客户的运营负担。正因如此,云的安全性无法由一方完全承担,云安全工作需要华为云与您共同努力,如图1所示。 华为云:无论在任何云服务类别下,华为云都会承担基础设施的安全责任,包括安全性、合规性。该基础设施由华为云提供的物理数据中心(计算、存储、网络等)、虚拟化平台及云服务组成。在PaaS、SaaS场景下,华为云也会基于控制原则承担所提供服务或组件的安全配置、漏洞修复、安全防护和入侵检测等职责。 客户:无论在任何云服务类别下,客户数据资产的所有权和控制权都不会转移。在未经授权的情况,华为云承诺不触碰客户数据,客户的内容数据、身份和权限都需要客户自身看护,这包括确保云上内容的合法合规,使用安全的凭证(如强口令、多因子认证)并妥善管理,同时监控内容安全事件和账号异常行为并及时响应。 图1 华为云安全责任共担模型 云安全责任基于控制权,以可见、可用作为前提。在客户上云的过程中,资产(例如设备、硬件、软件、介质、虚拟机、操作系统、数据等)由客户完全控制向客户与华为云共同控制转变,这也就意味着客户需要承担的责任取决于客户所选取的云服务。如图1所示,客户可以基于自身的业务需求选择不同的云服务类别(例如IaaS、PaaS、SaaS服务)。不同的云服务类别中,每个组件的控制权不同,这也导致了华为云与客户的责任关系不同。 在On-prem场景下,由于客户享有对硬件、软件和数据等资产的全部控制权,因此客户应当对所有组件的安全性负责。 在IaaS场景下,客户控制着除基础设施外的所有组件,因此客户需要做好除基础设施外的所有组件的安全工作,例如应用自身的合法合规性、开发设计安全,以及相关组件(如中间件、数据库和操作系统)的漏洞修复、配置安全、安全防护方案等。 在PaaS场景下,客户除了对自身部署的应用负责,也要做好PaaS服务中间件、数据库、网络控制的安全配置和策略工作。 在SaaS场景下,客户对客户内容、账号和权限具有控制权,客户需要做好自身内容的保护以及合法合规、账号和权限的配置和保护等。 传统本地部署(On-Prem):由客户在自有数据中心内部署和管理软件及IT基础设施,而非依赖于远程的云服务提供商; 基础设施即服务(IaaS):由云服务提供商提供计算、网络、存储等基础设施服务,如弹性云服务器 ECS、 虚拟专用网络 VPN、 对象存储服务 OBS; 平台即服务(PaaS):由云服务提供商提供应用程序开发和部署所需要的平台,客户无需维护底层基础设施,如 AI开发平台 ModelArts、云数据库 GaussDB ; 软件即服务 (SaaS):由云服务提供商提供完整应用软件,客户直接应用软件而无需安装、维护应用软件及底层平台和基础设施,如华为云会议 Meeting。 父主题: 安全
-
响应示例 状态码:400 Bad Request { "error_code" : "common.01000001", "error_msg" : "failed to read http request, please check your input, code: 400, reason: Type mismatch., cause: TypeMismatchException" } 状态码:401 Unauthorized { "error_code": 'APIG.1002', "error_msg": 'Incorrect token or token resolution failed' } 状态码:403 Forbidden { "error" : { "code" : "403", "message" : "X-Auth-Token is invalid in the request", "error_code" : null, "error_msg" : null, "title" : "Forbidden" }, "error_code" : "403", "error_msg" : "X-Auth-Token is invalid in the request", "title" : "Forbidden" } 状态码:404 Not Found { "error_code" : "common.01000001", "error_msg" : "response status exception, code: 404" } 状态码:408 Request Timeout { "error_code" : "common.00000408", "error_msg" : "timeout exception occurred" } 状态码:500 Internal Server Error { "error_code" : "common.00000500", "error_msg" : "internal error" }
-
响应参数 状态码:200 授权成功 状态码:400 表3 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。 状态码:401 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。 状态码:403 表5 响应Body参数 参数 参数类型 描述 error Error object 错误信息。 error_code String 错误码。 error_msg String 错误描述。 title String 标题。 表6 Error 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 title String 标题。 message String 错误信息。 code String 状态码。 状态码:404 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。 状态码:408 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。 状态码:500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。
-
操作步骤 调用创建实例接口,创建LakeFormation实例,同时记录接口返回的实例Id。 请求示例: POST https://{endpoint}/v1/{project_id}/instances Body: { "name": "lakeformation", "charge_mode": "postPaid", "shared": "false", "specs": [ { "spec_code": "lakeformation.unit.basic.qps", "stride_num": 1 } ], "enterprise_project_id": "0" } 响应示例: { "instance_id": "13677734-a4ee-43e2-9d11-30b8b2e32a95", "name": "lakeformation", "description": "", "enterprise_project_id": "0", "shared": false, "default_instance": false, "create_time": "2023-06-29T09:08:33.000+00:00", "update_time": "2023-06-29T09:08:34.000+00:00", "status": "RESOURCE_PREPARATION", "resource_progress": 25, "resource_expected_duration": 15, "in_recycle_bin": false, "tags": [], "specs": [ { "spec_code": "lakeformation.unit.basic.qps", "stride_num": 1 }, { "spec_code": "lakeformation.unit.basic.metadata", "stride_num": 0 } ] } 调用查询实例详情接口,查询实例状态,等待实例状态变为RUNNING运行中,表示实例创建完成。 请求示例: GET https://{endpoint}/v1/{project_id}/instances/{instance_id} instance_id:1响应信息中的“instance_id”参数值。 响应示例: { "instance_id": "13677734-a4ee-43e2-9d11-30b8b2e32a95", "name": "lakeformation", "description": "", "enterprise_project_id": "0", "shared": false, "default_instance": false, "create_time": "2023-06-29T09:08:33.000+00:00", "update_time": "2023-06-29T09:08:34.000+00:00", "status": "RUNNING", "in_recycle_bin": false, "tags": [], "specs": [ { "spec_code": "lakeformation.unit.basic.qps", "stride_num": 1 }, { "spec_code": "lakeformation.unit.basic.metadata", "stride_num": 0 } ] } (可选)如果当前租户首次创建LakeFormation实例,该实例将自动作为默认实例(default)。客户端可以直接访问默认实例,或通过指定具体的实例ID来访问对应的实例。非默认实例可以通过调用设为默认实例接口将非默认实例设为默认实例。 请求示例: POST https://{endpoint}/v1/{project_id}/instances/{instance_id}/default instance_id:1响应信息中的“instance_id”参数值。 调用创建服务接入客户端接口,选择客户端对应的VPC相关信息创建接入客户端,LakeFormation服务将自动为其创建终端节点和DNS内网域名,用于打通网络连接。 请求示例: POST https://{endpoint}/v1/{project_id}/instances/{instance_id}/access-clients instance_id:1响应信息中的“instance_id”参数值。 Body: { "name": "access-client", "vpc_id": "131fb837-37ae-4aa6-9e87-312919df659f", "subnet_id": "2fa7ec47-c7f6-4a81-8e77-1dd41121b726" } 响应示例: { "id": "b73a9311-1ce9-48fe-b714-21bc41ce7b82", "name": "access-client", "access_mode": "SYSTEM", "status": "CREATING", "vpc_id": "131fb837-37ae-4aa6-9e87-312919df659f", "subnet_id": "2fa7ec47-c7f6-4a81-8e77-1dd41121b726" } 调用获取服务接入客户端详情接口,查询接入客户端状态,等待状态变为RUNNING,表示接入客户端创建完成,同时可以在详情中查看接入IP、域名等详细信息。 请求示例: GET https://{endpoint}/v1/{project_id}/instances/{instance_id}/access-clients/{client_id} instance_id:1响应信息中的“instance_id”参数值。 client_id:4响应信息中的“id”参数值。 响应示例: { "id": "b73a9311-1ce9-48fe-b714-21bc41ce7b82", "name": "access-client", "access_mode": "SYSTEM", "status": "RUNNING", "vpc_id": "131fb837-37ae-4aa6-9e87-312919df659f", "subnet_id": "2fa7ec47-c7f6-4a81-8e77-1dd41121b726", "access_connections": [ { "vpcep_id": "f72c8034-df38-4dbc-bd5d-2f50531ba104", "ip": "10.0.0.6", "owner": "555d9e8999c94705be3d7edb70a3199a", "domain": "xxx.dalf-ed1c-b3070cba-baae-4220-b7ff-9b2bca043efb.apig-lakeformation.com" } ], "create_time": "2023-06-29T12:12:12.000+00:00" } 参考目录管理相关接口,使用上述步骤获取的接入IP与实例ID访问元数据管理相关接口,获取目录列表。 请求示例: GET https://{endpoint}/v1/{project_id}/instances/{instance_id}/catalogs endpoint:{instance_id}.lakeformation.lakecat.com,如果已经将实例设为默认实例可以使用default-{project_id}.lakeformation.lakecat.com。 instance_id:1响应信息中的“instance_id”参数值,如果已经将实例设为默认实例可以直接使用default作为实例ID。 请求头示例 Host:lakeformation.lakecat.com 响应示例: [ { "catalog_name": "hive", "description": "Default catalog, for Hive", "location": "obs://lakeformation-555d9e8999c94705-xxx/ed1ce787-1671-4ce4-b84f-6f40ccb26752" } ]
-
响应示例 状态码:200 OK { "total" : 1, "access_client_infos" : [ { "id" : "gs23xxxxxxxxxxxxxxxxxxxxxxxxxxxxfgs2", "name" : "lakeformation_client", "access_mode" : "SYSTEM", "vpc_id" : "d3fcxxxxxxxxxxxxxxxxxxxxxxxxxxxx8f1e", "subnet_id" : "d3fcxxxxxxxxxxxxxxxxxxxxxxxxxxxx8f1e", "status" : "RUNNING", "access_connections" : [ { "vpcep_id" : "0612xxxxxxxxxxxxxxxxxxxxxxxxxxxxa8fb", "ip" : "10.1.0.1", "domain" : "example.com" }, { "vpcep_id" : "0612xxxxxxxxxxxxxxxxxxxxxxxxxxxxa8fb", "ip" : "10.1.0.2", "domain" : "example.com" } ] } ] }