跳到主要内容

管理用户认证/授权概述

您可以使用两种方式对用户进行认证,以提供对 PubSub+ 事件代理的管理访问:基本认证或 OAuth 认证。

基本认证

在设置基本认证时,有两种类型的管理用户可以连接到事件代理:

  • CLI 用户:连接到事件代理以对其进行配置、管理和监控的用户。CLI 用户可以是使用 Solace 命令行界面 (CLI) 或 Broker Manager(基于浏览器的管理控制台)的管理员,或者是 SolAdmin(Solace CLI 的 GUI 等效工具)。它也可以是使用 Solace 元素管理协议 (SEMP) 请求通过 HTTP 服务的管理应用程序.(有关 SEMP 服务的信息,请参阅 SEMP.)
  • 文件传输用户:可以使用安全文件传输协议 (SFTP) 或安全复制 (SCP) 远程传输文件到选定事件代理上特定目录的用户。

当用户成功登录或注销,或在 CLI、SEMP、shell、scp 或 sftp 会话中认证失败时,认证事件将被写入事件日志。如果使用 SEMP 管理事件代理,建议使用持久的 SEMP 连接,以避免产生大量的认证事件日志.

OAuth 2.0认证

您可以使用两种方式使用 OAuth 提供对事件代理的管理访问:

  • 交互式:使用 OAuth 对与 Broker Manager 或任何其他使用 SEMPv2 的基于浏览器的 Web 应用程序交互的用户进行认证.
  • 自动化:使用 OAuth 令牌作为凭据对来自 SEMPv2 的 REST 请求进行认证.

基本认证

当 CLI 用户首次建立与事件代理的连接时,该用户的所有请求都无法被处理,直到根据为该 CLI 用户账户配置的认证类型进行认证。

可以为已配置的 CLI 用户账户配置以下认证类型:

  • 内部 — CLI 用户的用户名和密码将与内部事件代理数据库进行认证.
  • RADIUS — CLI 用户的用户名和密码将发送到外部 RADIUS 服务器进行认证.
  • LDAP — CLI 用户的用户名和密码将发送到外部 LDAP 服务器进行认证.也支持通过 TLS 的 LDAP.

事件代理始终首先尝试使用内部认证对 CLI 用户进行认证。如果用户在内部数据库中不存在,则事件代理会检查是否配置了 RADIUS 或 LDAP 认证(两者中只能为事件代理配置一个)。如果配置了 RADIUS 或 LDAP 认证,则事件代理将尝试使用这些认证类型之一对用户进行认证.有关如何配置 RADIUS 或 LDAP 认证的信息,请参阅设置 CLI 用户认证类型.

如果 CLI 用户成功认证,则事件代理将允许具有为 CLI 用户账户配置的访问权限的连接.

如果您使用 RADIUS 或 LDAP 用户认证,建议您配置一些内部用户账户,以便在外部 RADIUS 或 LDAP 服务器无法访问时用于管理事件代理。但是,不要在 RADIUS 或 LDAP 服务器上复制内部用户账户,反之亦然,因为这会导致对用户账户密码所在位置的混淆。例如,如果在 RADIUS 或 LDAP 服务器上更改了用户账户密码,并且在事件代理上也存在一个重复的账户,则将使用内部认证,并且由于期望使用旧密码,用户认证将失败.

文件传输用户认证

文件传输用户通过内部认证类型进行认证。文件传输用户的用户名和密码将与内部事件代理数据库进行验证。如果验证成功,则事件代理将允许连接.

文件传输用户账户没有与之关联的权限级别。所有文件传输用户都可以从文件传输用户可用的文件系统中读取、写入和删除文件.

OAuth 2.0认证

OAuth 允许应用程序使用临时令牌而不是永久凭据进行认证。使用 OAuth,与 PubSub+ 事件代理交互的用户可以在不需要访问其永久凭据的情况下进行认证.请注意,OAuth 仅支持通过 TLS.

您可以使用两种方式使用 OAuth 提供对事件代理的管理访问:

  • 交互式:使用 OAuth 对与 Broker Manager 或任何其他使用 SEMPv2 的基于浏览器的 Web 应用程序交互的用户进行认证.
  • 自动化:使用 OAuth 令牌作为凭据对来自 SEMPv2 的 REST 请求进行认证.

当使用 OAuth 访问 Broker Manager 时,用户将根据来自第三方身份提供商的令牌进行登录.如果配置了 OAuth 作为认证方法,则登录屏幕上将显示一个 OAuth 登录按钮。点击按钮将重定向用户到 OAuth 身份提供商的登录页面,用户可以在那里输入其凭据。如果用户已与提供商登录,则将立即重定向回 Broker Manager.有关更多信息,请参阅配置 OAuth 认证.

同样,在自动化设置中,当客户端使用 OAuth 进行 SEMP v2 请求时,它将在 HTTP 授权头中包含一个或多个 OAuth 令牌作为承载令牌。事件代理将验证令牌并自动选择正确的配置文件.有关更多信息,请参阅 SEMP 认证和授权.

用户对CLI命令的访问

通过 Solace CLI 提供的每个命令都有特定的范围和访问级别要求。因此,CLI 用户只能使用 CLI 提供的命令,如果该用户的配置访问级别足以满足命令的范围.

CLI用户访问级别

为每个 CLI 用户账户分配访问级别,以控制用户被允许执行的命令类型。以下访问级别可用:

CLI 用户不能执行 CLI 命令,除了与用户自身账户的登录和显示偏好设置相关的几个命令.

  • 只读

CLI 用户可以执行 CLI 命令以显示事件代理的操作信息,但不能更改其配置。监控应用程序通常使用只读访问级别.

  • 网格管理器

CLI 用户可以执行 CLI 命令以显示事件代理的操作信息,并执行一些事件代理配置——包括与客户端连接、网格连接和客户端安全功能相关的所有方面。此访问级别适用于需要访问这些命令但不允许全局读写访问的用户。负责管理事件网格的管理用户通常会被授予网格管理器访问级别.

  • 读写

CLI 用户可以执行 CLI 命令以显示事件代理的操作信息,并执行大多数事件代理配置——包括创建具有无访问级别的其他 CLI 用户账户.负责配置事件代理或消息 VPN 服务的管理用户通常会被授予读写访问级别.

  • 管理员

CLI 用户可以在事件代理上执行所有 CLI 命令。这包括控制事件代理范围内的认证和授权参数以及创建其他管理员用户.(此访问级别只能应用于全局范围的命令.)

CLI命令范围

CLI 用户可以被配置为管理整个事件代理和/或消息 VPN 的子集。为了允许这种级别的控制,为每个 CLI 用户账户分配了以下不同范围的访问级别:

  • 全局

全局访问级别决定了用户在整个事件代理中被允许做什么.

  • 消息 VPN

一个或多个消息 VPN 访问级别决定了 CLI 用户在消息 VPN 内被允许做什么.

分配的全局访问级别是全面的,并优先于消息 VPN 访问级别。它为 CLI 用户提供了对所有 CLI 命令的相同访问级别,包括具有消息 VPN 范围的命令.要进行配置,请参阅配置全局访问级别.

除了全局访问级别外,还分配了消息 VPN 访问级别,以便具有无或只读全局访问级别的用户可以根据需要被授予对消息 VPN 范围的 CLI 命令的增加访问权限。分配的消息 VPN 访问级别只能增加——不能减少——CLI 用户从其分配的全局访问级别中实际获得的消息 VPN 访问级别。消息 VPN 访问级别可以通过以下方式分配:

  • 默认消息 VPN 访问级别

这在所有已配置的消息 VPN 中提供了一致的消息 VPN 访问级别。始终为 CLI 用户分配默认消息 VPN 访问级别,但如果它大于用户的分配全局访问级别,则它只影响 CLI 用户对消息 VPN 范围的 CLI 命令的访问.有关更多信息,请参阅配置消息 VPN 默认访问级别.

  • 消息 VPN 异常

这些是默认消息 VPN 访问级别的每个消息 VPN 异常。这些异常可以增加或减少指定消息 VPN 的分配默认消息 VPN 访问级别.有关更多信息,请参阅配置消息 VPN 访问级别异常.

分配全局范围和消息 VPN 范围的访问级别允许根据用户的行政角色授予适当的访问权限。考虑以下两个示例:

  • 系统范围的管理员可以被分配全局访问级别为管理员,这允许该用户运行事件代理上的任何命令,无论是全局范围的还是消息 VPN 范围的命令.
  • 需要在消息 VPN 内监控操作统计信息的用户可以被分配全局访问级别为无,并为该消息 VPN 分配读取访问级别的消息 VPN.

出于安全原因,只有少数管理员应该被授予具有全局访问级别为“读写”或“管理员”的 CLI 用户账户的访问权限.一般来说,消息 VPN 范围的 CLI 命令包含“message-vpn”关键字,或者它们包含在具有“message-vpn”关键字的 CLI 模式中。例如,配置客户端用户名、持久端点和分布式缓存的命令是基于每个消息 VPN 创建的:

solace(configure)# client-username <username> message-vpn <vpn-name>
solace(configure/client-username)# acl-profile <name>
...
solace(configure)# message-spool message-vpn <vpn-name>
solace(configure/message-spool)# create queue <name>
...
solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# distributed-cache-management

分配访问级别

有关分配访问级别的信息,请参阅使用外部认证配置默认 CLI 用户访问级别.

创建和管理CLI用户账户

您创建和删除用户账户以及更改现有用户账户的访问级别和密码的能力取决于您使用的用户账户的全局访问级别。每个全局访问级别的通用限制如下:

  • 具有全局访问级别为管理员的 CLI 用户可以无限制地创建、删除或更改其他 CLI 用户账户.
  • 具有全局访问级别为读写的 CLI 用户账户可以:
    • 只能创建或删除具有全局访问级别为无的其他 CLI 用户账户
    • 为任何 CLI 用户账户设置消息 VPN 访问级别
    • 更改其自身用户账户和具有无访问级别的用户账户的密码
  • 具有全局访问级别为网格管理器、只读或无的 CLI 用户账户只能更改其自身用户账户的密码.

当对 CLI 用户账户进行访问级别和密码更改时,这些更改不会影响使用该用户账户的任何活动会话.更改将在用户下次登录该 CLI 用户账户时生效.

访问级别功能

可以为 CLI 用户分配多种可能的全局访问级别和消息 VPN 访问级别,具有各种功能和限制.

CLI 用户只能看到他们被授权执行的命令。这意味着,例如,帮助命令不会显示未经授权的命令,CLI 制表符自动完成不会为用户未被授权的命令完成命令。此外,CLI 命令中使用的通配符字符不会允许用户查看或访问他们未被授权的网络资源,例如消息 VPN 或客户端配置文件.

全局访问级别

下表提供了可以分配给 CLI 用户的可能全局访问级别的信息,以及这些访问级别所呈现的许多功能和限制.

级别功能和限制...
CLI 用户对最小的 CLI 命令有访问权限,并且没有 jail 文件系统访问权限。但是,具有此全局访问级别的 CLI 用户可以:
  • 使用 ?, help 和 tree 命令(未经授权的命令不显示)。
  • 使用 show authentication current-user 用户 EXEC 命令查看其自身的访问级别信息。
  • 如果用户通过内部数据库进行认证,则可以更改其自身的密码。
  • 根据需要导航通过命令模式以执行授权命令。
  • 注销当前会话。
  • 启用/禁用报警显示。
  • 设置用于分页输出的行数。
  • 启用/禁用严格的列包装。
  • 断开属于当前用户的 CLI 会话(但不包括当前会话)。
    具有全局访问级别为无的 CLI 用户可以通过为其分配默认消息 VPN 访问级别为只读或读写或消息 VPN 访问级别异常为只读或读写来获得对消息 VPN 命令的额外访问权限。 | | 只读
    (全局访问级别的默认值。)| 除了全局访问级别为无所提供的功能外,具有全局访问级别为只读的 CLI 用户还可以:
  • 使用 show 用户 EXEC 命令查看事件代理和消息 VPN 的状态和配置信息。
  • 清除事件(但不清除统计信息)。
  • 访问 jail 文件系统。
    具有全局访问级别为只读的 CLI 用户可以通过为其分配默认消息 VPN 访问级别或消息 VPN 访问级别异常为读写来获得在消息 VPN 级别的额外功能。 | | 网格管理器| 除了全局访问级别为只读所提供的功能外,具有网格管理器访问级别的 CLI 用户还可以:
  • 断开桥接。
  • 刷新客户端证书吊销列表。
  • 创建、修改和删除 MNR 邻居链接和队列。
  • 创建、修改和删除 DMR 的所有方面,包括集群、集群链接和 DMR 桥接。
  • 发出冗余回退活动和释放活动请求。
  • 启动和停止消息 spool 整理。
  • 清除桥接、压缩、ACL 日志、订阅匹配日志、消息 spool、复制、SMRP 和客户端的统计信息。
  • 创建、修改和删除客户端配置文件。
  • 创建、修改和删除重放日志。
  • 配置复制。
  • 配置客户端密码套件。
  • 配置消息 VPN 别名。
  • 配置消息 VPN 客户端认证。
  • 配置消息 VPN 桥接。
  • 配置消息 VPN 订阅导出策略。
  • 配置 REST 服务的 TLS。
  • 配置 SEMP 通过消息总线设置。
  • 配置 TLS CRIME 利用保护。
    具有全局访问级别为网格管理器的 CLI 用户可以通过为其分配默认消息 VPN 访问级别或消息 VPN 访问级别异常为读写来获得在消息 VPN 级别的额外功能。 | | 读写| 除了全局访问级别为网格管理器所提供的功能外,具有读写访问级别的 CLI 用户还可以执行大多数配置更改,包括:
  • 配置默认消息 VPN 访问级别
  • 创建消息 VPN 访问级别异常
  • 创建、删除或重命名具有无访问级别的内部认证 CLI 用户账户
  • 通过 reload 特权 EXEC 命令从当前配置文件重新启动事件代理 | | 管理员| CLI 用户对所有全局和消息 VPN 范围的 CLI 命令都有完全访问权限(它提供了有效的消息 VPN 访问级别为读写)。
    一些只能通过全局访问级别为管理员执行的配置更改或操作包括:
  • 创建、删除或重命名具有大于无的访问级别的内部认证 CLI 用户账户。
  • 更改任何 CLI 用户账户的全局访问级别。
  • 更改具有大于无的全局访问级别的 CLI 用户的认证配置。
  • 更改 LDAP 组中 CLI 用户的认证配置。
  • 通过 bootreload default-configreload config <config-file> 特权 EXEC 命令重新启动事件代理。
  • 在 CLI 的认证 CONFIG 级别进行更改。(唯一的例外是当 CLI 用户被授予足够的默认消息 VPN 访问级别时,可以在消息 VPN 级别进行更改。)
  • 更改事件代理当前运行的配置数据库文件——更改到不同的配置数据库可能会导致不同的认证配置。
  • 生成创建事件代理当前配置所需的命令序列。
  • 将配置文件复制到和从事件代理。
  • 创建事件代理配置文件的本地备份。
  • 显示位于事件代理目录中的文本文件的内容。
  • 显示内部调试信息。
  • 将多个诊断文件和命令输出收集到一个诊断文件中。
  • 在冗余部署中为事件代理设置预共享认证密钥。
  • 为事件代理设置服务器证书。 |

VPN访问级别

下表提供了可以分配给 CLI 用户的可能消息 VPN 访问级别的信息,以及这些访问级别所呈现的许多功能和限制.

级别功能和限制...
(默认消息 VPN 访问级别的默认值。)CLI 用户对消息 VPN 范围的 CLI 命令没有访问权限。
只读CLI 用户可以:
  • 使用 show 命令查看消息 VPN 的状态和配置信息
  • 清除消息 VPN 事件(但不清除统计信息) | | 读写| 除了消息 VPN 访问级别为只读所提供的功能外,具有消息 VPN 访问级别为读写的 CLI 用户还可以执行大多数消息 VPN 范围的配置更改。
    一些被禁止的配置更改或操作(需要更高的全局访问级别为读写或管理员,因为它们影响系统资源)包括:
  • 配置客户端配置文件
    全局系统管理员预计会创建定义消息 VPN 内客户端预期行为的客户端配置文件。然而,限制在消息 VPN 范围内的 CLI 用户确实可以访问显示客户端配置文件和将客户端配置文件分配给客户端用户名对象。
  • 创建或删除消息 VPN
  • 配置影响系统资源的消息 VPN 参数,例如:
    • export-policy
    • management-message-vpn
    • max-connections
    • max-subscriptions
    • semp-over-msgbus
    • max-egress-flows
    • max-endpoints
    • max-ingress-flows
    • max-spool-usage
    • max-transacted-sessions
  • 配置以下消息 VPN 参数:
    • 消息 VPN 认证
    • 复制桥接配置
    • 复制状态和复制 [no] shutdown |

访问级别关系

下图总结了每个访问级别之间的关系。更具体地说,它显示了每个访问级别如何包含前一个访问级别的权限,并且它还显示了默认情况下每个全局访问级别中包含的消息 VPN 访问级别权限.

img