必须如何存储Azure BlobStorage连接数据才能支持所有可用的寻址模式? [英] How does Azure BlobStorage connection data have to be stored to support all available addressing modes?

查看:0
本文介绍了必须如何存储Azure BlobStorage连接数据才能支持所有可用的寻址模式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用库Microsoft.Azure.Storage.Blob11.2.3.0和Microsoft.Azure.Storage.Common11.2.3.0从.NET Core 3.1应用程序连接到Azure BlobStorage。

我的应用程序的用户应该向/从Azure BlobStorage提供连接信息,该应用程序将在该位置存放/检索数据。

最初,我假设允许用户指定连接字符串和自定义BLOB容器名称(作为默认名称的可选覆盖)就足够了。我可以简单地将该连接字符串填充到CloudStorageAccount.Parse方法中,然后返回一个存储帐户实例来调用CreateBlobCloudClient


现在,我尝试使用此方法通过容器特定的SA进行连接(另请参见my other question about that),连接字符串可能不是最通用的方法。

相反,它现在看起来像是一个BLOB容器URL,加上一个SAS令牌一个帐户密钥(可能还有一个帐户名,尽管它似乎已经包含在BLOB容器URL中)更加通用。然而,我担心指向我需要支持的BLOB存储的下一种方式可能需要另一种信息-因此我的问题是:

我需要在应用程序的配置文件中支持哪组字段才能确保我的用户可以以任何他们想要的方式指向他们的BlobStorage,只要BlobStorage?

(Microsoft是否有标准解决方案或最佳实践建议?)


请注意,我只关心要存储的内容。一根任意长的线?一种复杂的物体?如果是,使用哪些字段?

我不是在问如何在我知道配置必须包含的内容后如何存储该配置。例如,这与安全加密凭据等无关。

推荐答案

若要使用sas令牌访问存储帐户,您需要传递帐户名以及sas令牌和Blob名称,如果您尝试上载并且需要为您的sas令牌提供权限。

如果可能,Microsoft建议使用Azure Active Directory(Azure AD)来针对Blob和队列数据授权请求,而不是使用共享密钥。与共享密钥相比,Azure AD提供了卓越的安全性和易用性。有关授权使用Azure AD访问数据的详细信息,请see Authorize access to Azure blobs and queues using Azure Active Directory.

注意:根据我的测试,您需要传递存储帐户名和SAS令牌以及容器名称和Blob名称

示例:我尝试使用容器级SAS令牌将文件上传到容器。能够成功上载文件。

const string sasToken = "SAS Token";
            StorageCredentials storageCredentials = new StorageCredentials(sasToken);

            const string accountName = "teststorage65";//Account Name
            const string blobContainerName = "test";
            const string blobName = "test.txt";
            const string myFileLocation = @"Local Path ";

            var storageAccount = new CloudStorageAccount(storageCredentials, accountName, null, true);
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer blobContainer = blobClient.GetContainerReference(blobContainerName);
            //blobContainer.CreateIfNotExists();
            CloudBlockBlob cloudBlob = blobContainer.GetBlockBlobReference(blobName);
            cloudBlob.UploadFromFile(myFileLocation);

正如您已经知道的,您可以使用存储连接字符串连接到存储。

CloudStorageAccount storageAccount = CloudStorageAccount.Parse("Connection string");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("test");

您的应用程序需要在运行时访问连接字符串以授权对Azure存储的请求。

您有多种存储连接字符串或SAS令牌的选项

1)您可以将连接字符串存储在环境变量中。

2)在桌面或设备上运行的应用程序可以将连接字符串存储在app.configweb.config文件中。将连接字符串添加到这些文件中的AppSetting部分。

3)在Azure云服务中运行的应用程序可以将连接字符串存储在Azure服务配置架构(.cscfg)文件中。将连接字符串添加到服务配置文件的ConfigurationSetting部分。

引用:https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string

这篇关于必须如何存储Azure BlobStorage连接数据才能支持所有可用的寻址模式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆