作者:肖圣龙 | StoneData 技术架构师
审核:王博
引言:
随着数据分析在企业和组织中的重要性一直减少,数据仓库成为解决大规模数据集和反对简单剖析的首选解决方案,如何保障数据安全由此成为了在数据分析过程中不可漠视的重要问题。身份认证与拜访控制策略是构建安全可靠的数仓环境的外围因素,StoneData 作为一款新一代高性能、低成本的一站式实时数仓,已具备健全的身份认证与访问控制能力。 本文将围绕着账号合规、明码策略、主机名校验和基于角色的访问控制模型等,具体介 StoneData 的身份认证与访问控制能力。
一、身份认证
身份认证模块是确保账号平安的外围组成部分。 该模块综合利用了账号合规、明码策略和主机名校验等性能,提供了弱小的身份认证机制。以下是具体论述这些内容在身份认证模块中的整合和利用:
1.1. 账号合规性
账号合规性即要求用户创立符合规范的账号。这包含应用非法的字符、防止敏感信息作为账号名等。通过账号合规要求,StoneData 能够确保账号的可识别性和一致性,进步治理的便捷性和安全性。
图 1 -1: 账号名和明码校验逻辑
1.1.1. 非法字符要求
为了确保账号的规范性和可识别性,咱们要求用户只能应用非法字符来创立账号。 非法字符指的是那些合乎安全性和兼容性要求的字符集。StoneData 限度账号只能蕴含大小写字母和数字以及短横线,这样的限度有助于防止可能导致数据仓库故障或安全漏洞的非法字符应用。
1.1.2. 敏感信息防止
为了爱护账号的安全性和隐衷,用户在创立账号时应尽量避免在账号中应用敏感信息,如集体身份证号码、银行账号等,以此来缩小可能导致的身份偷盗和欺诈行为的危险。
1.1.3. 账号治理性能
为了不便管理员对账号进行治理和监控,StoneData 提供了账号治理性能。 管理员能够通过该性能对账号进行增加、批改、删除等操作。以此帮忙管理员更好地管制和保护账号,确保账号的合规性和安全性。
1.2. 明码 策略
身份认证模块中的明码策略要求用户设置强明码,以避免明码被猜想或被破解。 此外,咱们激励用户定期更换明码,以升高明码被破解的危险。在明码存储方面,StoneData 采纳密文存储,以此进步账号的安全性。
图 1 -2: 明码存储逻辑示意
1.2.1. 强明码策略
强明码策略是爱护账号平安的首要步骤。StoneData 的明码策略要求明码长度不少于 8 个字符,蕴含大小写字母、数字或特殊字符这 4 种元素中的至多 3 种。
1.2.2. 明码存储与加密
StoneData 采纳平安的明码存储和加密机制,以爱护用户明码的安全性。存储用户明码时,StoneData 采纳加密算法对明码进行哈希运算,再存储其哈希值。这样即便数据库受到未经受权的拜访,黑客也无奈取得用户的明文明码。
1.3. 机名校验
账号和主机名同步校验是一项重要的安全措施。StoneData 账号名中的主机名策略容许管理员限度特定账号只能从特定的主机名或 IP 地址进行登录。 通过灵便的主机名匹配规定能够确保管理员可能依据具体需要进行定制化的主机名限度策略。以下是具体论述这一安全措施的工作原理和施行办法:
1.3.1. 主机名限度策略
在 StoneData 中,账号名采纳“用户名 @主机名”的格局,其中主机名能够是 IP 地址或特定域名。 咱们能够为每个账号设置特定的主机名限度,这意味着该账号只能从与其关联的特定主机名或 IP 地址进行登录。
1.3.2. 同步校验过程
在登录过程中,StoneData 首先会验证账号和明码的正确性。一旦账号和明码通过验证,接下来会进行账号和主机名的同步校验。
1.3.3. 主机名匹配规定
StoneData 应用灵便的主机名匹配规定,以确保与账号关联的主机名限度失去无效利用。 管理员能够依据具体需要抉择适当的匹配模式,确保账号与主机名的限度达到预期成果。现反对以下几种主机名匹配模式:(1)准确匹配准确匹配要求登录申请的主机名与账号设置的主机名齐全匹配。只有在主机名齐全相符的状况下,登录申请才会被承受。
- 本机拜访(localhost):限度账号仅能在本机拜访
- IP 地址拜访(仅反对 IPv4 地址):准确匹配单个 IP 地址,如 10.1.0.23、192.168.32.1
(2)通配符匹配通配符匹配容许应用通配符来含糊匹配主机名。StoneData 当初仅反对百分号通配符:
- 百分号(%)通配符:容许来自任一主机发动的申请。
1.3.4. 安全性加强
账号和主机名同步校验的措施加强了 StoneData 的安全性,提供了额定的保护层。 既能避免对数据库的歹意拜访,也能加重企业外部可能带来的威逼。(1)避免歹意拜访通过限度账号只能从特定的主机名或 IP 地址进行登录,StoneData 能够无效避免歹意用户通过其余主机或 IP 地址尝试非受权拜访数据库。即便攻击者取得了正确的账号和明码,因为主机名不匹配,他们也无奈胜利登录。(2)加重外部威逼通过限度账号只能从指定的 IP 登录,StoneData 能够缩小内部人员滥用权限的危险。即便内部人员获取了其他人的账号和明码,因为 IP 不匹配,他们也无奈登录到零碎。
二、访问控制
StoneData 的拜访控制策略通过 RBAC(Role-Based Access Control)模型实现,这是一种基于角色的访问控制模型。 RBAC 定义了一套明确的权限治理规定,通过角色的受权来治理用户对数据库资源的拜访权限。在此基础上,为不便对用户的组织治理,咱们引入了用户组的概念,以进一步提高权限治理的效率和灵活性。同时,咱们兼容了 MySQL 的用户专属权限性能,以适应 MySQL 权限生态体系。 以下是 StoneData 拜访控制策略的组成部分及其性能阐明:
图 2 -1: RBAC 模型关系示意
2.1. 角色(Roles)
角色用于组织一系列相干权限。在 StoneData 中,角色能够被赋予特定的操作权限,例如读取、写入、更新、删除等。角色能够依据用户的职责或工作职能进行定义,例如管理员、数据分析师、普通用户等。通过角色,StoneData 能够实现权限的集中管理和灵便调配。
2.2. 用户(Users)
用户是零碎中的具体操作者,能够被调配一个或多个角色。每个用户能够依据其职责或工作需要被调配适当的角色,从而取得相应的权限。 用户能够通过角色来拜访数据库中的资源,并执行与其角色关联的操作。此外,用户还能够通过被授予专属权限的形式来取得对数据库中资源的拜访权限。
2.3. 用户组(User Groups)
用户组是将具备类似权限需要的用户进行组织的一种形式。 用户组能够依据组织的构造、部门或职能来定义,例如部门 A、部门 B 或管理员组等。用户组的应用能够简化权限治理,特地是在领有大量用户的状况下,能够将用户分组,便于集中管理和权限调配。
2.3.1. 分组策略
依据数据分析需要、用户职能和平安要求,制订适当的用户组策略。 用户组应该基于角色和权限的相关性,将具备相似权限需要的用户划分到相应的用户组中。
2.3.2. 组成员治理
定期审查和更新用户组的成员。 当用户的角色或职责发生变化时,需及时调整其所属的用户组。此外,应制订适当的程序来增加或移除用户组成员,以确保权限的正确调配和撤销。
2.3.3. 用户组权限
通过对用户组调配相应的角色使得用户组取得相干的权限。当把用户调配至用户组时,用户主动取得该用户组所关联的权限。
2.4. 权限(Permissions)
权限定义了能够执行的具体操作或拜访数据库资源的能力。 在 RBAC 模型中,权限与角色相关联,通过角色来管制和限度用户对数据库资源的拜访。权限能够包含对表、视图、数据库等对象的读取、写入、更新、删除等操作。通过授予角色和用户适当的权限,RBAC 模型确保了对数据库资源的细粒度访问控制。
2.5. 受权(Authorization)
受权是 RBAC 模型的关键步骤,用于将权限与角色或者与用户关联起来,并将相应的角色调配给用户。受权过程通过管理员或受权者来实现,他们依据用户的职责和需要,为用户调配适当的角色和权限。受权过程中须要进行粗疏的权限剖析和受权策略的制订,以确保用户仅取得其所需的最小权限。
三、 波及的 SQL 语法
3.1. 用户治理
3.1.1. 创立用户
CREATE USER [if not exists] user auth_option [, user auth_option] ...
auth_option: {IDENTIFIED BY 'auth_string'}
3.1.2. 删除用户
DROP USER [IF EXISTS] user [, user] ...
3.1.3. 重命名用户
RENAME USER old_user TO new_user [, old_user TO new_user] ...
3.1.4. 设置用户明码
SET PASSWORD [FOR user] auth_option
auth_option: {= 'auth_string'}
3.1.5. 查问用户信息
SHOW USERS [FOR role_name_or_group_name] [LIKE 'pattern']
3.2. 角色治理
3.2.1. 创立角色
CREATE ROLE [IF NOT EXISTS] role [, role] ...
3.2.2. 删除角色
DROP ROLE [IF EXISTS] role [, role] ...
3.2.3. 查问角色信息
SHOW ROLES [FOR username_or_group_name] [LIKE 'pattern']
3.3. 用户组 治理
3.3.1. 创立用户组
CREATE USERGROUP [if not exists] user_group [, user_group] ..
3.3.2. 删除用户组
DROP USERGROUP [IF EXISTS] user_group [, user_group] ...
3.3.3. 查问用户组信息
SHOW USERGROUPS [FOR role_name_or_username] [LIKE 'pattern']
3.4. 受权治理
3.4.1. 授予权限
REVOKE [IF EXISTS] priv_type [(column_list)] [, priv_type [(column_list)]] ... ON priv_level FROM user_or_role [, user_or_role] ... [IGNORE UNKNOWN USER]
REVOKE [IF EXISTS] ALL [PRIVILEGES], GRANT OPTION FROM user_or_role [, user_or_role] ... [IGNORE UNKNOWN USER]
REVOKE [IF EXISTS] role [, role] ... FROM user_or_group [, user_or_group] ... [IGNORE UNKNOWN USER]
REVOKE [IF EXISTS] user [, user] ... FROM group [, group] ... [IGNORE UNKNOWN USER]
priv_level: {* | *.* | db_name.* | db_name.tbl_name | tbl_name}
user_or_role: {user_name | role_name}
user_or_group:{user_name | group_name}
3.4.2. 回收权限
REVOKE [IF EXISTS] priv_type [(column_list)] [, priv_type [(column_list)]] ... ON priv_level FROM user_or_role [, user_or_role] ... [IGNORE UNKNOWN USER]
REVOKE [IF EXISTS] ALL [PRIVILEGES], GRANT OPTION FROM user_or_role [, user_or_role] ... [IGNORE UNKNOWN USER]
REVOKE [IF EXISTS] role [, role] ... FROM user_or_group [, user_or_group] ... [IGNORE UNKNOWN USER]
REVOKE [IF EXISTS] user [, user] ... FROM group [, group] ... [IGNORE UNKNOWN USER]
priv_level: {* | *.* | db_name.* | db_name.tbl_name | tbl_name}
user_or_role: {user_name | role_name}
user_or_group:{user_name | group_name}
3.4.3. 展现领有的权限信息
SHOW GRANTS FOR user_or_role_or_usergroup
总结
通过综合的身份认证与拜访控制策略,StoneData 构建了一个安全可靠的数据分析环境。 账号合规、明码策略、主机名校验和基于角色的访问控制模型等模块为用户提供了多重保护层,确保只有受权用户可能拜访敏感数据,并以此保护数据分析过程的安全性和完整性。作为 StoneData 的使用者,遵循这些平安最佳实际能够无效爱护数据资产,预防潜在的平安威逼。 StoneData 将不断改进和更新安全策略,以继续为用户提供可信赖的数据分析平台。
如有试用需要,能够增加小石侠微信分割咱们: