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

使用客户管理的密钥加密静态数据

加密 Web 应用的应用程序静态数据需要 Azure 存储帐户和 Azure Key Vault。 从部署包运行应用时,将使用这些服务。

  • Azure 存储提供静态加密。 可以使用系统提供的密钥或你自己的客户管理的密钥。 这是应用程序数据在 Azure 中的 Web 应用中未运行时存储的位置。
  • 从部署包运行 是应用服务的部署功能。 它允许使用共享访问签名 (SAS) URL 从 Azure 存储帐户部署站点内容。
  • Key Vault 引用 是应用服务的安全功能。 它允许在运行时将机密作为应用程序设置导入。 使用此 URL 加密 Azure 存储帐户的 SAS URL。

设置静态加密

创建 Azure 存储帐户

首先创建存储帐户。

  1. 创建 Azure 存储帐户 ,并使用 客户管理的密钥对其进行加密。 创建存储帐户后,使用 Azure 存储资源管理器 上传包文件。

  2. 使用存储资源管理器 生成 SAS

注释

保存此 SAS URL,稍后将使用此 URL 在运行时启用部署包的安全访问。

配置从存储帐户中的包运行

将文件上传到 Blob 存储并具有文件的 SAS URL 后,请将 WEBSITE_RUN_FROM_PACKAGE 应用程序设置设置为 SAS URL。 以下示例使用 Azure CLI 执行该作:

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_RUN_FROM_PACKAGE="<your-SAS-URL>"

添加此应用程序设置会导致 Web 应用重启。 重启应用后,浏览到该应用并确保应用已使用部署包正确启动。 如果应用程序未正确启动,请参阅 “从包运行”故障排除指南

使用 Key Vault 引用加密应用程序设置

现在可以将应用程序设置的值 WEBSITE_RUN_FROM_PACKAGE 替换为对 SAS 编码 URL 的 Key Vault 引用。 这将在 Key Vault 中加密 SAS URL,从而提供额外的安全层。

  1. 使用以下命令 az keyvault create 创建 Key Vault 实例。

    az keyvault create --name "Contoso-Vault" --resource-group <group-name> --location eastus    
    
  2. 按照 以下说明授予应用对 密钥保管库的访问权限:

  3. az keyvault secret set使用以下命令将外部 URL 添加为密钥保管库中的机密:

    az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<SAS-URL>"    
    
  4. az webapp config appsettings set使用以下命令创建WEBSITE_RUN_FROM_PACKAGE应用程序设置,并将值作为对外部 URL 的 Key Vault 引用:

    az webapp config appsettings set --settings WEBSITE_RUN_FROM_PACKAGE="@Microsoft.KeyVault(SecretUri=https://Contoso-Vault.vault.azure.net/secrets/external-url/<secret-version>"    
    

    <secret-version> 命令将位于上一 az keyvault secret set 命令的输出中。

更新此应用程序设置会导致 Web 应用重启。 重启应用后,浏览到它,确保它已使用 Key Vault 引用正确启动。

如何轮换访问令牌

最佳做法是定期轮换存储帐户的 SAS 密钥。 若要确保 Web 应用不会无意中失去访问权限,还必须更新 Key Vault 中的 SAS URL。

  1. 在 Azure 门户中导航到存储帐户来轮换 SAS 密钥。 在 “设置>访问”密钥下,选择用于轮换 SAS 密钥的图标。

  2. 复制新的 SAS URL,并使用以下命令在密钥保管库中设置更新的 SAS URL:

    az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<SAS-URL>"    
    
  3. 将应用程序设置中的密钥保管库引用更新为新的机密版本:

    az webapp config appsettings set --settings WEBSITE_RUN_FROM_PACKAGE="@Microsoft.KeyVault(SecretUri=https://Contoso-Vault.vault.azure.net/secrets/external-url/<secret-version>"    
    

    <secret-version> 命令将位于上一 az keyvault secret set 命令的输出中。

如何撤销 Web 应用的数据访问

有两种方法可以撤销 Web 应用对存储帐户的访问权限。

轮换 Azure 存储帐户的 SAS 密钥

如果轮换存储帐户的 SAS 密钥,Web 应用将不再有权访问存储帐户,但它将继续使用包文件的最后下载版本运行。 重启 Web 应用以清除上次下载的版本。

删除 Web 应用对 Key Vault 的访问权限

可以通过禁用 Web 应用对 Key Vault 的访问权限来撤销 Web 应用对站点数据的访问权限。 为此,请删除 Web 应用标识的访问策略。 这是在配置密钥保管库引用时之前创建的相同标识。

概要

应用程序文件现已在存储帐户中静态加密。 Web 应用启动时,它会从密钥保管库中检索 SAS URL。 最后,Web 应用从存储帐户加载应用程序文件。

如果需要撤销 Web 应用对存储帐户的访问权限,可以撤销对密钥保管库的访问权限或轮换存储帐户密钥,这两者都使 SAS URL 失效。

常见问题解答

从部署包运行 Web 应用是否有额外的费用?

仅与 Azure 存储帐户关联的成本以及任何适用的出口费用。

从部署包运行如何影响 Web 应用?

  • 从部署包运行应用会进行 wwwroot/ 只读作。 应用尝试写入此目录时收到错误。
  • 不支持 TAR 和 GZIP 格式。
  • 此功能与本地缓存不兼容。