https://apisecurity.miniorange.com/images/blogs/api-key-authentication-ensuring-api-security.webp
授权(auth)机制是指在认证后,规定用户可以做什么的控制措施。该机制确保只有授权的用户或客户端才能访问受保护的资源或数据。
基于角色的访问控制(RBAC)每个有效的用户或组在系统中都会被分配一个或多个角色,这些角色决定了哪些操作是允许的。根据系统的不同设计,某些操作也可能被明确禁止执行。
RBAC 依靠三个核心组件:
- 角色:这些代表与API中特定功能相关的预定义权限集合。例如,包括“管理员”、“编辑”、“读者”或“访客”等角色。
- 用户:与API交互的个人,通常通过用户名、ID或其他唯一标识符进行识别。
- 权限:用户可以在API资源上执行的具体操作,如创建、读取、更新和删除(CRUD)。
根据已验证的用户,系统确定其角色。当用户请求访问特定API资源时,系统会检查其角色是否具备请求的操作所需权限。
如果用户有相应的权限,则允许访问;否则,将拒绝访问,并返回相应的错误信息。
以下是一些基于角色的访问控制的优点:
- 细粒度访问控制:通过为特定角色定制权限,实现对API访问的精细控制。
- 降低复杂性:通过将相似权限分组到角色中来简化访问管理。
- 提升安全性:通过基于用户角色限制操作,最小化未经授权访问的可能性。
一些使用基于角色的访问控制(RBAC)的公共API的例子包括:云存储API,其中,特定文件夹或文件的读写权限是根据用户角色授予的;社交媒体API,根据用户账户类型(如管理员、版主或普通用户),可以发布、编辑或删除内容;以及电子商务平台的API,根据用户角色(如客户、供应商或管理员),可以控制产品信息、订单管理和定价数据的访问。
基于属性的访问权限控制ABAC 更深入地探讨了访问控制的机制。它不仅仅依靠角色和权限,还提供了一种更为精细和灵活的方法,这种方法特别适合于复杂的 API 环境。
例如,医疗保健 API 根据用户角色、数据敏感度级别和访问位置来控制对敏感患者数据的访问。金融领域的 API 根据用户身份、账户类型、交易金额和交易时间点来授予金融交易的授权 (AuthZ)。IoT API 根据设备的特定权限、设备类型和位置来实现设备的安全访问和数据交换。
除了依赖于预定义或有时自定义的角色之外,ABAC 还会评估这些与访问请求中涉及的不同实体的各种属性:
- 用户主体:请求访问的用户或设备(例如,用户名、IP地址或设备类型)。
- 资源:被访问的API资源(例如,数据对象或端点地址)。
- 操作:尝试的操作(例如,读取、写入或删除)。
- 环境:如时间、地点或特定条件等环境因素(例如,紧急情况下的访问)。
- 属性:与前述任一实体相关的额外数据点(例如,用户所属部门、资源敏感度或时间段)。
当用户与API交互时,,系统会从所有涉及的实体中收集相关属性。接着,系统会根据收集的属性评估预设的访问控制策略。这些策略规定了哪些情况下特定操作可以进行或被禁止。最后,根据评估的结果,系统据此决定是允许还是拒绝访问。
OAuth 作用域OAuth 作用域类似于基于 ABAC 的 API 中的属性,也像这些属性一样贴标签。它们定义应用程序可以请求的特定权限,并因此决定了应用程序对 API 资源的访问级别。OAuth 作用域本质上是表示与 API 相关的特定权限集的一组字符串。
当应用程序使用OAuth请求访问API时,它会指定其AuthZ请求中所需的范围。AuthZ服务器随后会评估这些范围与应用程序的注册权限,并授予相应的访问令牌。
从这之中,我们可以立即获得至少以下直接的好处:在API中使用OAuth范围。
- 细粒度控制:通过允许应用程序仅请求其所需的特定权限,实现对API访问的精细控制。
- 减少风险:通过限制应用程序令牌的作用范围,减轻未授权访问的风险。
- 增强透明度:提供清晰的权限视图,增强责任感和信任。
可以在 API 上创建多个不同范围以满足特定需求。API 可以利用的一些范围类型有 只读(允许应用程序从特定的 API 资源读取,但不能修改或删除),只写(授予应用程序在 API 中创建或更新数据的能力,但不能读取现有数据),完全访问(提供对所有 API 资源的全面访问权限,包括读取、写入和删除),用户特定(基于与应用程序关联的用户实现基于特定用户的精细权限控制),以及 资源特定(限制对特定 API 资源的访问,使应用程序只能访问所需的数据)。
一些广为人知使用OAuth权限的API其中包括Google Drive、GitHub、X(原名Twitter)、Dropbox及Facebook/Meta。
👏也来订阅吧,获取更多精彩内容!🖥️
莫拉休·哈雷的API渗透测试技巧(《Pentesting APIs》)
(https://www.amazon.com/Pentesting-APIs-discovering-fingerprinting-exploiting/dp/1837633169)
共同学习,写下你的评论
评论加载中...
作者其他优质文章