第 3 章 基本安全性
本章介绍了首次启动 Karaf 之前配置安全性的基本步骤。默认情况下,Ramen 是安全的,但其任何服务都无法远程访问。本章介绍了如何启用对 Karaf 公开的端口的安全访问。
3.1. 配置基本安全性
3.1.1. 概述
默认情况下,Apache Karaf 运行时会防止网络攻击,因为其所有公开端口都需要用户身份验证,并且最初没有定义任何用户。换句话说,默认远程无法访问 Apache Karaf 运行时。
如果要远程访问运行时,您必须首先自定义安全配置,如下所述。
3.1.2. 在启动容器前
如果要启用对 Karaf 容器的远程访问,您必须在启动容器前创建一个安全 JAAS 用户:
3.1.3. 创建安全 JAAS 用户
默认情况下,没有为容器定义 JAAS 用户,这样可有效地禁用远程访问(无法登录)。
要创建安全 JAAS 用户,请编辑 InstallDir/etc/users.properties
文件并添加一个新的 user 字段,如下所示:
Username=Password,admin
其中 Username
和 Password
是新用户凭证。admin
角色授予此用户访问容器的所有管理和管理功能的特权。
不要定义带有前导 0 的数字用户名。此类用户名总是会导致登录尝试失败。这是因为,当输入显示为数字时,控制台使用的 Karaf shell 会丢弃前导零。例如:
karaf@root> echo 0123 123 karaf@root> echo 00.123 0.123 karaf@root>
强烈建议您使用强密码定义自定义用户凭证。
3.1.4. 基于角色的访问控制
Karaf 容器支持基于角色的访问控制,规范通过 JMX 协议、Karaf 命令控制台和 Fuse 管理控制台的访问。当为用户分配角色时,您可以从标准角色集合中选择,这提供了 表 3.1 “访问控制的标准角色” 中描述的访问级别。
角色 | 描述 |
---|---|
| 授予容器的只读访问权限。 |
| 在适当的级别,为希望部署和运行应用程序的普通用户授予读写访问权限。但会阻止对敏感容器配置设置的访问。 |
| 授予容器不受限制的访问权限。 |
| 通过 SSH 端口授予远程控制台访问的权限。 |
有关基于角色的访问控制的详情,请参阅基于角色的访问控制。
3.1.5. Apache Karaf 容器公开的端口
容器公开以下端口:
- 通过 Apache Karaf shell 命令,控制台端口 criu-wagon 启用容器实例的远程控制。此端口默认为启用,并由 JAAS 身份验证和 SSH 保护。
- JMX 端口 criu-criu 通过 JMX 协议启用容器管理。此端口默认为启用,并由 JAAS 身份验证进行保护。
- Web 控制台端口 criu- iwlprovides 对可托管 Web 控制台 servlet 的嵌入式 Undertow 容器提供访问权限。默认情况下,Fuse Console 安装在 Undertow 容器中。
3.1.6. 启用远程控制台端口
当满足以下任一条件时,您可以访问远程控制台端口:
- JAAS 至少配置有一组登录凭据。
- Karaf 运行时 没有在 客户端模式中启动(客户端模式会完全禁用远程控制台端口)。
例如,要从运行容器的同一机器登录到远程控制台端口,请输入以下命令:
./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 端口,您必须已经使用至少一组登录凭据配置了 JAAS。要连接到 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 服务器。