Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Разграничение прав доступа для групп пользователей
    • Создание L7-балансировщика с профилем безопасности Smart Web Security через Ingress-контроллер Application Load Balancer
    • Централизованная публикация в интернете и защита приложений от DDoS
    • Передача логов с виртуальной машины в Cloud Logging
    • Запись логов балансировщика в PostgreSQL
    • Безопасное хранение паролей для GitLab CI в виде секретов Yandex Lockbox
    • Сервисный аккаунт с профилем OS Login для управления ВМ с помощью Ansible
    • Передача логов с Container Optimized Image в Cloud Logging
    • Добавление HTML-страницы для работы SmartCaptcha
    • Создание L7-балансировщика с профилем безопасности
    • Настройка алертов в Monitoring
    • Загрузка аудитных логов в MaxPatrol SIEM
    • Загрузка аудитных логов в SIEM Splunk
    • Загрузка аудитных логов в SIEM ArcSight
      • Аутентификация с помощью Active Directory
      • Аутентификация с помощью Google Workspace
      • Аутентификация с помощью Microsoft Entra ID
      • Аутентификация с помощью Keycloak
    • Шифрование для бакета Object Storage на стороне сервера
    • Шифрование секретов в HashiCorp Terraform
    • Управление ключами KMS с HashiCorp Terraform
    • Auto Unseal в HashiCorp Vault
    • Передача логов кластера Managed Service for Greenplum® в Yandex Cloud Logging

В этой статье:

  • Подготовка к работе
  • Создание и настройка федерации в Yandex Cloud Organization
  • Создайте федерацию
  • Добавьте сертификаты
  • Создание и настройка SAML-приложения в Keycloak
  • Добавление пользователей в Yandex Cloud Organization
  • Настройка сопоставления атрибутов пользователей
  • Проверка аутентификации
  1. Безопасность
  2. Управление федерациями удостоверений
  3. Аутентификация с помощью Keycloak

Аутентификация с помощью Keycloak

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.
  • Подготовка к работе
  • Создание и настройка федерации в Yandex Cloud Organization
    • Создайте федерацию
    • Добавьте сертификаты
  • Создание и настройка SAML-приложения в Keycloak
  • Добавление пользователей в Yandex Cloud Organization
    • Настройка сопоставления атрибутов пользователей
  • Проверка аутентификации

С помощью федерации удостоверений вы можете использовать Keycloak для аутентификации пользователей в организации.

Настройка аутентификации состоит из следующих этапов:

  1. Создание и настройка федерации в Yandex Cloud Organization.

  2. Создание и настройка SAML-приложения в Keycloak.

  3. Добавление пользователей в Yandex Cloud Organization.

  4. Проверка аутентификации.

Подготовка к работеПодготовка к работе

Чтобы воспользоваться инструкциями в этом разделе, вам понадобятся:

  1. Платформа Docker. Если у вас не установлен Docker, установите его. Убедитесь, что Docker Engine запущен.

  2. Локальный IdP-сервер Keycloak. Чтобы установить и запустить Keycloak, выполните команды:

    Keycloak 20 в режиме разработчика
    Keycloak 19
    docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=Pa55w0rd quay.io/keycloak/keycloak:latest start-dev
    
    git clone https://github.com/keycloak/keycloak-containers.git
    cd ./keycloak-containers/docker-compose-examples
    docker-compose -f keycloak-postgres.yml up
    

    Примечание

    Чтобы сотрудники в корпоративной сети или интернете могли использовать Keycloak для аутентификации в вашем приложении, разверните IdP-сервер Keycloak в сети и настройте публичный адрес. Подробнее читайте в документации Keycloak.

  3. Действующий сертификат, который используется для подписи в службе Keycloak. Чтобы его получить:

    1. Войдите в аккаунт администратора Keycloak по адресу:

      Keycloak 17 или новее
      Keycloak 16 и предшествующих версий

      http://keycloak.example.com:8080/admin. Вместо keycloak.example.com должен быть указан адрес вашего локального сервера, например: http://localhost:8080/admin.

      http://keycloak.example.com:8080/auth/admin. Вместо keycloak.example.com должен быть указан адрес вашего локального сервера, например: http://localhost:8080/auth/admin.

      Параметры входа по умолчанию:

      • User name or email: admin.
      • Password: Pa55w0rd.
    2. В разделе Realm Settings выберите вкладку Keys.

    3. В строке RS256 нажмите Certificate и скопируйте значение сертификата.

    4. Сохраните сертификат в текстовом файле с расширением .cer в следующем формате:

      -----BEGIN CERTIFICATE-----
        <значение_сертификата>
      -----END CERTIFICATE-----
      

    Вы также можете получить сертификат по прямой ссылке:

    Keycloak 17 или новее
    Keycloak 16 и предшествующих версий

    http://keycloak.example.com:8080/realms/master/protocol/saml/descriptor. Значение сертификата хранится в теге <ds:X509Certificate>...</ds:X509Certificate>.

    http://keycloak.example.com:8080/auth/realms/master/protocol/saml/descriptor. Значение сертификата хранится в теге <ds:X509Certificate>...</ds:X509Certificate>.

Создание и настройка федерации в Yandex Cloud OrganizationСоздание и настройка федерации в Yandex Cloud Organization

Создайте федерациюСоздайте федерацию

Интерфейс Cloud Center
CLI
API
Terraform
  1. Перейдите в сервис Yandex Cloud Organization.

  2. На панели слева выберите Федерации.

  3. В правом верхнем углу страницы нажмите кнопку Создать федерацию. В открывшемся окне:

    1. Задайте имя федерации. Имя должно быть уникальным в каталоге.

    2. При необходимости добавьте описание.

    3. В поле Время жизни cookie укажите время, в течение которого браузер не будет требовать у пользователя повторной аутентификации.

    4. В поле IdP Issuer вставьте ссылку вида:

      • Keycloak 17 или новее

        http://<хост>:8080/realms/master
        

        Если для IdP-сервера настроен публичный адрес, укажите его URL. Например:

        http://keycloak.example.com:8080/realms/master
        
      • Keycloak 16 и предшествующих версий

        http://<хост>:8080/auth/realms/master
        

        Если для IdP-сервера настроен публичный адрес, укажите его URL. Например:

        http://keycloak.example.com:8080/auth/realms/master
        
    5. В поле Ссылка на страницу для входа в IdP вставьте ссылку вида:

      • Keycloak 17 или новее

        http://<хост>:8080/realms/master/protocol/saml
        

        Если для IdP-сервера настроен публичный адрес, укажите его URL. Например:

        http://keycloak.example.com:8080/realms/master/protocol/saml
        
      • Keycloak 16 и предшествующих версий

        http://<хост>:8080/auth/realms/master/protocol/saml
        

        Если для IdP-сервера настроен публичный адрес, укажите его URL. Например:

        http://keycloak.example.com:8080/auth/realms/master/protocol/saml
        

      В ссылке допустимо использовать только протоколы HTTP и HTTPS.

    6. Включите опцию Автоматически создавать пользователей, чтобы автоматически добавлять пользователя в организацию после аутентификации. Если опция отключена, федеративных пользователей потребуется добавить вручную.

      Автоматически федеративный пользователь создается только при первом входе пользователя в облако. Если вы исключили пользователя из федерации, вернуть его туда можно будет только вручную.

    7. Чтобы все запросы аутентификации от Yandex Cloud содержали цифровую подпись, включите опцию Подписывать запросы аутентификации. Для завершения настройки потребуется скачать и установить сертификат Yandex Cloud.

      В появившемся блоке Сертификаты SAML появится информация о действующем SAML-сертификате Yandex Cloud.

      Нажмите Скачать и сохраните скачанный файл сертификата. Он потребуется для установки на ваш IdP-сервер.

      Совет

      Следите за сроком действия сертификатов и устанавливайте новые сертификаты до истечения срока действия используемых. Перевыпущенный SAML-сертификат Yandex Cloud необходимо заранее скачать и установить на стороне IdP-провайдера и в вашей федерации.

      Вы также сможете скачать сертификат и после создания федерации. Для этого на странице сведений о федерации в Yandex Cloud Organization нажмите кнопку Скачать сертификат в поле Подписывать запросы аутентификации.

    8. Включите опцию Принудительная повторная аутентификация (ForceAuthn) в IdP, чтобы задать значение true для параметра ForceAuthn в запросе аутентификации SAML. При включении этой опции поставщик удостоверений (Identity Provider, IdP) запрашивает у пользователя аутентификацию по истечении сессии в Yandex Cloud.

    9. Нажмите кнопку Создать федерацию.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Посмотрите описание команды создания федерации:

    yc organization-manager federation saml create --help
    
  2. Создайте федерацию:

    • Keycloak 17 или новее

      yc organization-manager federation saml create --name my-federation \
        --organization-id <идентификатор_организации> \
        --auto-create-account-on-login \
        --encrypted-assertions \
        --cookie-max-age 12h \
        --issuer "http://<хост>:8080/realms/master" \
        --sso-binding POST \
        --sso-url "http://<хост>:8080/realms/master/protocol/saml" \
        --force-authn
      
    • Keycloak 16 и предшествующих версий

      yc organization-manager federation saml create --name my-federation \
        --organization-id <идентификатор_организации> \
        --auto-create-account-on-login \
        --encrypted-assertions \
        --cookie-max-age 12h \
        --issuer "http://<хост>:8080/auth/realms/master" \
        --sso-url "http://<хост>:8080/auth/realms/master/protocol/saml" \
        --sso-binding POST \
        --force-authn
      

      Где:

      • --name — имя федерации. Имя должно быть уникальным в каталоге.

      • --organization-id — идентификатор организации.

      • --auto-create-account-on-login — флаг, который активирует автоматическое создание новых пользователей в облаке после аутентификации на IdP-сервере.
        Опция упрощает процесс заведения пользователей, но созданный таким образом пользователь не сможет выполнять никаких операций с ресурсами в облаке. Исключение — те ресурсы, на которые назначены роли публичной группе All users или All authenticated users.

        Если опцию не включать, то пользователь, которого не добавили в организацию, не сможет войти в консоль управления, даже если пройдет аутентификацию на вашем IdP-сервере. В этом случае вы можете управлять списком пользователей, которым разрешено пользоваться ресурсами Yandex Cloud.

      • --encrypted-assertions — флаг, который включает цифровую подпись запросов аутентификации. Для завершения настройки потребуется скачать и установить сертификат Yandex Cloud.

      • --cookie-max-age — время, в течение которого браузер не должен требовать у пользователя повторной аутентификации.

      • --issuer — идентификатор IdP-сервера, на котором должна происходить аутентификация:

        • Keycloak 17 или новее

          http://<хост>:8080/realms/master
          

          Если для IdP-сервера настроен публичный адрес, укажите его URL. Например:

          http://keycloak.example.com:8080/realms/master
          
        • Keycloak 16 и предшествующих версий

          http://<хост>:8080/auth/realms/master
          

          Если для IdP-сервера настроен публичный адрес, укажите его URL. Например:

          http://keycloak.example.com:8080/auth/realms/master
          
      • --sso-url — URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации:

        • Keycloak 17 или новее

          http://<хост>:8080/realms/master/protocol/saml
          

          Если для IdP-сервера настроен публичный адрес, укажите его URL. Например:

          http://keycloak.example.com:8080/realms/master/protocol/saml
          
        • Keycloak 16 и предшествующих версий

          http://<хост>:8080/auth/realms/master/protocol/saml
          

          Если для IdP-сервера настроен публичный адрес, укажите его URL. Например:

          http://keycloak.example.com:8080/auth/realms/master/protocol/saml
          

        В ссылке допустимо использовать только протоколы HTTP и HTTPS.

      • --sso-binding — укажите тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязки POST.

      • (Опционально) --force-authn — при истечении сессии в Yandex Cloud поставщик удостоверений запросит у пользователя повторную аутентификацию.

  1. Создайте файл с телом запроса, например body.json:

    • Keycloak 17 или новее

      {
        "name": "my-federation",
        "organizationId": "<идентификатор_организации>",
        "autoCreateAccountOnLogin": true,
        "cookieMaxAge":"43200s",
        "issuer": "http://<хост>:8080/realms/master",
        "ssoUrl": "http://<хост>:8080/realms/master/protocol/saml",
        "securitySettings": {
            "encryptedAssertions": true,
            "forceAuthn": true
        },
        "ssoBinding": "POST"
      }       
      
    • Keycloak 16 и предшествующих версий

      {
        "name": "my-federation",
        "organizationId": "<идентификатор_организации>",
        "autoCreateAccountOnLogin": true,
        "cookieMaxAge":"43200s",
        "issuer": "http://<хост>:8080/auth/realms/master",
        "ssoUrl": "http://<хост>:8080/auth/realms/master/protocol/saml",
        "securitySettings": {
          "encryptedAssertions": true,
          "forceAuthn": true
        },
        "ssoBinding": "POST"
      }       
      

      Где:

      • name — имя федерации. Имя должно быть уникальным в каталоге.

      • organizationId — идентификатор организации.

      • autoCreateAccountOnLogin — флаг, который активирует автоматическое создание новых пользователей в облаке после аутентификации на IdP-сервере.
        Опция упрощает процесс заведения пользователей, но созданный таким образом пользователь не сможет выполнять никаких операций с ресурсами в облаке. Исключение — те ресурсы, на которые назначены роли публичной группе All users или All authenticated users.

        Если опцию не включать, то пользователь, которого не добавили в организацию, не сможет войти в консоль управления, даже если пройдет аутентификацию на вашем IdP-сервере. В этом случае вы можете управлять списком пользователей, которым разрешено пользоваться ресурсами Yandex Cloud.

      • cookieMaxAge — время, в течение которого браузер не должен требовать у пользователя повторной аутентификации.

      • issuer — идентификатор IdP-сервера, на котором должна происходить аутентификация:

        • Keycloak 17 или новее

          http://<хост>:8080/realms/master
          

          Если для IdP-сервера настроен публичный адрес, укажите его URL. Например:

          http://keycloak.example.com:8080/realms/master
          
        • Keycloak 16 и предшествующих версий

          http://<хост>:8080/auth/realms/master
          

          Если для IdP-сервера настроен публичный адрес, укажите его URL.

          Например:

          http://keycloak.example.com:8080/auth/realms/master
          
      • ssoUrl — URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации:

        • Keycloak 17 или новее

          http://<хост>:8080/realms/master/protocol/saml
          

          Если для IdP-сервера настроен публичный адрес, укажите его URL. Например:

          http://keycloak.example.com:8080/realms/master/protocol/saml
          
        • Keycloak 16 и предшествующих версий

          http://<хост>:8080/auth/realms/master/protocol/saml
          

          Если для IdP-сервера настроен публичный адрес, укажите его URL. Например:

          http://keycloak.example.com:8080/auth/realms/master/protocol/saml
          

        В ссылке допустимо использовать только протоколы HTTP и HTTPS.

      • encryptedAssertions — флаг, который включает цифровую подпись запросов аутентификации. Для завершения настройки потребуется скачать и установить сертификат Yandex Cloud.

      • forceAuthn — параметр, который включает принудительную повторную аутентификацию пользователя по истечении сессии в Yandex Cloud.

      • ssoBinding — укажите тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязки POST.

  2. Чтобы создать федерацию, воспользуйтесь методом REST API create для ресурса Federation или вызовом gRPC API FederationService/Create и передайте в запросе файл с параметрами запроса.

    Пример запроса:

    curl \
      --request POST \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer <IAM-токен>" \
      --data '@body.json' \
      https://organization-manager.api.cloud.yandex.net/organization-manager/v1/saml/federations
    

    Пример ответа:

    {
     "done": true,
     "metadata": {
      "@type": "type.googleapis.com/yandex.cloud.organization-manager.v1.saml.CreateFederationMetadata",
      "federationId": "ajeobmje4dgj********"
     }
    

    В свойстве federationId указан идентификатор созданной федерации: сохраните его, он понадобится в дальнейшем.

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

  1. В конфигурационном файле опишите параметры федерации.

    Пример структуры конфигурационного файла:

    • Keycloak 17 или новее

      resource "yandex_organizationmanager_saml_federation" federation {
      name            = "my-federation"
      organization_id = "<идентификатор_организации>"
      auto_create_account_on_login = "true"
      issuer          = "http://<хост>:8080/realms/master"
      sso_url         = "http://<хост>:8080/realms/master/protocol/saml"
      sso_binding     = "POST"
      security_settings {
          encrypted_assertions = "true"
          force_authn          = "true"
        }
      }
      
    • Keycloak 16 и предшествующих версий

      resource "yandex_organizationmanager_saml_federation" federation {
      name            = "my-federation"
      organization_id = "<идентификатор_организации>"
      auto_create_account_on_login = "true"
      issuer          = "http://<хост>:8080/auth/realms/master"
      sso_url         = "http://<хост>:8080/auth/realms/master/protocol/saml"
      sso_binding     = "POST"
      security_settings {
          encrypted_assertions = "true"
          force_authn          = "true"
        }
      }
      

    Где:

    • name — имя федерации. Имя должно быть уникальным в каталоге.

    • description — описание федерации.

    • organization_id — идентификатор организации.

    • labels — набор пар меток ключ/значение, которые присвоены федерации.

    • issuer — идентификатор IdP-сервера, на котором должна происходить аутентификация:

      • Keycloak 17 или новее

        http://<хост>:8080/realms/master
        

        Если для IdP-сервера настроен публичный адрес, укажите его идентификатор. Например:

        http://keycloak.example.com:8080/realms/master
        
      • Keycloak 16 и предшествующих версий

        http://<хост>:8080/auth/realms/master
        

        Если для IdP-сервера настроен публичный адрес, укажите его идентификатор. Например:

        http://keycloak.example.com:8080/auth/realms/master
        
    • sso_binding — укажите тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязки POST.

    • sso_url — URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации:

      • Keycloak 17 или новее

        http://<хост>:8080/realms/master/protocol/saml
        

        Если для IdP-сервера настроен публичный адрес, укажите его URL.

        Например:

        http://keycloak.example.com:8080/realms/master/protocol/saml
        
      • Keycloak 16 и предшествующих версий

        http://<хост>:8080/auth/realms/master/protocol/saml
        

        Если для IdP-сервера настроен публичный адрес, укажите его URL.

        Например:

        http://keycloak.example.com:8080/auth/realms/master/protocol/saml
        

      В ссылке допустимо использовать только протоколы HTTP и HTTPS.

    • cookie_max_age — время в секундах, в течение которого браузер не должен требовать у пользователя повторной аутентификации. Значение по умолчанию 8 часов.

    • auto_create_account_on_login — флаг, который активирует автоматическое создание новых пользователей в облаке после аутентификации на IdP-сервере.
      Опция упрощает процесс заведения пользователей, но созданный таким образом пользователь не сможет выполнять никаких операций с ресурсами в облаке. Исключение — те ресурсы, на которые назначены роли публичной группе All users или All authenticated users.

      Если опцию не включать, то пользователь, которого не добавили в организацию, не сможет войти в консоль управления, даже если пройдет аутентификацию на вашем сервере. В этом случае вы можете управлять списком пользователей, которым разрешено пользоваться ресурсами Yandex Cloud.

    • case_insensitive_name_ids — зависимость имен пользователей от регистра.
      Если опция включена, идентификаторы имен федеративных пользователей будут нечувствительны к регистру.

    • security_settings — настройки безопасности федерации:

      • encrypted_assertions — подписывать запросы аутентификации.

        Если включить эту опцию, то все запросы аутентификации от Yandex Cloud будут содержать цифровую подпись.

      • force-authn — при истечении сессии в Yandex Cloud поставщик удостоверений запросит у пользователя повторную аутентификацию. Необязательный параметр.

    Более подробную информацию о параметрах ресурса yandex_organizationmanager_saml_federation см. в документации провайдера.

  2. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в папку, где вы создали конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

      Если конфигурация описана верно, в терминале отобразятся параметры федерации. Если в конфигурации есть ошибки, Terraform на них укажет.

  3. Создайте федерацию.

    1. Если в конфигурации нет ошибок, выполните команду:

      terraform apply
      
    2. Подтвердите создание федерации.

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

Добавьте сертификатыДобавьте сертификаты

При аутентификации у сервиса Cloud Organization должна быть возможность проверить сертификат IdP-сервера. Для этого добавьте сертификат в федерацию:

Интерфейс Cloud Center
CLI
API
  1. Войдите в сервис Yandex Cloud Organization.

  2. На панели слева выберите Федерации.

  3. Нажмите на строку с федерацией, для которой нужно добавить сертификат.

  4. Внизу страницы в блоке Сертификаты нажмите кнопку Добавить сертификат.

  5. Введите название и описание сертификата.

  6. Выберите способ добавления сертификата:

    • Чтобы добавить сертификат в виде файла, нажмите Выбрать файл и укажите путь к нему.
    • Чтобы вставить скопированное содержимое сертификата, выберите способ Текст и вставьте содержимое.
  7. Нажмите кнопку Добавить.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Посмотрите описание команды добавления сертификата:

    yc organization-manager federation saml certificate create --help
    
  2. Добавьте сертификат для федерации, указав путь к файлу сертификата:

    yc organization-manager federation saml certificate create \
      --federation-id <ID_федерации> \
      --name "my-certificate" \
      --certificate-file certificate.cer
    

Воспользуйтесь методом create для ресурса Certificate:

  1. Сформируйте тело запроса. В свойстве data укажите содержимое сертификата:

    {
      "federationId": "<ID_федерации>",
      "name": "my-certificate",
      "data": "-----BEGIN CERTIFICATE..."
    }
    
  2. Отправьте запрос на добавление сертификата:

    export IAM_TOKEN=CggaAT********
    curl \
      --request POST \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer ${IAM_TOKEN}" \
      --data '@body.json' \
      "https://organization-manager.api.cloud.yandex.net/organization-manager/v1/saml/certificates"
    

Совет

Не забывайте своевременно перевыпускать сертификаты и добавлять их в федерацию.

Чтобы не пропустить момент окончания срока действия сертификата, подпишитесь на уведомления от организации. Уведомления направляются подписанным пользователям за 60, 30 и 5 дней до момента прекращения действия сертификата, а также после того, как сертификат становится недействительным.

Создание и настройка SAML-приложения в KeycloakСоздание и настройка SAML-приложения в Keycloak

В роли поставщика удостоверений (IdP) выступает SAML-приложение в Keycloak. Чтобы создать и настроить SAML-приложение:

  1. Войдите в аккаунт администратора Keycloak по адресу:

    Keycloak 17 или новее
    Keycloak 16 и предшествующих версий

    http://keycloak.example.com:8080/admin. Вместо keycloak.example.com должен быть указан адрес вашего локального сервера, например: http://localhost:8080/admin.

    http://keycloak.example.com:8080/auth/admin. Вместо keycloak.example.com должен быть указан адрес вашего локального сервера, например: http://localhost:8080/auth/admin.

    Параметры входа по умолчанию:

    • User name or email: admin.
    • Password: Pa55w0rd.
  2. Создайте SAML-приложение:

    Keycloak 19 или новее
    Keycloak 18 и предшествующих версий
    1. На панели слева выберите Clients. Нажмите кнопку Create client.

    2. В поле Client ID укажите ACS URL, на который пользователи будут перенаправляться после аутентификации.

      Как получить ID федерации
      1. Войдите в сервис Yandex Cloud Organization.
      2. На панели слева выберите Федерации.
      3. Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля Идентификатор.
      Как получить ACS URL федерации
      1. Войдите в сервис Yandex Cloud Organization.

      2. На панели слева выберите Федерации.

      3. Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля ACS URL.

    3. В поле Client type выберите вариант saml.

    4. Нажмите Save.

    1. На панели слева выберите Clients. Нажмите кнопку Create.

    2. В поле Client ID укажите ACS URL, на который пользователи будут перенаправляться после аутентификации.

      Как получить ID федерации
      1. Войдите в сервис Yandex Cloud Organization.
      2. На панели слева выберите Федерации.
      3. Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля Идентификатор.
      Как получить ACS URL федерации
      1. Войдите в сервис Yandex Cloud Organization.

      2. На панели слева выберите Федерации.

      3. Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля ACS URL.

    3. В поле Client Protocol выберите вариант saml.

    4. Нажмите Save.

  3. Настройте параметры SAML-приложения на вкладке Settings:

    1. Укажите ACS URL для перенаправления в полях:

      Keycloak версии 19 или новее
      Keycloak 18 и предшествующих версий
      • Home URL;
      • Valid Redirect URIs;
      • IDP Initiated SSO Relay State.
      • Valid Redirect URIs;
      • Base URL;
      • IDP Initiated SSO Relay State.
      Как получить ACS URL федерации
      1. Войдите в сервис Yandex Cloud Organization.

      2. На панели слева выберите Федерации.

      3. Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля ACS URL.

    2. Включите опции:

      • Include AuthnStatement;
      • Sign Assertions;
      • Force POST Binding;
      • Front Channel Logout.
    3. В поле Signature Algorithm выберите RSA_SHA256.

    4. В поле SAML Signature Key Name выберите CERT_SUBJECT.

    5. В качестве Name ID Format выберите подходящий вариант из списка. Чтобы выбранный вариант передавался вне зависимости от настроек Yandex Cloud Organization, включите опцию Force Name ID format.

    6. Нажмите кнопку Save.

  4. Если при создании федерации в Yandex Cloud Organization вы включили опцию Подписывать запросы аутентификации, настройте в SAML-приложении проверку цифровой подписи:

    Keycloak 19 или новее
    Keycloak 18 и предшествующих версий
    1. На вкладке Keys SAML-приложения включите опции Encrypt Assertions, опция Client Signature Required должна быть выключена.

    2. Для опций Client Signature Required нужно выбрать метод Import.

    3. В поле Archive Format выберите Certificate PEM. (возможно понадобится сначала сгенерировать сертификаты, чтобы после нажатия кнопки Import key стал доступен вариант Certificate PEM)

    4. Нажмите кнопку Browse и выберите скачанный ранее SAML-сертификат Yandex Cloud для подписи запросов аутентификации. Если вы не скачивали SAML-сертификат при создании федерации, вы можете скачать его на странице сведений о федерации в Yandex Cloud Organization, нажав кнопку Скачать сертификат в поле Подписывать запросы аутентификации.

    5. Нажмите Confirm.

    1. В настройках SAML-приложения включите опции Encrypt Assertions и Client Signature Required и сохраните приложение, чтобы обновить доступные вкладки.

    2. На вкладке Keys SAML-приложения в разделах Signing Key и Encryption Key нажмите кнопку Import.

    3. В поле Archive Format выберите Certificate PEM.

    4. Нажмите кнопку Select file и выберите скачанный ранее SAML-сертификат Yandex Cloud для подписи запросов аутентификации. Если вы не скачивали SAML-сертификат при создании федерации, вы можете скачать его на странице сведений о федерации в Yandex Cloud Organization, нажав кнопку Скачать сертификат в поле Подписывать запросы аутентификации.

    5. Нажмите Import.

  5. Добавьте пользователей:

    1. На панели слева выберите Users.

    2. Нажмите Add user и введите данные пользователя.

    3. Нажмите кнопку Save.

    4. На вкладке Credentials нажмите Set Password и задайте пароль.

Добавление пользователей в Yandex Cloud OrganizationДобавление пользователей в Yandex Cloud Organization

Если при создании федерации вы не включили опцию Автоматически создавать пользователей, федеративных пользователей нужно добавить в организацию вручную.

Для этого вам понадобятся пользовательские Name ID. Их возвращает IdP-сервер вместе с ответом об успешной аутентификации.

При включенной опции Автоматически создавать пользователей в федерацию будут добавлены только пользователи, которые впервые авторизуются в облаке. Если федеративный пользователь был исключен, добавить его повторно можно только вручную.

Добавить пользователя может администратор (роль organization-manager.admin) или владелец (роль organization-manager.organizations.owner) организации. О том, как назначить пользователю роль, читайте в разделе Роли.

Примечание

Для доступа пользователя к консоли управления, назначьте ему роль на облако или организацию. Для безопасности вы можете назначить одну из ролей с минимальными привилегиями, например resource-manager.clouds.member, но также можно назначить и другие роли, если вы знаете, какие права вы хотите предоставить приглашенным пользователям.

Чтобы дать эти права сразу всем пользователям в организации, назначьте роль системной группе All users in organization X. При работе с CLI или API назначение дополнительных ролей не требуется.

Интерфейс Cloud Center
CLI
API
  1. Перейдите в сервис Yandex Cloud Organization.

  2. На панели слева выберите Пользователи.

  3. В правом верхнем углу экрана нажмите Ещё и выберите Добавить федеративных пользователей.

  4. Выберите федерацию, из которой необходимо добавить пользователей.

  5. Перечислите Name ID пользователей, разделяя их пробелами или переносами строк.

  6. Нажмите Добавить. Пользователи будут подключены к организации.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Посмотрите описание команды добавления пользователей:

    yc organization-manager federation saml add-user-accounts --help
    
  2. Добавьте пользователей, перечислив их Name ID через запятую:

    yc organization-manager federation saml add-user-accounts --id <ID_федерации> \
      --name-ids=alice@example.com,bob@example.com,charlie@example.com
    

    Где:

    • --id — идентификатор федерации.
    • --name-ids — Name ID пользователей.

Чтобы добавить пользователей федерации в облако:

  1. Сформируйте файл с телом запроса, например body.json. В теле запроса укажите массив Name ID пользователей, которых необходимо добавить:

    {
      "nameIds": [
        "alice@example.com",
        "bob@example.com",
        "charlie@example.com"
      ]
    }
    
  2. Отправьте запрос, указав в параметрах идентификатор федерации:

    curl \
      --request POST \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer <IAM-токен>" \
      --data '@body.json' \
      https://organization-manager.api.cloud.yandex.net/organization-manager/v1/saml/federations/<ID_федерации>:addUserAccounts
    

Настройка сопоставления атрибутов пользователейНастройка сопоставления атрибутов пользователей

После аутентификации IdP-сервер отправит пользователю через браузер SAML-сообщение, которое будет содержать:

  • информацию об успешной аутентификации;

  • атрибуты пользователя, такие как список ролей, имя, фамилия и адрес электронной почты.

Вы можете настроить сопоставление между атрибутами SAML-сообщения и персональными данными, которые хранятся на IdP-сервере. Для этого:

  1. Включите опцию сопоставления ролей поставщика удостоверений и Yandex Cloud Organization:

    1. На панели слева выберите Client Scopes → role_list.

    2. Перейдите на вкладку Mappers и выберите role list.

    3. Включите опцию Single Role Attribute.

  2. Настройте атрибуты, которые будут передаваться в Yandex Cloud:

    Keycloak 19 или новее
    Keycloak 18 и предшествующих версий
    1. На панели слева выберите Client и откройте настройки вашего SAML-приложения → role_list.

    2. На вкладке Client Scopes выберите напротив пункта role_list значение optional и нажмите на строку с одноименным названием вашего клиента

    3. В открывшемся окне нажмите кнопку Add predefined mappers.

    4. Отметьте атрибуты в списке и нажмите кнопку Add. В Keycloak по умолчанию доступны атрибуты пользователя:

      • X500 email — адрес электронной почты;
      • X500 surname — фамилия;
      • X500 givenName — имя;
      • role list — перечень ролей.
    5. Вы можете создать дополнительные атрибуты для пользователей, например номер телефона. Для этого нажмите Add mappers -> By configuration -> User Property, в таблице Configure a new mapper выберите пункт User Attribute и введите параметры атрибута.

    6. Настройте синхронизацию атрибутов Keycloak и Yandex Cloud Organization: откройте атрибут и измените значение SAML Attribute Name. Значения SAML Attribute Name, которые поддерживаются в Yandex Cloud Organization, приведены ниже.

    1. На панели слева выберите Clients и откройте настройки вашего SAML-приложения.

    2. На вкладке Mappers нажмите кнопку Add Builtins.

    3. Отметьте атрибуты в списке и нажмите кнопку Add selected. В Keycloak по умолчанию доступны атрибуты пользователя:

      • X500 email — адрес электронной почты;
      • X500 surname — фамилия;
      • X500 givenName — имя;
      • role list — перечень ролей.
    4. Вы можете создать дополнительные атрибуты для пользователей, например номер телефона. Для этого нажмите Create, в поле Mapper Type выберите опцию User Attribute и введите параметры атрибута.

    5. Настройте синхронизацию атрибутов Keycloak и Yandex Cloud Organization: откройте атрибут и измените значение SAML Attribute Name. Значения SAML Attribute Name, которые поддерживаются в Yandex Cloud Organization, приведены ниже.

  3. Если вы создали дополнительные атрибуты, добавьте их в параметры пользователя:

    1. На панели слева выберите Users, откройте параметры пользователя и перейдите на вкладку Attributes.

    2. В поле Key укажите значение Name, которые было присвоено дополнительному атрибуту.

    3. В поле Value введите данные пользователя, которые будут передаваться в атрибуте.

      Примечание

      По умолчанию для поля Value установлено ограничение в 256 символов. Атрибуты могут содержать большее количество символов — например, аватар в кодировке Base64. Чтобы добавить такое значение, измените тип данных поля во внутреннем хранилище Keycloak в таблице user_attribute.

    4. Нажмите Add и затем Save.

Данные пользователя Комментарий SAML Attribute Name
Фамилия Используется для поиска в сервисах Yandex Cloud.
Ограничение значения по длине: 64 символа.
lastName
Имя Используется для поиска в сервисах Yandex Cloud.
Ограничение значения по длине: 64 символа.
firstName
Полное имя Отображается в сервисах Yandex Cloud.
Ограничение значения по длине: 64 символа.
name
Почта Используется для отправки уведомлений из сервисов Yandex Cloud.
Пример: ivanov@example.com.
Ограничение значения по длине: 256 символов.
email
Телефон Используется для отправки уведомлений из сервисов Yandex Cloud.
Пример: +71234567890.
Ограничение значения по длине: 64 символа.
phone
Аватар Отображается в сервисах Yandex Cloud. Изображение должно быть представлено в символьном формате Base64.
Ограничение значения по длине: 204800 символов.
thumbnailPhoto
Членство в группах Используется для функционала динамического сопоставления членства в группах. member

Важно

Значение атрибута thumbnailPhoto, превышающее ограничение по длине, игнорируется. Если значение другого атрибута превышает ограничения, то часть значения, выходящая за пределы ограничения, отбрасывается.

Пример сопоставления атрибутов:

image

Проверка аутентификацииПроверка аутентификации

Когда вы закончили настройку SSO, протестируйте, что все работает:

  1. Откройте браузер в гостевом режиме или режиме инкогнито.

  2. Перейдите по URL для входа в консоль:

    https://console.yandex.cloud/federations/<ID_федерации>
    
    Как получить ID федерации
    1. Войдите в сервис Yandex Cloud Organization.
    2. На панели слева выберите Федерации.
    3. Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля Идентификатор.

    Браузер должен перенаправить вас на страницу аутентификации в Keycloak.

  3. Введите данные для аутентификации и нажмите кнопку Sign in.

После успешной аутентификации IdP-сервер перенаправит вас по ACS URL, который вы указали в настройках Keycloak, а после — на главную страницу консоли управления. В правом верхнем углу вы сможете увидеть, что вошли в консоль от имени федеративного пользователя.

Была ли статья полезна?

Предыдущая
Аутентификация с помощью Microsoft Entra ID
Следующая
Сопоставление групп пользователей в Active Directory Federation Services
Проект Яндекса
© 2025 ООО «Яндекс.Облако»