Поделиться через


Использование ключей, управляемых клиентом, для шифрования данных в службе "Конфигурация приложений"

Служба "Конфигурация приложений Azure" шифрует конфиденциальные данные при хранении. Использование ключей, управляемых клиентом, обеспечивает улучшенную защиту данных, позволяя вам управлять ключами шифрования. При использовании управляемого шифрования с помощью ключей все конфиденциальные данные в службе "Конфигурация приложений" шифруются с помощью предоставленного пользователем ключа Azure Key Vault. Это дает возможность смены ключа шифрования по запросу. Кроме того, это позволяет отозвать доступ службы "Конфигурация приложений Azure" к конфиденциальным сведениям, отменив доступ экземпляра службы "Конфигурация приложений" к ключу.

Обзор

Служба "Конфигурация приложений Azure" шифрует конфиденциальные данные при хранении с помощью 256-разрядного ключа шифрования AES, предоставляемого корпорацией Майкрософт. Каждый экземпляр службы "Конфигурации приложений" имеет собственный ключ шифрования, который управляется службой и используется для шифрования конфиденциальной информации. Конфиденциальная информация включает значения в парах "ключ-значение". Если включена возможность ключа, управляемого клиентом, Конфигурация приложений использует управляемое удостоверение, назначенное экземпляру Конфигурация приложений для проверки подлинности с помощью идентификатора Microsoft Entra. Затем управляемое удостоверение вызывает Azure Key Vault и заключает в оболочку ключ шифрования экземпляра службы "Конфигурация приложений". Затем будет сохранен заключенный в оболочку ключ шифрования, а ключ шифрования без оболочки будет храниться в кэше службы "Конфигурация приложений" в течение одного часа. Каждый час служба "Конфигурация приложений" обновляет версию ключа шифрования без оболочки для экземпляра службы "Конфигурация приложений. Этот процесс обеспечивает доступность в нормальных условиях работы.

Внимание

Если удостоверению, назначенному экземпляру службы "Конфигурация приложений", больше не разрешено открывать оболочку ключа шифрования экземпляра, или если управляемый ключ безвозвратно удален, то конфиденциальные данные, хранящиеся в экземпляре службы "Конфигурация приложений", расшифровать будет невозможно. Использование функции обратимого удаления в Azure Key Vault снижает вероятность того, что ключ шифрования будет случайно удален.

Когда пользователи обеспечивают возможность ключа, управляемого клиентом, в своем экземпляре Конфигурация приложений Azure, они управляют способностью службы получать доступ к конфиденциальной информации. Управляемый ключ служит в качестве корневого ключа шифрования. Пользователь может отозвать доступ экземпляра службы "Конфигурация приложений" к своему управляемому ключу, изменив политику доступа к хранилищу ключей. Когда этот доступ будет отозван, служба "Конфигурация приложений" потеряет возможность расшифровывать данные пользователя в течение одного часа. После этого экземпляр службы "Конфигурация приложений" запретит все попытки доступа. Эту ситуацию можно исправить, предоставив службе доступ к управляемому ключу повторно. В течение одного часа служба "Конфигурация приложений" сможет расшифровать данные пользователя и работать обычным образом.

Примечание.

Все данные службы "Конфигурация приложений Azure" хранятся в изолированной резервной копии до 24 часов. К ним относится ключ шифрования без оболочки. Эти данные не сразу доступны службе или команде службы. В случае аварийного восстановления служба "Конфигурация приложений Azure" будет повторно отзывать себя из данных управляемых ключей.

Требования

Чтобы успешно включить функцию ключей, управляемых клиентом, для службы "Конфигурация приложений Azure", необходимы следующие компоненты:

  • Экземпляр уровня "Стандартный" или "Премиум" Конфигурация приложений Azure.
  • Azure Key Vault с поддержкой обратимого удаления и защиты от очистки.
  • Ключ RSA или RSA-HSM в Key Vault.
    • Срок действия ключа не должен истечь, для него должны быть включены функции заключения в оболочку и извлечения из нее.

После настройки этих ресурсов выполните следующие действия, чтобы служба "Конфигурация приложений Azure" могла использовать ключ Key Vault:

  1. Назначить управляемое удостоверение экземпляру службы "Конфигурация приложений Azure".
  2. Предоставьте удостоверению разрешения, чтобы получить доступ к ключу Key Vault.
    • Для key Vault с включенной поддержкой Azure RBAC назначьте удостоверение Key Vault Crypto Service Encryption User в целевом Key Vault.
    • Для key Vault с помощью авторизации политики доступа предоставьте удостоверение GETWRAPи UNWRAP разрешения в политике доступа целевого key Vault.

Включение шифрования ключей, управляемых клиентом, для хранилища Конфигурация приложений

  1. Создайте хранилище Конфигурация приложений уровня "Стандартный" или "Премиум", если у вас нет.

  2. С помощью Azure CLI создайте Azure Key Vault с включенной защитой очистки. Обратимое удаление включено по умолчанию. vault-name и resource-group-name предоставляются пользователем и должны быть уникальными. В этих примерах используются contoso-vault и contoso-resource-group.

    az keyvault create --name contoso-vault --resource-group contoso-resource-group --enable-purge-protection
    
  3. Создайте ключ Key Vault. Укажите уникальный key-name для этого ключа и замените имя Хранилища ключей (contoso-vault), созданного на шаге 2. Укажите, предпочитаете RSA ли вы или RSA-HSM шифрование (RSA-HSM доступно только на уровне "Премиум").

    az keyvault key create --name key-name --kty {RSA or RSA-HSM} --vault-name contoso-vault
    

    Выходные данные этой команды показывают идентификатор ключа (kid) для созданного ключа. Запишите идентификатор ключа, чтобы использовать его далее в этом упражнении. Идентификатор ключа имеет такой вид: https://{my key vault}.vault.azure.net/keys/{key-name}/{key-version}. У него есть три важных компонента:

    1. Универсальный код ресурса (URI) Key Vault: https://{my key vault}.vault.azure.net
    2. Имя ключа Key Vault: {key-name}
    3. Версия ключа Key Vault: {key-version}
  4. Создайте управляемое удостоверение, назначенное системой, с помощью Azure CLI, подставив имя экземпляра службы "Конфигурация приложений" и группы ресурсов, которые использовались на предыдущих шагах. Управляемое удостоверение будет использоваться для доступа к управляемому ключу. Мы используем contoso-app-config, чтобы показать имя экземпляра службы "Конфигурация приложений":

    az appconfig identity assign --name contoso-app-config --resource-group contoso-resource-group --identities [system]
    

    Выходные данные этой команды включают идентификатор субъекта ("principalId") и идентификатор клиента ("tenandId") удостоверения, назначаемого системой. Эти идентификаторы будут использоваться для предоставления удостоверению доступа к управляемому ключу.

    {
        "principalId": {Principal Id},
        "tenantId": {Tenant Id},
        "type": "SystemAssigned",
        "userAssignedIdentities": null
    }
    
  5. Управляемому удостоверению экземпляра службы "Конфигурация приложений Azure" требуется доступ к ключу для проверки, шифрования и расшифровки. Конкретный набор действий, к которым требуется доступ, включает: GET, WRAP и UNWRAP для ключей. Эти разрешения можно предоставить, назначив роль для azure RBAC с поддержкой Key Vault Crypto Service Encryption User Key Vault. Для key Vault с помощью авторизации политики доступа задайте политику для указанных выше разрешений ключа. Для предоставления доступа требуется идентификатор субъекта управляемого удостоверения экземпляра службы "Конфигурация приложений". Замените значение, показанное ниже, как contoso-principalId и идентификатор субъекта, полученный на предыдущем шаге. Предоставьте доступ к управляемому ключу с помощью командной строки:

    Для key Vault с включенным azure RBAC используйте следующую команду.

    az role assignment create --assignee contoso-principalId --role "Key Vault Crypto Service Encryption User" --scope key-vault-resource-id
    
  6. Теперь, когда экземпляр Конфигурация приложений Azure может получить доступ к управляемому ключу, мы можем включить возможность ключа, управляемого клиентом, в службе с помощью Azure CLI. Повторно вызовите следующие свойства, записанные при создании ключа: key name key vault URI.

    az appconfig update -g contoso-resource-group -n contoso-app-config --encryption-key-name key-name --encryption-key-version key-version --encryption-key-vault key-vault-Uri
    

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

Next Steps

Из этой статьи вы узнали, как настроить экземпляр службы "Конфигурация приложений Azure", чтобы он использовал ключ, управляемый клиентом, для шифрования. Чтобы узнать больше о том, как интегрировать службу приложений с управляемыми удостоверениями Azure, перейдите к следующему шагу.