Подключить SAML-федерацию
SAML-федерация позволяет пользователям входить в систему с помощью учетных записей из внешнего провайдера идентификации (IdP).
Примечание
Для настройки SAML-федерации необходимы права администратора кластера.
Перед началом работы
Подготовьте следующую информацию о вашем провайдере идентификации:
- URL для единого входа (SSO URL).
- Идентификатор издателя (Issuer).
- Сертификат в формате PEM для проверки подписи SAML-ответов.
Создать SAML-федерацию
-
Создайте файл с описанием SAML-федерации
saml-federation.yaml:apiVersion: iam.stackland.yandex.cloud/v1alpha1 kind: SAMLFederation metadata: name: my-federation spec: description: "SAML Federation for corporate users" cookieMaxAge: "43200s" # 12 часов issuer: "https://idp.example.com/realms/my-realm" ssoBinding: POST ssoUrl: "https://idp.example.com/realms/my-realm/protocol/saml" autoCreateAccountOnLogin: true caseInsensitiveNameIds: false securitySettings: encryptedAssertions: false forceAuthn: true certificates: - name: "idp-certificate" description: "IdP signing certificate" data: | -----BEGIN CERTIFICATE----- <содержимое сертификата> -----END CERTIFICATE-----Где:
name— имя федерации.description— описание федерации.cookieMaxAge— время жизни cookie сессии.issuer— идентификатор издателя из настроек IdP.ssoUrl— URL для единого входа из настроек IdP.autoCreateAccountOnLogin— автоматически создавать пользователя при первом входе.forceAuthn— требовать повторную аутентификацию при каждом входе.certificates— список сертификатов для проверки подписи SAML-ответов.
-
Примените конфигурацию:
kubectl apply -f saml-federation.yaml -
Проверьте статус федерации:
kubectl get samlfederation my-federation -o yaml
Настроить маппинг групп
Маппинг групп позволяет автоматически добавлять пользователей из федерации в локальные группы на основе их членства в группах IdP.
-
Создайте локальные группы в Identity and Access Management через консоль управления или дождитесь их создания.
-
Добавьте настройки маппинга групп в спецификацию федерации:
apiVersion: iam.stackland.yandex.cloud/v1alpha1 kind: SAMLFederation metadata: name: my-federation spec: # ... остальные настройки ... groupMapping: enabled: true mapping: - externalId: idp-admins internalName: stackland-cluster-admins - externalId: idp-developers internalName: developersГде:
externalId— имя группы в IdP.internalName— имя локальной группы в Identity and Access Management.
-
Примените изменения:
kubectl apply -f saml-federation.yaml -
Проверьте статус синхронизации групп:
kubectl get samlfederation my-federation -o jsonpath='{.status.groupMapping}'
Настроить IdP
После создания федерации в Stackland настройте ваш провайдер идентификации:
-
Получите URL для приема SAML-ответов (ACS URL):
kubectl get samlfederation my-federation -o jsonpath='{.status.federation.acsDomain}' -
В настройках вашего IdP:
- Укажите полученный ACS URL.
- Настройте отправку атрибута
preferred_usernameв SAML-ответе. - Если используете маппинг групп, настройте отправку информации о группах пользователя.
Проверить работу федерации
- Откройте консоль управления Stackland.
- На странице входа выберите вход через федерацию.
- Выполните вход с учетными данными из вашего IdP.
- После успешного входа проверьте, что пользователь появился в списке пользователей Identity and Access Management.
Обновить сертификат
Для обновления сертификата без простоя:
- Добавьте новый сертификат в список
certificatesс другим именем. - Примените изменения.
- После успешной синхронизации удалите старый сертификат из списка.
- Примените изменения повторно.