Аутентификация с помощью Google Workspace
С помощью федерации удостоверений вы можете использовать Google Workspace
Настройка аутентификации состоит из следующих этапов:
Перед началом работы
Чтобы воспользоваться инструкциями в этом разделе, вам понадобится подписка на сервисы Google Workspace и подтвержденный домен, для которого вы будете настраивать SAML-приложение.
Создание и настройка SAML-приложения в Google Workspace
Создайте SAML-приложение и скачайте сертификат
В роли поставщика удостоверений (IdP) выступает SAML-приложение в Google Workspace. Начните создавать приложение и скачайте сертификат:
-
Зайдите в консоль администратора Google Workspace
. -
На панели слева выберите Мобильные и веб-приложения.
-
Нажмите Добавить → Добавить пользовательское SAML-приложение.
-
Ведите название приложения, выберите логотип и нажмите Продолжить.
-
На шаге Сведения о поставщике идентификационной информации Google указаны данные сервера IdP. Эти данные понадобятся при настройке федерации Yandex Cloud Organization.
Внимание
Не закрывайте страницу создания приложения в Google Workspace: необходимые данные для настроек на шаге Сведения о поставщике услуг будут получены на следующих этапах.
Создание и настройка федерации в Yandex Cloud Organization
Создайте федерацию
Чтобы создать федерацию:
-
Перейдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Федерации. -
В правом верхнем углу страницы нажмите кнопку
Создать федерацию. В открывшемся окне:-
Задайте имя федерации. Имя должно быть уникальным в каталоге.
-
При необходимости добавьте описание.
-
В поле Время жизни cookie укажите время, в течение которого браузер не будет требовать у пользователя повторной аутентификации.
-
В поле IdP Issuer скопируйте ссылку, указанную в поле Идентификатор объекта на странице Сведения о поставщике услуг идентификации Google в Google Workspace. Формат ссылки:
https://accounts.google.com/o/saml2?idpid=<идентификатор_SAML-приложения>
-
В поле Ссылка на страницу для входа в IdP скопируйте ссылку, указанную в поле URL системы единого входа на странице Сведения о поставщике услуг идентификации Google в Google Workspace. Формат ссылки:
https://accounts.google.com/o/saml2/idp?idpid=<идентификатор_SAML-приложения>
В ссылке допустимо использовать только протоколы HTTP и HTTPS.
-
Включите опцию Автоматически создавать пользователей, чтобы аутентифицированный пользователь автоматически добавлялся в организацию. Если вы не включите эту опцию, федеративных пользователей потребуется добавить вручную.
Автоматически федеративный пользователь создается только при первом входе пользователя в облако. Если вы исключили пользователя из федерации, вернуть его туда можно будет только вручную.
-
Включите опцию Принудительная повторная аутентификация (ForceAuthn) в IdP, чтобы задать значение
true
для параметра ForceAuthn в запросе аутентификации SAML. При включении этой опции IdP-провайдер запрашивает у пользователя аутентификацию по истечении сессии в Yandex Cloud. -
Нажмите кнопку Создать федерацию.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды создания федерации:
yc organization-manager federation saml create --help
-
Создайте федерацию:
yc organization-manager federation saml create --name my-federation \ --organization-id <идентификатор_организации> \ --auto-create-account-on-login \ --cookie-max-age 12h \ --issuer "https://accounts.google.com/o/saml2?idpid=<идентификатор_SAML-приложения>" \ --sso-url "https://accounts.google.com/o/saml2/idp?idpid=<идентификатор_SAML-приложения>" \ --sso-binding POST \ --force-authn
Где:
-
--name
— имя федерации. Имя должно быть уникальным в каталоге. -
--organization-id
— идентификатор организации. -
--auto-create-account-on-login
— флаг, который активирует автоматическое создание новых пользователей в облаке после аутентификации на IdP-сервере.
Опция упрощает процесс заведения пользователей, но созданный таким образом пользователь не сможет выполнять никаких операций с ресурсами в облаке. Исключение — те ресурсы, на которые назначены роли публичной группеAll users
илиAll authenticated users
.Если опцию не включать, то пользователь, которого не добавили в организацию, не сможет войти в консоль управления, даже если пройдет аутентификацию на вашем сервере. В этом случае вы можете управлять списком пользователей, которым разрешено пользоваться ресурсами Yandex Cloud.
-
--cookie-max-age
— время, в течение которого браузер не должен требовать у пользователя повторной аутентификации. -
--issuer
— идентификатор IdP-сервера, на котором должна происходить аутентификация.Используйте ссылку, которая указана в поле Идентификатор объекта на странице Сведения о поставщике услуг идентификации Google в Google Workspace. Это ссылка в формате:
https://accounts.google.com/o/saml2?idpid=<идентификатор_SAML-приложения>
-
--sso-url
— URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации.Используйте ссылку, указанную в поле URL Системы единого входа на странице Сведения о поставщике услуг идентификации Google в Google Workspace. Формат ссылки:
https://accounts.google.com/o/saml2/idp?idpid=<идентификатор_SAML-приложения>
В ссылке допустимо использовать только протоколы HTTP и HTTPS.
-
--sso-binding
— укажите тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязкиPOST
. -
(Опционально)
force-authn
— при истечении сессии в Yandex Cloud поставщик удостоверений запросит у пользователя повторную аутентификацию.
-
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
В конфигурационном файле опишите параметры федерации:
-
name
— имя федерации. Имя должно быть уникальным в каталоге. -
description
— описание федерации. -
organization_id
— идентификатор организации. -
labels
— набор пар меток ключ/значение, которые присвоены федерации. -
issuer
— идентификатор IdP-сервера, на котором должна происходить аутентификация.Используйте ссылку, указанную в поле Идентификатор объекта на странице Сведения о поставщике услуг идентификации Google в Google Workspace. Формат ссылки:
https://accounts.google.com/o/saml2?idpid=<идентификатор_SAML-приложения>
-
sso_binding
— укажите тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязкиPOST
. -
sso_url
— URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации.Скопируйте сюда ссылку, указанную в поле URL Системы единого входа на странице Сведения о поставщике услуг идентификации Google в Google Workspace. Формат ссылки:
https://accounts.google.com/o/saml2/idp?idpid=<идентификатор_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 будут содержать цифровую подпись. Вам потребуется скачать и установить сертификат Yandex Cloud.
Пример структуры конфигурационного файла:
resource "yandex_organizationmanager_saml_federation" federation { name = "my-federation" organization_id = "<идентификатор_организации>" auto_create_account_on_login = "true" issuer = "https://accounts.google.com/o/saml2?idpid=<идентификатор_SAML-приложения>" sso_url = "https://accounts.google.com/o/saml2/idp?idpid=<идентификатор_SAML-приложения>" sso_binding = "POST" security_settings { encrypted_assertions = "true" } }
-
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
$ terraform plan
Если конфигурация описана верно, в терминале отобразятся параметры федерации. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте федерацию.
-
Если в конфигурации нет ошибок, выполните команду:
$ terraform apply
-
Подтвердите создание федерации.
После этого в указанной организации будет создана федерация. Проверить появление федерации и ее настроек можно в организации в разделе Федерации
. -
-
Создайте файл с телом запроса, например
body.json
:{ "name": "my-federation", "organizationId": "<идентификатор_организации>", "autoCreateAccountOnLogin": true, "cookieMaxAge":"43200s", "issuer": "https://accounts.google.com/o/saml2?idpid=<идентификатор_SAML-приложения>", "ssoUrl": "https://accounts.google.com/o/saml2/idp?idpid=<идентификатор_SAML-приложения>", "ssoBinding": "POST", "securitySettings": { "forceAuthn": true } }
Где:
-
name
— имя федерации. Имя должно быть уникальным в каталоге. -
organizationId
— идентификатор организации. -
autoCreateAccountOnLogin
— флаг, который активирует автоматическое создание новых пользователей в облаке после аутентификации на IdP-сервере.
Опция упрощает процесс заведения пользователей, но созданный таким образом пользователь не сможет выполнять никаких операций с ресурсами в облаке. Исключение — те ресурсы, на которые назначены роли публичной группеAll users
илиAll authenticated users
.Если опцию не включать, то пользователь, которого не добавили в организацию, не сможет войти в консоль управления, даже если пройдет аутентификацию на вашем сервере. В этом случае вы можете управлять списком пользователей, которым разрешено пользоваться ресурсами Yandex Cloud.
-
cookieMaxAge
— время, в течение которого браузер не должен требовать у пользователя повторной аутентификации. -
issuer
— идентификатор IdP-сервера, на котором должна происходить аутентификация.Используйте ссылку, указанную в поле Идентификатор объекта на странице Сведения о поставщике услуг идентификации Google в Google Workspace. Формат ссылки:
https://accounts.google.com/o/saml2?idpid=<идентификатор_SAML-приложения>
-
ssoUrl
— URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации.Скопируйте сюда ссылку, указанную в поле URL Системы единого входа на странице Сведения о поставщике услуг идентификации Google в Google Workspace. Формат ссылки:
https://accounts.google.com/o/saml2/idp?idpid=<идентификатор_SAML-приложения>
В ссылке допустимо использовать только протоколы HTTP и HTTPS.
-
ssoBinding
— укажите тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязкиPOST
. -
forceAuthn
— параметр, который включает принудительную повторную аутентификацию пользователя по истечении сессии в Yandex Cloud.
-
-
Чтобы создать федерацию, воспользуйтесь методом 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
указан идентификатор созданной федерации: сохраните его, он понадобится в дальнейшем.
Добавьте сертификаты
При аутентификации у сервиса Cloud Organization должна быть возможность проверить сертификат IdP-сервера. Для этого скачайте сертификат с открытой страницы Сведения о поставщике услуг идентификации Google в Google Workspace и добавьте его в созданную федерацию:
-
Войдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Федерации. -
Нажмите на строку с федерацией, для которой нужно добавить сертификат.
-
Внизу страницы в блоке Сертификаты нажмите кнопку Добавить сертификат.
-
Введите название и описание сертификата.
-
Выберите способ добавления сертификата:
- Чтобы добавить сертификат в виде файла, нажмите Выбрать файл и укажите путь к нему.
- Чтобы вставить скопированное содержимое сертификата, выберите способ Текст и вставьте содержимое.
-
Нажмите кнопку Добавить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды добавления сертификата:
yc organization-manager federation saml certificate create --help
-
Добавьте сертификат для федерации, указав путь к файлу сертификата:
yc organization-manager federation saml certificate create --federation-id <ID_федерации> \ --name "my-certificate" \ --certificate-file certificate.pem
Воспользуйтесь методом create для ресурса Certificate:
-
Сформируйте тело запроса. В свойстве
data
укажите содержимое сертификата:{ "federationId": "<ID_федерации>", "name": "my-certificate", "data": "-----BEGIN CERTIFICATE..." }
-
Отправьте запрос на добавление сертификата:
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"
Совет
Чтобы аутентификация не прерывалась в тот момент, когда у очередного сертификата закончился срок действия, рекомендуется добавлять в федерацию несколько сертификатов — текущий и те, которые будут использоваться после текущего. Если один сертификат окажется недействительным, Yandex Cloud попробует проверить подпись другим сертификатом.
Настройка системы единого входа (SSO)
Укажите URL для перенаправления
Когда вы создали федерацию, завершите создание SAML-приложения в Google Workspace:
-
Вернитесь на страницу создания SAML-приложения на шаге Сведения о поставщике идентификационной информации Google и нажмите Продолжить.
-
На шаге Сведения о поставщике услуг укажите сведения о Yandex Cloud, выступающем в роли поставщика услуг:
-
В полях URL ACS и Идентификатор объекта введите ACS URL, на который пользователи будут перенаправляться после аутентификации:
https://console.cloud.yandex.ru/federations/<ID_федерации>
Как получить ID федерации
-
Войдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Федерации. -
Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля Идентификатор.
Как получить ACS URL федерации
-
Войдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Федерации. -
Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля ACS URL.
-
-
Включите опцию Подписанный ответ.
-
-
Нажмите Продолжить.
Совет
Чтобы пользователь мог обратиться в службу технической поддержки Yandex Cloud из консоли управления
, на шаге Сопоставление атрибутов нажмите Добавить сопоставления и настройте передачу атрибутов:- Primary email.
- First name.
- Last name.
Атрибуты пользователей, которые поддерживают сервисы Yandex Cloud Organization, перечислены в разделе Сопоставление атрибутов пользователей.
-
Чтобы завершить создание приложения, нажмите Готово.
Добавьте пользователей
-
На странице приложения в разделе Доступ пользователей нажмите Отключено для всех.
-
На открывшейся странице выберите, кому будет доступна аутентификация в этой федерации:
-
Чтобы включить доступ для всех пользователей федерации, выберите Включено для всех.
-
Чтобы включить доступ для отдельного организационного подразделения, выберите подразделение в списке слева и настройте статус сервиса для этого подразделения. По умолчанию дочерние подразделения наследуют настройки доступа от родительского подразделения.
-
-
Нажмите Сохранить.
Сопоставление атрибутов пользователей
Данные пользователя | Комментарий | Атрибуты приложений |
---|---|---|
Уникальный идентификатор пользователя | Обязательный атрибут. Рекомендуется использовать адрес электронной почты. | Поле Идентификатор названия в настройках поставщика услуг |
Фамилия | Отображается в сервисах Yandex Cloud. Ограничение значения по длине: 64 символа. |
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname |
Имя | Отображается в сервисах Yandex Cloud. Ограничение значения по длине: 64 символа. |
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname |
Полное имя | Отображается в сервисах Yandex Cloud. Пример: Иван Иванов. Ограничение значения по длине: 64 символа. |
Атрибут недоступен |
Почта | Используется для отправки уведомлений из сервисов Yandex Cloud. Пример: ivanov@example.com .Ограничение значения по длине: 256 символов. |
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress |
Телефон | Используется для отправки уведомлений из сервисов Yandex Cloud. Пример: +71234567890. Ограничение значения по длине: 64 символа. |
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/mobilephone |
Аватар | Отображается в сервисах Yandex Cloud. Ограничение значения по длине: 204800 символов. |
Атрибут недоступен |
Важно
Значение атрибута thumbnailPhoto
, превышающее ограничение по длине, игнорируется. Если значение другого атрибута превышает ограничения, то часть значения, выходящая за пределы ограничения, отбрасывается.
Пример сопоставления атрибутов:
Добавьте пользователей в организацию
Если при создании федерации вы не включили опцию Автоматически создавать пользователей, федеративных пользователей нужно добавить в организацию вручную.
Для этого вам понадобятся пользовательские Name ID. Их возвращает IdP-сервер вместе с ответом об успешной аутентификации.
При включенной опции Автоматически создавать пользователей в федерацию будут добавлены только пользователи, которые впервые авторизуются в облаке. Если федеративный пользователь был исключен, добавить его повторно можно только вручную.
Добавить пользователя может администратор (роль organization-manager.admin
) или владелец (роль organization-manager.organizations.owner
) организации. О том, как назначить пользователю роль, читайте в разделе Роли.
-
Перейдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Пользователи. -
В правом верхнем углу экрана нажмите Ещё
и выберите Добавить федеративных пользователей. -
Выберите федерацию, из которой необходимо добавить пользователей.
-
Перечислите Name ID пользователей, разделяя их пробелами или переносами строк.
-
Нажмите Добавить. Пользователи будут подключены к организации.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды добавления пользователей:
yc organization-manager federation saml add-user-accounts --help
-
Добавьте пользователей, перечислив их 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 пользователей.
-
Чтобы добавить пользователей федерации в облако:
-
Сформируйте файл с телом запроса, например
body.json
. В теле запроса укажите массив Name ID пользователей, которых необходимо добавить:{ "nameIds": [ "alice@example.com", "bob@example.com", "charlie@example.com" ] }
-
Отправьте запрос, указав в параметрах идентификатор федерации:
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
Проверка аутентификации
Когда вы закончили настройку сервера, протестируйте, что все работает:
-
Откройте браузер в гостевом режиме или режиме инкогнито.
-
Перейдите по URL для входа в консоль:
https://console.yandex.cloud/federations/<ID_федерации>
Как получить ID федерации
-
Войдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Федерации. -
Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля Идентификатор.
Браузер должен перенаправить вас на страницу аутентификации в Google.
-
-
Введите данные для аутентификации и нажмите кнопку Sign in.
После успешной аутентификации IdP-сервер перенаправит вас обратно по ACS URL, который вы указали в настройках Google Workspace, а после — на главную страницу консоли управления