
1) 【一句话结论】:涉密项目需通过传输加密(TLS)、存储加密(AES)保障数据安全,结合RBAC与ABAC实现细粒度权限控制,关键在于加密与权限验证的协同,以及密钥管理的工程化落地,有效降低数据泄露、篡改等风险。
2) 【原理/概念讲解】:
3) 【对比与适用场景】:
| 模型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| RBAC | 基于角色的静态权限分配 | 角色固定,权限与角色绑定,用户加入角色即获得权限 | 角色结构清晰的组织(如企业部门角色) | 需定期调整角色,避免权限冗余 |
| ABAC | 基于属性的动态权限控制 | 权限随属性变化,支持复杂条件判断 | 涉密项目、金融系统(需细粒度控制) | 计算开销大,需优化查询 |
4) 【示例】(伪代码与流程):
# 用户登录后,查询密文权限表
user = authenticate(user_id)
resource = get_resource(resource_id)
# 检查密文权限(无需解密)
if check_ciphertext_access(user, resource, ciphertext_permissions):
grant_access()
else:
deny_access()
# 数据传输(TLS)
client = TLSClient()
client.connect('server.example.com')
encrypted_data = client.encrypt(data) # 对称加密(AES)
client.send(encrypted_data)
# 数据存储(AES + KMS)
key = KMS.get_key('data_encryption_key', expiry=90) # 获取密钥,设置90天有效期
encrypted_data = AES.encrypt(data, key)
db.save(encrypted_data, metadata={'key_id': key.id})
5) 【面试口播版答案】:
“对于涉密项目,数据安全设计需三方面协同:传输用TLS加密防窃听,存储用AES加密防篡改,权限控制用RBAC+ABAC实现细粒度。比如传输时,客户端用TLS建立安全连接,数据加密后传输;存储时,数据加密后存数据库,密钥由KMS管理。权限方面,RBAC按角色分配(如管理员全权),ABAC按部门、密级动态授权,比如仅允许研发部员工在周一至周五访问绝密数据。加密后权限验证通过密文权限表,避免解密操作,提升安全性和效率。密钥管理上,每90天轮换一次,通过HSM存储,分发时需多因素认证,确保密钥安全。”
6) 【追问清单】:
7) 【常见坑/雷区】: