51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

设计安全数据的存储方案,要求满足数据隐私合规(如个人信息保护法)和访问控制需求。请说明加密方式(如字段级加密、全表加密)、访问控制策略(如RBAC、细粒度权限)及审计机制。

360安全开发实习生-引擎难度:中等

答案

1) 【一句话结论】:采用字段级加密(针对敏感字段如身份证、手机号)结合细粒度RBAC(基于角色和记录/字段权限)的访问控制,并部署全链路审计日志,确保数据隐私合规(符合个人信息保护法)且访问可控。

2) 【原理/概念讲解】:老师讲解:

  • 数据加密:
    • 字段级加密:仅对敏感字段(如“身份证号”“手机号”)加密,其他字段明文存储(类比“给每个敏感字段上锁,只锁需要保密的部分,不影响其他操作”);
    • 全表加密:整个表所有字段加密(查询时需解密,性能开销大,适合数据整体保密场景,如加密数据库)。
  • 访问控制:
    • RBAC(基于角色的访问控制):定义角色(如“管理员”“普通用户”),分配权限(如管理员有全表读/写,分析师只能读特定字段);
    • 细粒度权限:权限到记录或字段(如用户A只能访问自己的记录,管理员可访问所有记录,甚至字段级,如普通用户只能读取姓名,管理员可读取身份证)。
  • 审计机制:记录所有对敏感数据的操作(谁、何时、何地、操作类型、操作结果)(类比“给所有数据操作拍照片,留痕”),用于追踪和合规检查。

3) 【对比与适用场景】:

模型定义特性使用场景注意点
字段级加密仅对敏感字段加密,其他明文性能影响小,存储效率高,解密粒度细用户信息表(身份证、手机号加密,姓名明文)密钥管理复杂,需字段映射表
全表加密整个表所有字段加密数据整体保密,但查询需解密,性能低敏感数据集中存储(如加密数据库)性能开销大,适合数据整体保密场景

访问控制模型对比:

  • RBAC:基于角色,权限分配到角色,角色分配到用户,适合角色固定、权限集中管理的场景(如系统管理员、普通用户);
  • 细粒度(如ABAC):权限到记录/字段,如用户A只能访问自己的记录,管理员可访问所有记录,适合数据隔离需求高的场景(如金融、医疗)。

4) 【示例】:假设存储用户表(user),字段有id(主键)、username(明文)、password_hash(哈希)、phone(字段级加密)、idcard(字段级加密)。

  • 加密方式:phone和idcard字段用AES-256加密,密钥存储在密钥管理系统(KMS),解密时通过KMS获取密钥。
  • 访问控制:角色分为admin(管理员)、user(普通用户)。admin有全表读写权限,user仅能访问自己的记录(id=当前用户id),且字段级权限(普通用户只能读取username,管理员可读取身份证)。
  • 审计:所有操作记录到审计日志表(audit_log),字段包括操作类型(op_type)、操作用户(op_user)、操作时间(op_time)、操作记录(op_record,JSON格式)。

伪代码示例:

-- 创建用户表
CREATE TABLE user (
    id INT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password_hash CHAR(64) NOT NULL,
    phone VARBINARY(256) NOT NULL,  -- 加密后存储
    idcard VARBINARY(256) NOT NULL  -- 加密后存储
);

-- 创建审计日志表
CREATE TABLE audit_log (
    log_id BIGINT PRIMARY KEY,
    op_type VARCHAR(10),
    op_user VARCHAR(50),
    op_time TIMESTAMP,
    op_record JSON
);

-- 插入用户(字段级加密)
INSERT INTO user (id, username, password_hash, phone, idcard)
VALUES (1, 'user1', 'hash1', AES_ENCRYPT('13800138000', KMS_KEY), AES_ENCRYPT('110101199001011234', KMS_KEY));

-- 更新用户手机号(字段级加密)
UPDATE user
SET phone = AES_ENCRYPT('13800138001', KMS_KEY)
WHERE id = 1;

-- 查询用户(解密字段)
SELECT id, username, phone = AES_DECRYPT(phone, KMS_KEY) AS phone, idcard = AES_DECRYPT(idcard, KMS_KEY) AS idcard
FROM user
WHERE id = 1;

5) 【面试口播版答案】:(60-120秒)
“面试官您好,针对安全数据的存储方案,核心思路是采用字段级加密+细粒度RBAC访问控制+全链路审计。具体来说,对敏感字段(如身份证、手机号)做字段级加密,用AES-256算法,密钥由密钥管理系统(KMS)管理,保证数据存储时敏感信息不可见;访问控制上,通过RBAC模型定义角色(如管理员、普通用户),管理员拥有全表读写权限,普通用户仅能访问自己的记录,且字段级权限控制(如普通用户只能读取姓名,管理员可读取身份证),满足细粒度需求;审计方面,所有对敏感数据的操作(增删改查)都会记录到审计日志,包含操作者、时间、操作前后的数据,用于追踪和合规检查。这样既能符合个人信息保护法对数据隐私的要求,又能有效控制数据访问,确保安全。”

6) 【追问清单】:

  • 问:加密算法如何选择?比如AES-256是否足够?
    回答要点:AES-256是目前主流对称加密算法,安全性高,符合数据加密标准(如FIPS 140-2),密钥长度256位,抗攻击能力强。
  • 问:密钥管理方案?比如密钥泄露怎么办?
    回答要点:密钥存储在密钥管理系统(KMS),采用硬件安全模块(HSM)保护密钥,密钥轮换机制(定期更换密钥),访问密钥需多因素认证(MFA),确保密钥安全。
  • 问:字段级加密对查询性能影响大吗?
    回答要点:字段级加密相比全表加密,查询时只需解密敏感字段,性能影响较小;可通过缓存解密结果(如内存缓存)优化,减少解密次数。
  • 问:审计日志如何保证不可篡改?
    回答要点:审计日志存储在不可变存储(如对象存储或日志数据库),采用时间戳和哈希值(如SHA-256)验证日志完整性,防止篡改。
  • 问:权限变更流程?比如管理员调整用户权限后,如何同步?
    回答要点:权限变更通过角色管理模块实现,变更后立即更新用户角色,并触发审计日志记录权限变更操作,确保权限变更可追溯。

7) 【常见坑/雷区】:

  • 坑1:直接采用全表加密,忽略性能影响。全表加密会导致查询时需解密所有字段,性能下降显著,不适合高并发场景。
  • 坑2:密钥管理不当,密钥泄露导致数据泄露。若密钥存储在明文或未加密的存储中,攻击者可获取密钥,解密所有加密数据。
  • 坑3:访问控制模型过于粗粒度,如只按角色控制,无法满足字段级权限需求。例如,普通用户可能误操作访问他人敏感字段,导致隐私泄露。
  • 坑4:审计日志不完整,未记录操作前后的数据。若审计日志只记录操作类型,无法追踪数据变化,不符合合规要求。
  • 坑5:未考虑数据脱敏。在非必要场景下,敏感字段应脱敏(如显示部分号码),减少数据泄露风险。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1