漫谈IAM系列——访问控制基础概念(一)

发布网友 发布时间:2024-09-26 17:50

我来回答

1个回答

热心网友 时间:2024-10-04 14:57

访问控制(Access Control)的概念

访问控制是指对资源的访问的更通用的控制方法,或者说机制,它与“谁可以做什么”有关。例如,公司的跳板机(Jump Server)只允许在办公网络下访问,这是一种访问控制方式;例如,你需要方舟需要登录账号密码才能使用,这是一种访问控制方式;例如,方舟除了需要账号密码登录外,还需要你拥有方舟的权限才能正常使用,这也是一种访问控制方式。

访问控制可以说是当今使用的最基本和最普遍的安全机制。访问控制几乎出现在所有系统中,并在企业计算的各个层面带来了巨大的架构和管理挑战。从业务的角度来看,访问控制有可能促进资源的最佳共享和交换,但它也有可能使用户感到沮丧,增加大量管理成本,并导致有价值信息的未经授权的披露或损坏。

信息安全基本原理

因为访问控制是信息安全的一个解决方案,在介绍访问控制的核心概念之前,有必要先介绍信息安全的基本原理。只有了解了信息安全的基本原理,我们才能更好地理解访问控制解决了信息安全的什么问题。信息安全的内容可以简化为下列三个基本点,称为CIA三要素(此观点似乎最早在NIST于1977年所发行的出版品中提到):

Confidentiality:指保持信息安全和私密的需要。例如,你的薪资待遇待遇,只有你的上级和HR能知道,如果除此以外的人知道了,那么则说明这个系统是不满足信息安全Confidentiality条件的,换句话说,这个系统是不安全的。

Integrity:是指保护信息不被未经授权的用户不当更改或修改的概念。例如,大多数用户希望确保财务软件使用的银行系统不能被其他任何人更改,并且只有用户或授权的安全管理员才能更改密码。

Availability:指信息可在需要时使用的概念。例如针对 Web 服务过载的攻击(DDoS)是对可用性的攻击。

访问控制对于保持信息的Confidentiality和Integrity至关重要。Confidentiality条件要求只有授权用户才能读取信息,而Integrity条件要求只有授权用户才能以授权方式更改信息。

访问控制在保持可用性方面作用不太明显,但它显然具有重要作用:获得对系统的未经授权访问的攻击者可能很容易将其关闭。例如对于一个方舟的分析接口,平均响应时间3s,在没有访问控制时,任意一个人都能发起大量请求把系统搞死;但如果有访问控制,那么恶意攻击者的未授权请求就直接被快速拒绝掉,避免对系统负载造成影响。

Authentication Vs. Authorization

授权(Authorization)和身份验证(Authentication)是访问控制的基础。它们是不同的概念,但经常混淆。部分混淆源于两者之间的密切关系:正确的授权实际上取决于身份验证。

身份验证(Authentication)

身份验证是确定用户声明的身份是否合法的过程。每个计算机用户都熟悉密码,这是最常见的身份验证形式。如果 Alice 以 alice46 的身份登录,然后为用户标识 (ID) alice46 提供正确的密码,则她已经向系统验证了自己的身份。身份验证一般基于下面的一种或多种因素:\ ? 您知道的信息,例如密码、个人识别码 (PIN) 或密码锁;\ ? 您拥有的东西,例如智能卡、自动柜员机 (ATM) 卡或钥匙;\ ? 您的身份,或物理特征,例如指纹或视网膜图案,或面部特征。

这里顺便普及一个概念,如果一个认证的过程是基于上述的两种因素认证,那么这种认证方式叫做双因子认证(Two-Factor Authentication,即2FA)。同理,如果基于多个认证因素的认证,则叫做多因子认证(Multi-Factor Authentication,即MFA)。

显然,如果使用两个或更多因素,认证通常会更强。在现实世界中,密码可以被猜出;钥匙可能会丢失;人脸识别系统的误报率很高,因此仅使用其中一种身份验证方法可能无法提供可接受的安全级别。这就是为什么银行需要卡和PIN才能访问 ATM 机,而不仅仅是密码、钥匙或卡。因为如果卡丢失,小偷必须在3次的尝试中猜出PIN码,才能击败身份验证系统,否则卡直接被锁掉。

授权(Authorization)

虽然身份验证是一个确定您是谁的过程,但授权决定了您可以做什么。授权是指关于是否授予用户访问系统资源的权限的是或否决定。信息系统必须维护用户ID和系统资源之间的某种关系,可能通过将授权用户列表附加到资源,或通过存储每个用户 ID 的可访问资源列表。请注意,授权必然取决于正确的身份验证。如果系统无法确定用户的身份,则没有有效的方法来确定是否应授予用户访问权限。

访问控制(Access Control)授权(Authorization)区别

授权真是个很神奇的东西,跟身份验证(Authentication)放在一起,容易混淆,跟访问控制(Access Control)放在一起,同样容易混淆。

具体概念的定义前文已经定义,这里具具体的例子来说明授权和访问控制的区别。

假设客户端发起了一个请求,这个请求需要修改当前登录用户的用户名。当后端服务接收到该请求时,发现该请求的关联的认证用户跟请求需要修改的用户为同一个用户,从而做出允许该请求通过的决定,这个决定就是授权(Authorization)。而允许用户修改自己的用户名这一机制就是访问控制(Access Control)。

Access Control、Authentication、Authorization三者的关系可以简述如下。

*读到这里,是不是发现这些概念很烧脑。BUT,更烧脑的还在后头。后面我们会介绍users、subjects、objects、operations、permissions、policies、scopes、issuer、actor等的概念,这些才更加烧脑。

\ 参考文档如下:

《Role-Based Access Control》2nd Edition

https://www.cgisecurity.com/owasp/html/ch08.html

https://zh.wikipedia.org/wiki/信息安全 大部分内容来源于《Role-Based Access Control》一书经过谷歌翻译而来,如果对内容感兴趣,建议直接阅读原书第一章。附件中已将原书PDF呈上。

原文:https://juejin.cn/post/7101551757024559117

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com