Уровни ресурсов Connector и права доступа

Содержание

Overview

Для управления и использования ресурсов Connector на разных уровнях с целью удовлетворения требований различных организационных структур, система Connector предоставляет различные уровни ресурсов Connector и ограничения прав доступа.

Все ресурсы Connector используются внутри кластера и не могут применяться между кластерами. В пределах текущего кластера ресурсы Connector делятся на три уровня:

  • Уровень кластера
  • Уровень проекта (группа namespace)
  • Уровень namespace

Ресурсы, созданные на разных уровнях, имеют различные права доступа и создаются в разных пространствах имён.

  • Уровень кластера: в пространстве имён kube-public, общее для текущего кластера.
  • Уровень проекта: в пространстве имён с именем проекта, общее в пределах текущего кластера для namespace этого проекта.
  • Уровень namespace: коннекторы в обычных пространствах имён доступны только текущему namespace.

Cluster Level

Все ресурсы Connector, расположенные в пространстве имён kube-public, относятся к ресурсам уровня кластера. Ресурсы Connector уровня кластера доступны всем namespace внутри текущего кластера, что делает их общими для всего кластера.

Например, ресурс Connector с именем github-connector, созданный в kube-public, может быть смонтирован Pod-ами в любом namespace.

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

Коннекторы, созданные внутри namespace, классифицируются как ресурсы уровня namespace. Ресурсы Connector уровня namespace доступны только текущему namespace.

Например, ресурс Connector с именем github-connector, созданный в namespace default, может быть смонтирован Pod-ами в namespace default. Однако если namespace 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 также предлагает уровень ресурсов, который находится между уровнем кластера и уровнем namespace. Этот уровень проекта также можно понимать как уровень группы namespace.

Этот уровень означает, что Pod-ы в связанных namespace могут получать доступ к Connector-ам в рамках одной группы. Сама группа представлена специальным namespace, а namespace, входящие в группу, связаны с помощью меток.

  • Namespace самой группы определяется с помощью метки cpaas.io/inner-namespace: {имя группы}.
  • Namespace, входящие в группу, определяются меткой cpaas.io/project: {имя группы}, указывающей, что данный namespace принадлежит этой группе.

Ресурсы уровня проекта доступны namespace внутри группы, а также самому namespace группы. Другие namespace не могут получить к ним доступ.

Например, если есть группа с именем group-1 с тремя namespace: ns1, ns2 и ns3.

Пример 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

Ресурс github-connector в group-1 может быть доступен для:

  • namespace ns1, ns2 и ns3
  • самого namespace group-1
  • Попытка доступа из других namespace к Connector в group-1 приведёт к ошибке отказа в доступе.

More