Что такое SSO (Single Sign-On)?

«Что такое SSO (Single Sign-On)?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SSO (Single Sign-On) — это механизм аутентификации, позволяющий пользователю один раз войти в систему и получить доступ к нескольким приложениям без повторного ввода учетных данных. В DevOps-практике я занимаюсь интеграцией внутренних инструментов (Jenkins, Grafana, GitLab, Wiki) и бизнес-приложений с единой системой аутентификации.

Основные протоколы и технологии, с которыми я работаю:

  • SAML 2.0: Стандарт для корпоративных интеграций. Приложение (Service Provider, SP) перенаправляет пользователя в Identity Provider (IdP), например, Okta или Azure AD, который возвращает зашифрованное утверждение (assertion).
  • OAuth 2.0 / OpenID Connect (OIDC): Современный стандарт для веб- и мобильных приложений. OAuth отвечает за авторизацию (делегирование доступа), а OIDC поверх него — за аутентификацию. Мы используем его для интеграции с Google Workspace, Auth0 или Keycloak.

Пример настройки OIDC-провайдера для внутреннего инструмента мониторинга (Grafana):

# Конфигурация Grafana (grafana.ini)
[auth.generic_oauth]
name = "Company SSO"
enabled = true
client_id = YOUR_CLIENT_ID
client_secret = YOUR_CLIENT_SECRET
scopes = openid email profile
auth_url = https://sso.company.com/oauth2/authorize
token_url = https://sso.company.com/oauth2/token
api_url = https://sso.company.com/oauth2/userinfo
role_attribute_path = "contains(groups[*], 'admins') && 'Admin' || 'Viewer'"

Задачи DevOps-инженера в контексте SSO:

  1. Интеграция: Настройка приложений для работы с выбранным IdP, управление конфигурацией как код (IaC).
  2. Безопасность: Управление секретами (client_secret) через Vault или секреты Kubernetes, настройка корректных redirect URI.
  3. Аудит и мониторинг: Настройка логгирования событий аутентификации в центральную систему (ELK Stack) для расследования инцидентов.
  4. Самообслуживание: Иногда развертывание и поддержка собственного IdP (например, Keycloak) для внутренних нужд.