Доступ к файлам Azure из кода через назначение роли управляемого удостоверения?

#azure-active-directory #azure-blob-storage #azure-managed-identity #azure-files #azure-storage-files

#azure-active-directory #azure-blob-хранилище #azure-managed-identity #azure-files #azure-storage-files

Вопрос:

Можно ли использовать управляемое удостоверение для доступа к контейнеру Azure Files из .Net Core?

Фрагмент кода, похожий на этот. Я понимаю, что CloudFileClient не принимает TokenCredential напрямую, это просто для того, чтобы показать намерение. Аналогично тому, как я бы создал BlobClient.

 using Azure.Identity;
static void Main(...)
{
    var client = new CloudFileClient(new Uri("..."), new DefaultAzureCredential());
}
 

Могу ли я использовать управляемую идентификацию для доступа к файлам Azure или мне придется использовать устаревший секретный подход?

Спасибо

-Джон

Ответ №1:

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

 TokenCredential token = new TokenCredential("access-token");
StorageCredentials credentials = new StorageCredentials(token);

CloudFileClient client = new CloudFileClient(new Uri("..."), credentials);
 

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

введите описание изображения здесь

Комментарии:

1. Привет, Памела, спасибо за подтверждение. Я использовал DefaultAzureCredential для доступа к очередям и большим двоичным объектам, поэтому я это хорошо понимаю. Приведенный выше пример, похоже, касается обеих сторон, но не соединяет их. Как мне перейти от DefaultAzureCredential к TokenCredential? Это просто вопрос вызова getToken() для экземпляра DefaultAzureCredential и передачи этой строки в TokenCredential() ?

2. Приведенные выше примеры представляют собой два метода, вы можете выбрать один из них. Значение по умолчанию зависит от ваших настроек, вам не нужно получать токен доступа и создавать TokenCredential.