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 存储库:

  1. 设置 GitHub OAuth 应用(OAuth 2.0)。
  2. 应用 GitHub OAuth App Secret。
3.10.1.1.1. 设置 GitHub OAuth 应用程序

使用 OAuth 2.0 设置 GitHub OAuth 应用程序。

先决条件

  • 已登陆到 GitHub。

流程

  1. 转至 https://github.com/settings/applications/new
  2. 输入以下值:

    1. 应用程序名称 : <application name>
    2. 主页 URLhttps:// <openshift_dev_spaces_fqdn>/
    3. 授权回调 URLhttps:// <openshift_dev_spaces_fqdn> /api/oauth/callback
  3. 点击 Register application
  4. Generate new client secret
  5. 复制并保存 GitHub OAuth 客户端 ID,以便在应用 GitHub OAuth App Secret 时使用。
  6. 复制并保存 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 入门

流程

  1. 准备 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
    1
    OpenShift Dev Spaces 命名空间。默认值为 openshift-devspaces
    2
    这取决于您的机构使用的 GitHub 产品:在 GitHub.com 或 GitHub Enterprise Cloud 上托管软件仓库时,请省略这一行,或者输入默认的 https://github.com。在 GitHub Enterprise 服务器上托管存储库时,请输入 GitHub Enterprise Server URL。
    3
    如果您使用带有禁用 子域隔离 选项的 GitHub Enterprise 服务器,您必须将注解设置为 true,否则您可以省略注解或将其设置为 false
    4
    GitHub OAuth 客户端 ID
    5
    GitHub OAuth 客户端 Secret
  2. 应用 Secret:

    $ oc apply -f - <<EOF
    <Secret_prepared_in_the_previous_step>
    EOF
  3. 在输出中验证是否已创建 Secret。

要为另一个 GitHub 供应商配置 OAuth 2.0,您必须重复上述步骤,并创建具有不同名称的第二个 GitHub OAuth Secret。

3.10.1.2. 为 GitLab 配置 OAuth 2.0

允许用户使用 GitLab 实例托管的远程 Git 存储库:

  1. 设置 GitLab 授权应用程序(OAuth 2.0)。
  2. 应用 GitLab 授权应用程序 Secret。
3.10.1.2.1. 设置 GitLab 授权应用程序

使用 OAuth 2.0 设置 GitLab 授权应用程序。

先决条件

  • 您已登录到 GitLab。

流程

  1. 点您的 avatar,再前往 Edit profile Applications
  2. 输入 OpenShift Dev Spaces 作为 Name
  3. 输入 https://<openshift_dev_spaces_fqdn&gt; /api/oauth/callback 作为 Redirect URI
  4. 选中 机密和 过期访问令牌 复选框。
  5. Scopes 下,选中 apiwrite_repositoryopenid 复选框。
  6. 单击 Save application
  7. 复制并保存 GitLab 应用程序 ID,以便在应用 GitLab-authorized 应用 Secret 时使用。
  8. 复制并保存 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 入门

流程

  1. 准备 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
    1
    OpenShift Dev Spaces 命名空间。默认值为 openshift-devspaces
    2
    GitLab 服务器 URL.将 https://gitlab.com 用于 SAAS 版本。
    3
    GitLab 应用 ID.
    4
    GitLab 客户端 Secret.
  2. 应用 Secret:

    $ oc apply -f - <<EOF
    <Secret_prepared_in_the_previous_step>
    EOF
  3. 在输出中验证是否已创建 Secret。

3.10.1.3. 为 Bitbucket 服务器配置 OAuth 2.0

您可以使用 OAuth 2.0 使用户处理托管在 Bitbucket 服务器上的远程 Git 存储库:

  1. 在 Bitbucket 服务器上设置 OAuth 2.0 应用程序链接。
  2. 为 Bitbucket 服务器应用应用链接 Secret。

3.10.1.4. 为 Bitbucket 云配置 OAuth 2.0

您可以启用用户处理 Bitbucket 云托管的远程 Git 存储库:

  1. 在 Bitbucket 云中设置 OAuth 使用者(OAuth 2.0)。
  2. 为 Bitbucket 云应用 OAuth 使用者 Secret。
3.10.1.4.1. 在 Bitbucket 云中设置 OAuth 使用者

在 Bitbucket 云中为 OAuth 2.0 设置 OAuth 使用者。

先决条件

  • 您已登录到 Bitbucket 云。

流程

  1. 点您的 avatar,再进入 All workspaces 页面。
  2. 选择一个工作区并点它。
  3. 进入 Settings OAuth consumers Add consumer
  4. 输入 OpenShift Dev Spaces 作为 Name
  5. 输入 https://<openshift_dev_spaces_fqdn&gt; /api/oauth/callback 作为 Callback URL
  6. Permissions 下,选中所有 帐户 和存储库复选框,然后单击保存
  7. 扩展添加的消费者,然后复制并保存在应用 Bitbucket OAuth 消费者 Secret 时使用的 Key 值:
  8. 复制并保存 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 入门

流程

  1. 准备 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
    1
    OpenShift Dev Spaces 命名空间。默认值为 openshift-devspaces
    2
    Bitbucket OAuth 使用者密钥
    3
    Bitbucket OAuth 消费者 Secret
  2. 应用 Secret:

    $ oc apply -f - <<EOF
    <Secret_prepared_in_the_previous_step>
    EOF
  3. 在输出中验证是否已创建 Secret。

3.10.1.5. 为 Bitbucket 服务器配置 OAuth 1.0

允许用户使用托管在 Bitbucket 服务器上的远程 Git 存储库:

  1. 在 Bitbucket 服务器上设置应用程序链接(OAuth 1.0)。
  2. 为 Bitbucket 服务器应用应用链接 Secret。

3.10.1.6. 为 Microsoft Azure DevOps 服务配置 OAuth 2.0

允许用户使用托管在 Microsoft Azure Repos 上的远程 Git 存储库:

  1. 设置 Microsoft Azure DevOps Services OAuth 应用(OAuth 2.0)。
  2. 应用 Microsoft Azure DevOps Services OAuth App Secret。

3.10.1.6.1. 设置 Microsoft Azure DevOps Services OAuth 应用程序

使用 OAuth 2.0 设置 Microsoft Azure DevOps Services OAuth 应用程序。

先决条件

  • 已登陆到 Microsoft Azure DevOps Services

    重要

    为您的机构启用了通过 OAuth 进行第三方应用程序访问。请参阅 为您的机构更改应用程序连接和安全策略

    流程

    1. 访问 https://app.vsaex.visualstudio.com/app/register/
    2. 输入以下值:

      1. 公司名称OpenShift Dev Spaces
      2. 应用程序名称OpenShift Dev Spaces
      3. 应用程序网站https:// &lt;openshift_dev_spaces_fqdn>/
      4. 授权回调 URLhttps:// &lt;openshift_dev_spaces_fqdn&gt; /api/oauth/callback
    3. Select Authorized scopes 中,选择 Code (读取和写入)。
    4. Create application
    5. 复制并保存 App ID,以便在应用 Microsoft Azure DevOps Services OAuth App Secret 时使用。
    6. Show 以显示 Client Secret
    7. 复制并保存 Client Secret,以便在应用 Microsoft Azure DevOps Services OAuth App Secret 时使用。

3.10.1.6.2. 应用 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 入门

流程

  1. 准备 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
    1
    OpenShift Dev Spaces 命名空间。默认值为 openshift-devspaces
    2
    Microsoft Azure DevOps 服务 OAuth 应用 ID.
    3
    Microsoft Azure DevOps Services OAuth 客户端 Secret
  2. 应用 Secret:

    $ oc apply -f - <<EOF
    <Secret_prepared_in_the_previous_step>
    EOF
  3. 在输出中验证是否已创建 Secret。
  4. 等待 OpenShift Dev Spaces 服务器组件的推出完成。

3.10.2. 为 Dev Spaces 用户配置集群角色

您可以通过向这些用户添加集群角色来授予 OpenShift Dev Spaces 用户更多集群权限。

先决条件

  • 具有对目标 OpenShift 集群的管理权限的活跃 oc 会话。请参阅 CLI 入门

流程

  1. 定义用户角色名称:

    $ USER_ROLES=<name> 1
    1
    唯一的资源名称。
  2. 找到部署 OpenShift Dev Spaces Operator 的命名空间:

    $ OPERATOR_NAMESPACE=$(oc get pods -l app.kubernetes.io/component=devspaces-operator -o jsonpath={".items[0].metadata.namespace"} --all-namespaces)
  3. 创建所需的角色:

    $ 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
    1
    对于 <verbs >,列出适用于此规则中包含的所有 ResourceKinds 和 AttributeRestrictions 的所有 Verbs。您可以使用 * 来代表所有动词。
    2
    对于 <apiGroups >,将包含资源的 APIGroups 命名为。
    3
    对于 <resources >,列出此规则应用到的所有资源。您可以使用 * 来代表所有动词。
  4. 将角色委派给 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
  5. 配置 OpenShift Dev Spaces Operator,将角色委派给 che 服务帐户:

    $ kubectl patch checluster devspaces \
      --patch '{"spec": {"components": {"cheServer": {"clusterRoles": ["'${USER_ROLES}'"]}}}}' \
      --type=merge -n openshift-devspaces
  6. 配置 OpenShift Dev Spaces 服务器,将角色委派给用户:

    $ kubectl patch checluster devspaces \
      --patch '{"spec": {"devEnvironments": {"user": {"clusterRoles": ["'${USER_ROLES}'"]}}}}' \
      --type=merge -n openshift-devspaces
  7. 等待 OpenShift Dev Spaces 服务器组件的推出完成。
  8. 要求用户退出登录并登录以应用新角色。

3.10.3. 配置高级授权

您可以确定允许哪些用户和组访问 OpenShift Dev Spaces。

先决条件

  • 具有对目标 OpenShift 集群的管理权限的活跃 oc 会话。请参阅 CLI 入门

流程

  1. 配置 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
    1
    允许访问 Red Hat OpenShift Dev Spaces 的用户列表。
    2
    允许访问 Red Hat OpenShift Dev Spaces 的用户组列表(仅适用于 OpenShift Container Platform)。
    3
    拒绝访问 Red Hat OpenShift Dev Spaces 的用户列表。
    4
    拒绝访问 Red Hat OpenShift Dev Spaces 的用户组列表(仅适用于 OpenShift Container Platform)。
  2. 等待 OpenShift Dev Spaces 服务器组件的推出完成。
注意

要允许用户访问 OpenShift Dev Spaces,请将它们添加到 allowUsers 列表中。或者,选择用户所属的组,并将该组添加到 allowGroups 列表中。要拒绝用户访问 OpenShift Dev Spaces,请将它们添加到 denyUsers 列表中。或者,选择用户所属的组,并将该组添加到 denyGroups 列表中。如果用户位于 allowdeny 列表中,它们将被拒绝访问 OpenShift Dev Spaces。

如果 allowUsersallowGroups 为空,则允许所有用户访问 OpenShift Dev Spaces,但拒绝 列表中的用户除外。如果 denyUsersdenyGroups 为空,则只允许来自 允许列表 的用户访问 OpenShift Dev Spaces。

如果 allowdeny 列表都为空,则允许所有用户访问 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 入门

流程

  1. 使用以下命令列出 OpenShift 集群中的所有用户:

    $ oc get users
  2. 删除用户条目:
重要

如果用户有任何关联的资源(如项目、角色或服务帐户),则需要先删除这些资源,然后才能删除用户。

$ oc delete user <username>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.