安全特性
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 通过存储和计算的隔离,保证不同组织之间的数据完全隔离:
数据存储
- 每个组织在每个云服务的区域使用单独的对象存储 bucket,bucket 设置为私有访问,使用 STS 鉴权。
- 每个仓库分配一个云服务的子账号,每个仓库的存储权限只授予这个子账号。
- Cache 数据只存储在集群本地,不同仓库之间不能相互访问。
计算资源
- 集群(cluster)不会跨仓库使用,即一个集群只会属于一个仓库。
- 每个组织的集群通过 安全组 设置严格的防火墙规则,确保不同组织之间的集群不可以互相连接。
BYOC 部署
SelectDB Cloud BYOC 部署形态下,数据存储和计算资源都完全保留在您自有 VPC 中,数据不出您的 VPC,保证了数据和计算的安全和合规性。
数据存储
数据完全保存在您自有 VPC 内,数据不出您的 VPC。
计算资源
- 计算资源完全在您自己的云资源池中,提供数据仓库服务。
- 一个仓库可以包含多个集群,它们共享底层的数据。不同集群可以满足不同的工作负载,如统计报表、交互式分析等,多个集群之间的工作负载互不干扰。
身份认证
任何访问 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 |
| $$$*#*#*# |
+-----------------------------+
数据保护
存储加密
- 可以使用云服务对象存储的存储加密,确保不能直接从对象存储或者物理磁盘获取有效数据。
- 可以使用云服务磁盘加密,确保不能直接从磁盘获取 Cache 中的有效数据。
- 可以使用 SelectDB 提供的加密函数,确保不能直接从对象存储、物理磁盘以及Cache磁盘中获取有效数据。
- SelectDB 秘钥轮转保护: 每个客户使用独立的秘钥,周期性对秘钥进行轮转,并通过安全的临时授权机制(STS 或 预签名机制)来访问对象,以规避秘钥泄漏的风险。
- 使用 RSA 加密算法对数据加密保护
传输加密
- MySQL 和 jdbc 协议访问支持 TLS 加密传输,并支持双向TLS验证(two-way TLS)。
- HTTPS 安全传输进行数据交互。
容灾保护
- 数据、元数据存放采用多可用区存储架构,保证数据能够进行跨可用区容灾。
- 对象存储默认开启 versioning,在应用层面保证对象多版本冗余。
- 对元数据例行备份,提供容灾恢复能力。
- 对元数据和数据例行检查,保证数据正确性、可靠性。
- 支持 Warehouse 级别 TimeTravel (即将发布)。
- 跨地域复制 CCR 。
网络安全
在最小权限的原则下,SelectDB 严格限制了 VPC 的网络安全规则,包括:
- 外网访问必须通过网关。
- 运维必须通过 VPN。
- 组织隔离。
SelectDB 仓库提供了公网和私网链接两种网络连接方式:
- 公网:必须在白名单里边的 IP 才可以访问,可以有效避免公网权限过大。
- 私网连接:用户 VPC 内可以通过私网连接访问 SelectDB,私网连接可以确保只有单向连接以及只有设置的 VPC 才可以联通,这就有效的限制了访问来源。
安全审计
对于控制台的管控操作和仓库内核的访问操作都有完整的审计机制,客户可通过云产品控制台获取相应审计信息。
应用安全
SelectDB 通过云防火墙、Web 应用防火墙(WAF)、数据库审计等安全产品,来保障云服务应用安全。