Управление доступом
В Stackland управление доступом включает аутентификацию и авторизацию. Платформа поддерживает два механизма авторизации: Kubernetes RBAC и IAM AccessBinding.
Аутентификация
Аутентификация в Stackland построена на базе Identity and Access Management. Identity and Access Management выступает единой точкой аутентификации для всех компонентов платформы.
Способы аутентификации
Платформа поддерживает следующие способы аутентификации:
- Локальные пользователи — учетные записи, созданные непосредственно в Identity and Access Management. Подходят для небольших команд и тестовых окружений.
- Федеративные пользователи — учетные записи из корпоративного провайдера идентификации (IdP). Поддерживаются протоколы SAML, OIDC и LDAP.
- Сервисные аккаунты — учетные записи для автоматизации и межсервисного взаимодействия. Используют долгоживущие токены или API-ключи.
Аутентификация в веб-консоли
Веб-консоль Stackland интегрирована с Identity and Access Management. При входе пользователь перенаправляется на страницу аутентификации, где может выбрать способ входа:
- ввести логин и пароль локальной учетной записи;
- войти через корпоративный IdP (если настроена федерация).
Аутентификация в Kubernetes API
Для доступа к Kubernetes API используется kubeconfig.
Сервисный доступ
Для автоматизации (например, из CI/CD-систем) доступны два способа аутентификации:
- Токен сервисного аккаунта — долгоживущий токен Kubernetes ServiceAccount. Подходит для систем, которые не поддерживают обмен токенов.
- API-ключи — ключи, созданные через Identity and Access Management для доступа к API платформенных сервисов.
Федерации
Федерация позволяет использовать корпоративный провайдер идентификации для аутентификации в Stackland. Для настройки SAML-федерации используется ресурс SAMLFederation:
apiVersion: iam.stackland.yandex.cloud/v1alpha1
kind: SAMLFederation
metadata:
name: corporate-idp
spec:
issuer: "https://idp.example.com/realms/main"
ssoUrl: "https://idp.example.com/realms/main/protocol/saml"
ssoBinding: POST
autoCreateAccountOnLogin: true
cookieMaxAge: "12h"
certificates:
- name: "idp-signing-cert"
data: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
groupMapping:
enabled: true
mapping:
- externalId: "idp-admins"
internalName: "stackland-cluster-admins"
При настройке федерации можно включить маппинг групп. Группы из внешнего IdP автоматически сопоставляются с группами в Identity and Access Management.
Авторизация
Stackland поддерживает два механизма авторизации, которые работают параллельно:
- Kubernetes RBAC — стандартный механизм управления доступом Kubernetes. Используется для управления доступом к ресурсам Kubernetes (Pod, Deployment, Service и др.).
- IAM AccessBinding — механизм Identity and Access Management для назначения прав субъектам на разных уровнях — кластеров, проектов и т.д.
- Доступ к платформенным сервисам — реализуется механизмами самих платформенных сервисов, например, проверка происходит с помощью логина и пароля самой СУБД.
Kubernetes RBAC
Kubernetes RBAC использует роли и привязки ролей для управления доступом. Роль определяет набор разрешений (какие действия можно выполнять с какими ресурсами), а привязка назначает роль субъекту.
Стандартные ресурсы RBAC:
|
Ресурс |
Область действия |
Описание |
|
|
Кластер |
Набор разрешений на уровне кластера |
|
|
Кластер |
Привязка |
|
|
Пространство имен |
Набор разрешений в конкретном пространстве имен |
|
|
Пространство имен |
Привязка роли к субъекту в пространстве имен |
Дополнительно Stackland предоставляет ресурсы для управления доступом на уровне проекта:
|
Ресурс |
Область действия |
Описание |
|
|
Проект |
Набор разрешений на уровне проекта |
|
|
Проект |
Привязка роли к субъекту во всех пространствах имен проекта |
Подробнее о ролях проекта см. в разделе Настроить роли проекта.
Привязки ролей доступа
Привязки ролей доступа используются для управления доступом к платформенным сервисам. Привязка связывает субъект с ролью на определенном уровне ресурсной модели.
Типы привязок:
ClusterAccessBinding— привязка роли на уровне всего кластера.ProjectAccessBinding— привязка роли на уровне проекта.AccessBinding— привязка роли на уровне пространства имен.
Пример назначения IAM-роли на уровне кластера:
apiVersion: iam.stackland.yandex.cloud/v1alpha1
kind: ClusterAccessBinding
metadata:
name: user-admin-role
spec:
roleID: admin
subject:
kind: User
name: "alice@stackland"
Пример назначения роли на уровне пространства имен:
apiVersion: iam.stackland.yandex.cloud/v1alpha1
kind: AccessBinding
metadata:
name: bob-storage-admin
namespace: my-namespace
spec:
roleID: storage.admin
subject:
kind: User
name: "bob@stackland"
Типы субъектов
В привязках ролей поддерживаются следующие типы субъектов:
User— локальный пользователь Identity and Access Management.Group— группа пользователей в Identity and Access Management.ServiceAccount— сервисный аккаунт Kubernetes.FederatedUser— пользователь из внешнего провайдера идентификации.
Уровни доступа
Доступ можно назначать на трех уровнях ресурсной модели:
Уровень кластера
Доступ распространяется на все ресурсы кластера Stackland.
Механизмы: ClusterRoleBinding, ClusterAccessBinding.
Уровень проекта
Доступ распространяется на все пространства имен проекта. Используется для:
- Администраторов проекта.
- Участников команды, работающей с проектом.
- CI/CD-систем.
Механизмы: ProjectRoleBinding, ProjectAccessBinding.
Уровень пространства имен
Доступ ограничен конкретным пространством имен. Используется для:
- Разработчиков, работающих с конкретным окружением.
- Сервисных аккаунтов приложений.
- Ограниченного доступа к ресурсам платформенных сервисов.
Механизмы: RoleBinding, AccessBinding.
Примитивные роли
В Yandex Cloud Stackland действует набор примитивных ролей, которые можно назначать пользователям и группам через RoleBinding или ClusterRoleBinding в зависимости от требуемой области доступа.
stackland:viewer
Позволяет просматривать все основные ресурсы кластера:
- Поды, сервисы, эндпоинты, ConfigMaps.
- Деплойменты, daemonsets, statefulsets, replicasets.
- Ingress-контроллеры, сетевые политики.
- Классы хранилищ, постоянные тома.
- Ресурсы PostgreSQL и Storage.
- Сертификаты и мониторинг.
stackland:editor
Включает все права stackland:viewer и дает возможность управления приложениями:
- Создание, обновление и удаление подов, сервисов и деплойментов.
- Управление ConfigMaps и секретами.
- Доступ к логам подов и форвардингу портов.
- Управление PostgreSQL и ресурсами Object Storage.
- Управление сертификатами и мониторингом.
stackland:admin
Роль stackland:admin предоставляет полные административные права на управление всеми ресурсами и пользователями в кластере.
stackland:auditor
Расширенные права для аудита включают все права stackland:viewer плюс:
- Просмотр метаданных секретов (без содержимого).
- Доступ к RBAC-ресурсам (роли и привязки прав доступа).
- Просмотр сетевых политик и политик безопасности.
- Доступ к сертификатам и их статусам.