第 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

其中 UsernamePassword 是新用户凭证。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 “访问控制的标准角色” 中描述的访问级别。

表 3.1. 访问控制的标准角色
角色描述

viewer

授予容器的只读访问权限。

Manager

在适当的级别,为希望部署和运行应用程序的普通用户授予读写访问权限。但会阻止对敏感容器配置设置的访问。

admin

授予容器不受限制的访问权限。

ssh

通过 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

其中 UsernamePassword 是带有 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 服务器

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.