注意
本文档适用于 Ceph 开发版本。
OAuth2 代理
部署oauth2-proxy
从Squid开始的Ceph版本中,oauth2-proxy服务引入了一种高级方法来管理Ceph应用的认证和访问控制。该服务与外部身份提供者(IDP)集成,通过OIDC(OpenID Connect)协议提供安全、灵活的认证。oauth2-proxy作为认证网关,确保对Ceph应用的访问(包括Ceph仪表板和监控堆栈)受到严格控制。
要部署oauth2-proxy服务,请使用以下命令:
ceph orch apply oauth2-proxy [--placement ...] ...
应用后,cephadm将重新配置必要的组件以使用oauth2-proxy进行认证,
oauth2-proxy服务的优势
Enhanced Security
: 通过使用OIDC协议与外部IDP集成,提供强大的认证。Seamless SSO
: 在所有Ceph应用中启用无缝单点登录(SSO),改进用户访问控制。Centralized Authentication
: 集中管理认证,减少复杂性并提高对访问的控制。
安全增强功能
The oauth2-proxy服务确保对Ceph应用的所有访问都经过认证,防止未经授权的用户访问敏感信息。由于它使用了oauth2-proxy开源项目,该服务可以轻松地与各种外部IDPs集成,以提供安全且灵活的认证机制。
高可用性
通常,oauth2-proxy与mgmt-gateway一起使用。该oauth2-proxy服务可以部署为多个无状态的实例,而mgmt-gateway(nginx反向代理)使用轮询策略在这些实例之间处理负载均衡。由于oauth2-proxy与外部身份提供者(IDP)集成,因此登录的高可用性由外部管理,而不是该服务的责任。
使用oauth2-proxy访问服务
部署oauth2-proxy后,访问Ceph应用将需要通过配置的IDP进行认证。用户将被重定向到IDP进行登录,然后返回到请求的应用。这种设置确保了安全的访问,并与Ceph管理堆栈无缝集成。
服务规范
在部署oauth2-proxy服务之前,请记住通过打开mgmt-gateway服务来部署--enable_auth标志。即:
ceph orch apply mgmt-gateway --enable_auth=true
一个oauth2-proxy服务可以使用规范应用。以下是一个YAML示例:
service_type: oauth2-proxy
service_id: auth-proxy
placement:
label: mgmt
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/dex"
client_secret: "your-client-secret"
cookie_secret: "your-cookie-secret"
ssl_certificate: |
-----BEGIN CERTIFICATE-----
MIIDtTCCAp2gAwIBAgIYMC4xNzc1NDQxNjEzMzc2MjMyXzxvQ7EcMA0GCSqGSIb3
DQEBCwUAMG0xCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARVdGFoMRcwFQYDVQQHDA5T
[...]
-----END CERTIFICATE-----
ssl_certificate_key: |
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5jdYbjtNTAKW4
/CwQr/7wOiLGzVxChn3mmCIF3DwbL/qvTFTX2d8bDf6LjGwLYloXHscRfxszX/4h
[...]
-----END PRIVATE KEY-----
特定于spec
部分的oauth2-proxy服务的字段如下所述。字段的更详细描述可以在oauth2-proxy项目文档中找到。
- class ceph.deployment.service_spec.OAuth2ProxySpec(service_type='oauth2-proxy', service_id=无, config=无, 网络=无, placement=无, https_address=无, provider_display_name=无, client_id=无, client_secret=无, oidc_issuer_url=无, redirect_url=无, cookie_secret=无, ssl_cert=无, ssl_key=无, allowlist_domains=无, unmanaged=False, extra_container_args=无, extra_entrypoint_args=无, custom_configs=无)
- client_id
用于向身份提供者进行身份验证的客户ID。
- client_secret
用于向身份提供者进行身份验证的客户密钥。
- https_address
HTTPS连接的地址,格式为“主机:端口”。
- oidc_issuer_url
OpenID Connect(OIDC)发行者的URL。
- placement: PlacementSpec
请参阅守护进程放置.
- provider_display_name
身份提供者(IDP)在UI中的显示名称。
- ssl_cert
用于加密通信的多行SSL证书。
- ssl_key
用于解密通信的多行SSL证书私钥。
然后可以通过运行以下命令应用规范。一旦可用,cephadm将自动重新部署mgmt-gateway服务,同时调整其配置以将认证重定向到新部署的oauth2-service.
ceph orch apply -i oauth2-proxy.yaml
限制
下面是oauth2-proxy服务的一些重要限制:
不支持oauth2-proxy自身的高可用性配置。
正确配置IDP和OAuth2参数对于避免认证失败至关重要。错误的配置可能导致访问问题。
容器镜像
可以通过运行以下命令找到oauth2-proxy服务将使用的容器镜像:
ceph config get mgr mgr/cephadm/container_image_oauth2_proxy
管理员可以指定要使用的自定义镜像,通过更改container_image_oauth2_proxycephadm模块选项。如果已经运行了守护进程,则必须重新部署它们以使用新镜像。
例如:
ceph config set mgr mgr/cephadm/container_image_oauth2_proxy <new-oauth2-proxy-image>
ceph orch redeploy oauth2-proxy
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.