Защита функции Azure - PullRequest
       10

Защита функции Azure

0 голосов
/ 22 ноября 2018

Я пытаюсь применить принцип наименьших привилегий к функции Azure.Я хочу, чтобы FunctionApp имел доступ только для чтения, например, к очереди хранения.До сих пор я пробовал:

  • Включить управляемую идентификацию в FunctionApp
  • Создать роль, которая разрешает доступ только для чтения к очередям (определение роли приведено ниже)
  • Перейдите к разрешениям IAM очереди хранения и добавьте новое назначение роли, используя новую роль и приложение-функцию.

Но это не сработало.Если я пытаюсь записать в эту очередь из своей функции (используя привязку вывода), элемент записывается, когда я ожидал сбой.Я попытался использовать встроенную роль «Средство чтения данных очереди хранения (предварительный просмотр)» с тем же результатом.

Как правильно добавить / удалить разрешения для приложения-функции?

Определение роли:

{
  "Name": "Reader WorkingSA TestQueue Queue",
  "IsCustom": true,
  "Description": "Read TestQueue queue on WorkingSA storage accoung.",
  "actions": ["Microsoft.Storage/storageAccounts/queueServices/queues/read"],
  "dataActions": [
    "Microsoft.Storage/storageAccounts/queueServices/queues/messages/read"
  ],
  "notActions": [],
  "notDataActions": [],
  "AssignableScopes": [
    "/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourceGroups/TestAuth-dev-rg"
  ]
}

1 Ответ

0 голосов
/ 23 ноября 2018

@ anirudhgarg указал верный путь.

Управляемый идентификатор и заданный вами RBAC имеют значение только при использовании токена доступа управляемого идентификатора для доступа к службе хранилища в приложении Function.Это означает, что эти настройки не влияют на привязку функции, поскольку она внутренне подключается к хранилищу, используя строку подключения .Если вы не установили свойство соединения для выходной привязки, оно по умолчанию использует настройки приложения AzureWebJobsStorage .

Точнее говоря, строка подключения не имеет ничего общего с процессом аутентификации Azure Active Directory, поэтому на нее не может повлиять конфигурация AAD.Следовательно, если функция использует строку подключения учетной записи хранения (например, использует привязку, связанную с хранилищем), мы не можем ограничить ее доступ другими настройками.Аналогично, отсутствие использования строки подключения означает отсутствие доступа.

Обновление для использования токена SAS

Если указанная очередь используется в привязке триггера / ввода очереди, мы можем ограничить функцию чтением и обработкой (получить сообщение, затем удалить), вот вам маркер SAS .

Условие:

  1. Очередь находится в учетной записи хранения, отличной от той, которая указана в параметре приложения AzureWebJobsStorage.AzureWebJobsStorage требуется строка подключения, предоставляющая полный доступ с ключом учетной записи.

  2. Функциональным приложением является 2.0.Проверьте это в настройках приложения Function> Runtime version: 2.xx (~ 2).В 1.x требуется больше разрешений, таких как AzureWebJobsStorage.

Затем получите токен SAS на портале, как показано ниже, и установите его в настройках приложения.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...