Аутентификация с помощью Active Directory
С помощью федерации удостоверений вы можете настроить систему единого входа (Single Sign-On, SSO) и использовать Microsoft Active Directory совместно с Microsoft Active Directory Federation Services
Чтобы настроить SSO:
Перед началом работы
Чтобы воспользоваться инструкциями в этом разделе, вам понадобятся:
-
Работающая ферма AD FS.
Если у вас еще нет настроенной фермы AD FS, то выполните следующие действия для настройки:
-
Разверните и настройте Active Directory Domain Services (AD DS)
, если это еще не сделано. Наличие AD DS — необходимое условие для развертывания AD FS. -
Разверните и настройте ферму AD FS
из одного или нескольких серверов.Совет
Добавьте в ферму AD FS несколько серверов, чтобы обеспечить отказоустойчивость.
Тогда SSO будет доступен, даже если отдельные серверы выйдут из строя.
-
-
Действующий SSL-сертификат для использования в AD FS. Если у вас нет действующего сертификата, получите новый.
Чтобы браузеры не блокировали страницу аутентификации при использовании SSO, сертификат должен удовлетворять следующим требованиям:
-
Устройства и пользователи в рамках леса Active Directory должны доверять сертификату.
-
FQDN фермы AD FS должен содержаться в свойстве
Subject Name
и расширенииAlternative Name
сертификата.Как получить FQDN фермы
-
Подключитесь к любому серверу в ферме AD FS, откройте консоль PowerShell.
-
Получите эндпоинт сервиса федераций:
Get-AdfsEndpoint -AddressPath /adfs/ls/ | Select FullUrl
Эндпоинт содержит в себе FQDN фермы AD FS и имеет следующий вид:
https://<FQDN_фермы_AD_FS>/adfs/ls/
-
-
Создайте федерацию в организации
Чтобы создать федерацию:
-
Перейдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Федерации. -
В правом верхнем углу страницы нажмите кнопку
Создать федерацию. -
Задайте имя федерации. Имя должно быть уникальным в каталоге.
-
При необходимости добавьте описание.
-
В поле Время жизни cookie укажите время, в течение которого браузер не должен требовать у пользователя повторной аутентификации.
-
В поле IdP Issuer укажите ссылку в формате
http://<FQDN_фермы_AD_FS>/adfs/services/trust
.Как получить FQDN фермы
-
Подключитесь к любому серверу в ферме AD FS, откройте консоль PowerShell.
-
Получите эндпоинт сервиса федераций:
Get-AdfsEndpoint -AddressPath /adfs/ls/ | Select FullUrl
Эндпоинт содержит в себе FQDN фермы AD FS и имеет следующий вид:
https://<FQDN_фермы_AD_FS>/adfs/ls/
-
-
В поле Single Sign-On метод выберите POST.
-
В поле Ссылка на страницу для входа в IdP укажите ссылку в формате
https://<FQDN_фермы_AD_FS>/adfs/ls/
.В ссылке допустимо использовать только протоколы HTTP и HTTPS.
-
Включите опцию Автоматически создавать пользователей, чтобы аутентифицированный пользователь автоматически добавлялся в организацию. Если эта опция выключена, то пользователь не сможет использовать Yandex Cloud до тех пор, пока его не добавят в организацию вручную.
Автоматически федеративный пользователь создается только при первом входе пользователя в облако. Если вы исключили пользователя из федерации, вернуть его туда можно будет только вручную.
-
Чтобы все запросы аутентификации от Yandex Cloud содержали цифровую подпись, включите опцию Подписывать запросы аутентификации.
Для завершения настройки нужно скачать и установить сертификат Yandex Cloud после создания федерации.
-
Включите опцию Принудительная повторная аутентификация (ForceAuthn) в IdP, чтобы задать значение
true
для параметра ForceAuthn в запросе аутентификации SAML. При включении этой опции поставщик удостоверений (Identity Provider, 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 "http://example.com/adfs/services/trust" \ --sso-url "https://example.com/adfs/ls/" \ --sso-binding POST \ --encrypted-assertions \ --force-authn
Где:
-
--name
— имя федерации. Имя должно быть уникальным в каталоге. -
--organization-id
— идентификатор организации. -
--auto-create-account-on-login
— опция, которая активирует автоматическое создание новых пользователей в облаке после аутентификации с помощью поставщика удостоверений (Identity Provider, IdP).Опция упрощает процесс заведения пользователей, но созданный таким образом пользователь не сможет выполнять никаких операций с ресурсами в облаке. Исключение — те ресурсы, на которые назначены роли публичной группе
All users
илиAll authenticated users
.Если опцию не включать, то пользователь, которого не добавили в организацию, не сможет войти в консоль управления, даже если пройдет аутентификацию с помощью поставщика удостоверений. В этом случае вы можете управлять списком пользователей, которым разрешено пользоваться ресурсами Yandex Cloud.
-
--cookie-max-age
— время, в течение которого браузер не должен требовать у пользователя повторной аутентификации. -
--issuer
— идентификатор поставщика удостоверений, с помощью которого будет происходить аутентификация.Укажите ссылку в формате
http://<FQDN_фермы_AD_FS>/adfs/services/trust
.Как получить FQDN фермы
-
Подключитесь к любому серверу в ферме AD FS, откройте консоль PowerShell.
-
Получите эндпоинт сервиса федераций:
Get-AdfsEndpoint -AddressPath /adfs/ls/ | Select FullUrl
Эндпоинт содержит в себе FQDN фермы AD FS и имеет следующий вид:
https://<FQDN_фермы_AD_FS>/adfs/ls/
-
-
--sso-url
— URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации.Укажите ссылку в формате
https://<FQDN_фермы_AD_FS>/adfs/ls/
.В ссылке допустимо использовать только протоколы HTTP и HTTPS.
-
--sso-binding
— тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязкиPOST
. -
(Опционально)
--encrypted-assertions
— флаг, который включает цифровую подпись запросов аутентификации.Если указано значение
true
, то все запросы аутентификации от Yandex Cloud будут содержать цифровую подпись.Для завершения настройки нужно скачать и установить сертификат Yandex Cloud после создания федерации.
-
(Опционально)
force-authn
— при истечении сессии в Yandex Cloud поставщик удостоверений запросит у пользователя повторную аутентификацию.
-
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
В конфигурационном файле опишите параметры федерации:
-
name
— имя федерации. Имя должно быть уникальным в каталоге. -
description
— описание федерации. -
organization_id
— идентификатор организации. -
labels
— набор пар меток ключ/значение, которые присвоены федерации. -
issuer
— идентификатор поставщика удостоверений (Identity Provider, IdP), с помощью которого будет происходить аутентификация.Укажите ссылку в формате
http://<FQDN_фермы_AD_FS>/adfs/services/trust
.Как получить FQDN фермы
-
Подключитесь к любому серверу в ферме AD FS, откройте консоль PowerShell.
-
Получите эндпоинт сервиса федераций:
Get-AdfsEndpoint -AddressPath /adfs/ls/ | Select FullUrl
Эндпоинт содержит в себе FQDN фермы AD FS и имеет следующий вид:
https://<FQDN_фермы_AD_FS>/adfs/ls/
-
-
sso_binding
— тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязкиPOST
. -
sso_url
— URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации.Укажите ссылку в формате
https://<FQDN_фермы_AD_FS>/adfs/ls/
.В ссылке допустимо использовать только протоколы HTTP и HTTPS.
-
cookie_max_age
— время в секундах, в течение которого браузер не должен требовать у пользователя повторной аутентификации. Значение по умолчанию8 часов
. -
auto_create_account_on_login
— опция, которая активирует автоматическое создание новых пользователей в облаке после аутентификации с помощью поставщика удостоверений.Опция упрощает процесс заведения пользователей, но созданный таким образом пользователь не сможет выполнять никаких операций с ресурсами в облаке. Исключение — те ресурсы, на которые назначены роли публичной группе
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 = "http://example.com/adfs/services/trust" sso_url = "https://example.com/adfs/ls/" sso_binding = "POST" security_settings { encrypted_assertions = "true" } }
-
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразятся параметры федерации. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте федерацию.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание федерации.
После этого в указанной организации будет создана федерация. Проверить появление федерации и ее настроек можно в организации в разделе Федерации
. -
-
Создайте файл с телом запроса, например
body.json
:{ "name": "my-federation", "organizationId": "<идентификатор_организации>", "autoCreateAccountOnLogin": true, "cookieMaxAge":"43200s", "issuer": "http://example.com/adfs/services/trust", "ssoUrl": "https://example.com/adfs/ls/", "ssoBinding": "POST", "securitySettings": { "encryptedAssertions": true, "forceAuthn": true } }
Где:
-
name
— имя федерации. Имя должно быть уникальным в каталоге. -
organizationId
— идентификатор организации. -
autoCreateAccountOnLogin
— опция, которая активирует автоматическое создание новых пользователей в облаке после аутентификации с помощью поставщика удостоверений (Identity Provider, IdP).Опция упрощает процесс заведения пользователей, но созданный таким образом пользователь не сможет выполнять никаких операций с ресурсами в облаке. Исключение — те ресурсы, на которые назначены роли публичной группе
All users
илиAll authenticated users
.Если опцию не включать, то пользователь, которого не добавили в организацию, не сможет войти в консоль управления, даже если пройдет аутентификацию с помощью поставщика удостоверений. В этом случае вы можете управлять списком пользователей, которым разрешено пользоваться ресурсами Yandex Cloud.
-
cookieMaxAge
— время, в течение которого браузер не должен требовать у пользователя повторной аутентификации. -
issuer
— идентификатор поставщика удостоверений, с помощью которого будет происходить аутентификация.Укажите ссылку в формате
http://<FQDN_фермы_AD_FS>/adfs/services/trust
.Как получить FQDN фермы
-
Подключитесь к любому серверу в ферме AD FS, откройте консоль PowerShell.
-
Получите эндпоинт сервиса федераций:
Get-AdfsEndpoint -AddressPath /adfs/ls/ | Select FullUrl
Эндпоинт содержит в себе FQDN фермы AD FS и имеет следующий вид:
https://<FQDN_фермы_AD_FS>/adfs/ls/
-
-
ssoUrl
— URL-адрес страницы, на которую браузер должен перенаправить пользователя для аутентификации.Укажите ссылку в формате
https://<FQDN_фермы_AD_FS>/adfs/ls/
.В ссылке допустимо использовать только протоколы HTTP и HTTPS.
-
ssoBinding
— тип привязки для Single Sign-on. Большинство поставщиков поддерживают тип привязкиPOST
. -
encryptedAssertions
— флаг, который включает цифровую подпись запросов аутентификации.Если указано значение
true
, то все запросы аутентификации от Yandex Cloud будут содержать цифровую подпись.Для завершения настройки нужно скачать и установить сертификат Yandex Cloud после создания федерации.
-
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
указан идентификатор созданной федерации: сохраните его, он понадобится в дальнейшем.
Укажите сертификаты для федерации
Когда поставщик удостоверений сообщает Yandex Cloud Organization, что пользователь прошел аутентификацию, он подписывает сообщение своим сертификатом. Чтобы сервис Cloud Organization мог проверить этот сертификат, добавьте его в созданную федерацию:
-
Получите сертификат фермы AD FS:
MMC-оснасткаPowerShell-
Подключитесь к любому серверу в ферме AD FS и откройте Server Manager.
-
Откройте консоль управления AD FS: Tools → AD FS Management.
-
В открывшемся окне в дереве слева нажмите Services → Certificates.
-
Нажмите правой кнопкой мыши на сертификате в блоке Token-signing и выберите View certificate.
-
В открывшемся окне перейдите на вкладку Details.
-
Нажмите кнопку Copy to file.
-
Нажмите кнопку Next.
-
Выберите формат Base-64 encoded X.509 (.CER) и нажмите Next.
-
Укажите, куда сохранить сертификат и с каким именем, и нажмите Next.
-
Проверьте настройки экспорта сертификата и нажмите Finish.
-
Подключитесь к любому серверу в ферме AD FS, откройте консоль PowerShell.
-
Получите сертификат типа
Token-Signing
в формате Base64. Для этого выполните команды, указав путь, по которому нужно сохранить сертификат:$ADFS_CERT_PATH = "<путь_к_сертификату>/adfs_certificate.cer" $TEMP_CERT = (Get-AdfsCertificate -CertificateType Token-Signing | where {$_.IsPrimary -eq $true} | Select-Object -First 1 ).Certificate.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Cert) @( '-----BEGIN CERTIFICATE-----' [System.Convert]::ToBase64String($TEMP_CERT, 'InsertLineBreaks') '-----END CERTIFICATE-----' ) | Out-File -FilePath $ADFS_CERT_PATH -Encoding ascii
Сертификат будет сохранен под именем
adfs_certificate.cer
.
-
-
Добавьте сертификат фермы в федерацию:
Интерфейс Cloud CenterCLIAPI-
Войдите в сервис 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-name my-federation \ --name "my-certificate" \ --certificate-file test.pem
Чтобы добавить сертификат, воспользуйтесь методом create для ресурса Certificate:
-
Сформируйте тело запроса, указав содержимое сертификата в свойстве
data
:{ "federationId": "<ID_федерации>", "name": "my-certificate", "data": "MII...==" }
-
Отправьте запрос на добавление сертификата:
export IAM_TOKEN=CggaAT******** curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@body.json' \ "https://organization-manager.api.cloud.yandex.net/organization-manager/v1/saml/certificates"
-
Совет
Не забывайте своевременно перевыпускать сертификаты и добавлять их в федерацию.
Чтобы не пропустить момент окончания срока действия сертификата, подпишитесь на уведомления от организации. Уведомления направляются подписанным пользователям за 60, 30 и 5 дней до момента прекращения действия сертификата, а также после того, как сертификат становится недействительным.
Настройте ферму AD FS так, чтобы она сообщала Yandex Cloud о каждой успешной аутентификации и затем перенаправляла пользователя в консоль. Для настройки фермы потребуются сведения о федерации, которая была создана ранее.
Примечание
Инструкции по настройке приведены для ОС Windows Server 2016, для других версий шаги могут отличаться.
Чтобы настроить ферму:
Создайте отношение доверия с проверяющей стороной
Создайте отношение доверия с проверяющей стороной (relying party trust), чтобы Yandex Cloud мог использовать AD FS для аутентификации:
-
Подключитесь к любому серверу в ферме AD FS и откройте Server Manager.
-
Откройте консоль управления AD FS: Tools → AD FS Management.
-
В списке действий выберите Add Relying Party Trust.
Откроется окно помощника.
-
На шаге Welcome выберите Claims aware и нажмите Start.
-
На шаге Select Data Source выберите Enter data about the relying party manually и нажмите Next.
-
На шаге Specify Display Name задайте имя, например
Yandex Cloud
, и нажмите Next. -
Пропустите шаг Configure Certificate, нажав кнопку Next. Сертификаты будут настроены позднее.
-
На шаге Configure URL выберите Enable support for the SAML 2.0 WebSSO protocol и укажите ACS URL, на который пользователи будут перенаправляться после аутентификации.
Как получить ID федерации
- Войдите в сервис Yandex Cloud Organization
. - На панели слева выберите
Федерации. - Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля Идентификатор.
Как получить ACS URL федерации
-
Войдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Федерации. -
Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля ACS URL.
После этого нажмите Next.
- Войдите в сервис Yandex Cloud Organization
-
На шаге Configure Identifiers введите в качестве идентификатора этот же URL для перенаправления и нажмите Add. После этого нажмите Next.
-
На шаге Choose Access Control Policy выберите, кому будет доступна аутентификация с помощью этой федерации. По умолчанию выбрана политика Permit for everyone, которая разрешает доступ для всех пользователей.
Вы можете выбрать другую политику. Например, чтобы разрешить доступ только для отдельной группы пользователей, выберите Permit specific group и нажмите на слово
<parameter>
, чтобы выбрать, для каких групп разрешить доступ. Подробнее о политиках управления доступом .После выбора политики нажмите Next.
-
На шаге Ready to Add Trust проверьте введенные данные и нажмите Close.
-
(Опционально) Если при создании федерации в Yandex Cloud Organization вы включили опцию Подписывать запросы аутентификации, настройте связанные с этим параметры для отношения доверия:
-
Откройте контекстное меню созданного отношения доверия и выберите пункт Properties.
Откроется окно со свойствами отношения доверия.
-
Перейдите на вкладку Encryption и добавьте сертификат, полученный ранее:
- Нажмите кнопку Browse.
- Выберите файл с сертификатом (например,
YandexCloud.cer
).
-
Перейдите на вкладку Signature и добавьте этот же сертификат:
- Нажмите кнопку Add.
- Выберите файл с сертификатом.
-
Нажмите кнопку OK.
-
Включите обязательные шифрование утверждений и подпись запросов для созданного отношения доверия:
Set-AdfsRelyingPartyTrust ` -TargetName "Yandex Cloud" ` -EncryptClaims $true ` -SignedSamlRequestsRequired $true ` -SamlResponseSignature MessageAndAssertion
-
-
(Опционально) Если при создании федерации в Yandex Cloud Organization вы включили опцию Принудительная повторная аутентификация (ForceAuthn) в IdP, то включите принудительное требование аутентификации на стороне отношения доверия:
Set-AdfsRelyingPartyTrust ` -TargetName "Yandex Cloud" ` -AlwaysRequireAuthentication $true
Настройте Claims Mapping
Когда служба AD FS аутентифицирует пользователя, она отправляет в Yandex Cloud SAML-сообщение с подтверждением успешной аутентификации. Сообщение обязательно должно содержать элемент Name ID
, однозначно идентифицирующий пользователя, а также может содержать другие данные пользователя (имя, электронная почта и так далее). Для этого необходимо настроить соответствие атрибутов пользователя типам исходящих утверждений (Outgoing Claim Type).
Изучите перечень данных, атрибутов и типов исходящих утверждений
Данные пользователя | Комментарий | Outgoing Claim Type |
---|---|---|
Уникальный идентификатор пользователя | Обязательный атрибут. Рекомендуем использовать один из уникальных и неизменных атрибутов пользователя Active Directory: User-Principal-Name, Object-Sid, Object-Guid или адрес электронной почты. | Name ID |
Перечень групп, к которым принадлежит пользователь | Этот перечень используется для сопоставления групп при аутентификации пользователя в Yandex Cloud. Используйте атрибут из семейства Token-Groups .В зависимости от выбранного атрибута формат, в котором передается перечень групп, будет разным. Например, при использовании Token-Groups - Unqualified Names будут передаваться короткие имена групп (например adfs_group , Domain Users ) без указания их принадлежности к домену.Пример настройки сопоставления групп см. в разделе Сопоставление групп пользователей в Microsoft Active Directory Federation Services. |
Group |
Фамилия | Отображается в сервисах Yandex Cloud. Рекомендуется использовать атрибут Surname. Ограничение значения по длине: 64 символа. |
Surname |
Имя | Отображается в сервисах Yandex Cloud. Рекомендуется использовать атрибут Given-Name. Ограничение значения по длине: 64 символа. |
Given Name |
Полное имя | Отображается в сервисах Yandex Cloud. Пример: Иван Иванов. Рекомендуется использовать атрибут Display-Name. Ограничение значения по длине: 64 символа. |
Name |
Почта | Используется для отправки уведомлений из сервисов Yandex Cloud. Пример: ivanov@example.com Рекомендуется использовать атрибут E-Mail-Address. Ограничение значения по длине: 256 символов. |
E-Mail Address |
Телефон | Используется для отправки уведомлений из сервисов Yandex Cloud. Пример: +71234567890 Рекомендуется использовать атрибут Telephone-Number .Ограничение значения по длине: 64 символа. |
phone |
Аватар | Отображается в сервисах Yandex Cloud. Рекомендуется использовать атрибут thumbnailPhoto . Как добавить аватар.Ограничение значения по длине: 204800 символов. |
thumbnailPhoto |
Настройте сопоставления для атрибутов и утверждений
Примечание
В Yandex Cloud действуют ограничения на длину значений некоторых атрибутов, в которых содержатся данные пользователя.
Если длина значения превышает ограничение, то часть значения, выходящая за ограничение, будет отброшена.
Исключение — атрибут thumbnailPhoto
, в котором хранится аватар пользователя. Если значение этого атрибута превышает ограничение, то оно будет отброшено полностью и аватар не будет загружен.
Настройте сопоставления:
-
В консоли управления AD FS в блоке Relying Party Trusts нажмите правой кнопкой мыши на созданном ранее отношении доверия с проверяющей стороной и выберите Edit Claim Issuance Policy.
-
В открывшемся окне нажмите Add Rule.
-
Выберите Send LDAP Attributes as Claims и нажмите Next.
-
На следующей странице настройте, какие данные будут передаваться в сообщении:
-
В поле Claim rule name задайте имя правила, например
Claims mapping
. -
В поле Attribute Store выберите Active Directory.
-
Настройте сопоставление для обязательного утверждения
Name ID
, добавив запись в списке Mapping of LDAP attributes:-
Выберите тип утверждения
Name ID
в столбце Outgoing Claim Type. -
Выберите нужный атрибут в столбце LDAP Attribute.
Вы можете выбрать либо один из рекомендуемых атрибутов, либо другой атрибут. Выбранный атрибут должен быть неизменным и уникальным, чтобы можно было однозначно идентифицировать пользователя по этому атрибуту.
Важно
Если значение идентификатора пользователя изменится, то для такого пользователя придется создать новую учетную запись в федерации, а доступ к прежним настройкам и данным в Yandex Cloud будет потерян.
-
-
Аналогичным образом настройте сопоставление для утверждения
Group
, если вы используете сопоставление групп пользователей. -
Аналогичным образом настройте сопоставления для утверждений
Name
иE-Mail Address
, если нужно, чтобы пользователь мог обратиться в службу технической поддержки Yandex Cloud из консоли управления . -
(Опционально) Аналогичным образом настройте сопоставления для других утверждений. Конкретный перечень сопоставлений зависит от того, какие данные пользователя нужно передать на сторону Yandex Cloud после прохождения аутентификации.
Как сохранить изображение с аватаром пользователя в атрибут
thumbnailPhoto
-
Подготовьте изображения для использования в качестве аватара.
Убедитесь, что изображение удовлетворяет требованиям:
- Максимальный размер файла с изображением — 100 Кбайт.
- Рекомендуемый размер файла с изображением — до 10 Кбайт, размер изображения — до 96×96 пикселей.
-
Запустите консоль PowerShell.
-
Подключите модуль Active Directory Module for Windows PowerShell с помощью команды:
Import-Module ActiveDirectory
-
Чтобы добавить аватар для одного пользователя, выполните команду:
Set-ADUser <имя_пользователя> -Replace @{thumbnailPhoto=([byte[]](Get-Content "<путь_к_изображению>" -Encoding byte))}
-
Чтобы массово добавить аватары для пользователей:
-
Подготовьте CSV-файл, в котором указаны имена пользователей и пути к изображениям.
Пример CSV-файла:
AD_username, Photo smith, C:\Photo\smith.jpg jones, C:\Photo\jones.jpg
-
Выполните команду:
Import-Csv <путь_к_CSV-файлу> |%{Set-ADUser -Identity $_.AD_username -Replace @{thumbnailPhoto=([byte[]](Get-Content $_.Photo -Encoding byte))}}
-
Если нужно настроить сопоставления для
phone
иthumbnailPhoto
, то введите названия этих типов исходящих утверждений вручную в поле Outgoing Claim Type. Эти типы нельзя выбрать из выпадающего списка: -
-
-
Нажмите Finish, затем нажмите OK, чтобы закрыть окно Edit Claim Issuance Policy.
Добавьте пользователей в организацию
Если при создании федерации вы не включили опцию Автоматически создавать пользователей, федеративных пользователей нужно добавить в организацию вручную.
Для этого вам необходимо знать Name ID пользователей, которые возвращает поставщик удостоверений вместе с ответом об успешной аутентификации. Обычно это основной email пользователя. Если вы не знаете, что возвращает поставщик в качестве Name ID, обратитесь к администратору, который настраивал аутентификацию в вашей федерации.
При включенной опции Автоматически создавать пользователей в федерацию будут добавлены только пользователи, которые впервые авторизуются в облаке. Если федеративный пользователь был исключен, добавить его повторно можно только вручную.
Добавить пользователя может администратор (роль organization-manager.admin
) или владелец (роль organization-manager.organizations.owner
) организации. О том, как назначить пользователю роль, читайте в разделе Роли.
Примечание
Для доступа пользователя к консоли управленияresource-manager.clouds.member
, но также можно назначить и другие роли, если вы знаете, какие права вы хотите предоставить приглашенным пользователям.
Чтобы дать эти права сразу всем пользователям в организации, назначьте роль системной группе All users in organization X
. При работе с CLI или API назначение дополнительных ролей не требуется.
Чтобы добавить пользователей федерации в организацию:
-
Перейдите в сервис 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 --name my-federation \ --name-ids=alice@example.com,bob@example.com,charlie@example.com
-
Сформируйте файл с телом запроса, например
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
Протестируйте работу аутентификации
Теперь, когда вы закончили настройку SSO, проверьте работу аутентификации:
-
Откройте браузер в гостевом режиме или режиме инкогнито для чистой симуляции нового пользователя.
-
Перейдите по URL для входа в консоль управления:
https://console.yandex.cloud/federations/<ID_федерации>
Как получить ID федерации
- Войдите в сервис Yandex Cloud Organization
. - На панели слева выберите
Федерации. - Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля Идентификатор.
Браузер должен перенаправить вас на страницу аутентификации в AD FS, которая по умолчанию выглядит так:
- Войдите в сервис Yandex Cloud Organization
-
Введите ваши данные для аутентификации. По умолчанию необходимо ввести UPN и пароль. Затем нажмите кнопку Sign in.
-
После успешной аутентификации AD FS перенаправит вас по ACS URL, который вы указали в настройках отношения доверия AD FS, а после этого — на главную страницу консоли управления. В правом верхнем углу вы можете увидеть, что вы вошли в консоль от имени аккаунта в Active Directory.