• Русский
  • Назначение RBAC-ролей PostgreSQL

    Начиная с версии v4.3.0, PostgreSQL Operator поставляется с пятью агрегированными ролями для конечных пользователей, предназначенными для разделения обязанностей: admin, edit, view, backup и restore. В этом руководстве показано, как назначить каждую роль пользователю или группе с помощью RoleBinding.

    Обзор

    RoleCapabilitiesTypical Subject
    adminПолный CRUD для postgresqls, postgresbackups, postgresrestoresDBA, администратор платформы
    editСоздание и обновление postgresqls (без удаления)Разработчик приложений
    viewДоступ только для чтения ко всем ресурсам, связанным с PostgreSQLАудитор, служба поддержки
    backupТолько создание и управление postgresbackupsОператор резервного копирования
    restoreТолько создание и управление postgresrestoresОператор восстановления
    NOTE

    admin агрегирует edit, view, backup и restore. edit и view также агрегируются в область namespace-developer, поэтому пользователи, уже имеющие namespace-developer, автоматически наследуют их.

    Процедура

    Каждый пример назначает роль в одном namespace. Замените $NAMESPACE, $USER и $GROUP на ваши значения.

    Назначить admin

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: postgres-admin
      namespace: $NAMESPACE
    subjects:
      - kind: User
        name: $USER
        apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: ClusterRole
      name: cpaas:middleware-postgres:business-ns:admin
      apiGroup: rbac.authorization.k8s.io

    Назначить edit

    Позволяет разработчикам создавать и обновлять экземпляры postgresql без их удаления.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: postgres-edit
      namespace: $NAMESPACE
    subjects:
      - kind: Group
        name: $GROUP
        apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: ClusterRole
      name: cpaas:middleware-postgres:business-ns:edit
      apiGroup: rbac.authorization.k8s.io

    Назначить view

    Доступ только для чтения для аудиторов или инженеров поддержки.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: postgres-view
      namespace: $NAMESPACE
    subjects:
      - kind: User
        name: $USER
        apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: ClusterRole
      name: cpaas:middleware-postgres:business-ns:view
      apiGroup: rbac.authorization.k8s.io

    Назначить backup

    Позволяет пользователю создавать postgresbackups без изменения конфигурации кластера.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: postgres-backup
      namespace: $NAMESPACE
    subjects:
      - kind: User
        name: $USER
        apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: ClusterRole
      name: cpaas:middleware-postgres:business-ns:backup
      apiGroup: rbac.authorization.k8s.io

    Назначить restore

    Предоставляет возможность создавать и управлять только postgresrestores.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: postgres-restore
      namespace: $NAMESPACE
    subjects:
      - kind: User
        name: $USER
        apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: ClusterRole
      name: cpaas:middleware-postgres:business-ns:restore
      apiGroup: rbac.authorization.k8s.io

    Проверка

    Убедитесь, что привязка вступила в силу, с помощью kubectl auth can-i:

    # As a user with the edit role
    kubectl auth can-i create postgresqls.acid.zalan.do -n $NAMESPACE --as=$USER
    # → yes
    kubectl auth can-i delete postgresqls.acid.zalan.do -n $NAMESPACE --as=$USER
    # → no

    Связанные материалы