Azure 图像/pdf 存储?

问题描述 投票:0回答:1

我正在尝试构建一个小型 Web 应用程序,其中包括将 pdf 和图像上传到 azure 数据库。然后图像所有者与其他人共享该图像。 我探索了将图像/pdf 插入到启用文件流的 SQL 数据库中,并将图像插入到 azures blob 存储中。我对通过 azure 提供的选项感到有点困惑,因为这是我使用 azure 的第一个项目。看起来 blob 存储选项是最好的方法,但在我走这条路之前,有人知道有更好的结构来构建它吗?

谢谢!! :)

尝试在天蓝色中构建数据库并启用文件流,但这不起作用,因为我在“sp_configure”命令中遇到错误。我查看了 blob 存储,但分配权限似乎更困难。

database azure
1个回答
0
投票

如果您在 Azure SQL 数据库中启用 FILESTREAM 时遇到问题,并且发现在 Azure Blob 存储中分配权限具有挑战性,那么让我们解决这些问题。

在 Azure SQL 数据库中启用 FILESTREAM: 由于传统 SQL Server 和托管 Azure SQL 数据库服务之间存在一些差异,可能不直接支持在 Azure SQL 数据库中启用 FILESTREAM。 Azure SQL 数据库可能不会公开某些服务器级别的配置。

相反,请考虑使用 Azure Blob 存储来存储二进制数据。

使用 Azure Blob 存储:


在 Azure Blob 存储中分配权限涉及访问密钥、共享访问签名 (SAS) 和 Azure Active Directory (Azure AD) 凭据的组合。这是基本指南:

Azure 存储帐户:

如果尚未创建 Azure 存储帐户,请创建一个。这是您的 Blob 存储所在的位置。

Blob 容器:

在存储帐户中,创建一个或多个 Blob 容器。这些容器将保存您的 blob(文件)。

访问键:

从 Azure 门户检索存储帐户的访问密钥。您将使用这些密钥进行身份验证。

共享访问签名 (SAS):

为了进行细粒度的访问控制,为特定容器或 blob 生成共享访问签名。这允许您控制权限(读、写、删除)并设置过期时间。

Azure AD 身份验证(可选):

Azure Blob 存储支持基于 Azure AD 的身份验证,允许您使用 Azure AD 凭据对您的存储帐户进行身份验证。

分配权限:

通过访问密钥、SAS 令牌或 Azure AD 身份验证来管理权限。您可以控制谁有权访问容器级别和 Blob 级别。

SAS 权限示例:


以下是使用 Azure.Storage.Blobs NuGet 包在 C# 中生成 SAS 令牌的示例:

var blobServiceClient = new BlobServiceClient(connectionString);
var containerClient = blobServiceClient.GetBlobContainerClient(containerName);
var blobSasBuilder = new BlobSasBuilder
{
Resource = "c", // 'c' for container, 'b' for blob
StartsOn = DateTimeOffset.UtcNow.AddMinutes(-1),
ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
IPRange = new SasIPRange(IPAddress.None, IPAddress.None)
};

blobSasBuilder.SetPermissions(BlobContainerSasPermissions.Read); // Adjust as needed
var sasToken = blobSasBuilder.ToSasQueryParameters(sharedKeyCredentials).ToString();

其他注意事项:


安全管理访问密钥:

谨慎存储访问密钥。考虑使用 Azure Key Vault 进行安全密钥管理。 Azure AD 身份验证:

如果您使用基于 Azure AD 的身份验证,则可以通过 Azure AD 角色分配权限。 基于角色的访问控制(RBAC):

Azure 存储支持 RBAC,可在更高级别对访问进行细粒度控制。

RBAC 的权限示例:


# Assign a role to a user
az role assignment create --assignee "<user-email>" --role "Storage Blob Data Reader" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"

始终考虑您的安全要求,并选择符合您的应用程序需求的身份验证和授权机制。对于不太复杂的场景,共享访问签名可能就足够了,而更复杂的应用程序可能会受益于基于 Azure AD 的身份验证和 RBAC。

© www.soinside.com 2019 - 2024. All rights reserved.