MST

星途 面试题库

面试题:MySQL Schema设计时如何保障数据的保密性

当设计MySQL Schema以存储敏感数据时,从数据加密、权限控制等方面阐述如何保障数据保密性,以及这些措施对Schema结构和性能的影响。
31.3万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

数据加密

  1. 字段级加密
    • 方法:使用加密函数(如在MySQL 8.0及以上版本支持的CREATE ENCRYPTED COLUMN语法)对敏感字段进行加密存储。例如,对于用户密码字段password,可以采用CREATE TABLE users (id INT, password VARBINARY(255) ENCRYPTED WITH 'aes-256-cbc' STORED AS ('iv' = '1234567890123456', 'key' = 'my_secret_key'));
    • 对Schema结构影响:会改变字段的数据类型,通常从明文类型(如VARCHAR)变为VARBINARY等二进制类型,因为加密后的数据是以二进制形式存储。
    • 对性能影响:加密和解密操作会增加CPU的负载,导致插入、更新和查询操作变慢。插入和更新时需要加密数据,查询时需要先解密数据。
  2. 透明数据加密(TDE)
    • 方法:MySQL Enterprise Edition支持TDE,它对整个数据库文件进行加密。启用TDE后,数据库文件在磁盘上以加密形式存储,当数据库服务器读取或写入文件时,数据会自动解密或加密。
    • 对Schema结构影响:Schema结构本身不受影响,因为加密是在文件层面,对数据库的逻辑结构没有改变。
    • 对性能影响:由于文件的加密和解密操作,会带来一定的I/O性能开销,尤其是在大数据量读写时。

权限控制

  1. 用户权限管理
    • 方法:使用GRANTREVOKE语句来控制用户对敏感数据的访问权限。例如,只允许特定用户对users表的非敏感字段有SELECT权限,而对敏感字段(如password)没有任何权限:GRANT SELECT (id, username) ON database_name.users TO'specific_user'@'host';
    • 对Schema结构影响:不影响Schema的物理或逻辑结构,但从安全设计角度,可能需要在创建表和用户时,根据权限规划进行合理安排。
    • 对性能影响:权限检查在每次数据库操作时都会进行,会带来轻微的性能开销,但相比加密操作,这种开销通常较小。
  2. 角色权限管理
    • 方法:创建角色并赋予角色特定的权限,然后将用户添加到角色中。例如,创建一个finance_role角色,对财务相关表有特定的读写权限,然后将相关财务人员的用户添加到该角色:CREATE ROLE 'finance_role'; GRANT SELECT, INSERT, UPDATE ON finance_table TO 'finance_role'; GRANT 'finance_role' TO 'user1'@'host', 'user2'@'host';
    • 对Schema结构影响:不影响Schema结构,但在设计Schema时,可以考虑按业务功能(如财务、人事等)对表进行划分,以便更好地进行角色权限管理。
    • 对性能影响:与用户权限管理类似,角色权限检查带来的性能开销较小。