SelectDB Cloud
安全和信任
安全特性

安全特性

SelectDB Cloud 提供了完备的安全机制,以保证客户数据和服务的安全,比如隔离,认证,授权,加密,审计,容灾等。

产品架构

SelectDB Cloud 云原生数仓包含三个关键概念:组织、仓库和集群。它们作为产品设计的基石,构建起独立隔离、弹性可扩展的服务,帮助企业快速、安全的构建大数据分析业务的底座。

  • 组织:一个组织即代表一个企业或一个相对独立的团体,用户注册 SelectDB Cloud 后作为一个组织来使用服务。组织是 SelectDB Cloud 中的计费结算对象,不同组织间的计费、资源、数据是相互隔离的。
  • 仓库:仓库是一个逻辑概念,其中包括计算和存储资源。每个组织可创建多个仓库,用于满足不同业务的数据分析需求,如订单、广告、物流等业务。同样的,不同仓库间的资源、数据也相互隔离,可用于满足组织内部的安全需求。
  • 集群:集群为仓库内的计算资源,包含一个或多个计算节点,可以进行弹性扩缩容。一个仓库可以包含多个集群,它们共享底层的数据。不同集群可以满足不同的工作负载,如统计报表、交互式分析等,多个集群之间的工作负载互不干扰。

从技术角度看,SelectDB Cloud 的核心技术架构分为三层:

Service Layer

  • Manager:负责计算和存储资源的管理,用户创建仓库时,Manager 负责创建存储 Bucket;用户创建集群时,Manager 负责创建计算资源。
  • Metadata:存储组织、用户、仓库、集群、库表等元信息。
  • Security:负责安全策略设置,采用最小权限原则。

Compute Layer

  • 数据仓库:是一个逻辑概念,包括仓库元数据、集群、数据存储这些物理对象。
  • 集群:集群只包含计算资源和缓存数据,同一仓库的多个集群共享数据存储。

Storage Layer

  • 对象存储:仓库中的数据以文件的形式存储在云服务上的对象存储中。

安全层级

SelectDB Cloud 从资源隔离、认证鉴权、数据传输及存储等维度,提供了完备、全链路的数据安全特性:

  • 资源隔离:组织之间的存储、计算相互隔离。
  • 身份认证:证明访问者(用户或者应用)的身份。
  • 访问控制:设定用户对数据的访问权限,确保用户可以细粒度控制数据权限。
  • 数据保护:存储和传输加密,确保数据不会通过物理磁盘、网络监听泄露,支持数据容灾保护。
  • 网络安全:公网白名单、私网链接、组织间安全组、可选独立VPC 确保网络连接的安全。
  • 安全审计:对控制台和仓库内的操作进行透明和完整的审计。
  • 应用安全:SelectDB 云服务具备防攻击的能力。

资源隔离

SaaS 部署

SelectDB Cloud 通过存储和计算的隔离,保证不同组织之间的数据完全隔离:

数据存储

  1. 每个组织在每个云服务的区域使用单独的对象存储 bucket,bucket 设置为私有访问,使用 STS 鉴权。
  2. 每个仓库分配一个云服务的子账号,每个仓库的存储权限只授予这个子账号。
  3. Cache 数据只存储在集群本地,不同仓库之间不能相互访问。

计算资源

  1. 集群(cluster)不会跨仓库使用,即一个集群只会属于一个仓库。
  2. 每个组织的集群通过 安全组 设置严格的防火墙规则,确保不同组织之间的集群不可以互相连接。

BYOC 部署

SelectDB Cloud BYOC 部署形态下,数据存储和计算资源都完全保留在您自有 VPC 中,数据不出您的 VPC,保证了数据和计算的安全和合规性。

数据存储

数据完全保存在您自有 VPC 内,数据不出您的 VPC。

计算资源

  1. 计算资源完全在您自己的云资源池中,提供数据仓库服务。
  2. 一个仓库可以包含多个集群,它们共享底层的数据。不同集群可以满足不同的工作负载,如统计报表、交互式分析等,多个集群之间的工作负载互不干扰。

身份认证

任何访问 SelectDB Cloud 控制面或者数据面都要进行身份认证,主要用来确认访问者的身份。SelectDB Cloud 通过以下机制确保认证的可靠性:

  • 控制面
    • 支持多因子认证(MFA),通过邮箱密码、手机验证码等组合认证的方式,提升安全防护能力。
  • 数据面
    • MySQL 认证协议进行连接。
    • HTTP 协议数据交互需要进行身份验证,验证方式和 MySQL 协议保持一致。
    • 支持 IP 黑白名单机制进行身份验证。
  • 密码策略
    • 阻止设置弱密码,必须使用高强度密码。
    • 阻止暴力破解密码。
    • 用户密码加密存储。

访问控制

SelectDB 有组织、用户、仓内用户三层访问控制实体。组织是计费单位,同一组织下共享账单,用户用于控制面,比如创建删除数仓和集群,仓内用户用于数据面,可以对库表进行操作,类似与MySQL中的用户。

RBAC权限控制

一个组织下可以创建多个仓库,每个仓库之间的数据是隔离的。组织管理员可以对组织内的用户设置不同的角色,通过角色可以控制用户对仓库的创建/删除/编辑/查看/查询/监控的权限,详细请参考 SelectDB Cloud用户管理。 仓内用户参照了 MySQL 的权限管理机制,做到了表级别细粒度的权限控制,基于角色的权限访问控制,并且支持白名单机制,详细请参考 SelectDB Cloud权限管理。

行级别安全

管理员可以对符合条件的行做细粒度的权限控制,比如只允许某个用户访问符合条件的行,在多个用户对一张表中的不同数据行有不同权限时使用。 语法说明, row policy说明文档

CREATE ROW POLICY {NAME} ON {TABLE}
AS {RESTRICTIVE|PERMISSIVE} TO {USER} USING {PREDICATE};

示例 创建名为 test_row_policy_1的策略, 它禁止用户user1对table1的中 col1列值等于 1或者2 的行进行访问.

CREATE ROW POLICY test_row_policy_1 ON db1.table1
AS RESTRICTIVE TO user1 USING (col1 in (1, 2));

创建名为 test_row_policy_1的策略, 它允许用户user1对table1的中 col1列值等于 1或者2 的行进行访问.

CREATE ROW POLICY test_row_policy_1 ON db1.table1
AS PERMISSIVE TO user1 USING (col1 in (1, 2));

列级别安全 管理员可以通过视图的方式来实现列级别的权限控制,比如某个用户没有某列的访问权限,就可以创建一个不包含此列的视图给这个用户使用。 语法 (以下只展示了基础语法, 请参考view详细语法介绍)

CREATE VIEW {name} {view_column_list}
AS
SELECT {table_column_list} FROM {src_table}

示例 授权用户user1对表t1的列id和列name的读权限

create view view2 (id,name) as select id,name from t1
 
grant SELECT_PRIV to user1 on view2

数据屏蔽

SelectDB 提供了便捷的 mask 函数,可以屏蔽数字以及字符串。用户可以使用 mask 函数创建视图,然后通过仓内用户的访问控制管理视图的权限,从而实现针对用户的数据屏蔽。

语法说明

VARCHAR mask(VARCHAR str, [, VARCHAR upper[, VARCHAR lower[, VARCHAR number]]])

示例 返回 str 的掩码版本。 默认情况下,大写字母转换为“X”,小写字母转换为“x”,数字转换为“n”。 例如 mask("abcd-EFGH-8765-4321") 结果为 xxxx-XXXX-nnnn-nnnn。 您可以通过提供附加参数来覆盖掩码中使用的字符:第二个参数控制大写字母的掩码字符,第三个参数控制小写字母,第四个参数控制数字。 例如,mask("abcd-EFGH-8765-4321", "U", "l", "#") 会得到 llll-UUUU-####-####。

// table test
+-----------+
| name      |
+-----------+
| abc123EFG |
| NULL      |
| 456AbCdEf |
+-----------+
 
mysql> select mask(name) from test;
+--------------+
| mask(`name`) |
+--------------+
| xxxnnnXXX    |
| NULL         |
| nnnXxXxXx    |
+--------------+
 
mysql> select mask(name, '*', '#', '$') from test;
+-----------------------------+
| mask(`name`, '*', '#', '$') |
+-----------------------------+
| ###$$$***                   |
| NULL                        |
| $$$*#*#*#                   |
+-----------------------------+

数据保护

存储加密

  1. 可以使用云服务对象存储的存储加密,确保不能直接从对象存储或者物理磁盘获取有效数据。
  2. 可以使用云服务磁盘加密,确保不能直接从磁盘获取 Cache 中的有效数据。
  3. 可以使用 SelectDB 提供的加密函数,确保不能直接从对象存储、物理磁盘以及Cache磁盘中获取有效数据。
  4. SelectDB 秘钥轮转保护: 每个客户使用独立的秘钥,周期性对秘钥进行轮转,并通过安全的临时授权机制(STS 或 预签名机制)来访问对象,以规避秘钥泄漏的风险。
  5. 使用 RSA 加密算法对数据加密保护

传输加密

  1. MySQL 和 jdbc 协议访问支持 TLS 加密传输,并支持双向TLS验证(two-way TLS)。
  2. HTTPS 安全传输进行数据交互。

容灾保护

  • 数据、元数据存放采用多可用区存储架构,保证数据能够进行跨可用区容灾。
  • 对象存储默认开启 versioning,在应用层面保证对象多版本冗余。
  • 对元数据例行备份,提供容灾恢复能力。
  • 对元数据和数据例行检查,保证数据正确性、可靠性。
  • 支持 Warehouse 级别 TimeTravel (即将发布)。
  • 跨地域复制 CCR 。

网络安全

在最小权限的原则下,SelectDB 严格限制了 VPC 的网络安全规则,包括:

  • 外网访问必须通过网关。
  • 运维必须通过 VPN。
  • 组织隔离。

SelectDB 仓库提供了公网和私网链接两种网络连接方式:

  • 公网:必须在白名单里边的 IP 才可以访问,可以有效避免公网权限过大。
  • 私网连接:用户 VPC 内可以通过私网连接访问 SelectDB,私网连接可以确保只有单向连接以及只有设置的 VPC 才可以联通,这就有效的限制了访问来源。

安全审计

对于控制台的管控操作和仓库内核的访问操作都有完整的审计机制,客户可通过云产品控制台获取相应审计信息。

应用安全

SelectDB 通过云防火墙、Web 应用防火墙(WAF)、数据库审计等安全产品,来保障云服务应用安全。

© 2023 北京飞轮数据科技有限公司 京ICP备2022004029号 | Apache、Apache Doris 以及相关开源项目名称均为 Apache 基金会商标