Доступ к файлу, хранящемуся в хранилище файлов Azure, без маркера SAS - PullRequest
0 голосов
/ 17 декабря 2018

Используя API общего доступа к облачным файлам Azure, я могу создать общий файловый ресурс, а также каталоги, папки и файлы.Все они правильно сохранены в общей папке.Из браузера я могу просматривать содержимое с помощью токена URI + SAS (созданного для общего файлового ресурса).Итак, как лучше всего получить доступ к файлу Azure в .NET?Можем ли мы получить доступ к файлу (не к блобу) без токена SAS?Обязательно ли токен SAS?Если да, то когда подходящее время генерировать токен?(при доступе к файлу каждый раз?)

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Использование токена SAS не обязательно, если вы пытаетесь получить доступ к файлообменнику / управлять им в c # /. Net.

Вы можете просто использовать имя учетной записи хранения и ключ учетной записи для аутентификации, а затем управлять файлообменником, например, создать./ удалите fileshare / directory / file, соответственно, следуя этому официальному doc .

Помимо сохранения имени / ключа учетной записи в конфигурационном файле, упомянутом в приведенном выше документе, вы также можете напрямую использовать их в своемкод c #, как показано ниже (консольный проект .net framework):

using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.File;
using System;

namespace ConsoleApp1File
{
    class Program
    {
        static void Main(string[] args)
        {
            string accountname = "xxx";
            string accountkey = "xxxxxxx";
            CloudStorageAccount storageAccount = new CloudStorageAccount(new StorageCredentials(accountname, accountkey), true);

            // Create a CloudFileClient object for credentialed access to Azure Files.
            CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

            // Get a reference to the file share.
            CloudFileShare share = fileClient.GetShareReference("s66");

            //if fileshare does not exist, create it.
            share.CreateIfNotExists();

            if (share.Exists())
            {

                // Get a reference to the root directory for the share.
                CloudFileDirectory rootDir = share.GetRootDirectoryReference();

                // Get a reference to the directory.
                CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");

                //if the directory does not exist, create it.
                sampleDir.CreateIfNotExists();

                if (sampleDir.Exists())
                {
                    // Get a reference to the file.
                    CloudFile file = sampleDir.GetFileReference("Log1.txt");

                    // if the file exists, read the content of the file.
                    if (file.Exists())
                    {
                        // Write the contents of the file to the console window.
                        Console.WriteLine(file.DownloadTextAsync().Result);
                    }
                    //if the file does not exist, create it with size == 500bytes
                    else
                    {
                        file.Create(500);
                    }
                }
            }

            Console.WriteLine("--file share test--");
            Console.ReadLine();

        }
    }
}
0 голосов
/ 17 декабря 2018

Существует 3 способа доступа к хранилищу:

1) Использование главного / корневого ключа.Я бы не рекомендовал использовать этот подход, поскольку главный ключ имеет полный доступ к учетной записи хранения.

2) Использование ключа SAS.Это хороший подход, поскольку вы можете ограничить объем доступа, предоставляемый ключом.См. Раздел лучших практик на этом сайте .Вам нужно будет сгенерировать свой ключ перед доступом к хранилищу и надежно сохранить его в конфигурации.Обратите внимание, что капли являются вашими файлами.Блобы организованы в контейнеры для хранения больших двоичных объектов, которые затем находятся внутри ваших учетных записей хранения.

3) Если вы выберете новое хранилище Azure Data Lake Gen 2 (ADLS Gen 2), то вы можете использовать Azure Active Directoryаутентификация в сочетании с учетными записями служб или идентификаторами управляемых служб (MSI).Обратите внимание, что ADLS Gen 2 все еще в предварительном просмотре.

...