|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
开放ID连接 (OIDC)
概述
SUSE Observability 可以使用 OIDC 认证提供者进行身份验证。要启用此功能,您需要配置 SUSE Observability 和 OIDC 提供者以便它们能够相互通信。以下部分描述了各自的设置。
配置 OIDC 提供者
在您可以配置 SUSE Observability 使用 OIDC 进行身份验证之前,您需要在 OIDC 提供者上为 SUSE Observability 创建一个客户端。
Rancher
| 这仅适用于 Rancher 2.12 或更高版本。 您需要https://documentation.suse.com/cloudnative/rancher-manager/latest/en/rancher-admin/users/authn-and-authz/configure-oidc-provider.html[将 Rancher 配置为 OIDC 提供者]。 |
在 Rancher 本地群集中创建一个 OIDCClient 资源:
apiVersion: management.cattle.io/v3
kind: OIDCClient
metadata:
name: oidc-observability
spec:
tokenExpirationSeconds: 600
refreshTokenExpirationSeconds: 3600
redirectURIs:
- "https://<observability-base-url>/loginCallback?client_name=StsOidcClient"
Rancher 会在其状态字段中提供客户端 ID 和密钥:
apiVersion: management.cattle.io/v3
kind: OIDCClient
metadata:
name: oidc-observability
spec:
tokenExpirationSeconds: 600
refreshTokenExpirationSeconds: 3600
redirectURIs:
- "https://<observability-base-url>/loginCallback?client_name=StsOidcClient"
status:
clientID: <oidc-client-id>
clientSecrets:
client-secret-1:
createdAt: "xxx"
lastFiveCharacters: xxx
您可以通过以下方式获取密钥值
kubectl get secret <oidc-client-id> -n cattle-oidc-client-secrets -o jsonpath="{.data.client-secret-1}" | base64 -d
其他 OIDC 提供者
使用以下设置为客户端(如果 OIDC 提供者需要):
-
使用 OIDC 授权流,它通常也被称为授权码流。SUSE Observability 不支持隐式授权和混合流,因此无需启用对它们的支持。
-
将*重定向 URI* 设置为 SUSE Observability 的基本 URL,后面加上
/loginCallback?client_name=StsOidcClient。例如https://stackstate.acme.com/loginCallback?client_name=StsOidcClient。对于某些 OIDC 提供者,如 Google 和 Azure Entra ID,重定向 URI 必须完全匹配,包括任何查询参数。在这种情况下,您应该将 URI 配置为https://stackstate.acme.com/loginCallback?client_name=StsOidcClient。 -
为 SUSE Observability 授予至少
openid和email的作用域,或使用您 OIDC 提供者中相应的等效配置。根据提供者的不同,可能需要更多的权限,如果存在单独的profile,也请将其包含在内。 -
SUSE Observability 需要 OIDC 离线访问。对于某些身份提供者,这需要额外的范围,通常称为
offline_access。
此配置的结果应生成一个 clientId 和一个 secret。复制这些并保留以配置 SUSE Observability。还要写下提供者的 discoveryUri。通常这在同一屏幕中,或者可以在文档中找到。
为 OIDC 配置 SUSE Observability
Rancher
| 这仅适用于 Rancher 2.12 或更高版本。 您需要https://documentation.suse.com/cloudnative/rancher-manager/latest/en/rancher-admin/users/authn-and-authz/configure-oidc-provider.html[将 Rancher 配置为 OIDC 提供者]。 |
要将 Rancher 配置为 SUSE Observability 的 OIDC 提供者,您需要将 OIDC 详细信息添加到身份验证值中:
stackstate:
authentication:
rancher:
clientId: "<oidc-client-id>"
secret: "<oidc-secret>"
baseUrl: "<rancher-url>"
您可以使用以下字段覆盖和扩展 Rancher 的 OIDC 配置:
-
discoveryUri - 可用于发现 OIDC 提供程序的 URI。通常在 OIDC 提供程序中创建客户端时也会记录或返回。
-
redirectUri - 可选(示例中未包含):SUSE Observability 的登录回调端点可访问的 URI。默认使用
stackstate.baseUrl填充,但可以被覆盖。这必须是指向/loginCallback路径的完全合格 URL。 -
customParameters - 可选的键/值对映射,您将其作为自定义请求参数发送给 OIDC 提供程序。某些 OIDC 提供程序需要额外的请求参数,而这些参数默认未发送。
如果由于未使用可验证的 SSL 证书的设置而需要禁用 TLS 验证,您可以通过应用程序配置禁用 SSL 检查(请勿在生产环境中使用):
对于 Non-HA 设置:
stackstate:
components:
server:
extraEnv:
open:
CONFIG_FORCE_stackstate_misc_sslCertificateChecking: false
对于 HA (高可用性) 设置:
stackstate:
components:
api:
extraEnv:
open:
CONFIG_FORCE_stackstate_misc_sslCertificateChecking: false
在 HA 部署中,api 组件以不同的方式处理配置。使用以下内容:
=== Kubernetes
要在 Kubernetes 上配置 SUSE Observability 使用 OIDC 身份验证提供程序,您需要将 OIDC 详细信息和用户角色映射添加到文件 authentication.yaml 中。例如:
stackstate:
authentication:
oidc:
clientId: "<client-id-from-oidc-provider>"
secret: "<secret-from-oidc-provider>"
discoveryUri: "https://oidc.acme.com/.well-known/openid-configuration"
jwsAlgorithm: RS256
scope: ["openid", "email"]
jwtClaims:
usernameField: email
displayNameField: name
groupsField: groups
customParameters:
access_type: offline
# map the groups from OIDC provider
# to the 4 standard roles in SUSE Observability (guest, powerUser, k8sTroubleshooter and admin)
roles:
guest: ["guest-group-in-oidc-provider"]
powerUser: ["powerUser-group-in-oidc-provider"]
admin: ["admin-group-in-oidc-provider"]
k8sTroubleshooter: ["troubleshooter-group-in-oidc-provider"]
按照以下步骤配置 SUSE Observability 以使用 OIDC 进行身份验证:
-
在
authentication.yaml中 - 添加 OIDC 身份验证提供程序的详细信息(请参见上面的示例):-
clientId - 您为 SUSE Observability 创建的 OIDC 客户端的 ID。
-
secret - 您为 SUSE Observability 创建的 OIDC 客户端的密钥。
-
discoveryUri - 可用于发现 OIDC 提供程序的 URI。通常在 OIDC 提供程序中创建客户端时也会记录或返回。
-
jwsAlgorithm - OIDC 的默认值是
RS256。如果您的 OIDC 提供程序使用不同的算法,可以在此处设置。 -
scope - 应与 OIDC 提供程序配置中提供的范围匹配,或是其子集。SUSE Observability 使用此信息请求访问 OIDC 提供程序中用户配置文件的这些部分。
-
redirectUri - 可选(示例中未包含):SUSE Observability 的登录回调端点可访问的 URI。默认使用
stackstate.baseUrl填充,但可以被覆盖。这必须是指向/loginCallback路径的完全合格 URL。 -
customParameters - 可选的键/值对映射,作为自定义请求参数发送到 OIDC 提供程序。某些 OIDC 提供程序需要额外的请求参数,而这些参数默认情况下不会发送。
-
jwtClaims -
-
usernameField - OIDC 用户资料中应作为用户名使用的字段。默认情况下,这将是
preferred_username,但是许多提供程序省略此字段。一个好的替代方案是email。 -
displayNameField - OIDC 用户资料中应作为显示名称使用的字段。默认情况下,这将是
name。 -
groupsField - SUSE Observability 将从中读取用户角色/组的字段。
-
-
-
在
authentication.yaml中 - 使用roles.guest、roles.powerUser、roles.admin或roles.platformAdmin设置将 OIDC 的用户角色映射到正确的 SUSE Observability 主体(请参见上面的示例)。有关详细信息,请参见 默认的 SUSE Observability 角色。还可以创建更多 SUSE Observability 角色,请参见 RBAC 文档。 -
将文件
authentication.yaml与 SUSE Observability 安装说明中的values.yaml文件一起存储。 -
运行 Helm 升级以应用更改:
helm upgrade \ --install \ --namespace suse-observability \ --values values.yaml \ --values authentication.yaml \ suse-observability \ suse-observability/suse-observability
|
注意:
|
使用外部 Secret
当 oidc 密钥应来自外部密文时,请遵循 这些步骤,但填写以下数据:
kind: Secret
metadata:
name: "<custom-secret-name>"
type: Opaque
data:
oidc_client_id: <base64 of client id>
oidc_secret: <base64 of secret>