Веб-приложение ASP.NET Core 2.2 в Ubuntu - как реализовать защиту данных - PullRequest
0 голосов
/ 20 марта 2019

Я начал использовать Ubuntu (18.04) для размещения нескольких простых веб-сайтов .NET Core 2.2.И когда сайт развернут и запущен, я вижу следующее:

warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [59] Нет ни профиля пользователя, ни реестра HKLM.Использование хранилища эфемерного ключа.Защищенные данные будут недоступны при выходе из приложения.warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [35] Не настроен шифровщик XML.Ключ {c45288a6-63f8-4408-abdb-7894fb6d4e45} может быть сохранен для хранения в незашифрованном виде.Хостинговая среда: корневой путь к производственному контенту: / var / www / mysite Сейчас прослушивает: http://localhost:5010 Приложение запущено.Нажмите Ctrl + C, чтобы выключить.warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware [3] Не удалось определить порт https для перенаправления.

Так что является лучшим и безопасным способом реализации поставщика хранилища ключей для Linux (и, возможно, для Windowsтоже универсально)?Есть ли существующий?Есть ли примеры?

PS.Да, я видел эту документацию - Ключевые поставщики хранилищ в ASP.NET Core .

1 Ответ

0 голосов
/ 20 марта 2019

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

Конфигурация выглядит следующим образом:

  string storageUrl = "https://[your account here].blob.core.windows.net";
  string sasToken = "?sv=20XX-XX-XX&ss=x&srt=xxx&sp=xxxx&...";
  string containerName = "data-protection-XXXX-XXXX-container";
  string blobName = "data-protection-XXXX-XXXX-blob";

   // Create the new Storage URI
   Uri storageUri = new Uri($"{storageUrl}{sasToken}");

   //Create the blob client object.
   CloudBlobClient blobClient = new CloudBlobClient(storageUri);

   //Get a reference to a container. Create it if it does not exist.
   CloudBlobContainer container = blobClient.GetContainerReference(containerName);

   // (NOTE: internal library, do not use in your code)
   AsyncHelper.Guarded<bool>(() => { return container.CreateIfNotExistsAsync();  });


   services.AddDataProtection()
        .SetApplicationName("[your application name here]")
        .PersistKeysToAzureBlobStorage(container, blobName)
        .SetDefaultKeyLifetime(new TimeSpan(365 * 10, 0, 0, 0, 0));

Примечание. Просмотрите параметры шифрования при настройке защиты данных для обеспечения дополнительной безопасности.

...