2.6. Elytron 子系统
JBoss EAP 7.1 中引入了 elytron
子系统。它以 WildFly Elytron 项目为基础,该项目是一种安全框架,用于统一整个应用服务器的安全性。elytron
子系统启用单一配置,以同时保护应用和管理接口。WildFly Elytron 还提供一组 API 和 SPI,用于提供自定义功能实施并与 elytron
子系统集成。
此外,WildFly Elytron 还有一些其他重要功能:
- 更强大的 HTTP 和 SASL 身份验证机制.
-
改进的架构允许在
安全域
之间传播安全身份。这确保了可用于授权的透明转换。这种转换利用可配置的角色解码器、角色映射器和权限映射器进行。 - SSL/TLS 配置的集中点,包括密码套件和协议。
-
SSL/TLS 优化,如及时
的安全智能
结构,以及建立 SSL/TLS 连接的紧密关联授权。近日安全身份构建
消除了基于每个请求构建安全
身份的需要。通过紧密关联身份验证来建立 SSL/TLS 连接,可以实现收到第一个请求的 BEFORE 权限检查。 - 个安全的凭证存储,用于替换前面的 vault 实施来存储纯文本字符串。
新的 elytron
子系统与传统 安全
子系统和旧版核心管理身份验证并行存在。传统和 Elytron 方法都可用于保护管理接口,并为应用提供安全性。
基于 PicketBox 的 Elytron 和传统安全子系统的架构截然不同。Elytron 曾尝试创建一个解决方案,允许您在当前运行的同一安全环境中运行;然而,这并不表示每个 PicketBox 配置选项在 Elytron 中都有等同的配置选项。
如果您无法在文档中找到信息以帮助您使用旧版安全实施时获得类似功能,则可以通过以下方法之一找到帮助:
- 如果您有红帽开发订阅 ,请访问红帽客户门户上的支持案例、解决方案 和知识文章。您还可以使用技术支持创建一个问题单,并从 WildFly 社区获得帮助,如下所述。
- 如果您没有红帽开发订阅,仍然可以访问红帽客户门户上的知识库文章。您还可以加入用户论坛和实时聊天,询问 WildFly 社区的问题。WildFly 社区产品由 Elytron 工程团队主动监控。
2.6.1. 核心概念和组件 复制链接链接已复制到粘贴板!
elytron
子系统架构和设计背后的概念是使用较小的组件来组合完整的安全策略。默认情况下,JBoss EAP 提供许多组件的实施,但 elytron
子系统也允许您提供专用的自定义实施。
在"elytron"子系统中的每个组件实施都以单独的能力进行处理。这意味着,可以使用不同的资源混合、匹配和建模不同的实施。
2.6.1.1. 功能和要求 复制链接链接已复制到粘贴板!
功能是 JBoss EAP 中使用的一种功能,可通过管理层来公开。个功能可以依赖于其他功能,这种依赖关系由管理层进行调和。些功能由 JBoss EAP 自动提供,但运行时可用的全部功能都使用 JBoss EAP 配置来确定。管理层验证服务器启动以及进行任何配置更改时是否存在其他功能所需的所有功能。功能与 JBoss 模块和扩展集成,但它们都是不同的概念。
除了注册它依赖的其他功能外,一个功能还必须注册与这些功能相关的一组要求。能力可以指定以下类型的要求:
- 硬要求
- 能力依赖于其他功能,因此必须始终存在。
- 可选要求
- 功能的可选方面取决于另一能力,这些功能可以也可以启用。因此,在分析配置前无法确定或知道此要求。
- 仅运行时要求
- 能力将检查运行时是否存在所需的能力。如果存在所需的能力,则将使用它。如果没有所需的能力,将不会使用它。
2.6.1.2. API、SPI 和自定义实施 复制链接链接已复制到粘贴板!
Elytron 提供一组安全 API 和 SPI,以便其他子系统和使用者可以直接使用它们,从而降低集成开销。尽管大多数用户将使用 JBoss EAP 提供的功能,但 Elytron API 和 SPI 也可供自定义实施用于替换或扩展 Elytron 功能。
2.6.1.3. 安全域 复制链接链接已复制到粘贴板!
安全域是安全策略的表示形式,由一个或多个安全域以及一组执行转换的资源提供支持。安全域将生成 SecurityIdentity
。SecurityIdentity
由执行授权的其他资源使用,如应用。SecurityIdentity
是当前用户的表示,它基于原始 授权身份及其
关联的角色和权限。
您还可以配置安全域,以允许 Security Identity from other
安全域的内向。当身份 流化 时,它会保留其原始 授权Identity
,并为它分配一组新的角色和权限,从而创建一个新的 SecurityIdentity
。
部署仅限于在每个部署中使用一个 Elytron 安全域。现在,可以使用一个 Elytron 安全域来完成可能需要多个传统安全域的情况。
2.6.1.4. Security Realms 复制链接链接已复制到粘贴板!
安全域提供对身份存储的访问,用于获取凭据。这些凭据允许身份验证机制获取用于执行身份验证的原始 授权Identity
。它们还允许验证机制在验证证据时执行验证。
您可以将一个或多个安全域与一个安全域关联。些安全域实施也公开用于修改的 API,这意味着安全域可以对底层身份存储进行更新。
2.6.1.5. 角色解码器 复制链接链接已复制到粘贴板!
角色解码器与安全域关联,用于解码当前用户的角色。角色解码器取从安全域返回的原始 AuthorizationIdentity
,并将其属性转换为角色。
2.6.1.6. 角色映射器 复制链接链接已复制到粘贴板!
角色映射器将角色修改应用到身份。这可以从对角色格式进行规范化,到添加或删除特定角色等。角色映射器可以与安全域和安全域关联。如果角色映射器与安全域关联,则角色映射将在安全域级别上应用,然后才会在安全域级别上应用任何转换(如角色解码或额外的角色映射)。如果角色映射器和其他转换(如角色解码器)都在安全域中配置,则在应用角色映射器之前执行所有其他转换。
2.6.1.7. 权限映射器 复制链接链接已复制到粘贴板!
权限映射器与安全域关联,并为 SecurityIdentity
分配一组权限。
2.6.1.8. 主体转换器 复制链接链接已复制到粘贴板!
主要的转换器可用于 elytron
子系统内的多个位置。主体转换器可以转换或将名称映射到另一个名称。
2.6.1.9. 主体 Decoders 复制链接链接已复制到粘贴板!
首席解码器可用于 elytron
子系统内的多个位置。主体解码器将身份从 Principal
转换为名称的字符串表示。例如,X500PrincipalDecoder
允许您将 X500Principal X500Principal
从证书的可分辨名称转换为字符串表示。
2.6.1.10. realm Mappers 复制链接链接已复制到粘贴板!
域映射器与安全域关联,在安全域配置了多个安全域时使用。域映射器也可以与 http-authentication
域映射器使用身份验证期间提供的名称来选择用于身份验证的安全域,并获取原始 -factory 和
相关联。sasl-authentication-factory
的机制
或机制域授权 IDdentity
。
2.6.1.11. 身份验证事实 复制链接链接已复制到粘贴板!
身份验证工厂是身份验证策略的表示形式。身份验证与安全域、机制工厂和机制选择器相关联。安全域提供要身份验证的 SecurityIdentity
,机制工厂提供服务器端身份验证机制,而机制选择器则用于获取特定于所选机制的配置。机制选择器可以包含有关域名称的信息,如应向远程客户端提供的机制,以及身份验证过程中要使用的其他主体转换器和域映射器。
2.6.1.12. KeyStores 复制链接链接已复制到粘贴板!
key-store 是密钥
存储或信任存储的定义,包括密钥存储的类型、其位置以及用于访问它的凭据。
2.6.1.13. 密钥管理器 复制链接链接已复制到粘贴板!
key-manager
引用 密钥
存储,并与 SSL 上下文结合使用。
2.6.1.14. 信任管理器 复制链接链接已复制到粘贴板!
trust-manager
引用作为信任存储(在 密钥存储
中定义),它与 SSL 上下文一起使用,通常用于双向 SSL/TLS。
2.6.1.15. SSL 上下文 复制链接链接已复制到粘贴板!
elytron
子系统中定义的 SSL 上下文是一个 javax.net.ssl.SSLContext
,这意味着它可供直接使用 SSL 上下文的任何对象使用。除了 SSL 上下文的常规配置外,还可以配置其他项目,如密码套件和协议。SSL 上下文将嵌套所配置的任何其他项目。
2.6.1.16. 安全凭证存储 复制链接链接已复制到粘贴板!
之前的用于纯文本字符串加密的 vault 实施已被新设计的凭证存储替代。除了保护它存储的凭据外,凭据存储还用于存储纯文本字符串。