访问控制与加密
保护静态数据
访问控制与加密 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
保护静态数据
数据库存放着最重要的资产,因此有两项控制措施最为关键:访问控制(谁可以接触数据)和加密(即使数据被窃取,也使其失去作用)。
两者结合后,既能保护系统运行期间的数据,也能保护磁盘或备份被窃取时的数据。
身份验证与授权
请区分这两个概念:
- 身份验证用于证明您是谁(登录、证书、IAM 令牌)。
- 授权决定您在身份确认后可以执行哪些操作。
强大的数据库安全需要两者兼备:经过验证的身份和严格限定范围的权限。
最小权限原则
只向每个账户授予其所需的权限,不要授予更多权限。报表服务应为只读;用于写入的应用不应能够对表执行 DROP。
CREATE ROLE report_reader;
GRANT SELECT ON sales.* TO report_reader;
GRANT report_reader TO 'analytics_svc'@'%';基于角色的访问控制
RBAC 将权限分组为角色,并将角色分配给用户。与按用户逐一授予权限相比,这种方式更易扩展,也能让审计更加清晰。
- 定义角色:
read_only、app_writer、dba。 - 将用户分配到角色。
- 定期审查角色成员关系。
行级与列级安全
细粒度控制可以限制表内的数据访问范围。
- 列级:对某些角色隐藏薪资或 SSN 列。
- 行级安全(RLS):每个租户只能查看属于自己的行。
-- PostgreSQL row-level security
ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON orders
USING (tenant_id = current_setting('app.tenant')::int);静态数据加密
静态数据加密可以保护磁盘上的数据。如果有人窃取了磁盘或备份文件,没有密钥就无法读取其中的内容。
可选方案包括全盘加密、文件系统加密以及数据库原生的透明数据加密(TDE)。
透明数据加密
TDE 会自动加密数据库文件。应用程序无需进行任何更改;数据库引擎会在写入时加密,在读取时解密。它可以防御文件被窃取的情况,但无法防御已经拥有有效数据库会话的攻击者。
-- SQL Server example concept
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE tde_cert;
ALTER DATABASE appdb SET ENCRYPTION ON;列级加密
对于特别敏感的字段(银行卡号、健康数据),请加密单独的列。即使是 DBA,也不会在数据库中看到明文。
权衡之处在于:加密列难以建立索引和搜索,因此应有选择地应用列级加密。
传输中加密
数据在传输链路上同样需要保护。要求所有客户端与数据库之间的连接使用 TLS,这样凭据和结果集就不会被窃听。
-- PostgreSQL: force SSL in pg_hba.conf
hostssl appdb webapp 0.0.0.0/0 scram-sha-256
-- reject non-TLS:
hostnossl appdb all 0.0.0.0/0 reject密钥管理
加密的强度取决于密钥管理的安全性。绝不要将密钥存放在受其保护的数据旁边。
- 使用密钥管理服务(KMS)或 HSM。
- 按计划轮换密钥。
- 分离职责:DBA 不应同时持有主密钥。
综合应用
保护静态数据的分层模型:
- 验证每个连接的身份(TLS + 强凭据)。
- 通过 RBAC 和最小权限进行授权。
- 在需要细粒度控制时应用 RLS 和列级安全。
- 对静态数据进行加密(TDE),并单独加密敏感列。
- 在独立于数据库的 KMS 中管理密钥。
快速检查
思考每项控制措施可以防御哪些威胁。
回顾
通过结合访问控制与加密,可以保护静态数据:
- 区分身份验证与授权。
- 实施最小权限和 RBAC,并在需要时采用行级或列级安全。
- 对静态数据(TDE、列级加密)和传输中的数据(TLS)进行加密。
- 在独立的 KMS 中管理密钥,并定期轮换密钥。
常见问题解答
「访问控制与加密」课时是免费的吗?
是的 — 「访问控制与加密」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「访问控制与加密」这节课中我会学到什么?
保护静态数据 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「访问控制与加密」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。