第 2 章 Red Hat Developer Hub 中的权限策略


Red Hat Developer Hub 中的权限策略是一组规则,用于管理对资源或功能的访问。这些策略基于其角色来说明授予用户的授权级别。实施权限策略,以维护给定环境中的安全性和保密性。

您可以在 Developer Hub 中定义以下类型的权限:

  • 资源类型
  • 基本的

两种权限类型之间的区别取决于权限是否包含定义的资源类型。

您可以使用关联的资源类型或权限名称来定义资源类型权限,如下例所示:

资源类型权限定义示例

p, role:default/myrole, catalog.entity.read, read, allow
g, user:default/myuser, role:default/myrole

p, role:default/another-role, catalog-entity, read, allow
g, user:default/another-user, role:default/another-role

您可以使用权限名称在 Developer Hub 中定义基本权限,如下例所示:

基本权限定义示例

p, role:default/myrole, catalog.entity.create, create, allow
g, user:default/myuser, role:default/myrole

Developer Hub 支持以下权限策略:

目录权限
Name资源类型policy描述

catalog.entity.read

catalog-entity

读取

允许从目录中读取用户或角色

catalog.entity.create

 

create

允许用户或角色创建目录实体,包括在目录中注册现有组件

catalog.entity.refresh

catalog-entity

update

允许用户或角色从目录中刷新单个或多个实体

catalog.entity.delete

catalog-entity

delete

允许用户或角色从目录中删除单个或多个实体

catalog.location.read

 

读取

允许用户或角色从目录中读取单个或多个位置

catalog.location.create

 

create

允许用户或角色在目录中创建位置

catalog.location.delete

 

delete

允许用户或角色从目录中删除位置

Scaffolder 权限
Name资源类型policy描述

scaffolder.action.execute

scaffolder-action

 

允许从模板执行操作

scaffolder.template.parameter.read

scaffolder-template

读取

允许用户或角色从模板中读取单个或多个参数

scaffolder.template.step.read

scaffolder-template

读取

允许用户或角色从模板读取单个或多个步骤

scaffolder.task.create

 

create

允许用户或角色触发软件模板,以创建新的构建程序任务

scaffolder.task.cancel

  

允许用户或角色取消当前运行的构建程序任务

scaffolder.task.read

 

读取

允许用户或角色读取所有构建器任务及其关联的事件和日志

RBAC 权限
Name资源类型policy描述

policy.entity.read

policy-entity

读取

允许用户或角色读权限策略和角色

policy.entity.create

policy-entity

create

允许用户或角色创建单个或多个权限策略和角色

policy.entity.update

policy-entity

update

允许用户或角色更新单个或多个权限策略和角色

policy.entity.delete

policy-entity

delete

允许用户或角色删除一个或多个权限策略和角色

Kubernetes 权限
Name资源类型policy描述

kubernetes.proxy

  

允许用户或角色访问代理端点

OCM 权限
Name资源类型policy描述

ocm.entity.read

 

读取

允许从 OCM 插件读取用户或角色

ocm.cluster.read

 

读取

允许用户或角色读取 OCM 插件中的集群信息

拓扑权限
Name资源类型policy描述

topology.view.read

 

读取

允许用户或角色查看拓扑插件

kubernetes.proxy

  

允许用户或角色访问代理端点,允许他们读取 RHDH 中的 pod 日志和事件

2.1. 权限策略配置

在 Red Hat Developer Hub 中配置权限策略的方法有两种,包括:

  • 配置权限策略管理员
  • 配置外部文件中定义的权限策略

2.1.1. 配置权限策略管理员

Developer Hub 中用户和组的权限策略由权限策略管理员管理。只有权限策略管理员才能访问基于角色的访问控制 REST API。

配置策略管理员的目的是启用特定、有限的经过身份验证的用户来访问 RBAC REST API。权限策略在 policy.csv 文件中定义,该文件在 app-config-rhdh ConfigMap 中被引用。OpenShift 平台管理员或集群管理员可以执行此任务,并可访问部署 Red Hat Developer Hub 的命名空间。

您可以通过配置 app-config.yaml 文件来启用权限策略管理员,如下所示:

permission:
  enabled: true
  rbac:
    admin:
      users:
        - name: user:default/joeuser

权限策略角色(role:default/rbac_admin)在 Developer Hub 中是一个默认角色,在创建时包括一些权限,如创建、读取、更新和删除权限策略/角色,以及从目录中读取。

如果默认权限不适合您的要求,您可以使用相关权限策略根据您的要求定义新的管理员角色。另外,您可以使用可选的 superUsers 配置值,该值在 Developer Hub 间授予不受限制的权限。

您可以在 app-config.yaml 文件中设置 superUsers,如下所示:

# ...
permission:
  enabled: true
  rbac:
    admin:
      superUsers:
        - name: user:default/joeuser
        # ...

2.1.2. 配置外部文件中定义的权限策略

您可以在启动 Red Hat Developer Hub 前配置权限策略。如果在外部文件中定义了权限策略,您可以在 Developer Hub 中导入同一文件。您必须使用以下 Casbin 规则格式定义权限策略:

---
`p, <ROLE>, <PERMISSION_NAME or PERMISSION_RESOURCE_TYPE>, <PERMISSION_POLICY_ACTION>, <ALLOW or DENY>`
---

您可以使用以下 Casbin 规则格式定义角色:

---
`g, <USER or GROUP>, <ROLE>`
---
注意

有关 Casbin 规则格式的详情,请参考 Casbin 规则的基本

以下是权限策略配置示例:

---
`p, role:default/guests, catalog-entity, read, allow`

p, role:default/guests, catalog.entity.create, create, allow

g, user:default/<USER_TO_ROLE>, role:default/guests

g, group:default/<GROUP_TO_ROLE>, role:default/guests --

如果定义的权限不包含与其关联的操作,请添加 use 作为策略。请参见以下示例:

---
`p, role:default/guests, kubernetes.proxy, use, allow`
---

您可以在 app-config.yaml 文件中定义 policy.csv 文件路径:

permission:
  enabled: true
  rbac:
    policies-csv-file: /some/path/rbac-policy.csv

您可以使用可选配置值来启用重新载入 CSV 文件,而无需重启 Developer Hub 实例。

app-config.yaml 文件中设置 policyFileReload 选项的值:

# ...
permission:
  enabled: true
  rbac:
    policies-csv-file: /some/path/rbac-policy.csv
    policyFileReload: true
    # ...

2.1.2.1. 将 policy.csv 文件挂载到 Developer Hub Helm Chart 中

当使用 Helm Chart 部署 Red Hat Developer Hub 时,您必须通过将 policy.csv 文件挂载到 Developer Hub Helm Chart 来定义 policy.csv 文件。

您可以通过创建 configMap 并挂载它,将 policy.csv 文件添加到 Developer Hub Helm Chart 中。

先决条件

  • 使用 OpenShift Container Platform Web 控制台登录到 OpenShift Container Platform 帐户。
  • Red Hat Developer Hub 使用 Helm Chart 安装并进行部署。

流程

  1. 在 OpenShift Container Platform 中,创建一个 ConfigMap 来保存策略,如下例所示:

    ConfigMap 示例

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: rbac-policy
      namespace: rhdh
    data:
      rbac-policy.csv: |
        p, role:default/guests, catalog-entity, read, allow
        p, role:default/guests, catalog.entity.create, create, allow
    
        g, user:default/<YOUR_USER>, role:default/guests

  2. 在 Developer Hub Helm Chart 中,进入 Root Schema Backstage chart schema Backstage parameters Backstage container additional volume mount
  3. 选择 Add Backstage 容器附加卷挂载 并添加以下值:

    • mountPath:opt/app-root/src/rbac
    • 名称rbac-policy
  4. 将 RBAC 策略添加到 Developer Hub Helm Chart 中的 Backstage 容器 附加卷:

    • 名称rbac-policy
    • configMap

      • defaultMode:420
      • 名称rbac-policy
  5. 更新 app-config.yaml 文件中的策略路径,如下所示:

    app-config.yaml 文件示例

    permission:
      enabled: true
      rbac:
        policies-csv-file: ./rbac/rbac-policy.csv

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.