授权 (authz) 与身份验证 (authn)

在信息安全中,身份验证(缩写为 authn)和授权(缩写为 authz)是相关但独立的概念。两者都是身份和访问管理 (IAM)的重要组成部分。

authn 和 authz 有什么不同简单来说,authn 与身份有关,即某人是谁,而 authz 与权限有关,即某人被允许做什么。

什么是身份验证 (authn)

身份验证意味着确保一个人或设备是他们(它们)声称的人(或东西)。领取活动门票的人可能会被要求出示身份证以验证其身份;同样,应用程序或数据库可能希望通过检查用户的身份来确保用户是合法的。身份验证确保数据不会暴露给错误的人。

有哪些常见的身份验证方法

用户名和密码组合

最常见的身份验证方法之一是提示用户输入他们的用户名和密码。当 Jessica 在她的浏览器中加载她的电子邮件帐户时,电子邮件服务还不知道她是谁——但是一旦她在登录表单中输入她的用户名和密码,该服务就能够检查这些凭证,验证她的身份为 Jessica, 并让她登录到她的帐户。

虽然大多数人对这种身份验证方法很熟悉,但用户名和密码的用途不仅仅是验证用户。例如,API端点也可以用这种方式进行验证。

多因素身份验证 (MFA)

用户名-密码身份验证的问题是密码经常被恶意方猜出或窃取。要求额外的身份验证因素可以提高用户的安全性;这个概念被称为多因素身份验证 (MFA)。使用 MFA 时,攻击者无法仅凭密码就错误地被验证为合法用户。

MFA 最常见的实施方式为双因素身份验证 (2FA)。如今,许多服务通过要求用户证明他们拥有签发的令牌来实施 2FA。有两种类型的令牌:“软”令牌,如通过短信或移动应用程序发送给用户的代码,以及“硬”令牌,如 USB 密钥。2FA 和 MFA 也可以使用生物识别身份验证因素(如下所述)。

公钥证书

公钥身份验证比这些其他形式的身份验证稍微复杂一些,但如果实施得当,它会更安全。它使用公钥加密来验证被验证方是否拥有正确的私钥。

公钥身份验证最常见的用法是在Transport Layer Security (TLS),其中它被用来验证 Web 服务器。用户设备每次加载使用HTTPS的网站时,都会执行这种类型的身份验证。

公钥身份验证也用于相互身份验证,即通信双方相互进行身分验证,而不仅仅是客户端验证服务器或 Web 服务验证用户。物联网 (IoT)设备和 API 端点有时会使用这种类型的身份验证。

生物身份验证

生物识别身份验证仅可用于对人类进行身份验证,其方式为根据其已知物理特征的数据库检查某人的一项物理特征来验证某人的身份。面部扫描或视网膜扫描是此类身份验证的示例。

什么是授权 (authz)

授权决定了经过身份验证的用户可以查看的内容和执行的操作。想想当银行客户在线登录他们的账户时会发生什么。因为他们的身份已经过验证,他们可以看到自己的账户余额和交易历史——但他们无权查看其他人的。相反,银行的经理可以被授权查看任何客户的财务数据。

同样,一个人可能是企业的合法雇员,他们可能已经验证了自己的身份,但这并不意味着他们应该有权访问该企业的所有文件和数据。例如,人力资源或会计部门以外的员工不应该看到每个人的薪酬。

用户的授权级别决定了他们有权做什么;因此,授权操作的常用术语是“权限”。用于此概念的另一个术语是“特权”。

authz 如何运作

组织使用某种授权解决方案来允许或阻止用户操作。解决方案通常会根据用户的身份来得知要允许或阻止哪些操作;因此,身份验证与授权密切相关。确定用户权限的方法有多种,包括:

在基于角色的访问控制 (RBAC)中,每个用户都被分配一个或多个预先确定的角色,每个角色都有一套指定的权限。

在基于属性的访问控制 (ABAC)中,根据用户的属性或他们要执行的操作的属性来分配权限。

在基于规则的访问控制(也缩写为 RBAC),根据一套适用于所有用户的规则来允许或拒绝操作,而不论其角色如何。

什么是 OAuth

OAuth是一个技术标准,用于将授权从一个服务传递到另一个服务。OAuth 通常用于云服务和 Web 应用程序,使用户在一个服务上进行身份验证后,能够将其授权传递给另一个服务。他们的授权级别通常由身份提供商 (IdP)决定,这是一个独立的服务。

OAuth 使得使用单点登录 (SSO)服务成为可能,用户只需登录一次,就可以访问他们所有的云应用程序。如果不使用 OAuth,用户的权限就必须在每个应用程序中单独设置。