什么是4A
4A是指:账号Account、认证Authentication、授权Authorization、审计Audit,中文名称为统一安全管理平台解决方案。即将身份认证、授权、审计和账号(即不可否认性及数据完整性)定义为网络安全的四大组成部分,从而确立了身份认证在整个网络安全系统中的地位与作用。(来源百度百科)
账号Account
为用户提供统一集中的帐号管理,包括:用户身份信息的集中存储与统一管理。参考AWS等系统,涉及到概念包括:
- 主账号:一般指管理资源的唯一身份标识,他为资源付费。也是自然人在4A中的唯一身份标识,一个用户只会有一个主账号,唯一标识了他的身份。
- 从账号:一般指资源访问的账号,如虚拟机的访问用户,数据库的访问用户等。
- 用户:实现操作资源的人员,对应物理存在的人,它由账号分配。
- 群组:一般对应企业的组织,把用户归属到一个群组里,用户可以自动获得这个群组所具有的权限。对于大型的企业,组织可能分为人员组织与业务组织。对于用户来说,群组也是为提供分级管理能力。
用户身份信息,主要包括名称与密码。对于不同的系统,其它信息各不相同,比如互联网中用户信息,一般包括昵称,邮箱,电话,爱好等信息。从账号身份信息,主要包括名称与密码。不同的资源形态身份也不相同,像AWS中,API访问还有AK/SK,虚拟机访问还有SSH证书。
账号与用户的信息身份都是敏感信息,需要完整的安全控制。密码类一般采用密码策略管理,如密码长度,字符限定,过期时间等,密码存储一般采用不可逆加密保存。
目前安全的不可逆加密算法有:PBKDF2,bcrypt。但在一些场景下,由于政策或法规原因,要求可以掌握用户密码,存储也需要加密,但它是可逆的。一般采用非对称加密,采用私钥/公钥对,公钥用于加密密码存储,私钥用于解密,私钥的存储在物理上与系统隔离,以防私钥泄漏。
认证Authentication
根据用户应用的实际需要,为用户提供不同强度的认证方式。认证的方式一般有以下几种:
- 静态口令:如基于用户与密码;
- 动态口令令牌:如手机验证码;
- 数字证书:如早期的银行USB盾,其实USB中存储即发放给用户的PKI(Public Key Infrastructure)证书;
- USB令牌:如工商银行的USB盾,USB动态生成令牌。
这些认证是可以组合使用的,其中重要说明的PKI,一个有效的PKI系统必须是安全的和透明的,用户在获得加密和数字签名服务时,不需要详细地了解PKI的内部运作机制。
PKI发展的一个重要方面就是标准化问题,它也是建立互操作性的基础。目前,PKI标准化主要有两个方面:一是RSA公司的公钥加密标准PKCS(Public Key Cryptography Standards),它定义了许多基本PKI部件,包括数字签名和证书请求格式等;二是由Internet工程任务组IETF(Internet Engineering Task Force)和PKI工作组PKIX(Public Key Infrastructure Working Group)所定义的一组具有互操作性的公钥基础设施协议。PKI产品的生产厂家很多,比较有代表性的主要有VeriSign和Entrust。
对于一个复杂的系统、大型网站,他们内部会划分多个子系统。则用户认证需要统一管理,为用户提供统一的认证门户,实现单点登录(Single Sign On,简称SSO)。单点登录与认证服务常见的标准有:
- CAS:Central Authentication Service,由Yale 大学发起的一个开源项目,是目前最为常见,简单实效的SSO实现。
- OpenID:用户在多个网站注册,需要注册并记住多个用户名密码,OpenID希望帮用户提供一个身份ID,可以在多个网站用来登录。登录网站时,用户选择用其身份ID登录,跳转到身份ID颁发的网站输入用户名、密码进行身份认证,然后跳转会网站实现登录。
- OAuth:比如用户通过第三方照片打印应用打印在某个网站存储的照片,而不希望泄露照片网站的用户名、密码等信息给第三方的照片打印应用。使用OAuth来授权给第三方应用访问照片资源,也会跳转到照片资源所在网站,要求输入用户名、密码进行身份认证并授权,然后跳转会打印应用网络。注意:OAuth1有安全漏洞,现在都是使用OAuth2协议。
- SAML:Security Assertion Markup Language,是一个基于XML的标准,用于在不同的安全域(security domain)之间交换认证和授权数据。
后二种也包含授权能力定义,授权先要认证。单系统身份认证,根据使用场景和技术特点,选择OpenID、OAuth、或者SAML。如果不是单系统,不仅涉及身份认证,而是涉及众多系统需要单点登录,则需要选择CAS+认证方案(OpenID/OAuth/SAML)来实现的。其中OAuth2也涵盖了CAS的功能,也可以单点登录(如采用密码模式/客户端模式)。
在非WEB领域,不得不提一下的是GSSAPI(Generic Security Services Application Program Interface),它是提供了程序能够访问安全服务的一个应用程序接口,可用于完成认证。它是一个框架,不负责具体的安全机制。
授权Authorization
对用户的资源访问权限进行集中控制。授权/鉴权系统中涉及到概念主要有:
- 权限:对资源功能、数据进行访问的范围或程度;
- 角色:资源中若干访问权限的集合;
- 角色组:角色构成的集合。
授权关系应包括三个元素,授权主体、授权客体、授权关系:
- 授权主体:主帐号、用户,用户群组;
- 授权客体:角色、角色组、权限以及三者的组合;
- 授权关系:应任意主体对客体的授权。
授权方式常见包括如下:
- UBAC:Userbased Access Control,基于用户的授权,也有称IBAC,I:identity;
- RBAC:Role-based Access Control,基于用户角色的授权;
- ABAC:Attribute-based Access Control,基于资源的授权ABAC。
前面提到的SAML,其采用访问者、被请求资源、被请求行为和环境属性来描述策略,是一个典型的在ABAC环境下的策略描述语言。如AWS的IAM的策略(Policy)描述,它更加的灵活,可以涵盖UBAC,RBAC与ABAC的功能。策略是用JSON来描述的,主要包含Statement,也就是这个policy拥有的权限的陈述,一言以蔽之,即:谁在什么条件下能对哪些资源的哪些操作进行处理。也就是所谓的撰写Policy的PARCE原则:
- Principal:谁;
- Action:哪些操作;
- Resource:哪些资源;
- Condition:什么条件;
- Effect:怎么处理(Allow/Deny)。
在操作系统,设备系统,数据系统中,权限控制还提供简单的访问控制列表ACL(Access Control List)。ACL的认证鉴权主要分为:
- 登陆认证鉴权:在用户登陆的时候,进行信息认证。根据用户标识,加载上来该用户所拥有的权限模块;
- 即时认证鉴权:是用户对某一模块或记录是否有增删改查的权限。
审计Audit
为了能做到有效的监督,监督各类管理员的日常的管理行为。系统将对管理员的每个操作做出日志记录,并且分类进行整理。提供相关的报表和查询功能。以方便对管理员工作的审计。
审计功能主要实现安全审计功能,包括:
- 用户帐号合法性;
- 访问行为审计和合规审计。
参考:
[1] 统一安全管理平台解决方案
[2] PKI系统深入介绍
[3] 基于SAML的单点登录介绍
[4] cas sso oauth openid saml的联系与区别
[5] GSS-API 介绍
[6] 理解OAuth 2.0
[7] 深入了解IAM和访问控制