Внесение в белый список кросс-тенантной подсети в брандмауэре учетной записи хранения в Azure

Я хочу получить доступ к учетной записи хранения, находящейся в клиенте Azure AD (например, с идентификатором клиента T1) из подсети (например, S1), находящейся в другом клиенте Azure AD (например, с идентификатором клиента T2). Используя Azure CLI, я смог добавить эту существующую вентиляцию / подсеть на вкладку Брандмауэры и виртуальные сети учетной записи хранения.

AZ CLI: az storage account network-rule add -g myRG --account myAccount --subnet mySubnetId

Но в Статусе конечной точки этой подсети указано Недостаточно разрешений вместо Включено. Следовательно, невозможно получить доступ к этой учетной записи хранения из добавленной подсети S1.

Ошибка: Unable retrieve endpoint status for one or more subnets. Status 'insufficient permissions' indicates lack of subnet read permissions ('Microsoft.Network/virtualNetworks/subnets/read').

Подробная ошибка:

You do not have authorization to access this resource.

Resource ID: /subscriptions/****/resourceGroups/my-network-rg/providers/Microsoft.Network/virtualNetworks/my-vnet

Status Code: 401

Status Message: The access token is from the wrong issuer 'https://sts.windows.net/T1/'. It must match the tenant 'https://sts.windows.net/T2/' associated with this subscription. Please use the authority (URL) 'https://login.windows.net/T2' to get the token. Note, if the subscription is transferred to another tenant there is no impact to the services, but information about new tenant could take time to propagate (up to an hour). If you just transferred your subscription and see this error message, please try back later.

Какие необходимые разрешения для нескольких клиентов мне не хватает? Как их предоставить? Любая помощь приветствуется. Хотя это может быть тривиально, поскольку я новичок в Azure, я не уверен, что мне здесь не хватает. Спасибо.


comment
Подписка, которую вы используете, соответствует арендатору 2?   -  person Carl Zhao    schedule 05.04.2021
comment
Вы используете токен, выданный клиентом 1, для вызова ресурсов подписки клиента 2.   -  person Carl Zhao    schedule 05.04.2021
comment
Не могли бы вы подробнее рассказать, что вы подразумеваете под подпиской, в которой используется соответствующий клиент 2? Оба ресурса (учетная запись хранения и виртуальная сеть) находятся в разных подписках разных клиентов.   -  person abhi195    schedule 05.04.2021
comment
А что касается использования токена, выданного клиентом 1, для вызова ресурсов подписки клиента 2: явно я не делаю никаких вызовов API, это серверная часть учетной записи хранения по умолчанию. Могу ли я как-то упомянуть службу учетной записи хранения, что эта конкретная vnet / подсеть принадлежит другому клиенту, чтобы он аутентифицировался с помощью токена sts этого клиента.   -  person abhi195    schedule 05.04.2021
comment
Идентификатор подписки, который вы используете, находится в арендаторе 2, верно?   -  person Carl Zhao    schedule 05.04.2021
comment
Да, в арендаторе 2.   -  person abhi195    schedule 05.04.2021
comment
Но ваш токен был выпущен арендатором 1, верно?   -  person Carl Zhao    schedule 05.04.2021
comment
Итак, попробуйте использовать тенанта 2, чтобы получить токен, и посмотрите, каков будет результат. https://login.microsoftonline.com/{tenant 2 id}/oauth2/v2.0/token.   -  person Carl Zhao    schedule 05.04.2021


Ответы (1)


Вы выполнили все шаги правильно, это просто сбивает с толку: вы вошли на портал Azure с пользователем, который получил токен от клиента 1, но виртуальная сеть находится в клиенте 2, и у вас нет токена, который может быть используется для чтения данных подсети в клиенте 2.

Чтобы убедиться, что сетевое правило установлено правильно, вы можете запустить

az storage account network-rule list --account-name myAccount

и вы должны увидеть "state": "Succeeded".

Осталось только убедиться, что учетная запись пользователя, которая обращается к учетной записи хранения из подсети, имеет соответствующая роль для доступа к учетной записи хранения. Так, например, если пользователь должен иметь возможность читать и записывать данные BLOB-объектов, добавьте для пользователя роль Storage Blob Data Contributor.

person Christian Vorhemus    schedule 05.04.2021
comment
Привет спасибо! Из-за вводящего в заблуждение сообщения об ошибке с портала Azure я никогда не пытался получить доступ к учетной записи хранения через подсеть. Пока в лазурном интерфейсе командной строки отображается "state": "Succeeded", и я могу получить доступ к учетной записи хранения. - person abhi195; 07.04.2021