3.11. 管理身份和授权
本节论述了管理 Red Hat OpenShift Dev Spaces 的身份和授权的不同方面。
3.11.1. 为 Git 供应商配置 OAuth
要启用实验性功能,在 Red Hat OpenShift Dev Spaces 中在启动时强制刷新个人访问令牌,请修改自定义资源配置,如下所示:
spec: components: cheServer: extraProperties: CHE_FORCE_REFRESH_PERSONAL_ACCESS_TOKEN: "true"
您可以在 OpenShift Dev Spaces 和 Git 供应商之间配置 OAuth,让用户能够处理远程 Git 存储库:
3.11.1.1. 为 GitHub 配置 OAuth 2.0
要让用户处理托管在 GitHub 上的远程 Git 存储库:
- 设置 GitHub OAuth 应用程序(OAuth 2.0)。
- 应用 GitHub OAuth App Secret。
3.11.1.1.1. 设置 GitHub OAuth 应用程序
使用 OAuth 2.0 设置 GitHub OAuth 应用程序。
先决条件
- 已登陆到 GitHub。
流程
- 进入 https://github.com/settings/applications/new。
输入以下值:
-
应用程序名称 : <
;application name>
-
主页 URL:
https:// <openshift_dev_spaces_fqdn>/
-
授权回调 URL:
https:// <openshift_dev_spaces_fqdn> /api/oauth/callback
-
应用程序名称 : <
- 点击 Register application。
- 点 Generate new client secret。
- 复制并保存应用 GitHub OAuth App Secret 时要使用的 GitHub OAuth 客户端 ID。
- 复制并保存 GitHub OAuth Client Secret,以便在应用 GitHub OAuth App Secret 时使用。
3.11.1.1.2. 应用 GitHub OAuth 应用程序 Secret
准备并应用 GitHub OAuth 应用程序 Secret。
先决条件
- 设置 GitHub OAuth 应用程序已完成。
在设置 GitHub OAuth App 时会生成以下值:
- GitHub OAuth 客户端 ID
- GitHub OAuth 客户端 Secret
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。
流程
准备 Secret:
kind: Secret apiVersion: v1 metadata: name: github-oauth-config namespace: openshift-devspaces 1 labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: oauth-scm-configuration annotations: che.eclipse.org/oauth-scm-server: github che.eclipse.org/scm-server-endpoint: <github_server_url> 2 che.eclipse.org/scm-github-disable-subdomain-isolation: 'false' 3 type: Opaque stringData: id: <GitHub_OAuth_Client_ID> 4 secret: <GitHub_OAuth_Client_Secret> 5
应用 Secret:
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
- 在输出中验证是否已创建 Secret。
要为另一个 GitHub 提供程序配置 OAuth 2.0,您必须重复上述步骤,并使用其他名称创建第二个 GitHub OAuth Secret。
3.11.1.2. 为 GitLab 配置 OAuth 2.0
允许用户处理使用 GitLab 实例托管的远程 Git 存储库:
- 设置 GitLab 授权应用程序(OAuth 2.0)。
- 应用 GitLab 授权应用程序 Secret。
3.11.1.2.1. 设置 GitLab 授权应用程序
使用 OAuth 2.0 设置 GitLab 授权应用程序。
先决条件
- 您已登录到 GitLab。
流程
-
点您的 avatar,再转到
。 - 输入 OpenShift Dev Spaces 作为 Name。
-
输入
https:// <openshift_dev_spaces_fqdn> /api/oauth/callback
作为 Redirect URI。 - 选中 机密和 过期访问令牌 复选框。
-
在 Scopes 下,选中
api
、write_repository
和openid
复选框。 - 单击 Save application。
- 复制并保存 GitLab 应用 ID,以便在应用 GitLab-authorized 应用程序 Secret 时使用。
- 复制并保存 GitLab 客户端 Secret,以便在应用 GitLab-authorized 应用程序 Secret 时使用。
其他资源
3.11.1.2.2. 应用 GitLab-authorized 应用程序 Secret
准备并应用 GitLab-authorized 应用程序 Secret。
先决条件
- 设置 GitLab 授权应用程序已完成。
在设置 GitLab 授权应用程序时生成的以下值是准备的:
- GitLab 应用程序 ID
- GitLab Client Secret
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。
流程
准备 Secret:
kind: Secret apiVersion: v1 metadata: name: gitlab-oauth-config namespace: openshift-devspaces 1 labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: oauth-scm-configuration annotations: che.eclipse.org/oauth-scm-server: gitlab che.eclipse.org/scm-server-endpoint: <gitlab_server_url> 2 type: Opaque stringData: id: <GitLab_Application_ID> 3 secret: <GitLab_Client_Secret> 4
应用 Secret:
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
- 在输出中验证是否已创建 Secret。
3.11.1.3. 为 Bitbucket 服务器配置 OAuth 2.0
您可以使用 OAuth 2.0 允许用户处理托管在 Bitbucket 服务器上的远程 Git 存储库:
- 在 Bitbucket 服务器上设置 OAuth 2.0 应用程序链接。
- 为 Bitbucket 服务器应用应用程序链接 Secret。
3.11.1.3.1. 在 Bitbucket 服务器上设置 OAuth 2.0 应用程序链接
在 Bitbucket 服务器上设置 OAuth 2.0 应用程序链接。
先决条件
- 您已登录到 Bitbucket 服务器。
流程
- 前往 Administration > Applications > Application links。
- 选择 Create link。
- 选择 External application and Incoming。
-
输入
https://<openshift_dev_spaces_fqdn> /api/oauth/callback
到 Redirect URL 字段。 - 在应用程序 权限 中选择 Admin - Write 复选框。
- 点击 Save。
- 复制并保存应用 Bitbucket 应用程序链接 Secret 时要使用的 客户端 ID。
- 复制并保存应用 Bitbucket 应用程序链接 Secret 时要使用的 Client secret。
其他资源
3.11.1.3.2. 为 Bitbucket 服务器应用 OAuth 2.0 应用程序链接 Secret
为 Bitbucket 服务器准备并应用 OAuth 2.0 应用程序链接 Secret。
先决条件
- 应用程序链接已在 Bitbucket 服务器上设置。
在设置 Bitbucket 应用程序链接时会生成以下值:
- Bitbucket 客户端 ID
- Bitbucket 客户端 secret
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。
流程
准备 Secret:
kind: Secret apiVersion: v1 metadata: name: bitbucket-oauth-config namespace: openshift-devspaces 1 labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: oauth-scm-configuration annotations: che.eclipse.org/oauth-scm-server: bitbucket che.eclipse.org/scm-server-endpoint: <bitbucket_server_url> 2 type: Opaque stringData: id: <Bitbucket_Client_ID> 3 secret: <Bitbucket_Client_Secret> 4
应用 Secret:
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
- 在输出中验证是否已创建 Secret。
3.11.1.4. 为 Bitbucket 云配置 OAuth 2.0
您可以允许用户处理在 Bitbucket 云托管的远程 Git 存储库:
- 在 Bitbucket 云中设置 OAuth 使用者(OAuth 2.0)。
- 为 Bitbucket 云应用 OAuth 使用者 Secret。
3.11.1.4.1. 在 Bitbucket 云中设置 OAuth 使用者
在 Bitbucket 云中为 OAuth 2.0 设置 OAuth 使用者。
先决条件
- 您已登录到 Bitbucket 云。
流程
- 点您的 avatar,再进入 All workspaces 页面。
- 选择一个工作区并点它。
-
前往
。 - 输入 OpenShift Dev Spaces 作为 Name。
-
输入
https:// <openshift_dev_spaces_fqdn> /api/oauth/callback
作为 Callback URL。 - 在 权限 下,选中所有 帐户 和存储库复选框,然后单击保存。
- 扩展添加的消费者,然后复制并保存应用 Bitbucket OAuth 消费者 Secret 时使用的 Key 值:
- 复制并保存应用 Bitbucket OAuth 消费者 Secret 时使用的 Secret 值。
3.11.1.4.2. 为 Bitbucket 云应用 OAuth 消费者 Secret
为 Bitbucket 云准备并应用 OAuth 使用者 Secret。
先决条件
- OAuth 使用者在 Bitbucket 云中设置。
在设置 Bitbucket OAuth 使用者时会生成以下值:
- Bitbucket OAuth 消费者密钥
- Bitbucket OAuth 消费者 Secret
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。
流程
准备 Secret:
kind: Secret apiVersion: v1 metadata: name: bitbucket-oauth-config namespace: openshift-devspaces 1 labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: oauth-scm-configuration annotations: che.eclipse.org/oauth-scm-server: bitbucket type: Opaque stringData: id: <Bitbucket_Oauth_Consumer_Key> 2 secret: <Bitbucket_Oauth_Consumer_Secret> 3
应用 Secret:
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
- 在输出中验证是否已创建 Secret。
3.11.1.5. 为 Bitbucket 服务器配置 OAuth 1.0
要让用户处理托管在 Bitbucket 服务器上的远程 Git 存储库:
- 在 Bitbucket 服务器上设置应用程序链接(OAuth 1.0)。
- 为 Bitbucket 服务器应用应用程序链接 Secret。
3.11.1.5.1. 在 Bitbucket 服务器上设置应用程序链接
在 Bitbucket 服务器上为 OAuth 1.0 设置应用程序链接。
先决条件
- 您已登录到 Bitbucket 服务器。
-
OpenSSL
安装在您正在使用的操作系统中。
流程
在命令行中,运行命令来为后续步骤创建必要的文件,并在应用应用程序链接 Secret 时使用:
$ openssl genrsa -out private.pem 2048 && \ openssl pkcs8 -topk8 -inform pem -outform pem -nocrypt -in private.pem -out privatepkcs8.pem && \ cat privatepkcs8.pem | sed 's/-----BEGIN PRIVATE KEY-----//g' | sed 's/-----END PRIVATE KEY-----//g' | tr -d '\n' > privatepkcs8-stripped.pem && \ openssl rsa -in private.pem -pubout > public.pub && \ cat public.pub | sed 's/-----BEGIN PUBLIC KEY-----//g' | sed 's/-----END PUBLIC KEY-----//g' | tr -d '\n' > public-stripped.pub && \ openssl rand -base64 24 > bitbucket-consumer-key && \ openssl rand -base64 24 > bitbucket-shared-secret
-
前往
。 -
在 URL 字段中输入
https:// <openshift_dev_spaces_fqdn> /
,然后点击 Create new link。 - 在 所提供的 应用程序 URL 下已重定向一次,选中 Use this URL 复选框,然后单击 Continue。
- 输入 OpenShift Dev Spaces 作为 Application Name。
- 选择 Generic Application 作为 Application Type。
- 输入 OpenShift Dev Spaces 作为 Service Provider Name。
-
将
bitbucket-consumer-key
文件的内容粘贴为 Consumer 键。 -
将
bitbucket-shared-secret
文件的内容粘贴为 Shared secret。 -
输入
<bitbucket_server_url> /plugins/servlet/oauth/request-token
作为 Request Token URL。 -
输入
<bitbucket_server_url>/plugins/servlet/oauth/access-token
作为 Access token URL。 -
输入
<bitbucket_server_url> /plugins/servlet/oauth/authorize
作为 Authorize URL。 - 选中 Create incoming link 复选框,再单击 Continue。
-
将
bitbucket-consumer-key
文件的内容粘贴为 Consumer Key。 - 输入 OpenShift Dev Spaces 作为 Consumer 名称。
-
将
public-striped.pub 文件的内容
粘贴为 公钥,然后单击 Continue。
3.11.1.5.2. 为 Bitbucket 服务器应用应用程序链接 Secret
为 Bitbucket 服务器准备并应用应用程序链接 Secret。
先决条件
- 应用程序链接已在 Bitbucket 服务器上设置。
在设置应用程序链接时创建的以下文件已准备好:
-
privatepkcs8-stripped.pem
-
bitbucket-consumer-key
-
bitbucket-shared-secret
-
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。
流程
准备 Secret:
kind: Secret apiVersion: v1 metadata: name: bitbucket-oauth-config namespace: openshift-devspaces 1 labels: app.kubernetes.io/component: oauth-scm-configuration app.kubernetes.io/part-of: che.eclipse.org annotations: che.eclipse.org/oauth-scm-server: bitbucket che.eclipse.org/scm-server-endpoint: <bitbucket_server_url> 2 type: Opaque stringData: private.key: <Content_of_privatepkcs8-stripped.pem> 3 consumer.key: <Content_of_bitbucket-consumer-key> 4 shared_secret: <Content_of_bitbucket-shared-secret> 5
应用 Secret:
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
- 在输出中验证是否已创建 Secret。
3.11.1.6. 为 Microsoft Azure DevOps 服务配置 OAuth 2.0
要让用户处理托管在 Microsoft Azure Repos 上的远程 Git 存储库:
- 设置 Microsoft Azure DevOps Services OAuth App (OAuth 2.0)。
- 应用 Microsoft Azure DevOps Services OAuth App Secret。
3.11.1.6.1. 设置 Microsoft Azure DevOps Services OAuth 应用程序
使用 OAuth 2.0 设置 Microsoft Azure DevOps Services OAuth 应用程序。
先决条件
您已登录到 Microsoft Azure DevOps 服务。
重要为您的机构启用了
通过 OAuth 的第三方应用程序访问
。请参阅 更改您的机构应用程序连接和安全策略。流程
- 请访问 https://app.vsaex.visualstudio.com/app/register/
输入以下值:
-
公司名称 :
OpenShift Dev Spaces
-
应用程序名称 :
OpenShift Dev Spaces
-
应用程序网站:
https:// <openshift_dev_spaces_fqdn>/
-
授权回调 URL:
https:// <openshift_dev_spaces_fqdn> /api/oauth/callback
-
公司名称 :
- 在 Select Authorized scopes 中,选择 Code (read and write)。
- 点 Create application。
- 复制并保存应用 Microsoft Azure DevOps Services OAuth App Secret 时要使用的 App ID。
- 单击 Show 以显示 Client Secret。
- 复制并保存应用 Microsoft Azure DevOps Services OAuth App Secret 时要使用的 客户端 Secret。
3.11.1.6.2. 应用 Microsoft Azure DevOps Services OAuth 应用程序 Secret
准备并应用 Microsoft Azure DevOps Services Secret。
先决条件
- 设置 Microsoft Azure DevOps Services OAuth 应用程序已完成。
在设置 Microsoft Azure DevOps Services OAuth App 时会生成以下值:
- App ID
- Client Secret
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。
流程
准备 Secret:
kind: Secret apiVersion: v1 metadata: name: azure-devops-oauth-config namespace: openshift-devspaces1 labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: oauth-scm-configuration annotations: che.eclipse.org/oauth-scm-server: azure-devops type: Opaque stringData: id: <Microsoft_Azure_DevOps_Services_OAuth_App_ID>2 secret: <Microsoft_Azure_DevOps_Services_OAuth_Client_Secret>3
应用 Secret:
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
- 在输出中验证是否已创建 Secret。
- 等待 OpenShift Dev Spaces 服务器组件的推出完成。
3.11.2. 为 Dev Spaces 用户配置集群角色
您可以通过在这些用户中添加集群角色来授予 OpenShift Dev Spaces 用户。
先决条件
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。
流程
定义用户角色名称:
$ USER_ROLES=<name> 1
- 1
- 唯一的资源名称。
查找部署 OpenShift Dev Spaces Operator 的命名空间:
$ OPERATOR_NAMESPACE=$(oc get pods -l app.kubernetes.io/component=devspaces-operator -o jsonpath={".items[0].metadata.namespace"} --all-namespaces)
创建所需的角色:
$ kubectl apply -f - <<EOF kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: ${USER_ROLES} labels: app.kubernetes.io/part-of: che.eclipse.org rules: - verbs: - <verbs> 1 apiGroups: - <apiGroups> 2 resources: - <resources> 3 EOF
将角色委托给 OpenShift Dev Spaces Operator:
$ kubectl apply -f - <<EOF kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: ${USER_ROLES} labels: app.kubernetes.io/part-of: che.eclipse.org subjects: - kind: ServiceAccount name: devspaces-operator namespace: ${OPERATOR_NAMESPACE} roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ${USER_ROLES} EOF
配置 OpenShift Dev Spaces Operator,将角色委托给
che
服务帐户:$ kubectl patch checluster devspaces \ --patch '{"spec": {"components": {"cheServer": {"clusterRoles": ["'${USER_ROLES}'"]}}}}' \ --type=merge -n openshift-devspaces
配置 OpenShift Dev Spaces 服务器,将角色委派给用户:
$ kubectl patch checluster devspaces \ --patch '{"spec": {"devEnvironments": {"user": {"clusterRoles": ["'${USER_ROLES}'"]}}}}' \ --type=merge -n openshift-devspaces
- 等待 OpenShift Dev Spaces 服务器组件的推出完成。
- 询问用户退出并登录以应用新角色。
3.11.3. 配置高级授权
您可以确定允许哪些用户和组访问 OpenShift Dev Spaces。
先决条件
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。
流程
配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: networking: auth: advancedAuthorization: allowUsers: - <allow_users> 1 allowGroups: - <allow_groups> 2 denyUsers: - <deny_users> 3 denyGroups: - <deny_groups> 4
- 等待 OpenShift Dev Spaces 服务器组件的推出完成。
要允许用户访问 OpenShift Dev Spaces,请将它们添加到 allowUsers
列表中。或者,选择用户所属的组,并将组添加到 allowGroups
列表中。要拒绝用户访问 OpenShift Dev Spaces,请将它们添加到 denyUsers
列表中。或者,选择用户所属的组,并将组添加到 denyGroups
列表中。如果用户处于 allow
和 deny
列表,则他们会拒绝对 OpenShift Dev Spaces 的访问。
如果 allowUsers
和 allowGroups
为空,则所有用户都可以访问 OpenShift Dev Spaces,但拒绝
列表中的用户除外。如果 denyUsers
和 denyGroups
为空,则只允许来自 允许列表
中的用户访问 OpenShift Dev Spaces。
如果 allow
和 deny
列表都为空,则所有用户都可以访问 OpenShift Dev Spaces。
3.11.4. 删除用户数据以遵守 GDPR
您可以删除 OpenShift Container Platform 上的用户数据,以遵守强制实施其个人数据的 General Data Protection Regulation (GDPR)。其他 Kubernetes 基础架构的过程可能有所不同。按照您要用于 Red Hat OpenShift Dev Spaces 安装的供应商的用户管理最佳实践。
按如下所示删除用户数据是不可逆的!所有删除的数据都将被删除且无法恢复!
先决条件
-
具有 OpenShift Container Platform 集群的管理权限的活跃的
oc
会话。请参阅 OpenShift CLI 入门。
流程
使用以下命令列出 OpenShift 集群中的所有用户:
$ oc get users
- 删除用户条目:
如果用户有任何关联的资源(如项目、角色或服务帐户),则需要在删除用户前先删除这些资源。
$ oc delete user <username>