Как создать многопользовательского субъекта-службы в Azure с помощью Terraform

У меня есть субъект-служба в одном клиенте, которому требуется доступ к реестру контейнеров Azure в другом клиенте. Однако я не уверен, как создать для него azurerm_role_assignment. Есть ли способ настроить принципал-службу как мультитенантный, чтобы ему можно было назначать роли в обоих клиентах соответственно?


person Akash Masand    schedule 13.01.2021    source источник
comment
Вы можете обновить принципала службы до мультитенантного: docs.microsoft.com/en-us/azure/active-directory/develop/   -  person Carl Zhao    schedule 13.01.2021
comment
Можно ли это сделать через Terraform?   -  person Akash Masand    schedule 13.01.2021
comment
Извините, я плохо знаю Terraform, этот документ вам полезен? azurecitadel.com/automation/terraform/lab5   -  person Carl Zhao    schedule 13.01.2021
comment
Привет, у тебя была возможность проверить мой ответ? Это полезно?   -  person Allen Wu    schedule 14.01.2021


Ответы (1)


Сначала установите available_to_other_tenants = true для приложения Azure ad и принципала службы в terraform.

Теперь, когда субъект-служба существует в вашем клиенте, самый быстрый способ сделать субъект-службу, созданный в другом клиенте, - это использовать согласие администратора.

https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id={client-id}

Замените {tenant-id} реальным идентификатором другого арендатора. {client-id} - это идентификатор приложения Azure Ad или субъекта-службы.

Получите доступ к URL-адресу в браузере. Используйте учетную запись администратора другого клиента, чтобы войти в систему и принять разрешения. Затем субъект-служба будет создан в другом арендаторе.

Теперь вы можете создать azurerm_role_assignemnt для нового субъекта-службы (это другой субъект службы, отличный от исходного, и именно так работает приложение с несколькими арендаторами), созданный в другом арендаторе.

person Allen Wu    schedule 13.01.2021
comment
Эй, единственная проблема с этим заключается в том, что принципал-сервис будет иметь согласие администратора для всего клиента, что определенно невозможно. Если бы это можно было сделать без согласия администратора, это было бы идеально. - person Akash Masand; 14.01.2021
comment
@AkashMasand Обратите внимание, что если вы не назначили никаких разрешений исходному субъекту службы, новый субъект службы в другом клиенте также не будет иметь разрешений. Вы МОЖЕТЕ контролировать разрешения. И самое главное, так работает многопользовательское приложение. Дополнительные сведения см. В docs.microsoft.com/en-us/azure/active-directory/develop/. - person Allen Wu; 14.01.2021
comment
@AkashMasand Нет. Если в этом клиенте используется новый принципал службы, согласие администратора неизбежно. Как я уже упоминал, так работает многопользовательское приложение. Если вы не примете его, вы не сможете использовать многопользовательское приложение. - person Allen Wu; 14.01.2021
comment
@AkashMasand Когда мы говорим о мультитенантном приложении, это не означает, что принципал-сервис в вашем клиенте имеет доступ к данным в другом клиенте. Фактически, это добавление нового участника-службы (с тем же идентификатором приложения) в другой клиент и использование его для доступа к данным в этом клиенте. Независимо от того, какой метод вы используете для добавления нового субъекта-службы, когда вы используете его для аутентификации, потребуется процесс согласия. Использование конечной точки согласия администратора - это самый быстрый способ заставить его работать. - person Allen Wu; 14.01.2021
comment
@AkashMasand Если у вас есть другие проблемы, дайте мне знать. - person Allen Wu; 14.01.2021
comment
Привет. Я попробовал это сегодня, и он жалуется на недопустимый URI перенаправления. Кажется, нужен URI перенаправления - person Akash Masand; 08.02.2021
comment
@AkashMasand Как правило, нам не нужен URI перенаправления. Но если он требуется, просто добавьте его так: https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id={client-id}&redirect_uri={url}. Убедитесь, что он такой же, как тот, который вы установили при регистрации приложения Azure AD. - person Allen Wu; 08.02.2021
comment
Что мне добавить в значение redirect_uri? У меня нет приложения для перенаправления. - person Akash Masand; 08.02.2021
comment
@AkashMasand Это не имеет значения. Просто установите его как https://localhost/ для тестирования. - person Allen Wu; 08.02.2021