4.5. 使用 OpenID Connect (OIDC)协议的 Ceph Dashboard SSO


Ceph 管理堆栈使用基于服务的模块化架构构建,该架构依赖于 nginxoauth2-proxy 组件。

重要

使用 OpenID Connect (OIDC)协议的 Ceph Dashboard SSO 是 Red Hat Ceph Storage 8.0 的一个技术预览功能

红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。如需了解更多详细信息,请参阅红帽技术预览功能的支持范围。

Ceph 管理网关(mgmt-gateway)为 Ceph 控制面板和监控提供统一访问、改进的用户体验和高可用性。

OAuth2 代理(oauth2-proxy)服务提供增强的安全性、无缝 SSO 和集中式身份验证管理。

自行启用 mgmt-gateway 服务,为集群提供单进入点、监控和仪表板的高可用性,以及提高安全性。启用服务与 oauth2-proxy 以使用 SSO。

使用 Ceph 管理网关(mgmt-gateway)和 OAuth2 代理(oauth2-proxy),在配置了单点登录(SSO)时,nginx 会自动通过 oauth2-proxy 将用户定向到配置的身份提供程序(IdP)。然后 IdP 运行身份验证并登录。

此配置提供以下优点:

  • 统一访问。
  • 改进的用户体验。
  • Ceph 控制面板和监控的高可用性。
  • 增强的安全性。
  • 无缝 SSO。
  • 集中式身份验证管理。

有关此模块 SSO 解决方案和使用 Ceph 控制面板实施的更多信息,请参阅启用 OAuth2 单点登录

4.5.1. 使用 Ceph 管理网关(mgmt-gateway)

Ceph 管理网关(mgmt-gateway)服务提供模块化、基于服务的架构设计。Cephadm 管理 'mgmt-gatewa'y 服务,该服务基于 nginx 构建。此网关充当 Ceph 集群的前端和单一入口点,为所有 Ceph 应用提供统一访问,包括 Ceph 控制面板和监控堆栈。

重要

使用 Ceph 管理网关(mgmt-gateway)是 Red Hat Ceph Storage 8.0 的技术预览功能

红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。如需了解更多详细信息,请参阅红帽技术预览功能的支持范围。

使用 nginx 增强了安全性,并简化了访问管理,因为其强大的社区支持和高安全标准。mgmt-gateway 服务充当反向代理,将请求路由到适当的 Ceph 应用实例。自行使用 mgmt-gateway 或 OAuth2 Proxy 服务进行身份验证,以启用对 Ceph 控制面板的单点登录(SSO)访问。有关 OAuth2 代理服务的更多信息,请参阅使用 OAuth2 代理(oauth2-proxy)服务

使用 Ceph 管理网关会带来多个优点。

统一访问
使用 Ceph 管理网关会带来多个优点。
改进了用户体验
用户不再需要跟踪每个应用程序的运行位置(IP 或 host)。
Ceph 仪表板的高可用性
Nginx 高可用性(HA)机制用于为 Ceph 控制面板提供高可用性。
监控的高可用性
nginx 高可用性机制用于为监控提供高可用性。

部署 mgmt-gateway 提供增强的安全性。部署 mgmt-gateway 服务后,在没有通过 Ceph 控制面板进行身份验证的情况下无法访问监控服务。部署该服务后,可以通过 Ceph 仪表板上的链接访问 Prometheus、Grafana 和 Alertmanager 应用程序。要获取应用程序链接,请转至 Ceph 仪表板上的 Administration→Services

注意

使用 mgmt-gateway 模式时,Prometheus 和 Alertmanager 需要用户必须定义一个唯一的用户和密码。默认值为 admin:admin。

nginx HA 机制用于为所有 Ceph 管理应用提供高可用性,包括 Ceph 控制面板和监控堆栈。mgmt-gateway 服务透明处理管理器故障转移,并将用户重定向到活跃管理器。

通过监控,当有多个 Prometheus、Alertmanager 或 Grafana 实例可用时,Ceph Management 服务会处理 HA。反向代理会自动检测健康的实例,并使用它们来处理用户请求。

4.5.1.1. Ceph 管理网关限制

使用 mgmt-gateway 服务有以下限制:

  • 目前不支持 mgmt-gateway 服务本身的高可用性配置和集群。
  • 服务必须绑定到基于代理的应用程序的适当端口。确保没有端口冲突可能会破坏服务可用性。
  • mgmt-gateway 服务内部利用 nginx 反向代理。使用以下命令查找默认容器镜像:

    DEFAULT_NGINX_IMAGE = 'quay.io/ceph/NGINX_IMAGE'

    存储管理员可以通过更改 container_image_nginx cephadm 模块选项来更改所使用的镜像。如果其他守护进程正在运行,您必须重新部署守护进程以使用新镜像。

    ceph config set mgr mgr/cephadm/container_image_nginx NEW_NGINX_IMAGE
    ceph orch redeploy mgmt-gateway

4.5.1.2. 使用命令行界面启用 Ceph 管理网关

启用 Ceph 管理网关,以便访问控制面板和 Ceph 集群。使用此信息,通过 cephadm CLI 命令启用 mgmt-gateway 服务。

步骤

  1. 部署 mgmt-gateway 服务。

    语法

    ceph orch apply mgmt-gateway [--placement=DESTINATION_HOST] [--enable-auth=true]

    注意

    需要 --enable-auth=true 参数启用带有 oauth2-proxy 的 SSO。

    示例

    [ceph: root@host01 /]# ceph orch apply mgmt-gateway --placement=host01

  2. 验证服务是否已正确部署。

4.5.1.3. 使用服务规格文件启用 Ceph 管理网关

启用 Ceph 管理网关,以便访问控制面板和 Ceph 集群。使用此信息通过服务规格文件启用 mgmt-gateway 服务。

先决条件

在启用 Ceph 管理网关之前,请确保以下内容位于 mgmt-gateway 服务将在其中运行的每个 Ceph 节点上:

  • 网关服务使用的端口。
  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • (可选)正在使用的 SSL 协议。
  • (可选)SSL 密码。
  • (可选)SSL 证书和密钥密钥。

有关 SSL 协议、密码、证书和证书密钥的更多信息,请参阅 Red Hat Enterprise Linux 文档中的 部署 Web 服务器和反向代理

步骤

  1. mgmt-gateway 服务创建一个 YAML 文件。

    示例

    [root@host01 ~]# touch mgmt-gateway.yaml

  2. 编辑 YAML 文件,使其包含以下详情:

    重要

    以下字段是可选的: ssl_protocols,ssl_ciphers, 和 ssl_certificate。省略时,mgmt-gateway 服务使用安全且安全的配置。允许更改这些字段,但应小心操作,因为这会破坏您系统的安全性。

    语法

    service_type: mgmt-gateway
    placement:
      hosts:
        - ceph-node-1
    spec:
     port: 9443
     ssl_protocols:   # Optional
       - TLSv1.3
     ssl_ciphers:     # Optional
       - AES128-SHA
       - AES256-SHA
       - RC4-SHA
     ssl_cert: |   # Optional
       -----BEGIN CERTIFICATE-----
       < YOU CERT DATA HERE >
       -----END CERTIFICATE-----
     ssl_key: |
      -----BEGIN RSA PRIVATE KEY-----
       < YOU PRIV KEY DATA HERE >
      -----END RSA PRIVATE KEY-----

    重要

    使用 TLSv1.3 SSL 协议。TLSv1.3 默认包含一组安全密码。虽然支持 TLSv1.2,但在使用此协议时只使用安全密码的子集。使用弱或过时的密码可能会显著破坏您的系统的安全性。

    示例

    service_type: mgmt-gateway
    service_id: gateway
    placement:
      hosts:
        - ceph0
    spec:
     port: 5000
     ssl_protocols:
       - TLSv1.3
       - ...
     ssl_ciphers:
       - AES128-SHA
       - AES256-SHA
       - ...
     ssl_cert: |
       -----BEGIN CERTIFICATE-----
       MIIDtTCCAp2gAwIBAgIYMC4xNzc1NDQxNjEzMzc2MjMyXzxvQ7EcMA0GCSqGSIb3
       DQEBCwUAMG0xCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARVdGFoMRcwFQYDVQQHDA5T
       [...]
       -----END CERTIFICATE-----
    ssl_key: |
       -----BEGIN PRIVATE KEY-----
       MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5jdYbjtNTAKW4
       /CwQr/7wOiLGzVxChn3mmCIF3DwbL/qvTFTX2d8bDf6LjGwLYloXHscRfxszX/4h
       [...]
       -----END PRIVATE KEY-----

    下表列出了特定于 spec 文件的 mgmt-gateway 服务部分的字段(ceph.deployment.service_spec.MgmtGatewaySpec)。

    Expand
    表 4.1. spec 文件中的 mgmt-gateway 特定字段
    字段描述

    disable_https

    是禁用 HTTPS 的标记。如果为 True,服务器将使用不安全的 HTTP。

    enable_auth

    是启用 SSO 身份验证的标志。要求 oauth2-proxy 处于活动状态,以进行 SSO 身份验证。

    networks

    网络身份列表,指示守护进程仅在该列表中的特定网络上绑定。如果集群在多个网络间分布,您可以添加多个网络。

    placement

    若要让编配器部署服务,需要知道部署守护进程的位置以及要部署的数量。这是放置规格的角色。放置规格可以作为命令行参数或 YAML 文件传递。有关更多信息,请参阅使用 Ceph 编排器管理服务

    port

    服务器将侦听的端口号。

    server_tokens

    标记响应中的服务器令牌:在 关闭构建字符串

    ssl_cert

    包含 SSL 证书的多行字符串。

    ssl_key

    包含 SSL 密钥的多行字符串。

    ssl_ciphers

    支持的安全 SSL 密码列表。更改此列表可能会降低系统安全性。

    ssl_prefer_server_ciphers

    首选使用客户端密码的服务器密码: 在 上关闭

    ssl_protocols

    支持的 SSL 协议列表(如 nginx 支持的)。

    ssl_session_cache

    SSL/TLS 会话缓存持续时间: off,none,[builtin[:size ] , [shared:name:size].

    ssl_session_tickets

    控制会话票据的多选项标志: 在 上关闭

    ssl_session_timeout

    SSL 会话超时的持续时间。语法:时间(例如 5m)。

    ssl_stapling

    用于启用或禁用 SSL stapling: on 的标志,关闭

    ssl_stapling_verify

    用于控制 SSL stapling 的验证的标志: 在 上关闭

  3. 应用规格文件。

    语法

    [root@host01 ~]# ceph orch apply -i mgmt-gateway.yaml

4.5.2. 使用 OAuth2 代理(oauth2-proxy)服务

OAuth2 代理服务提供了一种高级方法,用于管理 Ceph 应用的身份验证和访问控制。oauth2-proxy 服务与外部身份提供程序(IdP)集成,以提供带有 OpenID Connect (OIDC)协议的安全、灵活的身份验证。oauth2-proxy 充当身份验证网关,确保对 Ceph 应用程序的访问被严格控制。

重要

使用 OAuth2 代理(oauth2-proxy)服务是 Red Hat Ceph Storage 8.0 的技术预览功能

红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。如需了解更多详细信息,请参阅红帽技术预览功能的支持范围。

将 OAuth2 代理服务与身份验证一起使用需要使用 Ceph 管理网关(mgmt-gateway)。有关更多信息,请参阅使用 Ceph 管理网关(mgmt-gateway)

使用 oauth2-proxy 服务会提供多个优点。

增强的安全性
使用 OIDC 协议通过与外部 IdP 集成提供可靠的身份验证。
无缝单点登录(SSO)
在所有 Ceph 监控应用程序中启用无缝 SSO,改进了用户访问控制。有关为 Ceph 控制面板启用 OAuth2 SSO 的更多信息,请参阅启用 OAuth2 单点登录
集中身份验证
集中身份验证管理,降低复杂性并改进了对访问的控制。

部署 oauth2-proxy 服务提供增强的安全性。部署 oauth2-proxy 服务后,所有对 Ceph 应用程序的访问必须通过使用 OIDC 的外部 IdP 进行身份验证。身份验证可防止未授权用户访问敏感信息。用户将重定向到 IdP 以登录,然后返回到请求的应用程序。这个设置可确保安全访问,并与 Ceph 管理堆栈无缝集成。Prometheus、Alertmanager 和 Grafana Ceph 应用程序都需要通过所需的 IdP 进行身份验证。

oauth2-proxy 服务使用 OAuth 提供程序开源项目,使服务与各种外部 IdP 集成,提供安全且灵活的身份验证机制。有关有效 OAuth 提供程序的完整列表,请参阅 OAuth2 Proxy Docs 上的 OAuth Provider 配置

4.5.2.1. OAuth2 代理限制

oauth2-proxy 服务不支持高可用性配置。

重要

正确配置 IdP 和 OAuth2 代理参数对于避免身份验证失败至关重要。错误配置可能会导致访问问题。

创建 admin 帐户,将 OAuth2 服务同步到 Ceph 控制面板。

使用 Red Hat Single Sign-on (SSO)将用户同步到 Ceph 仪表板。请参阅 使用红帽单点登录将用户同步到 Ceph 仪表板

如需更多信息,请参阅以下:

先决条件

在开始前,请确保您有以下先决条件:

步骤

  1. 将 Red Hat Single Sign-On 7.6.0 Server 下载到安装 IBM Storage Ceph 的系统上。有关下载软件包和信息,请参阅红帽客户门户网站中的 Red Hat Single Sign-On 7.6.0 Server 的软件 详情。 https://access.redhat.com/jbossnetwork/restricted/softwareDetail.html?softwareId=104539&product=core.service.rhsso&version=7.6&downloadType=distributions
  2. 提取文件夹:

    语法

    [root@host01 ~]# unzip rhsso-7.6.0.zip

  3. 进入新创建的 rhsso-7.6.0 目录下的独立 /配置目录,并打开 standalone.xml 文件进行编辑

    语法

    [root@host01 ~]# cd standalone/configuration
    [root@host01 configuration]# vi standalone.xml

  4. localhost127.0.0.1 替换为安装 Red Hat Single-Sign On 的服务器的 IP 地址。
  5. 在新创建的 rhsso-7.6.0 文件夹的 bin 目录中,运行 add-user-keycloak 脚本来添加初始管理员用户:

    语法

    [root@host01 bin]# ./add-user-keycloak.sh -u admin

  6. 可选: Red Hat Enterprise Linux 8 或更高版本的用户可能会获得证书颁发机构(CA)问题。从 CA 导入自定义证书,并将它们移到带有确切的 Java 版本的密钥存储中。

    语法

    keytool -import -noprompt -trustcacerts -alias ca -file ../ca.cer -keystore /etc/java/java-1.8.0-openjdk/java-1.8.0-openjdk-1.8.0.272.b10-3.el8_3.x86_64/lib/security/cacert

  7. 启动服务器。在 rh-sso-7.6 文件夹的 bin 目录中,运行 独立 引导脚本:

    [root@host01 bin]# ./standalone.sh
  8. 使用创建的新用户名和密码,登录 https:IP_ADDRESS:8080/auth 中的 admin 帐户。

    注意

    只有在第一次登录到控制台时,才需要创建一个 admin 帐户。

从 Red Hat Single Sign-On 控制台完成这些步骤。

步骤

  1. 创建 realm。realm 必须是 Enabled
  2. 进入 Realm Settings adn 完成所需的设置。

    • Enabled 切换到 ON
    • 用户管理的访问切换为 ON
    • 单击 OpenID Endpoint Configuration 的链接地址,以检索 OAuth2 配置所需的端点。签发者端点在 OAuth2 服务配置过程中使用。
  3. 创建客户端。将客户端 协议 设置为 openid-connect
  4. 更新客户端设置。

  5. 验证客户端凭据。检查 Client Authenticator 是否已设置为 Client Id 和 Secret。在配置 oauth2-proxy 服务时,secret 用作 client_secret 参数
  6. 创建新管理员角色。输入 administrator 作为角色名称。
  7. 更新管理员信息。

    1. 前往 Manage→Users→Add User。填写 用户名电子邮件名字姓氏,并将 电子邮件验证 切换为 ON
    2. Credentials,为管理员用户设置新密码凭据。
    3. 角色映射 中,将 Client Roles 设置为在第 3 步中创建的客户端,然后点第 6 步中创建的 管理员角色Add selected

4.5.2.3. 启用 OAuth2 代理服务

启用 OAuth2 代理服务,以便 SSO 访问控制面板和 Ceph 集群。使用 cephadm CLI 命令或使用服务规格文件启用 oauth2-proxy 服务。

运行 ceph config get 命令查找 oauth2-proxy 容器镜像。

ceph config get mgr mgr/cephadm/container_image_oauth2_proxy

存储管理员可以通过更改 container_image_oauth2_proxy cephadm 模块选项来指定自定义镜像。如果其他守护进程正在运行,您必须重新部署守护进程以使用新镜像。

ceph config set mgr mgr/cephadm/container_image_oauth2_proxy NEW_OAUTH2_PROXY_IMAGE
ceph orch redeploy oauth2_proxy

先决条件

在开始前,请确保您有以下先决条件:

4.5.2.3.1. 使用命令行界面启用 OAuth2 代理服务

步骤

  1. 部署 oauth2-proxy 服务。

    语法

    ceph orch apply oauth2-proxy [--placement=DESTINATION_HOST]

    示例

    [ceph: root@host01 /]# ceph orch apply oauth2-proxy [--placement=host01]

  2. 验证服务是否已正确部署。

启用 OAuth2 代理服务,以便 SSO 访问控制面板和 Ceph 集群。使用此信息通过服务规格文件启用 oauth2-proxy 服务。

先决条件

在启用 OAuth2 代理服务前,请确保以下位于 oauth2-proxy 服务将在其中运行的每个 Ceph 节点上:

  • 您的客户端 ID。
  • OIDC 签发者 URL。
  • 客户端机密.
  • 允许的相关域地址。

    注意

    域可以是与 oidc_issuer_url 相同或不同。

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • (可选)主机 HTTPS 地址和主机端口。
  • (可选) Cookie secret。
  • (可选)SSL 证书和密钥密钥。

有关 SSL 协议、密码、证书和证书密钥的更多信息,请参阅 Red Hat Enterprise Linux 文档中的 部署 Web 服务器和反向代理

步骤

  1. oauth2-proxy 服务创建一个 YAML 文件。

    示例

    [root@host01 ~]# touch oauth2-proxy.yaml

  2. 编辑 YAML 文件,使其包含以下详情:

    语法

    service_type: oauth2-proxy
    service_id: auth-proxy
    placement:
      hosts:
        - ceph-node-1
    spec:
     https_address: HTTPS_ADDRESS:PORT
     provider_display_name: MY OIDC PROVIDER
     client_id: CLIENT_ID
     oidc_issuer_url: OIDC ISSUER URL
     allowlist_domains:
         - HTTPS_ADDRESS:PORT
     client_secret: CLIENT_SECRET
     cookie_secret: COOKIE_SECRET
     ssl_cert: |
       -----BEGIN CERTIFICATE-----
       < YOU CERT DATA HERE >
       -----END CERTIFICATE-----
     ssl_key: |
      -----BEGIN RSA PRIVATE KEY-----
       < YOU PRIV KEY DATA HERE >
      -----END RSA PRIVATE KEY-----

    示例

    service_type: oauth2-proxy
    service_id: auth-proxy
    placement:
      hosts:
        - ceph0
    spec:
     https_address: "0.0.0.0:4180"
     provider_display_name: "My OIDC Provider"
     client_id: "your-client-id"
     oidc_issuer_url: "http://192.168.100.1:5556/realms/ceph"
     allowlist_domains:
         - 192.168.100.1:8080
         - 192.168.200.1:5000
     client_secret: "your-client-secret"
     cookie_secret: "your-cookie-secret"
     ssl_cert: |
       -----BEGIN CERTIFICATE-----
       MIIDtTCCAp2gAwIBAgIYMC4xNzc1NDQxNjEzMzc2MjMyXzxvQ7EcMA0GCSqGSIb3
       DQEBCwUAMG0xCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARVdGFoMRcwFQYDVQQHDA5T
       [...]
       -----END CERTIFICATE-----
    ssl_key: |
       -----BEGIN PRIVATE KEY-----
       MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5jdYbjtNTAKW4
       /CwQr/7wOiLGzVxChn3mmCIF3DwbL/qvTFTX2d8bDf6LjGwLYloXHscRfxszX/4h
       [...]
       -----END PRIVATE KEY-----

    下表列出了特定于 spec 文件的 oauth2-proxy 服务部分的字段(ceph.deployment.service_spec.OAuth2ProxySpec)。

    Expand
    表 4.2. spec 文件中的 oauth2-proxy 特定字段
    字段描述

    allowlist_domains

    登录或注销后允许进行安全重定向的域列表,防止未经授权的重定向。这可以与 oidc_issuer_url 相同或不同。

    client_id

    用于与身份提供程序进行身份验证的客户端 ID。

    client_secret

    用于与身份提供程序进行身份验证的客户端 secret。

    cookie_secret

    secret 密钥用于签名 Cookie。其长度必须为 16 字节、24 字节或 32 字节才能创建 AES 密码。

    https_address

    HTTPS 连接的地址,其格式为 host:port

    networks

    网络身份列表,指示守护进程仅在该列表中的特定网络上绑定。如果集群在多个网络间分布,您可以添加多个网络。

    oidc_issuer_url

    OpenID Connect (OIDC)签发者的 URL。

    placement

    若要让编配器部署服务,需要知道部署守护进程的位置以及要部署的数量。这是放置规格的角色。放置规格可以作为命令行参数或 YAML 文件传递。有关更多信息,请参阅使用 Ceph 编排器管理服务

    provider_display_name

    UI 中的身份提供程序(IDP)的显示名称。

    redirect_url

    可选。URL oauth2-proxy 将在成功登录后重定向到。如果没有提供,cephadm 会自动计算此 URL 的值。

    ssl_cert

    包含 SSL 证书的多行字符串。

    ssl_key

    包含 SSL 密钥的多行字符串。

  3. 应用规格文件。

    语法

    [root@host01 ~]# ceph orch apply -i oauth2-proxy.yaml

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部