Шифрование неактивных данных приложения с помощью ключей, управляемых клиентом

Для шифрования неактивных данных приложения-функции требуется учетная запись службы хранилища Azure и Azure Key Vault. Эти службы используются при запуске приложения из пакета развертывания.

  • Служба хранилища Azure обеспечивает шифрование неактивных данных. Вы можете использовать ключи, предоставляемые системой, или собственные ключи, управляемые клиентом. Именно здесь хранятся данные приложения, когда они не выполняются в приложении-функции Azure.
  • Запуск из пакета развертывания — это функция развертывания Службы приложений. Эта функция позволяет развертывать содержимое сайта из учетной записи службы хранилища Azure, используя подписанный URL-адрес (SAS).
  • Ссылки на Key Vault — это функция безопасности Службы приложений. Она позволяет импортировать секреты в качестве параметров приложения во время его выполнения. Используйте эту возможность, чтобы зашифровать подписанный URL-адрес учетной записи службы хранилища Azure.

Настройка шифрования неактивных данных

Создание учетной записи хранения Azure

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

Затем с помощью Обозревателя службы хранилища создайте SAS.

Примечание

Сохраните этот подписанный URL-адрес. Он будет использоваться позже для обеспечения безопасного доступа к пакету развертывания во время выполнения.

Настройка запуска из пакета из учетной записи хранения

Когда вы отправите файл в хранилище BLOB-объектов и получите для него подписанный URL-адрес, установите для параметра приложения WEBSITE_RUN_FROM_PACKAGE значение этого URL-адреса. В приведенном ниже примере показано, как сделать это с помощью Azure CLI.

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_RUN_FROM_PACKAGE="<your-SAS-URL>"

Добавление этого параметра приложения приводит к перезапуску приложения-функции. После перезапуска приложения перейдите к нему и убедитесь, что оно запустилось правильно с помощью пакета развертывания. Если приложение запустилось неправильно, обратитесь к руководству по устранению неполадок с запуском из пакета.

Шифрование параметров приложения с помощью ссылок на Key Vault

Теперь вы можете заменить значение параметра приложения WEBSITE_RUN_FROM_PACKAGE со ссылкой на Key Vault на URL-адрес в кодировке SAS. При этом подписанный URL-адрес будет зашифрован в Key Vault, что обеспечит дополнительный уровень безопасности.

  1. Создайте экземпляр Key Vault, используя следующую команду az keyvault create.

    az keyvault create --name "Contoso-Vault" --resource-group <group-name> --location eastus    
    
  2. Следуйте приведенным ниже инструкциям, чтобы предоставить приложению доступ к хранилищу ключей.

  3. С помощью команды az keyvault secret set добавьте внешний URL-адрес в качестве секрета в хранилище ключей:

    az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<SAS-URL>"    
    
  4. Используйте следующую команду az webapp config appsettings set, чтобы создать параметр приложения WEBSITE_RUN_FROM_PACKAGE со значением в качестве ссылки Key Vault на внешний URL-адрес:

    az webapp config appsettings set --settings WEBSITE_RUN_FROM_PACKAGE="@Microsoft.KeyVault(SecretUri=https://Contoso-Vault.vault.azure.net/secrets/external-url/<secret-version>"    
    

    <secret-version> будет находиться в выходных данных предыдущей команды az keyvault secret set.

Обновление этого параметра приложения приведет к перезапуску приложения-функции. После перезапуска приложения перейдите к нему и убедитесь, что оно запустилось правильно, используя ссылку на Key Vault.

Смена маркера доступа

Рекомендуется периодически менять ключ SAS учетной записи хранения. Чтобы приложение-функция не потеряло доступ случайно, необходимо также обновить URL-адрес SAS в Key Vault.

  1. Чтобы сменить ключ SAS, перейдите к учетной записи хранения на портале Azure. В разделе Параметры Ключи>доступа щелкните значок, чтобы сменить ключ SAS.

  2. Скопируйте новый подписанный URL-адрес и используйте следующую команду, чтобы задать обновленный подписанный URL-адрес в хранилище ключей:

    az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<SAS-URL>"    
    
  3. Обновите ссылку на хранилище ключей в параметре приложения, указав новую версию секрета:

    az webapp config appsettings set --settings WEBSITE_RUN_FROM_PACKAGE="@Microsoft.KeyVault(SecretUri=https://Contoso-Vault.vault.azure.net/secrets/external-url/<secret-version>"    
    

    <secret-version> будет находиться в выходных данных предыдущей команды az keyvault secret set.

Отмена доступа к данным приложения-функции

Отменить доступ приложения-функции к учетной записи хранения можно двумя способами.

Смена ключа SAS для учетной записи службы хранилища Azure

Если ключ SAS для учетной записи хранения меняется, приложение-функция больше не будет иметь доступа к учетной записи хранения, но продолжит работу с последней скачанной версией файла пакета. Перезапустите приложение-функцию, чтобы удалить последнюю скачанную версию.

Удаление доступа приложения-функции к Key Vault

Вы можете отменить доступ приложения-функции к данным сайта, отключив доступ приложения-функции к Key Vault. Для этого удалите политику доступа для удостоверения приложения-функции. Это то же удостоверение, которое вы создали ранее в процессе настройки ссылок на хранилище ключей.

Сводка

Файлы приложения теперь хранятся в зашифрованном виде в учетной записи хранения. Когда приложение-функция запускается, оно извлекает подписанный URL-адрес из хранилища ключей. Наконец, приложение-функция загружает файлы приложения из учетной записи хранения.

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

Вопросы и ответы

Взимается ли дополнительная плата за запуск приложения-функции из пакета развертывания?

Взимается только плата за учетную запись службы хранилища Azure и любая применимая плата за исходящий трафик.

Как запуск из пакета развертывания влияет на приложение-функцию?

  • При запуске приложения из пакета развертывания каталог wwwroot/ становится доступным только для чтения. При попытке записи в этот каталог ваше приложение получит ошибку.
  • Форматы TAR и GZIP не поддерживаются.
  • Эта функция несовместима с локальным кэшем.

Дальнейшие действия