Роли, необходимые для использования PersistKeysToAzureBlobStorage с AzureServiceTokenProvider - PullRequest
0 голосов
/ 17 февраля 2020

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

Но оно будет работать, только если я использую Azure Ключ доступа к хранилищу , а не MSI или Azure пользователь в моей Visual Studio (az login), которого я ожидал. Я дал пользователю масштаб и виртуальную машину. Установите роли Владелец, Участник, Хранитель больших двоичных объектов. Безуспешно.

Обязательно ли использовать SAS или ключ доступа для автоматического создания большого двоичного объекта?

Ошибка при использовании поставщика токенов (MSI, az login)
Microsoft.AspNetCore.DataProtection.Internal.DataProtectionHostedService:
Информация: не удалось загрузить кольцо ключей во время запуск приложения.

Запрос информации
StatusMessage: указанный ресурс не существует.
ErrorCode: ResourceNotFound
ErrorMessage: указанный ресурс не существует.

public void ConfigureServices( IServiceCollection services )
{
   var accessKey = "ddBU/...==";
   var blobUri   = new Uri( $"https://mystorageaccount.blob.core.windows.net/mycontainer/keys.xml" );

   var tp    = new Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider();
   var token = tp.GetAccessTokenAsync( $"https://mystorageaccount.blob.core.windows.net/" ).Result;

   // OK - creates and updates blob when neccessary
   var sc = new Microsoft.Azure.Storage.Auth.StorageCredentials( "mystorageaccount", accessKey );

   // NOK - can only read the blob
   //sc = new Microsoft.Azure.Storage.Auth.StorageCredentials( token );

   var cbb = new Microsoft.Azure.Storage.Blob.CloudBlockBlob( blobUri, sc );

   services.AddDataProtection()           
           .PersistKeysToAzureBlobStorage( cbb )
           .SetApplicationName( "MyFrontends" );

}

1 Ответ

0 голосов
/ 25 февраля 2020

Роль " Хранилище данных хранилища данных " позволяет PersistKeysToAzureBlobStorage () создавать и поддерживать ключ в Azure Учетной записи хранения.

Я должен во время тестирования допустили ошибку, возможно, я не подождал достаточно долго после применения роли или, возможно, я не создал целевой контейнер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...