カスタマー マネージド キーを使用した保存時の暗号化Encryption at rest using customer-managed keys

Web アプリのアプリケーション保存データを暗号化するには、Azure Storage アカウントと Azure Key Vault が必要です。Encrypting your web app's application data at rest requires an Azure Storage Account and an Azure Key Vault. これらのサービスは、デプロイ パッケージからアプリを実行するときに使用されます。These services are used when you run your app from a deployment package.

  • Azure Storage では保存時に暗号化を行うことができますAzure Storage provides encryption at rest. システムによって提供されるキー、または独自のカスタマー マネージド キーを使用できます。You can use system-provided keys or your own, customer-managed keys. これは、Azure の Web アプリで実行されていないアプリケーション データが格納される場所です。This is where your application data is stored when it's not running in a web app in Azure.
  • デプロイ パッケージからの実行は、App Service のデプロイ機能です。Running from a deployment package is a deployment feature of App Service. これにより、Shared Access Signature (SAS) URL を使用して、Azure Storage アカウントからサイト コンテンツをデプロイできます。It allows you to deploy your site content from an Azure Storage Account using a Shared Access Signature (SAS) URL.
  • Key Vault 参照は、App Service のセキュリティ機能です。Key Vault references are a security feature of App Service. これにより、実行時にアプリケーション設定としてシークレットをインポートできます。It allows you to import secrets at runtime as application settings. これを使用して、Azure Storage アカウントの SAS URL を暗号化します。Use this to encrypt the SAS URL of your Azure Storage Account.

保存時の暗号化の設定Set up encryption at rest

Azure Storage アカウントの作成Create an Azure Storage account

最初に、Azure Storage アカウントを作成しそれをカスタマー マネージド キーを使用して暗号化しますFirst, create an Azure Storage account and encrypt it with customer-managed keys. ストレージ アカウントが作成された後、Azure Storage Explorer を使用してパッケージ ファイルをアップロードします。Once the storage account is created, use the Azure Storage Explorer to upload package files.

次に、Storage Explorer を使用して SAS を生成しますNext, use the Storage Explorer to generate an SAS.

注意

この SAS URL を保存します。これは後で、実行時にデプロイ パッケージに安全にアクセスできるようにするために使用されます。Save this SAS URL, this is used later to enable secure access of the deployment package at runtime.

ストレージ アカウントからパッケージを実行するように構成するConfigure running from a package from your storage account

ファイルを BLOB ストレージにアップロードし、ファイルの SAS URL を取得した後、WEBSITE_RUN_FROM_PACKAGE アプリケーション設定を SAS URL に設定します。Once you upload your file to Blob storage and have an SAS URL for the file, set the WEBSITE_RUN_FROM_PACKAGE application setting to the SAS URL. 次の例では、Azure CLI を使用してそれを行っています。The following example does it by using Azure CLI:

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

このアプリケーション設定を追加すると、Web アプリが再起動します。Adding this application setting causes your web app to restart. アプリが再起動したら、そのアプリを参照し、デプロイ パッケージを使用して正しく起動したことを確認します。After the app has restarted, browse to it and make sure that the app has started correctly using the deployment package. アプリケーションが正しく起動しなかった場合は、パッケージからの実行のトラブルシューティング ガイドに関する記事を参照してください。If the application didn't start correctly, see the Run from package troubleshooting guide.

Key Vault 参照を使用してアプリケーション設定を暗号化するEncrypt the application setting using Key Vault references

WEBSITE_RUN_FROM_PACKAGE アプリケーション設定の値を、SAS でエンコードされた URL への Key Vault 参照に置き換えることができるようになりました。Now you can replace the value of the WEBSITE_RUN_FROM_PACKAGE application setting with a Key Vault reference to the SAS-encoded URL. これにより、SAS URL が Key Vault で暗号化され、追加のセキュリティ層が用意されます。This keeps the SAS URL encrypted in Key Vault, which provides an extra layer of security.

  1. 次の az keyvault create コマンドを使用して Key Vault インスタンスを作成します。Use the following az keyvault create command to create a Key Vault instance.

    az keyvault create --name "Contoso-Vault" --resource-group <group-name> --location eastus    
    
  2. こちらの手順に従い、キー コンテナーへのアクセス権をアプリに付与します。Follow these instructions to grant your app access to your key vault:

  3. 次の az keyvault secret set コマンドを使用して、キー コンテナーにシークレットとして外部 URL を追加します。Use the following az keyvault secret set command to add your external URL as a secret in your key vault:

    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 参照として指定します。Use the following az webapp config appsettings set command to create the WEBSITE_RUN_FROM_PACKAGE application setting with the value as a Key Vault reference to the external URL:

    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 コマンドの出力にあります。The <secret-version> will be in the output of the previous az keyvault secret set command.

このアプリケーション設定を更新すると、Web アプリが再起動します。Updating this application setting causes your web app to restart. アプリが再起動したら、そのアプリを参照し、Key Vault 参照を使用して正しく起動したことを確認します。After the app has restarted, browse to it make sure it has started correctly using the Key Vault reference.

アクセス トークンをローテーションする方法How to rotate the access token

ストレージ アカウントの SAS キーは定期的にローテーションすることをお勧めします。It is best practice to periodically rotate the SAS key of your storage account. Web アプリが誤ってアクセス権を失わないようにするために、Key Vault で SAS URL も更新する必要があります。To ensure the web app does not inadvertently loose access, you must also update the SAS URL in Key Vault.

  1. Azure portal でストレージ アカウントに移動して SAS キーをローテーションします。Rotate the SAS key by navigating to your storage account in the Azure portal. [設定] > [アクセス キー] で、SAS キーをローテーションするためのアイコンをクリックします。Under Settings > Access keys, click the icon to rotate the SAS key.

  2. 新しい SAS URL をコピーし、次のコマンドを使用して、Key Vault に更新された SAS URL を設定します。Copy the new SAS URL, and use the following command to set the updated SAS URL in your key vault:

    az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<SAS-URL>"    
    
  3. アプリケーション設定の Key Vault 参照を新しいシークレット バージョンに更新します。Update the key vault reference in your application setting to the new secret version:

    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 コマンドの出力にあります。The <secret-version> will be in the output of the previous az keyvault secret set command.

Web アプリのデータ アクセスを取り消す方法How to revoke the web app's data access

ストレージ アカウントへの Web アプリのアクセス権を取り消す方法は 2 つあります。There are two methods to revoke the web app's access to the storage account.

Azure Storage アカウントの SAS キーをローテーションするRotate the SAS key for the Azure Storage account

ストレージ アカウントの SAS キーがローテーションされると、Web アプリはストレージ アカウントへのアクセス権を失いますが、パッケージ ファイルの最終ダウンロード バージョンを使用して引き続き実行されます。If the SAS key for the storage account is rotated, the web app will no longer have access to the storage account, but it will continue to run with the last downloaded version of the package file. Web アプリを再起動すると、最終ダウンロード バージョンがクリアされます。Restart the web app to clear the last downloaded version.

Key Vault への Web アプリのアクセス権を削除するRemove the web app's access to Key Vault

Key Vault への Web アプリのアクセス権を無効にすることで、サイト データへの Web アプリのアクセス権を取り消すことができます。You can revoke the web app's access to the site data by disabling the web app's access to Key Vault. これを行うには、Web アプリの ID のアクセス ポリシーを削除します。To do this, remove the access policy for the web app's identity. これは、Key Vault 参照を構成するときに作成した同じ ID です。This is the same identity you created earlier while configuring key vault references.

まとめSummary

これで、アプリケーション ファイルがストレージ アカウントで保存時に暗号化されるようになりました。Your application files are now encrypted at rest in your storage account. Web アプリは、起動時に Key Vault から SAS URL を取得します。When your web app starts, it retrieves the SAS URL from your key vault. 最後に、Web アプリは、ストレージ アカウントからアプリケーション ファイルを読み込みます。Finally, the web app loads the application files from the storage account.

ストレージ アカウントへの Web アプリのアクセス権を取り消す必要がある場合は、キー コンテナーへのアクセス権を取り消すか、ストレージ アカウント キーをローテーションします。これにより、SAS URL が無効になります。If you need to revoke the web app's access to your storage account, you can either revoke access to the key vault or rotate the storage account keys, which invalidates the SAS URL.

よく寄せられる質問Frequently Asked Questions

デプロイ パッケージから Web アプリを実行する場合、追加料金は発生しますか。Is there any additional charge for running my web app from the deployment package?

Azure Storage アカウントに関連するコストと、該当するエグレス料金のみです。Only the cost associated with the Azure Storage Account and any applicable egress charges.

デプロイ パッケージからの実行は、Web アプリにどのように影響しますか。How does running from the deployment package affect my web app?

  • デプロイ パッケージからアプリを実行すると、wwwroot/ が読み取り専用になります。Running your app from the deployment package makes wwwroot/ read-only. アプリでこのディレクトリへの書き込みを試行すると、エラーを受け取ります。Your app receives an error when it attempts to write to this directory.
  • TAR および GZIP 形式はサポートされていません。TAR and GZIP formats are not supported.
  • この機能は、ローカル キャッシュと互換性がありません。This feature is not compatible with local cache.

次のステップNext steps