繁体   English   中英

必须如何存储 Azure BlobStorage 连接数据才能支持所有可用的寻址模式?

[英]How does Azure BlobStorage connection data have to be stored to support all available addressing modes?

I am using libraries Microsoft.Azure.Storage.Blob 11.2.3.0 and Microsoft.Azure.Storage.Common 11.2.3.0 to connect to an Azure BlobStorage from a .NET Core 3.1 application.

我的应用程序的用户应该将连接信息提供给 Azure BlobStorage 到/从应用程序将存储/检索数据的位置。

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


现在我正在尝试使用此方法使用特定于容器的 SAS 进行连接(另请参阅我的其他问题),看来连接字符串可能不是 go 最通用的方式。

相反,现在似乎是一个 blob 容器 URL,加上一个 SAS 令牌帐户密钥(可能还有一个帐户名称,认为似乎已包含在 blob 容器中 ZE6B391A8D2C4D45902A23A8B65D)更加通用。 但是,我担心指向我需要支持的 blob 存储的下一种方式(无论哪种方式)可能需要另一种信息 - 因此我的问题是:

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

(微软甚至可能有标准解决方案或最佳实践推荐吗?)


请注意,我只关心存储什么 任意长的字符串? 各种复杂的 object? 如果有,有哪些领域?

一旦我知道它必须包含什么,我不是在问如何存储该配置。 例如,这与安全加密凭据等无关。

关于解决方法要使用 SAS 令牌访问存储帐户,如果您尝试上传,则需要传递帐户名称以及 SAS 令牌和 Blob 名称,并且您需要授予 Z2DB46C628CFB3BD4A945D3B5A1 的权限。

Microsoft 建议尽可能使用 Azure Active Directory (Azure AD) 来授权针对 blob 和队列数据的请求,而不是使用共享密钥。 Azure AD 提供优于共享密钥的安全性和易用性。 有关使用 Azure AD 授权访问数据的详细信息, 请参阅使用 Azure Active Directory 授权访问 Azure blob 和队列。 .

注意:根据我的测试,您需要传递存储帐户名称和 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);

如您所知,您可以使用Storage 连接字符串与 Storage 连接。

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM