Защита конфиденциальной информации в конфигурации облачной службы Azure - PullRequest
0 голосов
/ 18 сентября 2018

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

Мы читаем эту конфигурацию как из сети, так и из рабочей роли. Следовательно, использование aspnet_regiis не является опцией, так как она недоступна в рабочей роли, поскольку iis не установлен в рабочей роли.

Мы также рассмотрели возможность использования хранилища ключей, но в конечном итоге мы оказались в ситуации защиты ключа хранилища ключей.

К сожалению, облачная служба Azure не поддерживает идентификаторы управляемых служб

1 Ответ

0 голосов
/ 18 сентября 2018

Мы также рассмотрели возможность использования хранилища ключей, но в конечном итоге мы оказались в ситуации защиты ключа хранилища ключей.

Постановка проблемы

Даже если вы можете переместить всю конфиденциальную информацию в хранилище ключей Azure, но для доступа к хранилищу ключей Azure вам нужны clientID и секретный ключ клиента (чтобы установить личность облачной службы и хранилища ключей, чтобы знать, кто к ней обращается).

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

Подход к решению

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

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

Подробности и пример кода

  1. Вы регистрируете приложение Azure AD для представления своей облачной службы.
  2. Предоставьте соответствующий доступ (возможность получить ключи/ секреты и т. д.) к этому приложению Azure AD в политиках доступа Key Vault.
  3. Теперь вместо генерации обычного клиентского секрета следуйте инструкциям в Учетные данные сертификата для аутентификации приложения , чтобы связатьучетные данные сертификата с клиентским приложением в Azure AD.
  4. Убедитесь, что этот сертификат развернут со всеми экземплярами облачной службы, включив его в файл определения службы (CSDEF)
  5. Используйте клиент вашего приложенияID и этот сертификат для получения токена ичтение конфиденциальной информации из хранилища ключей Azure.

Пример кода доступен здесь: Аутентификация в Azure AD в приложениях демона с сертификатами

Только важные фрагменты кода

// Initialize the Certificate Credential to be used by ADAL.
X509Certificate2 cert = ReadCertificateFromStore(certName);

// Then create the certificate credential client assertion.
certCred = new ClientAssertionCertificate(clientId, cert);

// Acquire Auth token for talking to Azure KeyVault..
result = await authContext.AcquireTokenAsync(todoListResourceId, certCred);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...