Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функции Azure позволяют использовать секретные ключи, чтобы упростить доступ к конечным точкам функций. В этой статье описаны различные типы ключей доступа, поддерживаемых функциями, и способы работы с ключами доступа.
Хотя ключи доступа обеспечивают некоторые способы устранения нежелательного доступа, следует рассмотреть другие варианты защиты конечных точек HTTP в рабочей среде. Например, не рекомендуется распространять общие секреты в общедоступном приложении. Если функция вызывается из общедоступного клиента, следует рассмотреть возможность реализации этих или других механизмов безопасности:
- Включить проверку подлинности и авторизацию в Службе приложений
- Использование Azure Управление API (APIM) для проверки подлинности запросов
- Развертывание приложения-функции в виртуальной сети
- Развертывание функционального приложения в изоляции
Ключи доступа предоставляют основу для авторизации HTTP в триггерных функциях HTTP. Для получения дополнительной информации см. Уровень авторизации.
Общие сведения о ключах
Область действия ключа доступа и действий, которые она поддерживает, зависят от типа ключа доступа.
Тип ключа | Имя ключа | Уровень проверки подлинности HTTP | Описание |
---|---|---|---|
Функция |
default или определяемые пользователем |
function |
Разрешает доступ только к определенной конечной точке функции. |
Хост |
default или определяемые пользователем |
function |
Разрешает доступ ко всем конечным точкам в функциях функционального приложения. |
Хозяин | _master |
admin |
Специальный ключ узла, который также предоставляет административный доступ к REST API среды выполнения в приложении-функции. Так как главный ключ предоставляет повышенные разрешения в приложении-функции, этот ключ не следует предоставлять сторонним пользователям или распространять его в собственных клиентских приложениях. |
Система | Зависит от расширения | n/a | Некоторые специфические расширения могут требовать системно управляемый ключ для доступа к вебхукам. Системные ключи предназначены для конечных точек функций, специфичных для расширений, которые вызываются внутренними компонентами. Например, триггер Event Grid требует, чтобы подписка использовала системный ключ при вызове конечной точки триггера. Устойчивые функции также используют системные ключи для вызова API расширения устойчивых задач. Системные ключи могут создаваться только определенными расширениями, и вы не можете явно задать их значения. Как и другие ключи, можно создать новое значение для ключа на портале или с помощью API ключей. |
Каждый ключ называется для ссылки и имеется ключ по умолчанию (именованный default
) на уровне функции и узла. Ключи функций имеют приоритет над ключами узла. При определении двух ключей с одинаковым именем всегда используется ключ функции.
В следующей таблице сравниваются использования различных типов ключей доступа.
Действие | Область действия | Тип ключа |
---|---|---|
Выполнение функции | Конкретная функция | Функция |
Выполнение функции | Любая функция | Функция или хост |
Вызов конечной admin точки |
Функциональное приложение | Только мастер |
Вызов API для расширения Durable Task | Функциональное приложение* | Система |
Вызов веб-перехватчика для конкретного расширения (для внутреннего использования) | Функциональное приложение* | система |
*Область, определяемая расширением.
Основные требования
В Функциях ключи доступа случайным образом создаются как 32-байтовые массивы, которые кодируются в строки, безопасные для URL в формате base-64. Хотя вы можете создать собственные ключи доступа и использовать их с функциями, мы настоятельно рекомендуем вместо этого разрешить функциям создавать все ключи доступа для вас.
Ключи доступа, созданные функциями, включают специальные значения сигнатуры и контрольных сумм, указывающие тип ключа доступа и созданные функциями Azure. Наличие этих дополнительных компонентов в самом ключе упрощает определение источника этих секретов, расположенных во время проверки безопасности и других автоматизированных процессов.
Чтобы разрешить функциям создавать ключи, не предоставляйте ключ value
ни одному из API, которые можно использовать для создания ключей.
Управление хранилищем ключей
Ключи хранятся как часть вашего функционального приложения в Azure и шифруются при хранении. По умолчанию ключи хранятся в контейнере BLOB в учётной записи, указанной параметром AzureWebJobsStorage
. Этот параметр можно использовать AzureWebJobsSecretStorageType
для переопределения этого поведения по умолчанию и вместо этого хранить ключи в одном из следующих альтернативных расположений:
Местоположение | Ценность | Описание |
---|---|---|
Вторая учетная запись хранения | blob |
Хранит ключи в хранилище Blob в учетной записи хранения, которая отличается от используемой средой выполнения функций. Используемая учетная запись и контейнер определяются URL-адресом с подписью общего доступа (SAS), заданным в параметре AzureWebJobsSecretStorageSas . Необходимо сохранить AzureWebJobsSecretStorageSas параметр при изменении URL-адреса SAS. |
Azure Key Vault | keyvault |
Набор хранилища AzureWebJobsSecretStorageKeyVaultUri ключей используется для хранения ключей. |
Файловая система | files |
Ключи сохраняются в локальной файловой системе, которая используется по умолчанию в Функциях версии 1.x. Использование файловой системы для хранения данных не рекомендуется. |
Секреты Kubernetes | kubernetes |
Набор ресурсов в AzureWebJobsKubernetesSecretName используется для хранения ключей. Поддерживается только при развертывании приложения-функции в Kubernetes. Azure Functions Core Tools автоматически создают значения при их использовании для развертывания приложения в кластере Kubernetes. Неизменяемые секреты не поддерживаются |
При использовании Key Vault для хранилища ключей параметры приложения зависят от типа управляемого удостоверения, назначаемого системой или назначаемого пользователем.
Имя настройки | Назначаемое системой | Назначено пользователем | Регистрация приложений |
---|---|---|---|
AzureWebJobsSecretStorageKeyVaultUri | ✓ | ✓ | ✓ |
AzureWebJobsSecretStorageKeyVaultClientId | X | ✓ | ✓ |
AzureWebJobsSecretStorageKeyVaultClientSecret | X | X | ✓ |
AzureWebJobsSecretStorageKeyVaultTenantId | X | X | ✓ |
Это важно
Секреты не ограниваются отдельными приложениями функций через AzureWebJobsSecretStorageKeyVaultUri
настройку. Если несколько приложений-функций настроены на использование одного хранилища ключей, они используют одни и те же секреты, что потенциально приводит к конфликтам ключей или перезаписи. Чтобы избежать непреднамеренного поведения, рекомендуется использовать отдельный экземпляр Key Vault для каждого приложения-функции.
Использование ключей доступа
Функции, сигнализированные по HTTP, обычно можно вызывать с помощью URL-адреса в формате: https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>
. Если для заданной функции задан уровень авторизации, отличный от anonymous
значения, необходимо также указать ключ доступа в запросе. Ключ доступа можно указать в URL-адресе с помощью ?code=
строки запроса или заголовка запроса (x-functions-key
). Дополнительные сведения см. в разделе "Авторизация ключа доступа".
Чтобы получить доступ к REST API среды выполнения (в разделе /admin/
), необходимо указать главный ключ (_master
) в заголовке x-functions-key
запроса. Вы можете удалить административные конечные точки используя functionsRuntimeAdminIsolationEnabled
свойство сайта.
Получение ключей доступа к функциям
Вы можете получить ключи функций и узлов программным способом с помощью этих API Azure Resource Manager:
- Перечисление ключей функций
- Список ключей узла
- Слот клавиш функций для списка
- Список слотов ключей хоста.
Сведения о вызове API Azure Resource Manager см. в справочнике по REST API Azure.
Эти методы можно использовать для получения ключей доступа без использования REST API.
Войдите на портал Azure, а затем найдите и выберите приложение-функцию.
Выберите приложение-функцию, с которыми вы хотите работать.
В области слева разверните узел "Функции" и выберите ключи приложения.
Откроется страница "Ключи приложения ". На этой странице отображаются ключи узла, которые можно использовать для доступа к любой функции в приложении. Также отображается системный ключ, который предоставляет любому администратору доступ ко всем API-интерфейсам приложений-функций.
Вы также можете применять принцип наименьших привилегий, используя ключ для конкретной функции. Ключи, относящиеся к функции, можно получить на вкладке "Ключи функции " определенной функции, активироваемой HTTP.
Продление или создание ключей доступа
При продлении или создании значений ключей доступа необходимо вручную распространить обновленные значения ключей для всех клиентов, которые вызывают функцию.
Вы можете обновлять функции и ключи узлов программным способом или создавать новые с помощью этих API Azure Resource Manager:
- Создание или обновление секрета функции
- Создание или обновление секретного слота функции
- Создание или обновление секрета узла
- Создание или обновление слота секрета узла
Сведения о вызове API Azure Resource Manager см. в справочнике по REST API Azure.
Эти методы можно использовать для получения ключей доступа без необходимости вручную создавать вызовы к REST API.
Войдите на портал Azure, а затем найдите и выберите приложение-функцию.
Выберите приложение-функцию, с которыми вы хотите работать.
В области слева разверните узел "Функции" и выберите ключи приложения.
Откроется страница "Ключи приложения ". На этой странице отображаются ключи узла, которые можно использовать для доступа к любой функции в приложении. Также отображается системный ключ, который предоставляет любому администратору доступ ко всем API-интерфейсам приложений-функций.
Нажмите кнопку "Обновить значение ключа " рядом с ключом, который требуется продлить, а затем нажмите кнопку "Продлить" и "Сохранить".
Вы также можете обновить ключ функции на вкладке "Ключи функции " определенной функции, активироваемой HTTP.
Удаление ключей доступа
Вы можете программно удалять ключи функций и узлов с помощью этих API Azure Resource Manager:
- Удаление секрета функции
- Удаление слота секрета функции
- Удалить секрет хоста
- Удалить секретный слот хоста
Сведения о вызове API Azure Resource Manager см. в справочнике по REST API Azure.