Connector 资源级别与权限

目录

Overview

为了从不同层级管理和使用 Connector 资源,以满足各种组织结构的需求,Connector 系统提供了不同级别的 Connector 资源及权限限制。

所有 Connector 资源均在集群内使用,不能跨集群使用。在当前集群内,Connector 资源分为三个层级:

  • 集群级别
  • 项目级别(命名空间组)
  • 命名空间级别

不同层级创建的资源拥有不同的访问权限,且分别建立在不同的命名空间下。

  • 集群级别:位于 kube-public 命名空间下,由当前集群共享。
  • 项目级别:位于以项目命名的命名空间下,在当前集群内该项目的命名空间范围内共享。
  • 命名空间级别:普通命名空间中的 Connector 只能被当前命名空间访问。

Cluster Level

所有位于 kube-public 命名空间下的 Connector 资源属于集群级别资源。集群级别的 Connector 资源可以被当前集群内所有命名空间访问,实现集群范围共享。

例如,在 kube-public 下创建的名为 github-connector 的 Connector 资源,可以被任意命名空间中的 Pod 挂载使用。

kind: Pod
metadata:
  # . . .
  namespace: default
spec:
  # . . .
  volumes:
  - name: git-config
    csi:
      readOnly: true
      driver: connectors-csi
      volumeAttributes:
        connector.name: "github-connector"
        connector.namespace: "kube-public"
        configuration.names: "config"

Namespace Level

在某个命名空间内创建的 Connector 被归类为命名空间级别资源。命名空间级别的 Connector 资源只能被当前命名空间访问。

例如,在 default 命名空间中创建的名为 github-connector 的 Connector 资源,只能被 default 命名空间中的 Pod 挂载使用。如果 ns-1 试图访问,则会出现权限拒绝错误。

kind: Pod
metadata:
  # . . .
  namespace: default
spec:
  # . . .
  volumes:
  - name: git-config
    csi:
      readOnly: true
      driver: connectors-csi
      volumeAttributes:
        connector.name: "github-connector"
        connector.namespace: "default"
        configuration.names: "config"

Project Level (Namespace Group)

Connector 系统还提供了介于集群级别和命名空间级别之间的资源级别,即项目级别,也可理解为命名空间组级别。

该级别表示关联命名空间内的 Pod 可以访问同一组下的 Connector。该组本身由一个特殊命名空间表示,组内的命名空间通过标签关联。

  • 组本身的命名空间使用标签 cpaas.io/inner-namespace: {group name} 标识。
  • 组内的命名空间使用标签 cpaas.io/project: {group name} 标识,表示当前命名空间属于该组。

项目级别资源可以被组内的命名空间以及组本身的命名空间访问,其他命名空间无法访问。

例如,存在一个名为 group-1 的组,包含三个命名空间:ns1ns2ns3

示例 YAML 如下:

kind: namespace
apiVersion: v1
metadata:
  name: group-1
  labels:
    cpaas.io/inner-namespace: group-1
--
kind: namespace
apiVersion: v1
metadata:
  name: ns1
  labels:
    cpaas.io/project: group-1
---
kind: namespace
apiVersion: v1
metadata:
  name: ns2
  labels:
    cpaas.io/project: group-1

位于 group-1 下的 github-connector 资源可以被以下访问:

  • ns1ns2ns3 命名空间
  • group-1 命名空间本身
  • 其他命名空间访问 group-1 内的 Connector 会导致权限拒绝错误。

More