Сопоставление групп пользователей в Microsoft Active Directory Federation Services
- Перед началом работы
- Соберите данные о ферме AD FS
- Создайте федерацию Yandex Cloud Organization
- Добавьте сертификат AD FS в федерацию
- Создайте и настройте отношение доверия на стороне AD FS
- Настройте сопоставление атрибутов на стороне AD FS
- Настройте сопоставление групп на стороне федерации
- Проверьте работу аутентификации
Вы можете использовать сервис Active Directory Federation Services
Чтобы настроить сопоставление групп пользователей в AD FS и групп пользователей в федерации удостоверений:
- Соберите данные о ферме AD FS.
- Создайте федерацию Yandex Cloud Organization.
- Добавьте сертификат AD FS в федерацию.
- Создайте и настройте отношение доверия на стороне AD FS.
- Настройте сопоставление атрибутов на стороне AD FS.
- Настройте сопоставление групп на стороне федерации.
- Проверьте работу аутентификации.
Перед началом работы
Убедитесь, что выполнены следующие условия:
-
Есть доступ к MMC-оснастке Active Directory Users and Computers, через которую можно управлять доменными компьютерами, пользователями и группами.
-
Есть настроенная ферма AD FS с одним или несколькими действующими сертификатами типа
Token-signing
для подписи токенов. -
Есть доступ к следующим инструментам для управления этой фермой:
- MMC-оснастка AD FS Management.
- Модуль PowerShell
для управления AD FS.
Соберите данные о ферме AD FS
-
Получите и сохраните сертификат, который будет использоваться для подписи сообщений от AD FS.
Чтобы получить сертификат типа
Token-Signing
в формате Base64, выполните команды с помощью PowerShell, указав путь, по которому нужно сохранить сертификат:$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
. -
Получите и сохраните реквизиты, которые потребуются при настройке федерации удостоверений:
-
Получите идентификатор сервиса федераций (Federation Service identifier):
Get-AdfsProperties | Select Identifier
Идентификатор имеет вид:
http://<имя_сервиса_федераций>/adfs/services/trust
-
Получите эндпоинт сервиса федераций:
Get-AdfsEndpoint -AddressPath /adfs/ls/ | Select FullUrl
Эндпоинт имеет вид:
https://<имя_сервиса_федераций>/adfs/ls/
Примечание
Присутствие
http://
в идентификаторе не означает, что данные будут передаваться в открытом виде по протоколу HTTP.Все взаимодействие между AD FS и Yandex Cloud будет происходить через эндпоинт по протоколу HTTPS.
-
Создайте федерацию Yandex Cloud Organization
-
Перейдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Федерации. -
В правом верхнем углу страницы нажмите кнопку
Создать федерацию. В открывшемся окне:-
Задайте имя федерации, например
demo-federation
. Имя должно быть уникальным в каталоге. -
При необходимости добавьте описание.
-
В поле Время жизни cookie укажите время, в течение которого браузер не будет требовать у пользователя повторной аутентификации.
-
В поле IdP Issuer вставьте идентификатор сервиса федераций, полученный при сборе данных о ферме AD FS.
-
В выпадающем списке Single Sign-On метод выберите
POST
. -
В поле Ссылка на страницу для входа в IdP вставьте эндпоинт сервиса федераций, полученный при сборе данных о ферме AD FS.
-
Включите опцию Автоматически создавать пользователей, чтобы автоматически добавлять пользователя в организацию после аутентификации. Если опция отключена, федеративных пользователей потребуется добавить вручную.
Автоматически федеративный пользователь создается только при первом входе пользователя в облако. Если вы исключили пользователя из федерации, вернуть его туда можно будет только вручную.
-
(Опционально) Чтобы все запросы аутентификации от Yandex Cloud содержали цифровую подпись, включите опцию Подписывать запросы аутентификации.
-
Включите опцию Принудительная повторная аутентификация (ForceAuthn) в IdP, чтобы задать значение
true
для параметра ForceAuthn в запросе аутентификации SAML. При включении этой опции IdP-провайдер запрашивает у пользователя аутентификацию по истечении сессии в Yandex Cloud. -
Нажмите кнопку Создать федерацию.
-
-
Скачайте сертификат по ссылке в поле Подписывать запросы аутентификации, если ранее вы включили соответствующую опцию.
Сертификат потребуется в дальнейшем при настройке отношения доверия AD FS.
Добавьте сертификат AD FS в федерацию
Чтобы при аутентификации сервис Cloud Organization мог проверить сертификат AD FS, добавьте сертификат в федерацию:
-
Войдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Федерации. -
Нажмите на строку с федерацией, для которой нужно добавить сертификат —
demo-federation
. -
Внизу страницы в блоке Сертификаты нажмите кнопку Добавить сертификат.
-
Введите название сертификата и укажите путь к файлу
adfs_certificate.cer
, который был сохранен ранее. -
Нажмите кнопку Добавить.
Совет
Чтобы аутентификация не прерывалась, когда у очередного сертификата закончился срок действия, добавьте в федерацию несколько сертификатов — текущий и те, которые будут использоваться после текущего. Если один сертификат окажется недействительным, Yandex Cloud попробует проверить подпись другим сертификатом.
Создайте и настройте отношение доверия на стороне AD FS
В роли поставщика удостоверений (IdP) выступает AD FS, в котором настроено отношение доверия с проверяющей стороной (Relying Party Trust). Чтобы создать такое отношение и настроить его:
-
Откройте MMC-оснастку AD FS Management.
-
Откройте в дереве консоли контекстное меню элемента AD FS → Relying Party Trusts и выберите пункт Add Relying Party Trust.
Откроется мастер добавления отношения доверия с проверяющей стороной (Add Relying Party Trust Wizard).
-
Выберите опцию Claims aware на шаге Welcome. Нажмите кнопку Start.
-
Выберите опцию Enter data about the relying party manually на шаге Select Data Source. Нажмите кнопку Next.
-
Укажите имя отношения доверия (например,
Yandex Cloud
) и, при необходимости, его описание на шаге Specify Display Name. Нажмите кнопку Next. -
Пропустите шаг Configure Certificate, нажав кнопку Next.
-
Укажите URL для перенаправления на шаге Configure URL:
-
Включите опцию Enable support for the SAML 2.0 Web SSO protocol.
-
Укажите URL для перенаправления в поле Relying party SAML 2.0 SSO service URL.
URL для перенаправления имеет вид:
https://console.cloud.yandex.ru/federations/<идентификатор_федерации>
Как получить идентификатор федерации
-
Войдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Федерации. -
Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля Идентификатор.
-
-
Нажмите кнопку Next.
-
-
Укажите идентификатор проверяющей стороны на шаге Configure Identifiers:
-
Укажите тот же URL для перенаправления, который использовался на предыдущем шаге, в поле Relying party identifier.
-
Нажмите кнопку Add.
-
Нажмите кнопку Next.
-
-
Включите опцию I do not want to configure access control policies at this time. No user will be permitted access for this application на шаге Choose Access Control Policy. Нажмите кнопку Next.
Политики контроля доступа будут настроены позднее.
-
Проверьте на шаге Ready to Add Trust, что все параметры заданы корректно. Нажмите кнопку Next.
-
Отключите опцию Configure claims issuance policy for this application на шаге Finish. Нажмите кнопку Close.
Политики для утверждений (claims) будут настроены позднее.
-
(Опционально) Если при создании федерации в Yandex Cloud Organization вы включили опцию Подписывать запросы аутентификации, настройте связанные с этим параметры для отношения доверия:
-
Откройте контекстное меню созданного отношения доверия и выберите пункт Properties.
Откроется окно со свойствами отношения доверия.
-
Перейдите на вкладку Encryption и добавьте сертификат, полученный ранее:
- Нажмите кнопку Browse.
- Выберите файл с сертификатом (например,
YandexCloud.cer
).
-
Перейдите на вкладку Signature и добавьте этот же сертификат:
- Нажмите кнопку Add.
- Выберите файл с сертификатом.
-
Нажмите кнопку OK.
-
Включите обязательные шифрование утверждений и подпись запросов для созданного отношения доверия:
Set-AdfsRelyingPartyTrust ` -TargetName "Yandex Cloud" ` -EncryptClaims $true ` -SignedSamlRequestsRequired $true ` -SamlResponseSignature MessageAndAssertion
-
Настройте сопоставление атрибутов на стороне AD FS
Создайте пользователя
-
Откройте MMC-оснастку Active Directory Users and Computers.
-
Выберите в дереве консоли организационное подразделение (Organization Unit, OU), в котором нужно создать пользователя, затем откройте контекстное меню подразделения и выберите пункт New → User.
Откроется мастер добавления нового объекта (New Object - User).
-
Укажите сведения о пользователе:
-
User logon name — логин пользователя (например
adfs_demo_user
) в комбинации с доменом (напримерexample.com
).Примечание
Далее будет использоваться имя домена
example.com
. Если ваш домен имеет другое имя — скорректируйте дальнейшие шаги. -
Full name — полное имя пользователя, например
Ivan Ivanov
.
При необходимости можно заполнить другие сведения о пользователе.
-
-
Нажмите кнопку Next.
-
Укажите пароль и настройте связанные с ним политики:
-
Введите пароль и подтверждение пароля.
-
(Опционально) Отключите опцию User must change password at next login.
Если этого не сделать, то пользователю потребуется сменить пароль при первой аутентификации в AD FS.
-
Убедитесь, что опция Account is disabled отключена.
Важно
В противном случае учетная запись этого пользователя будет отключена.
Пользователь не сможет выполнять аутентификацию в AD FS и работать с Yandex Cloud.
-
(Опционально) Выберите другие опции, соответствующие нужным парольным политикам.
-
-
Нажмите кнопку Next, затем — кнопку Finish.
Создайте группу
-
Откройте MMC-оснастку Active Directory Users and Computers.
-
Выберите в дереве консоли организационное подразделение, в котором нужно создать группу, затем откройте контекстное меню подразделения и выберите пункт New → Group.
Откроется мастер добавления нового объекта (New Object - Group).
-
Укажите сведения о группе:
-
Group name — имя группы, например
adfs_group
. -
Group name (pre-Windows 2000) — имя группы в устаревшем формате для использования с системами старше Windows 2000.
По умолчанию это имя совпадает с выбранным именем группы. При необходимости можно выбрать другое значение.
-
-
Задайте настройки группы:
- Group scope —
Global
. - Group type —
Security
.
- Group scope —
-
Нажмите кнопку OK.
Добавьте пользователя в группу
-
Откройте MMC-оснастку Active Directory Users and Computers.
-
Выберите в дереве консоли организационное подразделение, в котором находится группа
adfs_group
. -
Выберите группу
adfs_group
в панели результатов, затем откройте контекстное меню группы и выберите пункт Properties.Откроется окно со свойствами группы.
-
Перейдите на вкладку Members и нажмите кнопку Add.
-
Введите логин пользователя
adfs_demo_user
и нажмите кнопку OK. -
Нажмите кнопку ОК.
Настройте политику контроля доступа
Эта политика разрешает выполнять аутентификацию пользователей из созданной ранее группы.
Чтобы настроить политику:
-
Откройте MMC-оснастку AD FS Management.
-
Выберите в дереве консоли элемент AD FS → Relying Party Trusts.
-
Выберите отношение доверия
Yandex Cloud
в панели результатов. -
Откройте контекстное меню этого отношения доверия и выберите пункт Edit Access Control Policy.
Откроется окно со списком политик.
-
Выберите политику
Permit Specific Group
из списка Choose an access control policy. -
Нажмите на ссылку
parameter
в поле Policy с описанием выбранной политики. -
Нажмите кнопку Add.
-
Введите имя группы
adfs_group
и нажмите кнопку OK. -
Нажмите кнопку OK в окне Select Groups.
-
Нажмите кнопку OK в окне Edit Access Control Policy for Yandex Cloud.
Настройте сопоставление атрибутов LDAP
-
Откройте MMC-оснастку AD FS Management.
-
Выберите в дереве консоли элемент AD FS → Relying Party Trusts.
-
Выберите отношение доверия
Yandex Cloud
в панели результатов. -
Откройте контекстное меню этого отношения доверия и выберите пункт Edit Claim Issuance Policy.
Откроется окно со списком политик.
-
Нажмите кнопку Add Rule.
Откроется мастер добавления правила для трансформации утверждения.
-
Выберите пункт
Send LDAP Attributes as Claims
из выпадающего списка Claim rule template на шаге Choose rule type. Нажмите кнопку Next. -
Задайте настройки правила на шаге Configure Claim Rule:
-
Claim rule name — имя правила, например
LDAP Mappings
. -
Attribute store —
Active Directory
. -
Mapping of LDAP attributes to outgoing claim types — список сопоставлений в виде пар «атрибут/тип исходящего утверждения».
Добавьте в список следующие обязательные сопоставления, которые необходимы для корректного взаимодействия с Yandex Cloud:
Атрибут
Тип исходящего утверждения
User-Principal-Name
Атрибут, по которому будет идентифицироваться пользователь.
В данном случае пользователь будет идентифицироваться по User Principal Name (UPN)
. UPN для созданного ранее пользователя имеет вид:adfs_demo_user@example.com
Вы можете использовать другой атрибут при условии, что он будет неизменным и уникальным, чтобы можно было однозначно идентифицировать пользователя по этому атрибуту. В этом случае скорректируйте дальнейшие шаги.
Name ID
Token-Groups - Unqualified Names
Перечень групп, к которым принадлежит пользователь. Этот перечень будет использоваться в ходе сопоставления групп при аутентификации пользователя в Yandex Cloud.
В данном случае будут передаваться короткие имена групп (например
adfs_group
,Domain Users
) без указания их принадлежности к домену.Вы можете использовать другой атрибут из семейства
Token-Groups
, напримерToken-Groups as SIDs
. В этом случае скорректируйте дальнейшие шаги.Group
Совет
При необходимости добавьте дополнительные сопоставления для передачи других поддерживаемых атрибутов пользователя.
-
-
Нажмите кнопку Finish.
-
Нажмите кнопку OK.
Настройте сопоставление групп на стороне федерации
-
Войдите в сервис Yandex Cloud Organization
. -
Создайте группу пользователей
yc-demo-group
в Cloud Organization и выдайте ей права на просмотр ресурсов в облаке или отдельном каталоге (рольviewer
). -
На панели слева выберите
Федерации. -
Выберите созданную ранее федерацию
demo-federation
и перейдите на вкладку IdP-группы. -
Включите опцию Маппинг групп в IdP.
-
Нажмите кнопку Добавить.
-
В поле Имя группы введите идентификатор нужной группы, который передается в утверждениях со стороны AD FS.
Если используется атрибут
Token-Groups - Unqualified Names
, то укажите в качестве идентификатора короткое имя группы —adfs_group
. -
В поле IAM-группы выберите из списка имя группы в Yandex Cloud Organization —
yc-demo-group
. -
Нажмите кнопку Сохранить.
Проверьте работу аутентификации
-
Откройте браузер в гостевом режиме или режиме инкогнито.
Это действие необходимо выполнять с компьютера, который входит в домен и имеет доступ к AD FS.
-
Перейдите по URL для входа в консоль:
https://console.cloud.yandex.ru/federations/<идентификатор_федерации>
Как получить идентификатор федерации
-
Войдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Федерации. -
Выберите нужную федерацию и на странице с информацией о ней скопируйте значение поля Идентификатор.
Если все настроено правильно, браузер перенаправит вас на страницу аутентификации в AD FS.
-
-
Введите реквизиты пользователя
adfs_demo_user@example.com
, созданного ранее, и нажмите кнопку Sign in.После успешной аутентификации IdP-сервер перенаправит вас по URL
https://console.cloud.yandex.ru/federations/<идентификатор_федерации>
, который вы указали в настройках отношения доверия, а после — на главную страницу консоли управления . -
Убедитесь, что пользователь, от имени которого был выполнен вход, входит в группу
yc-demo-group
и у него есть права на просмотр ресурсов в соответствии с ролью, назначенной для группы.