StarRocks CREATE FILE 语句详解:安全管理证书、密钥等配置文件的完整指南

📅 发布时间:2026/9/19 21:28:14
StarRocks CREATE FILE 语句详解:安全管理证书、密钥等配置文件的完整指南
StarRocks CREATE FILE 语句详解安全管理证书、密钥等配置文件的完整指南【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocksStarRocks 的CREATE FILE语句用于将证书如 PEM 格式的 CA 证书、私钥、密钥、配置文件等小型文件上传并持久化到 StarRocks 集群内部使其成为数据库命名空间下统一管理的安全文件资源。本文基于官方 SQL 参考文档并结合 StarRocks 前端FE源码中FileAnalyzer与SmallFileMgr的实现完整讲解CREATE FILE的语法、参数、权限要求、底层下载与校验机制以及配合DROP FILE、SHOW FILE的完整文件生命周期管理实战。功能概述与适用场景CREATE FILE是 StarRocks 集群管理中用于创建文件的语句。执行成功后文件会被上传并持久化存储在 StarRocks 中之后不再依赖原始下载地址。在同一个数据库中只有 admin 用户能够创建和删除文件而所有具备该数据库访问权限的用户都可以使用属于该数据库的文件。该能力最常见的落地场景是 Kafka 等数据源的加密认证当您通过 Kafka 加载数据时StarRocks 会从 Kafka 数据源指定的 catalog类别中查找对应的证书文件如test.pem、client.key用于 TLS/SSL 连接认证。文件由 StarRocks 统一托管后加载任务只需引用文件名即可无需在集群各节点分散存放敏感文件。权限要求执行CREATE FILE需要 SYSTEM 级别的FILE权限可参考 GRANT 文档 进行授权。基本概念File文件指在 StarRocks 中创建并保存的文件。文件创建并存储后StarRocks 会为它分配一个全局唯一 ID可在SHOW FILE结果的Id列查看。您可以基于以下三个维度定位一个文件数据库名database文件所属的数据库命名空间catalog类别文件的业务分类标识创建时必须指定文件名file_name文件在数据库内的唯一名称。文件在 FE 侧的底层管理由SmallFileMgr小文件管理器负责源码位于 SmallFileMgr.java其职责是下载、校验、序列化与按 ID/数据库/名称索引文件。语法CREATE FILE file_name [IN database] [properties]参数说明参数是否必填说明file_name是文件名。database否文件所属数据库。若不指定默认使用当前会话所连接的数据库。properties是文件的属性配置具体配置项见下表。properties 配置项配置项是否必填说明url是文件下载地址仅支持无需认证的 HTTP URL。文件存入 StarRocks 后该 URL 不再需要。catalog是文件所属类别。可依据业务需求自定义但在某些场景下必须指定特定值。例如从 Kafka 加载数据时StarRocks 会从 Kafka 数据源指定的 catalog 中查找文件。MD5否文件校验所用消息摘要算法Message-Digest Algorithm。若指定该参数StarRocks 会在文件下载完成后进行校验。从源码看properties支持的关键字在 CreateFileStmt.java 中被定义为常量catalog默认值DEFAULT类别url下载地址md5可选校验值save_content该属性当前在 StarRocks 中尚未支持。FileAnalyzer的analyzeCreateFileProperties方法见 FileAnalyzer.java会在解析阶段做如下校验properties中只能出现上述白名单关键字出现其他关键字会抛出xxx is invalid property语义异常url缺失或为空会抛出download url is missing异常显式声明save_content会抛出save_content property is not supported yet异常。另外需要特别留意的是文件大小限制SmallFileMgr.downloadAndCheck会先通过 HTTPHEAD请求探测Content-Length若长度不可用或超过 FE 配置项max_small_file_size_bytes默认 100 MB创建操作将直接失败防止超大文件占用 FE 内存与 BDBJE 存储。使用示例示例一在类别 kafka 下创建名为 test.pem 的文件CREATE FILE test.pem PROPERTIES ( url https://starrocks-public.oss-cn-xxxx.aliyuncs.com/key/test.pem, catalog kafka );示例二在 my_database 数据库的 my_catalog 类别下创建 client.key并携带 MD5 校验CREATE FILE client.key IN my_database PROPERTIES ( url http://test.bj.bcebos.com/kafka-key/client.key, catalog my_catalog, md5 b5bb901bf10f99205b39a46ac3557dd9 );第二个示例中的md5值应在上传前通过md5sum client.key等命令预先计算得出确保下载内容完整且未被篡改。底层执行流程下载、校验与持久化了解CREATE FILE在 FE 内部的执行链路有助于定位问题、评估风险。整体流程如下解析与分析AstBuilder将 SQL 解析为CreateFileStmt抽象语法树节点FileAnalyzer负责补全默认数据库名并校验文件名与properties见 FileAnalyzer.java。权限检查AuthorizerStmtVisitor校验当前用户是否拥有 SYSTEM 级FILE权限。执行下载与落库SmallFileMgr.createFile调用downloadAndAddFile再进入downloadAndCheck见 SmallFileMgr.java完成以下关键步骤以 10 秒超时建立 HTTP 连接发起HEAD请求获取内容长度校验内容长度有效且不超过Config.max_small_file_size_bytes流式读取文件内容同时用MessageDigestMD5边读边计算摘要若指定了md5参数比对计算结果与期望值不一致则抛出Invalid md5sum of file in url异常并中止创建读取完成后通过GlobalStateMgr.getCurrentState().getNextId()为文件分配全局唯一 ID构造SmallFile对象文件内容以 Base64 编码保存在 FE 内存并随元数据写入 BDBJE 持久化同时记录大小、MD5 与isContenttrue标记。需要说明的是源码中save_content路径在分析阶段即被禁止因此当前版本的文件内容会被完整保存在 FE 内存中这也正是文件大小受max_small_file_size_bytes限制、且不适合存放大型二进制制品的原因。文件生命周期管理查看与删除查看文件SHOW FILE创建完成后可通过SHOW FILE查看数据库下的文件信息无需 SYSTEM 级权限只需具备文件所属数据库的任意权限。详见 SHOW_FILE.md。mysql SHOW FILE FROM test_db; ------------------------------------------------------------------------------------------------------ | Id | DbName | GlobalStateMgr | FileName | FileSize | IsContent | MD5 | ------------------------------------------------------------------------------------------------------ | 24016 | test_db | kafka | my_secret.txt | 43 | true | a7c71293869ec817515e61a9f0cfb48e | | 24072 | test_db | configs | db_config.txt | 18 | true | b1a32aaac8a739eac7b55a4364df8876 | ------------------------------------------------------------------------------------------------------ 2 rows in set (0.01 sec)返回列含义Id文件的全局唯一 IDDbName文件所属数据库GlobalStateMgr文件所属类别对应创建时指定的catalogFileName文件名FileSize文件大小单位为字节IsContent文件内容是否已完整上传存储true 或 falseMD5文件校验所用消息摘要。删除文件DROP FILE删除文件需 SYSTEM 级FILE权限。删除时文件会同时从 FE 内存与 BDBJE 中移除。详见 DROP_FILE.md。DROP FILE ca.pem properties(catalog kafka);DROP FILE的properties中catalog 为必填项——FileAnalyzer会校验 properties 中只允许出现catalog关键字且其值不能为空否则抛出globalStateMgr name is missing异常。实践建议与注意事项URL 仅支持无需认证的 HTTP(S) 地址下载完成后 URL 即可废弃请勿在创建后依赖原 URL 的可用性。务必指定catalog对于 Kafka 等数据源加载场景catalog是文件检索的命名空间需与数据源配置保持一致。善用md5校验对证书、密钥等关键文件建议预先计算 MD5 并随properties传入防止下载被劫持或文件损坏。控制文件大小文件内容保存在 FE 内存中并持久化到 BDBJE受max_small_file_size_bytes默认 100 MB限制仅适合存放小型配置文件。严格管控权限仅 admin 或获得 SYSTEM 级FILE权限的用户可创建、删除文件文件一旦创建即对整个数据库可见请确保文件名与内容不泄露敏感信息。相关语句配套使用完整的文件管理由CREATE FILE、SHOW FILE、DROP FILE三个语句构成相关文档均位于 cluster-management/file 目录可按需组合使用。【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考