3.10. 管理身份和授权
本节介绍了管理 Red Hat OpenShift Dev Spaces 的身份和授权的不同方面。
3.10.1. 为 Git 供应商配置 OAuth 复制链接链接已复制到粘贴板!
您可以在 OpenShift Dev Spaces 和 Git 供应商之间配置 OAuth,允许用户使用远程 Git 存储库:
3.10.1.1. 为 GitHub 配置 OAuth 2.0 复制链接链接已复制到粘贴板!
允许用户使用 GitHub 上托管的远程 Git 存储库:
- 设置 GitHub OAuth 应用(OAuth 2.0)。
- 应用 GitHub OAuth App Secret。
3.10.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 客户端 ID,以便在应用 GitHub OAuth App Secret 时使用。
- 复制并保存 GitHub OAuth 客户端 Secret,以便在应用 GitHub OAuth App Secret 时使用。
3.10.1.1.2. 应用 GitHub OAuth 应用程序 Secret 复制链接链接已复制到粘贴板!
准备并应用 GitHub OAuth App 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-devspaces1 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.10.1.2. 为 GitLab 配置 OAuth 2.0 复制链接链接已复制到粘贴板!
允许用户使用 GitLab 实例托管的远程 Git 存储库:
- 设置 GitLab 授权应用程序(OAuth 2.0)。
- 应用 GitLab 授权应用程序 Secret。
3.10.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.10.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-devspaces1 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.10.1.3. 为 Bitbucket 服务器配置 OAuth 2.0 复制链接链接已复制到粘贴板!
您可以使用 OAuth 2.0 使用户处理托管在 Bitbucket 服务器上的远程 Git 存储库:
- 在 Bitbucket 服务器上设置 OAuth 2.0 应用程序链接。
- 为 Bitbucket 服务器应用应用链接 Secret。
3.10.1.3.1. 在 Bitbucket 服务器上设置 OAuth 2.0 应用程序链接 复制链接链接已复制到粘贴板!
在 Bitbucket 服务器上设置 OAuth 2.0 应用程序链接。
先决条件
- 您已登录到 Bitbucket 服务器。
流程
- 进入 Administration > Applications > Application links。
- 选择 Create link。
- 选择 External application 和 Incoming。
-
在 Redirect URL 字段中输入
https:// <openshift_dev_spaces_fqdn> /api/oauth/callback。 - 选择 应用权限 中的 Admin - Write 复选框。
- 点击 Save。
- 复制并保存在应用 Bitbucket 应用程序链接 Secret 时使用的客户端 ID。
- 复制并保存 Client secret,以便在应用 Bitbucket 应用程序链接 Secret 时使用。
其他资源
3.10.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-devspaces1 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.10.1.4. 为 Bitbucket 云配置 OAuth 2.0 复制链接链接已复制到粘贴板!
您可以启用用户处理 Bitbucket 云托管的远程 Git 存储库:
- 在 Bitbucket 云中设置 OAuth 使用者(OAuth 2.0)。
- 为 Bitbucket 云应用 OAuth 使用者 Secret。
3.10.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。 - 在 Permissions 下,选中所有 帐户 和存储库复选框,然后单击保存。
- 扩展添加的消费者,然后复制并保存在应用 Bitbucket OAuth 消费者 Secret 时使用的 Key 值:
- 复制并保存 Secret 值,以便在应用 Bitbucket OAuth 消费者 Secret 时使用。
3.10.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-devspaces1 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.10.1.5. 为 Bitbucket 服务器配置 OAuth 1.0 复制链接链接已复制到粘贴板!
允许用户使用托管在 Bitbucket 服务器上的远程 Git 存储库:
- 在 Bitbucket 服务器上设置应用程序链接(OAuth 1.0)。
- 为 Bitbucket 服务器应用应用链接 Secret。
3.10.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。 - 在提供的 Application 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 链接 复选框,然后单击 Continue。
-
将
bitbucket-consumer-key文件的内容粘贴到 Consumer Key。 - 输入 OpenShift Dev Spaces 作为 Consumer 名称。
-
将
public-stripped.pub文件的内容粘贴到 公钥 中,然后单击 Continue。
3.10.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-devspaces1 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.10.1.6. 为 Microsoft Azure DevOps 服务配置 OAuth 2.0 复制链接链接已复制到粘贴板!
允许用户使用托管在 Microsoft Azure Repos 上的远程 Git 存储库:
- 设置 Microsoft Azure DevOps Services OAuth 应用(OAuth 2.0)。
- 应用 Microsoft Azure DevOps Services OAuth App Secret。
使用 OAuth 2.0 设置 Microsoft Azure DevOps Services OAuth 应用程序。
先决条件
已登陆到 Microsoft Azure DevOps Services。
重要为您的机构启用了通过 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 (读取和写入)。
- 点 Create application。
- 复制并保存 App ID,以便在应用 Microsoft Azure DevOps Services OAuth App Secret 时使用。
- 点 Show 以显示 Client Secret。
- 复制并保存 Client Secret,以便在应用 Microsoft Azure DevOps Services OAuth App Secret 时使用。
准备并应用 Microsoft Azure DevOps Services Secret。
先决条件
- 设置 Microsoft Azure DevOps Services OAuth 应用程序已完成。
设置 Microsoft Azure DevOps Services OAuth 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.10.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.10.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.10.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>