18.4. 配置身份提供程序
18.4.1. 将 Okta Identity Cloud 配置为 SAML 2.0 身份提供程序
您可以使用 Okta 作为 Red Hat Advanced Cluster Security for Kubernetes (RHACS)的单点登录(SSO)供应商。
18.4.1.1. 创建 Okta 应用程序
在将 Okta 用作 Red Hat Advanced Cluster Security for Kubernetes 的 SAML 2.0 身份提供程序之前,您必须创建一个 Okta app。
Okta 的 开发人员控制台 不支持创建自定义 SAML 2.0 应用程序。如果使用 Developer 控制台,您必须首先切换到 管理控制台 (Classic UI)。要切换,请单击页面左上角的 Developer Console,然后选择 Classic UI。
先决条件
- 您必须拥有具有 Okta 门户管理特权的帐户。
流程
- 在 Okta 门户上,从菜单栏中选择 Applications。
- 单击 Add Application,然后选择 Create New App。
- 在 Create a New Application Integration 对话框中,保留 Web 作为平台,然后选择 SAML 2.0 作为您要登录的协议。
- 点 Create。
- 在 General Settings 页面中,在 App name 字段中输入应用程序的名称。
- 点击 Next。
在 SAML Settings 页面中,为以下字段设置值:
单点登录
-
将它指定为
https://<RHACS_portal_hostname>/sso/providers/saml/acs
。 - 请选中 Use this for Recipient URL 和 Destination URL 选项。
- 如果您的 RHACS 门户可在不同的 URL 中访问,您可以通过检查 Allow this app to request other SSO URL 选项并使用 指定格式添加替代 URL 来添加它们。
-
将它指定为
受众 URI (SP Entity ID)
- 将值设为 RHACS 或您选择的其他值。
- 记住您选择的值;在配置 Red Hat Advanced Cluster Security for Kubernetes 时,您将需要这个值。
属性声明
- 您必须至少添加一个属性语句。
红帽建议使用 email 属性:
- 名称: email
- 格式: Unspecified
- 值 : user.email
- 在继续操作前,验证您至少配置一个 Attribute 语句。
- 点击 Next。
- 在 Feedback 页面中,选择一个适用于您的选项。
- 选择适当的应用程序 类型。
- 点 Finish。
配置完成后,您会被重定向到新应用的 Sign On 设置页面。黄色框包含您需要配置 Red Hat Advanced Cluster Security for Kubernetes 的信息的链接。
创建应用程序后,将 Okta 用户分配给此应用程序。进入 Assignments 选项卡,并分配可以访问 Red Hat Advanced Cluster Security for Kubernetes 的独立用户或组集合。例如,分配组 Everyone,以允许机构中所有用户访问 Red Hat Advanced Cluster Security for Kubernetes。
18.4.1.2. 配置 SAML 2.0 身份提供程序
使用本节中的说明,将 Security Assertion Markup Language (SAML) 2.0 身份提供程序与 Red Hat Advanced Cluster Security for Kubernetes (RHACS)集成。
先决条件
- 您必须具有在 RHACS 中配置身份提供程序的权限。
- 对于 Okta 身份提供程序,您必须为 RHACS 配置一个 Okta 应用程序。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Access Control。 - 点 Create auth provider,然后从下拉列表中选择 SAML 2.0。
- 在 Name 字段中输入用于标识此身份验证提供程序的名称;例如,Okta 或 Google。集成名称显示在登录页面中,以帮助用户选择正确的登录选项。
-
在 ServiceProvider issuer 字段中,输入您用作 Okta 中的
Audience URI
或SP Entity ID
的值,或者在其他提供程序中输入类似值。 选择 Configuration 类型:
- 选项 1:动态配置 :如果您选择这个选项,请输入 IdP 元数据 URL,或者 身份提供程序控制台中提供的身份提供程序元数据的 URL。配置值从 URL 获取。
选项 2:静态配置 :从 Okta 控制台中的 View Setup instructions s 链接或其它供应商的类似位置复制所需的静态字段:
- IdP Issuer
- IdP SSO URL
- 名称/ID格式
- IdP 证书(PEM)
为使用 SAML 访问 RHACS 的用户分配 最小访问权限角色。
提示在完成 设置时,将最小访问角色设置为 Admin。之后,您可以返回到 Access Control 页面,以根据身份提供程序中的用户元数据设置更为定制的访问规则。
- 点击 Save。
如果您的 SAML 身份提供程序的身份验证响应满足以下条件:
-
包含
NotValidAfter
断言:用户会话保持有效,直到NotValidAfter
字段中指定的时间已经到期。用户会话过期后,用户必须重新进行身份验证。 -
不包括
NotValidAfter
断言:用户会话在 30 天内保持有效,然后用户必须重新验证。
验证
-
在 RHACS 门户中,进入 Platform Configuration
Access Control。 - 选择 Auth Providers 选项卡。
- 点您要验证配置的身份验证供应商。
- 从 Auth Provider 部分标题选择 Test login。Test 登录页面 将在新的浏览器标签页中打开。
使用您的凭证登录。
-
如果您成功登录,RHACS 会显示
用户 ID
和用户属性
,用于为您登录到系统的凭证发送身份提供程序。 - 如果您的登录尝试失败,RHACS 会显示一条信息,描述无法处理身份提供程序的响应的原因。
-
如果您成功登录,RHACS 会显示
关闭 Test 登录 浏览器标签页。
注意即使响应指出身份验证成功,您可能需要根据身份提供程序的用户元数据创建额外的访问规则。
18.4.2. 将 Google Workspace 配置为 OIDC 身份提供程序
您可以使用 Google Workspace 作为 Red Hat Advanced Cluster Security for Kubernetes 的单点登录(SSO)供应商。
18.4.2.1. 为您的 GCP 项目设置 OAuth 2.0 凭证
要将 Google Workspace 配置为 Red Hat Advanced Cluster Security for Kubernetes 的身份供应商,您必须首先为您的 GCP 项目配置 OAuth 2.0 凭证。
先决条件
- 您必须具有机构的 Google Workspace 帐户的管理员级别访问权限,才能创建新项目,或者为现有项目创建和配置 OAuth 2.0 凭证的权限。红帽建议您创建一个新项目来管理对 Red Hat Advanced Cluster Security for Kubernetes 的访问。
流程
- 创建新的 Google Cloud Platform (GCP)项目,请参阅 Google 文档主题 创建和管理项目。
- 创建项目后,打开 Google API 控制台中的 Credentials 页面。
- 验证左上角的项目名称(位于徽标附近),以确保您使用正确的项目。
-
要创建新凭证,请转至 Create Credentials
OAuth 客户端 ID。 - 选择 Web application 作为 Application type。
- 在 Name 框中输入应用程序名称,如 RHACS。
在 Authorized redirect URIs 框中,输入
https://<stackrox_hostname>:<port_number>/sso/providers/oidc/callback
。-
将
<stackrox_hostname
> 替换为您公开 Central 实例的主机名。 -
将
<port_number
> 替换为您要公开 Central 的端口号。如果您使用标准 HTTPS 端口443,
可以省略端口号。
-
将
- 点 Create。这会创建一个应用程序和凭证,并将您重定向到 credentials 页面。
- 此时会打开一个信息框,显示新创建的应用程序的详细信息。关闭信息框。
-
复制并保存以
.apps.googleusercontent.com
结尾的 客户端 ID。您可以使用 Google API 控制台检查此客户端 ID。 从左侧的导航菜单中选择 OAuth consent 屏幕。
注意OAuth 同意屏幕配置对整个 GCP 项目有效,而不仅仅是您在上一步中创建的应用程序。如果您已在此项目中配置了 OAuth consent 屏幕,并希望为 Red Hat Advanced Cluster Security for Kubernetes 登录应用不同的设置,请创建一个新的 GCP 项目。
在 OAuth consent 屏幕页面中:
- 将 Application type 选择为 Internal。如果您选择 Public,则具有 Google 帐户的任何人都可以登录。
- 输入描述性 应用程序名称。登录时,用户会在同意屏幕上显示此名称。例如,使用 RHACS 或 < ;organization_name> SSO for Red Hat Advanced Cluster Security for Kubernetes。
- 验证 Google API 的 Scopes 是否 只列出 电子邮件、配置集 和 openid 范围。单点登录只需要这些范围。如果您授予其他范围,它会增加公开敏感数据的风险。
18.4.2.2. 指定客户端 secret
Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.39 及更新版本在指定客户端 secret 时支持 OAuth 2.0 授权代码授予 身份验证流。当您使用此身份验证流时,Red Hat Advanced Cluster Security for Kubernetes 使用刷新令牌在 OIDC 身份提供程序中配置的令牌过期时间外登录。
当用户登出时,Red Hat Advanced Cluster Security for Kubernetes 会从客户端中删除刷新令牌。另外,如果您的身份提供程序 API 支持刷新令牌撤销,Red Hat Advanced Cluster Security for Kubernetes 也会向身份提供程序发送请求来撤销刷新令牌。
在配置 Red Hat Advanced Cluster Security for Kubernetes 时,您可以指定客户端 secret,以便与 OIDC 身份提供程序集成。
- 您不能使用带有 Fragment Callback mode 的 Client Secret。
- 您不能编辑现有身份验证供应商的配置。
- 如果要使用 客户端 Secret,则必须在 Red Hat Advanced Cluster Security for Kubernetes 中创建新的 OIDC 集成。
红帽建议在使用 OIDC 身份提供程序连接 Red Hat Advanced Cluster Security for Kubernetes 时使用客户端 secret。如果您不想使用 Client Secret,则必须选择 Do not use Client Secret (not recommended) 选项。
18.4.2.3. 配置 OIDC 身份提供程序
您可以将 Red Hat Advanced Cluster Security for Kubernetes (RHACS)配置为使用 OpenID Connect (OIDC)身份提供程序。
先决条件
- 您必须在身份提供程序中配置了应用程序,如 Google Workspace。
- 您必须具有在 RHACS 中配置身份提供程序的权限。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Access Control。 - 点 Create auth provider,然后从下拉列表中选择 OpenID Connect。
在以下字段中输入信息:
- 名称 :用于标识身份验证提供程序的名称;例如,Google Workspace。集成名称显示在登录页面中,以帮助用户选择正确的登录选项。
回调模式 :选择 Auto-select (推荐),这是默认值,除非身份提供程序需要另一个模式。
注意片段
模式围绕单一页面应用程序(SPAs)的限制。红帽只支持早期集成的
Fragment 模式,不建议将其用于后续集成。issuer: 身份提供程序的根 URL;例如,Google Workspace
https://accounts.google.com
。如需更多信息,请参阅您的身份提供程序文档。注意如果使用 RHACS 版本 3.0.49 及更新的版本,对于 Issuer,您可以执行以下操作:
-
使用
https+insecure://
前缀您的 root URL,以跳过 TLS 验证。此配置不安全,红帽不推荐这样做。仅使用它进行测试。 -
指定查询字符串;例如,
?key1=value1&key2=value2
和 root URL。当您将其输入到授权端点时,RHACS 将 Issuer 的值附加到授权端点。您可以使用它来自定义供应商的登录屏幕。例如,您可以使用hd
参数将 Google Workspace 登录屏幕优化到特定的托管域,或使用pfidpadapterid
参数在PingFederate
中预选一个验证方法。
-
使用
- 客户端 ID :您配置的项目的 OIDC 客户端 ID。
- Client Secret :输入身份提供程序(IdP)提供的客户端 secret。如果不使用客户端 secret (不推荐),请选择 Do not use Client Secret。
为使用所选身份提供程序访问 RHACS 的用户分配 最小访问权限角色。
提示在完成 设置时,将最小访问角色设置为 Admin。之后,您可以返回到 Access Control 页面,以根据身份提供程序中的用户元数据设置更为定制的访问规则。
要为访问 RHACS 的用户和组添加访问规则,请点击 Rules 部分中的 Add new rule。例如,要为名为
administrator
的用户提供 Admin 角色,您可以使用以下键值对创建访问规则:键
值
名称
Administrator
角色
Admin
- 点 Save。
验证
-
在 RHACS 门户中,进入 Platform Configuration
Access Control。 - 选择 Auth provider 选项卡。
- 选择您要为其验证配置的身份验证供应商。
- 从 Auth Provider 部分标题选择 Test login。Test 登录页面 将在新的浏览器标签页中打开。
使用您的凭证登录。
-
如果您成功登录,RHACS 会显示
用户 ID
和用户属性
,用于为您登录到系统的凭证发送身份提供程序。 - 如果您的登录尝试失败,RHACS 会显示一条信息,描述无法处理身份提供程序的响应的原因。
-
如果您成功登录,RHACS 会显示
- 关闭 Test Login 浏览器选项卡。
18.4.3. 将 OpenShift Container Platform OAuth 服务器配置为身份提供程序
OpenShift Container Platform 包含一个内置 OAuth 服务器,您可以用作 Red Hat Advanced Cluster Security for Kubernetes (RHACS)的身份验证供应商。
18.4.3.1. 将 OpenShift Container Platform OAuth 服务器配置为身份提供程序
要将内置的 OpenShift Container Platform OAuth 服务器集成为 RHACS 的身份供应商,请使用本节中的说明。
先决条件
-
您必须具有在 RHACS 中配置身份提供程序的
Access
权限。 - 您必须已通过身份提供程序在 OpenShift Container Platform OAuth 服务器中配置了用户和组。有关身份提供程序要求的详情,请参阅 了解身份提供程序配置。
以下流程只为 OpenShift Container Platform OAuth 服务器配置一个名为 central
的主路由。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Access Control。 - 点 Create auth provider,然后从下拉列表中选择 OpenShift Auth。
- 在 Name 字段中输入身份验证提供程序的名称。
为使用所选身份提供程序访问 RHACS 的用户分配 最小访问权限角色。用户必须具有授予此角色的权限或具有较高权限的角色才能登录到 RHACS。
提示为安全起见,红帽建议在完成设置时 将最小访问角色设置为 None。之后,您可以返回到 Access Control 页面,以根据身份提供程序中的用户元数据设置更为定制的访问规则。
可选: 要为用户和组添加访问 RHACS 的访问规则,请点 Rules 部分中的 Add new rule,然后输入规则信息并点 Save。您需要用户或组的属性,以便您可以配置访问权限。
提示组映射更为可靠,因为组通常与团队或权限集关联,需要比用户更频繁修改。
要在 OpenShift Container Platform 中获取用户信息,您可以使用以下方法之一:
-
点 User Management
Users < username > YAML。 -
访问
k8s/cluster/user.openshift.io~v1~User/<username>/yaml
文件,并记录名称
、uid
( RHACS 中的userid
)和组
。 - 使用 OpenShift Container Platform API,如 OpenShift Container Platform API 参考 中所述。
以下配置示例描述了如何使用以下属性为 Admin 角色配置规则:
-
名称
:管理员
-
groups
:["system:authenticated", "system:authenticated:oauth", "myAdministratorsGroup"]
-
uid
:12345-00aa-1234-123b-123def1234
您可以使用以下方法之一为此管理员角色添加一条规则:
-
要为名称配置规则,请从 Key 下拉列表中选择
name
,在 Value 字段中输入administrator
,然后在 Role 下选择 Administrator。 -
要为组配置规则,请从 Key 下拉列表中选择
groups
,在 Value 字段中输入myAdministratorsGroup
,然后在 Role 下选择 Admin。 -
要为用户名配置规则,请从 Key 下拉列表中选择
userid
,在 Value 字段中输入12345-00aa-1234-123b-123fcdef1234
,然后在 Value 字段中选择 Admin。
-
点 User Management
- 如果将自定义 TLS 证书用于 OpenShift Container Platform OAuth 服务器,您必须将 CA 的 root 证书添加到 Red Hat Advanced Cluster Security for Kubernetes 中作为可信根 CA。否则,Central 无法连接到 OpenShift Container Platform OAuth 服务器。
要使用
roxctl
CLI 安装 Red Hat Advanced Cluster Security for Kubernetes 时启用 OpenShift Container Platform OAuth 服务器集成,请在 Central 中将ROX_ENABLE_OPENSHIFT_AUTH
环境变量设置为true
:$ oc -n stackrox set env deploy/central ROX_ENABLE_OPENSHIFT_AUTH=true
-
为了访问规则,OpenShift Container Platform OAuth 服务器不会返回密钥
Email
。
其他资源
18.4.3.2. 为 OpenShift Container Platform OAuth 服务器创建额外的路由
当使用 Red Hat Advanced Cluster Security for Kubernetes 门户将 OpenShift Container Platform OAuth 服务器配置为身份提供程序时,RHACS 仅为 OAuth 服务器配置单个路由。但是,您可以通过在 Central 自定义资源中将它们指定为注解来创建其他路由。
先决条件
流程
如果使用 RHACS Operator 安装 RHACS:
创建一个
CENTRAL_ADDITIONAL_ROUTES
环境变量,其中包含 Central 自定义资源的补丁:$ CENTRAL_ADDITIONAL_ROUTES=' spec: central: exposure: loadBalancer: enabled: false port: 443 nodePort: enabled: false route: enabled: true persistence: persistentVolumeClaim: claimName: stackrox-db customize: annotations: serviceaccounts.openshift.io/oauth-redirecturi.main: sso/providers/openshift/callback 1 serviceaccounts.openshift.io/oauth-redirectreference.main: "{\"kind\":\"OAuthRedirectReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"Route\",\"name\":\"central\"}}" 2 serviceaccounts.openshift.io/oauth-redirecturi.second: sso/providers/openshift/callback 3 serviceaccounts.openshift.io/oauth-redirectreference.second: "{\"kind\":\"OAuthRedirectReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"Route\",\"name\":\"second-central\"}}" 4 '
将
CENTRAL_ADDITIONAL_ROUTES
补丁应用到 Central 自定义资源:$ oc patch centrals.platform.stackrox.io \ -n <namespace> \ 1 <custom-resource> \ 2 --patch "$CENTRAL_ADDITIONAL_ROUTES" \ --type=merge
或者,如果您使用 Helm 安装 RHACS:
在
values-public.yaml
文件中添加以下注解:customize: central: annotations: serviceaccounts.openshift.io/oauth-redirecturi.main: sso/providers/openshift/callback 1 serviceaccounts.openshift.io/oauth-redirectreference.main: "{\"kind\":\"OAuthRedirectReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"Route\",\"name\":\"central\"}}" 2 serviceaccounts.openshift.io/oauth-redirecturi.second: sso/providers/openshift/callback 3 serviceaccounts.openshift.io/oauth-redirectreference.second: "{\"kind\":\"OAuthRedirectReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"Route\",\"name\":\"second-central\"}}" 4
使用
helm upgrade
将自定义注解应用到 Central 自定义资源:$ helm upgrade -n stackrox \ stackrox-central-services rhacs/central-services \ -f <path_to_values_public.yaml> 1
- 1
- 使用
-f
选项指定values-public.yaml
配置文件的路径。
18.4.4. 使用 SSO 配置将 Azure AD 连接到 RHACS
要使用 Sign-On (SSO)配置将 Azure Active Directory (AD)连接到 RHACS,您需要添加特定的声明(如 组
声明到令牌),并将用户、组或都分配给企业应用。
18.4.4.1. 使用 SSO 配置将组声明添加到 SAML 应用的令牌中
在 Azure AD 中配置应用程序注册,以在令牌中包含 组
声明。具体步骤,请参阅使用 SSO 配置将组声明添加到 SAML 应用的令牌中。
验证您是否使用最新版本的 Azure AD。有关如何将 Azure AD 升级到最新版本的更多信息,请参阅 Azure AD Connect: 从上一版本升级到最新的。