Share via


使用客戶自控金鑰進行待用加密

加密 Web 應用程式的待用應用程式資料需要 Azure 儲存體帳戶和 Azure Key Vault。 當您從部署套件執行應用程式時,會使用這些服務。

  • Azure 儲存體提供待用加密。 您可以使用系統提供的金鑰或您自己的客戶自控金鑰。 這是當應用程式資料未在 Azure 的 Web 應用程式中執行時的儲存位置。
  • 從部署套件執行是 App Service 的部署功能。 此功能可讓您使用共用存取簽章 (SAS) URL,從 Azure 儲存體帳戶部署網站內容。
  • Key Vault 參考是 App Service 的安全性功能。 此功可能讓您在執行階段匯入祕密,作為應用程式設定。 使用此方法來加密 Azure 儲存體帳戶的 SAS URL。

設定待用加密

建立 Azure 儲存體帳戶

首先,建立 Azure 儲存體帳戶,並使用客戶自控金鑰予以加密。 一旦建立儲存體帳戶後,使用 Azure 儲存體總管來上傳套件檔案。

接下來,使用儲存體總管來產生 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 參考加密應用程式設定

現在,您可以使用 SAS 編碼 URL 的 Key Vault 參考來取代 WEBSITE_RUN_FROM_PACKAGE 應用程式設定的值。 這會讓 SAS URL 在 Key Vault 中加密,以提供額外的安全性層級。

  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. 搭配作為外部 URL 的 Key Vault 參考值,使用下列 az webapp config appsettings set 命令建立具有該值的 WEBSITE_RUN_FROM_PACKAGE 應用程式設定:

    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 應用程式不會不小心遺失存取權,您也必須更新金鑰保存庫中的 SAS URL。

  1. 瀏覽至 Azure 入口網站中的儲存體帳戶,以執行此動作。 在 [設定]> [存取金鑰] 下方,選取圖示以輪替 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 應用程式的存取權來撤銷 Web 應用程式對於網站資料的存取權。 若要這樣做,請移除 Web 應用程式身分識別的存取原則。 這是您稍早在設定金鑰保存庫參考時建立的相同身分識別。

摘要

您的應用程式檔案現在會在儲存體帳戶中待用加密。 當您的 Web 應用程式啟動時,會從金鑰保存庫擷取 SAS URL。 最後,Web 應用程式會從儲存體帳戶載入應用程式檔案。

如果您需要撤銷 Web 應用程式對於儲存體帳戶的存取權,您可以撤銷金鑰保存庫的存取權,或輪替儲存體帳戶金鑰,兩者都會使 SAS URL 失效。

常見問題集

從部署套件執行我的 Web 應用程式時,是否會產生任何額外費用?

只有與 Azure 儲存體帳戶相關聯的成本,以及任何適用的輸出費用。

從部署套件執行會如何影響我的 Web 應用程式?

  • 從部署套件執行您的應用程式會讓 wwwroot/ 變成唯讀。 當您的應用程式嘗試寫入此目錄時,會收到錯誤。
  • 不支援 TAR 和 GZIP 格式。
  • 此功能與本機快取不相容。

下一步