Skip to content

Latest commit

 

History

History
120 lines (95 loc) · 4.45 KB

Security_model.md

File metadata and controls

120 lines (95 loc) · 4.45 KB

Security model

Table of contents

Octopod roles

В Octopod есть 2 роли:

  • user
  • admin
role управление развертываниями просмотр логов развертываний
user
admin

Пользователи UI работают с правами user.

Пользователи octo CLI работают с правами admin.

Kubernetes role-based access control

Octopod Server разворачивается в octopod namespace. Octopod Server разворачивает развертывания в deployments namespace. Octopod Server использует octopod Service Account.

Для очистки ресурсов Octopod Server / Контейнеру с утилитами (control scripts) может потребоваться (зависит от настроект Kubernetes и релизации Контейнера с утилитами) доступ для удаления сертификатов и Persistent Volumes Claims.

Доступ можно выдать через RBAC:

Права на удаление сертификатов

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cert-control-clusterrole
rules:
  - apiGroups: ["cert-manager.io"]
    resources: ["certificates"]
    verbs: ["list", "delete", "deletecollection"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: octopod-cert-control-rolebinding
  namespace: deployments
roleRef:
  kind: ClusterRole
  apiGroup: rbac.authorization.k8s.io
  name: cert-control-clusterrole
subjects:
  - kind: ServiceAccount
    name: octopod
    namespace: octopod

Права на удаление Persistent Volumes Claims

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pvc-control-clusterrole
rules:
  - apiGroups: [""]
    resources: ["persistentvolumeclaims"]
    verbs: ["list", "delete", "deletecollection"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: octopod-pvc-control-rolebinding
  namespace: deployments
roleRef:
  kind: ClusterRole
  apiGroup: rbac.authorization.k8s.io
  name: pvc-control-clusterrole
subjects:
  - kind: ServiceAccount
    name: octopod
    namespace: octopod

Users auth example with OAuth

Доступ к UI по умолчанию не ограничен. Но вы можете добавить аутентификацию через GitHub OAuth в Kubernetes Ingress Nginx, для этого потребуется дополнительно развернуть OAuth2 Proxy в кластере.

Более подробно описано в примере External OAUTH Authentication.

CLI client Auth

Для аутентификации octo CLI в Octopod Server используется сертификат.

UI Auth

Для аутентификации UI в Octopod Server используется Basic Auth.