你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

创建托管应用程序以存储 Blob 摘要

先决条件

概述

由机密账本支持的 Blob 存储摘要托管应用程序可用于保证 blob 容器中的 blob 受信任且不会被篡改。 应用程序连接到存储帐户后,除了计算摘要并将其存储到 Azure 机密账本之外,还会实时跟踪要添加到存储帐户中的每个容器的所有 blob。 可以随时执行审核以检查 blob 的有效性,并确保 blob 容器不会被篡改。

部署托管应用程序

可在 Microsoft Azure 市场中找到托管应用程序:由机密账本支持的 Blob 存储摘要(预览版)

要创建的资源

填写必填字段并部署应用程序后,将在受管理资源组下创建以下资源:

将存储帐户连接到托管应用程序

创建托管应用程序后,即可将托管应用程序连接到存储帐户,以便开始处理 Blob 容器摘要并将其记录到 Azure 机密账本。

为存储帐户创建主题和事件订阅

托管应用程序使用 Azure 服务总线队列来跟踪和记录所有“创建 Blob”事件。 将使用托管应用程序在托管资源组中创建的队列,并将其添加为要为其创建 Blob 的任何存储帐户的事件订阅服务器。

Screenshot of the Azure portal in a web browser, showing how to set up a storage event subscription.

在 Microsoft Azure 门户中,可以导航到要开始为其创建 blob 摘要的存储帐户,并转到“Events”边栏选项卡。 可以在那里创建事件订阅并将其连接到 Azure 服务总线队列终结点。

Screenshot of the Azure portal in a web browser, showing how to set up a storage event subscription session ID.

该队列使用会话来维护跨多个存储帐户的排序,因此还需要导航到“Delivery Properties”选项卡,并为此事件订阅输入唯一的会话 ID。

将所需角色添加到存储帐户

托管应用程序需要 Storage Blob Data Owner 角色才能读取并为每个 blob 创建哈希,并且需要添加此角色才能正确计算摘要。

Screenshot of the Azure portal in a web browser, showing how to set up a managed identity for the managed app.

注意

多个存储帐户可以连接到单个托管应用程序实例。 目前,建议最多使用 10 个包含高使用率 blob 容器的存储帐户

添加 blob 和摘要创建

将存储帐户正确连接到托管应用程序后,可以开始将 blob 添加到存储帐户中的容器。 系统将实时跟踪 blob,计算摘要并将其存储在 Azure 机密账本中。

事务表和块表

所有 blob 创建事件都在托管应用程序内存储的内部表中进行跟踪。

Screenshot of the Azure portal in a web browser, showing the transaction table where blob hashes are stored.

事务表用于保存有关每个 blob 的信息,以及使用 blob 元数据和内容的组合生成的唯一哈希。

Screenshot of the Azure portal in a web browser, showing the block table where digest information is stored.

块表用于保存与为 blob 容器创建的每个摘要相关的信息,摘要的关联事务 ID 存储在 Azure 机密账本中。

注意

每个 Blob 创建事件都将导致创建摘要。 达到特定块大小后,将创建摘要。 目前,将为每个 4 个 Blob 创建事件创建摘要。

在 Azure 机密账本上查看摘要

通过导航到“Ledger Explorer”边栏选项卡,可以查看直接存储在 Azure 机密账本中的摘要。

Screenshot of the Azure portal in a web browser, showing the Azure Confidential Ledger explorer with digest transactions.

执行审核

如果想要检查添加到容器的 blob 的有效性,以确保它们不会被篡改,则可以随时运行审核。 审核会重播每个 blob 创建事件,并使用审核期间存储在容器中的 blob 来重新计算摘要。 然后,它会将重新计算的摘要与 Azure 机密中存储的摘要进行比较,并提供一份报告,其中显示所有摘要比较以及 blob 容器是否被篡改。

触发审核

可以通过向与托管应用程序关联的 Microsoft Azure 服务总线队列添加以下消息来触发审核:

{
    "eventType": "PerformAudit",
    "storageAccount": "<storage_account_name>",
    "blobContainer": "<blob_container_name>"
}

Screenshot of the Azure portal in a web browser, how to trigger an audit by adding a message to the queue.

请确保包含 Session ID,因为队列已启用会话。

查看审核结果

成功执行审核后,可以在相应的存储帐户中名为 <managed-application-name>-audit-records 的容器下找到审核结果。 结果包含重新计算的摘要、从 Azure 机密账本检索的摘要以及 blob 是否被篡改。

Screenshot of the Azure portal in a web browser, showing a sample audit record with matching digests.

日志记录和错误

可以在相应的存储帐户中名为 <managed-application-name>-error-logs 的容器下找到错误日志。 如果 blob 创建事件或审核进程失败,则会记录失败的原因并将其存储在此容器中。 如果对错误日志或应用程序功能有任何疑问,请联系托管应用程序详细信息中提供的 Azure 机密账本支持团队。

清理托管应用程序

可以删除托管应用程序以清理并移除所有关联的资源。 删除托管应用程序会停止跟踪所有 Blob 事务,并停止创建所有摘要。 对于在删除之前添加的 blob,审核报告仍然有效。

更多资源

有关托管应用程序和已部署资源的详细信息,请参阅以下链接:

后续步骤