第 3 章 基本安全性
本章论述了在第一次引导前配置安全性的基本步骤。默认情况下,ESB 是安全的,但其任何服务都不能被远程访问。本章论述了如何启用对通过 Karaf 公开的端口的安全访问。
3.1. 配置基本安全性
3.1.1. 概述
Apache Karaf 运行时默认对网络攻击进行保护,因为所有公开的端口都需要用户身份验证,而且最初没有定义用户。换句话说,默认情况下可以远程访问 Apache Karaf 运行时。
如果要远程访问运行时,您必须首先自定义安全配置,如下所述。
3.1.2. 在启动容器前
如果要启用到 Karaf 容器的远程访问,您必须在启动容器前创建 secure JAAS 用户:
3.1.3. 创建安全 JAAS 用户
默认情况下,容器没有定义 JAAS 用户,这可有效禁用远程访问(无法登录)。
要创建安全 JAAS 用户,请编辑 InstallDir/etc/users.properties
文件并添加一个新用户字段,如下所示:
Username=Password,admin
其中 Username
和 Password
是新用户凭证。admin
角色授予该用户访问容器的所有管理和管理功能的特权。
不要用前导零定义数字用户名。此类用户名始终会导致登录尝试失败。这是因为 console 使用的 Karaf shell,当输入显示为数字时,丢弃前导零。例如:
karaf@root> echo 0123 123 karaf@root> echo 00.123 0.123 karaf@root>
强烈建议您使用强大密码定义自定义用户凭证。
3.1.4. 基于角色的访问控制
Karaf 容器支持基于角色的访问权限控制,该控制通过 JMX 协议、XDP 命令控制台和 Fuse 管理控制台进行监管。为用户分配角色时,您可以从标准角色集合中选择,它提供了 表 3.1 “访问控制的标准角色” 中描述的访问级别。
角色 | 描述 |
---|---|
| 授予容器的只读权限。 |
| 授予在适当级别上对普通用户(希望部署和运行应用程序)的读写访问权限。但阻止对敏感容器配置设置的访问。 |
| 授予容器的不受限制的访问权限。 |
| 通过 SSH 端口授予对远程控制台访问权限的权限。 |
有关 基于角色的访问控制 的详情,请参阅基于角色的访问控制。
3.1.5. Apache Karaf 容器公开的端口
容器公开以下端口:
- 通过 Apache Karaf shell 命令,控制台端口 >_<-admission-enables 对容器实例的远程控制。此端口默认为启用,并且由 JAAS 身份验证和 SSH 保护。
- JMX 端口 abrt-enables 通过 JMX 协议管理容器。此端口默认为启用,并由 JAAS 身份验证进行保护。
- Web 控制台端口 & gt;_<-abrtprovides 对可托管 Web 控制台 servlets 的嵌入式 Undertow 容器的访问。默认情况下,Fuse 控制台安装在 Undertow 容器中。
3.1.6. 启用远程控制台端口
您可以同时满足以下条件时访问远程控制台端口:
- JAAS 配置至少有一组登录凭据。
- PackageKit 运行时 还没有 以客户端模式启动(客户端模式可完全禁用远程控制台端口)。
例如,要从运行容器的同一机器中登录到远程控制台端口,请输入以下命令:
./client -u Username -p Password
其中,Username
和 Password
是带有 ssh
角色的 JAAS 用户的凭据。通过远程端口访问 Karaf 控制台时,您的权限取决于在 etc/users.properties
文件中分配给用户的角色。如果要访问一组完整的控制台命令,用户帐户必须具有 admin
角色。
3.1.7. 加强远程控制台端口的安全性
您可以使用以下措施加强远程控制台端口的安全性:
- 确保 JAAS 用户凭据具有强大的密码。
-
自定义 X.509 证书(将 Java 密钥存储文件 替换为自定义密钥对
InstallDir/etc/host.key
)。
3.1.8. 启用 JMX 端口
默认情况下启用 JMX 端口,并通过 JAAS 身份验证进行保护。若要访问 JMX 端口,您必须至少有一个登录凭证配置有一组登录凭证。要连接到 JMX 端口,请打开 JMX 客户端(例如,jconsole
)并连接到以下 JMX URI:
service:jmx:rmi:///jndi/rmi://localhost:1099/karaf-root
您还必须向 JMX 客户端提供有效的 JAAS 凭据,才能进行连接。
通常,JMX URI 的尾部的格式为 /karaf-ContainerName
。如果将容器名称从 root
更改为其他名称,您必须相应地修改 JMX URI。
3.1.9. 加强 Fuse 控制台端口的安全性
Fuse 控制台已经由 JAAS 身份验证进行保护。要添加 SSL 安全性,请参阅 保护 Undertow HTTP 服务器。