授权模型:RBAC、MAC 与 DAC
比较基于角色、强制和自主访问控制模型,并了解它们分别适用于企业和政府环境中的哪些场景。
授权模型:RBAC、MAC 与 DAC 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。
访问控制模型概述
访问控制模型定义规则和策略,用于规定哪些主体(用户、进程)可以访问哪些对象(文件、系统、数据)。所选模型决定谁可以授予访问权限、如何分配权限以及如何实施控制。Security+ 考试涵盖四种主要模型:自主访问控制(DAC)、强制访问控制(MAC)、基于角色的访问控制(RBAC)和基于规则的访问控制。理解每种模型的优势及适用场景,对于设计有效的授权系统至关重要。
自主访问控制(DAC)
在自主访问控制(DAC)中,资源所有者可以自行决定谁能访问其资源,也可以向其他用户授予或撤销访问权限。“自主”的含义在于由所有者作出决定——系统负责执行这些决定,但不会替所有者作决定。大多数个人计算环境都使用此模型(Windows NTFS 文件权限、Linux/Unix 文件权限)。DAC 的安全局限在于,它要求每个资源所有者都作出正确的访问决定——获得文件访问权限的用户无需管理员介入,就能将该权限授予他人,从而可能使敏感数据扩散到预期受众之外。
# DAC example: Linux file permissions (owner controls access)
# Create a file and check default permissions
touch confidential_data.txt
ls -la confidential_data.txt
# -rw-rw-r-- 1 alice users (owner=alice, can read/write; group can read/write; others read)
# Owner (Alice) discretionarily removes all access for others
chmod 600 confidential_data.txt
# -rw------- 1 alice users (only Alice can read/write)
# Alice grants read to a specific user via ACL
setfacl -m u:bob:r confidential_data.txtDAC 风险:糊涂代理问题
DAC 存在两个固有的安全风险。传递性访问:用户 A 向用户 B 授予访问权限,用户 B 又向用户 C 授予访问权限——原始所有者甚至可能不知道 C 能访问自己的资源。糊涂代理问题:代表低权限用户执行操作的高权限程序,可能无意中以用户无法直接使用的方式行使自身权限。在 DAC 环境中,单个遭到入侵的账户可能访问授予该用户的所有资源,并且可能在入侵被发现前向其他人授予访问权限。DAC 使用方便,但会给严格的信息隔离带来挑战。
强制访问控制(MAC)
在强制访问控制(MAC)中,操作系统根据分配给主体(用户)和对象(数据)的安全标签实施访问策略。用户不能覆盖或更改这些策略,只有系统管理员或安全策略才能修改它们。MAC 用于政府和军事机密环境,在这些环境中必须严格隔离数据。拥有“机密”许可级别的用户不能访问标记为“绝密”的数据,即使数据所有者希望授予其访问权限。Bell-LaPadula 模型(禁止向上读、禁止向下写)和 Biba 模型(禁止向上写、禁止向下读)是正式的 MAC 实现。
# SELinux is a MAC implementation for Linux
# Check SELinux mode and policy
getenforce # Enforcing / Permissive / Disabled
sestatus # Detailed SELinux status
# View SELinux security context labels on files
ls -Z /etc/passwd
# system_u:object_r:passwd_file_t:s0 /etc/passwd
# Security context: user:role:type:level
# A process can only access files where its type has explicit permission
sudo ausearch -m avc -ts recent # View MAC policy denialsBell-LaPadula 与 Biba MAC 模型
两种正式的 MAC 模型通过数学规则表达安全目标。Bell-LaPadula关注机密性:主体不能读取高于自身分类级别的数据(禁止向上读),也不能将数据写入较低的分类级别(禁止向下写)。这可以防止敏感信息流向未授权用户。Biba关注完整性:主体不能写入更高的完整性级别(禁止向上写),也不能从较低的完整性级别读取(禁止向下读)。Biba 可以防止低完整性输入污染高完整性数据。实际的 MAC 系统(如 SELinux)会结合这两种模型的特性。
基于角色的访问控制(RBAC)
基于角色的访问控制(RBAC)将权限分配给角色,而不是直接分配给单个用户,然后再将用户分配到角色中。这样可以解决大规模分配个人权限的管理难题。企业环境中的常见角色包括:管理员、审计员、开发人员、HR_manager、finance_analyst。新员工加入时,只需将其添加到适当的角色中,便可立即继承该角色所需的全部权限。员工调岗时,只需更改其角色,权限就会自动调整。RBAC 是企业 IAM 系统中占主导地位的模型。
# RBAC example (database permissions)
# Create roles and assign permissions
CREATE ROLE readonly_analyst;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_analyst;
CREATE ROLE data_engineer;
GRANT SELECT, INSERT, UPDATE ON customer_data TO data_engineer;
# Assign users to roles
GRANT readonly_analyst TO alice;
GRANT data_engineer TO bob;
# When Alice is promoted: revoke old role, grant new one
REVOKE readonly_analyst FROM alice;
GRANT data_engineer TO alice;RBAC 的优势:可扩展性与职责分离
RBAC 的主要优势是管理可扩展性。修改角色的权限会立即影响该角色中的所有用户,无需跨数百个系统更新每个用户的记录。RBAC 还可以通过确保单个角色不拥有相互冲突的权限,自然支持职责分离(例如,一个角色不能同时创建和批准财务交易)。RBAC 也能简化合规工作:审计员可以审查角色及其权限,而不必审核数千个单独的用户分配。其局限是角色爆炸——组织有时会创建过多的细粒度角色,导致管理复杂性增加,削弱可扩展性带来的优势。
基于规则的访问控制
基于规则的访问控制(不要与 RBAC 混淆)根据一组条件规则授予或拒绝访问权限,而不只是依据身份或角色。防火墙规则是经典示例:“允许从 192.168.1.0/24 通过 TCP 访问任意地址的 443 端口。拒绝所有其他流量。”系统会按顺序根据规则评估访问请求,直到找到匹配项。基于规则的控制通常会与其他模型结合使用:MAC 使用安全标签作为规则,而基于属性的访问控制(ABAC)则扩展基于规则的逻辑,同时评估多个属性(用户部门、设备类型、一天中的时间、资源分类),以作出细粒度的决定。
# Rule-based access control: iptables firewall rules
# Rules are evaluated in order; first match wins
# Allow established/related connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow specific source IP to SSH
iptables -A INPUT -s 10.0.0.100 -p tcp --dport 22 -j ACCEPT
# Allow HTTPS from anywhere
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Default deny all other inbound
iptables -A INPUT -j DROP基于属性的访问控制(ABAC)
ABAC(基于属性的访问控制)是最灵活、最细粒度的访问控制模型。访问决定会同时评估多个属性:主体属性(用户部门、许可级别、位置)、对象属性(数据分类、所有者部门、保留标签)、环境属性(一天中的时间、设备类型、网络位置)以及操作属性(读取、写入、删除)。某项策略可能规定:“如果 user.department = Finance 且 resource.classification = Internal 且 device.type = corporate 且 time.hour BETWEEN 8 AND 18,则允许访问。”ABAC 支持零信任策略决策,并由 XACML 等产品和云 IAM 策略引擎实现。
选择合适的模型
合适的访问控制模型取决于安全要求和组织环境。DAC:适合重视便利性而非严格控制的个人计算环境和小型团队。MAC:严格隔离信息的政府或军事机密环境所必需。RBAC:适合管理可扩展性至关重要且角色能清晰对应工作职能的企业。ABAC:适合需要上下文感知、细粒度策略的云环境和零信任架构。实际上,大多数组织会组合使用多种模型:以 RBAC 为基础,并使用 ABAC 作出对上下文敏感的访问决定。
访问控制列表(ACL)
无论采用哪种访问控制模型,访问控制列表(ACL)都是最常见的技术实现机制。附加到资源上的 ACL 会指定哪些主体可以执行哪些操作。文件系统 ACL(Windows NTFS、Linux POSIX ACL)控制文件和目录的访问。网络 ACL控制路由器或云网络层面的流量流向。数据库 ACL控制表级和行级访问。ACL 可以实现前面讨论的任何模型:当文件所有者控制其 ACL 时,该文件的 ACL 实现 DAC;当标签决定条目时,安全系统的 ACL 实现 MAC;当条目引用角色时,应用程序的 ACL 实现 RBAC。
# Windows NTFS ACL example using icacls
# View current ACL on a folder
icacls 'C:\Sensitive\HR_Data'
# BUILTIN\Administrators:(OI)(CI)(F) <- Full control
# CONTOSO\HR_Team:(OI)(CI)(RX) <- Read and Execute
# Grant specific permissions to HR Managers group
icacls 'C:\Sensitive\HR_Data' /grant 'CONTOSO\HR_Managers:(OI)(CI)(M)'
# (OI)=Object Inherit, (CI)=Container Inherit, (M)=Modify
# Remove access for a former contractor
icacls 'C:\Sensitive\HR_Data' /remove 'CONTOSO\contractors'快速检查
测试您对本课 CompTIA Security+(SY0-701)概念的理解。
课程回顾
在本课中,您学习了:DAC 允许资源所有者控制访问(灵活但存在风险);MAC 使用系统强制执行的安全标签(严格,用于机密环境);RBAC 将权限分配给角色,以便企业规模化管理;ABAC 评估多个属性,以执行细粒度的零信任决策。接下来,我们将学习联合身份:SAML、OAuth 和 OpenID Connect。
常见问题解答
「授权模型:RBAC、MAC 与 DAC」课时是免费的吗?
是的 — 「授权模型:RBAC、MAC 与 DAC」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「授权模型:RBAC、MAC 与 DAC」这节课中我会学到什么?
比较基于角色、强制和自主访问控制模型,并了解它们分别适用于企业和政府环境中的哪些场景。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「授权模型:RBAC、MAC 与 DAC」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 密码策略与多因素身份验证
- 生物识别与基于令牌的身份验证
- 授权模型:RBAC、MAC 与 DAC
- 联合身份:SAML、OAuth 与 OpenID Connect