events
カスタマー マネージド キーを使用し、保存中のアプリケーション データを暗号化する
関数アプリのアプリケーション データを保存時に暗号化するには、Azure Storage アカウントと Azure Key Vault が必要です。 これらのサービスは、デプロイ パッケージからアプリを実行するときに使用されます。
- Azure Storage では保存時に暗号化を行うことができます。 システムによって提供されるキー、または独自のカスタマー マネージド キーを使用できます。 これは、Azure の関数アプリで実行されていないアプリケーション データが格納される場所です。
- デプロイ パッケージからの実行は、App Service のデプロイ機能です。 これにより、Shared Access Signature (SAS) URL を使用して、Azure Storage アカウントからサイト コンテンツをデプロイできます。
- Key Vault 参照は、App Service のセキュリティ機能です。 これにより、実行時にアプリケーション設定としてシークレットをインポートできます。 これを使用して、Azure Storage アカウントの SAS URL を暗号化します。
最初に、Azure Storage アカウントを作成し、それをカスタマー マネージド キーを使用して暗号化します。 ストレージ アカウントが作成された後、Azure Storage Explorer を使用してパッケージ ファイルをアップロードします。
次に、Storage Explorer を使用して SAS を生成します。
注意
この SAS 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>"
このアプリケーション設定を追加すると、関数アプリが再起動します。 アプリが再起動したら、そのアプリを参照し、デプロイ パッケージを使用して正しく起動したことを確認します。 アプリケーションが正しく起動しなかった場合は、パッケージからの実行のトラブルシューティング ガイドに関する記事を参照してください。
WEBSITE_RUN_FROM_PACKAGE
アプリケーション設定の値を、SAS でエンコードされた URL への Key Vault 参照に置き換えることができるようになりました。 これにより、SAS URL が Key Vault で暗号化され、追加のセキュリティ層が用意されます。
次の
az keyvault create
コマンドを使用して Key Vault インスタンスを作成します。az keyvault create --name "Contoso-Vault" --resource-group <group-name> --location eastus
こちらの手順に従い、キー コンテナーへのアクセス権をアプリに付与します。
次の
az keyvault secret set
コマンドを使用して、キー コンテナーにシークレットとして外部 URL を追加します。az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<SAS-URL>"
次の
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
コマンドの出力にあります。
このアプリケーション設定を更新すると、関数アプリが再起動します。 アプリが再起動したら、そのアプリを参照し、Key Vault 参照を使用して正しく起動したことを確認します。
ストレージ アカウントの SAS キーは定期的にローテーションすることをお勧めします。 関数アプリが誤ってアクセス権を失わないようにするために、Key Vault で SAS URL を更新する必要もあります。
Azure portal でストレージ アカウントに移動して SAS キーをローテーションします。 [設定]>[アクセス キー] で、SAS キーをローテーションするためのアイコンをクリックします。
新しい SAS URL をコピーし、次のコマンドを使用して、Key Vault に更新された SAS URL を設定します。
az keyvault secret set --vault-name "Contoso-Vault" --name "external-url" --value "<SAS-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
コマンドの出力にあります。
ストレージ アカウントへの関数アプリのアクセス権を取り消す場合、次の 2 つの方法があります。
ストレージ アカウントの SAS キーがローテーションされると、関数アプリはストレージ アカウントへのアクセス権を失いますが、パッケージ ファイルの最終ダウンロード バージョンを使用して引き続き実行されます。 関数アプリを再起動すると、最終ダウンロード バージョンがクリアされます。
Key Vault への関数アプリのアクセス権を無効にすることで、サイト データへの関数アプリのアクセス権を取り消すことができます。 これを行うには、関数アプリの ID のアクセス ポリシーを削除します。 これは、Key Vault 参照を構成するときに作成した同じ ID です。
これで、アプリケーション ファイルがストレージ アカウントで保存時に暗号化されるようになりました。 関数アプリは、起動時に Key Vault から SAS URL を取得します。 最後に、関数アプリは、ストレージ アカウントからアプリケーション ファイルを読み込みます。
ストレージ アカウントへの関数アプリのアクセス権を取り消す必要がある場合は、キー コンテナーへのアクセス権を取り消すか、ストレージ アカウント キーをローテーションします。どちらでも、SAS URL を無効にできます。
Azure Storage アカウントに関連するコストと、該当するエグレス料金のみです。
- デプロイ パッケージからアプリを実行すると、
wwwroot/
が読み取り専用になります。 アプリでこのディレクトリへの書き込みを試行すると、エラーを受け取ります。 - TAR および GZIP 形式はサポートされていません。
- この機能は、ローカル キャッシュと互換性がありません。
その他のリソース
トレーニング
モジュール
Azure Storage アカウントをセキュリティで保護する - Training
Azure Storage で、アクセス キー、セキュリティで保護されたネットワーク、および Advanced Threat Protection による監視を使用してデータを保護する多層セキュリティ モデルを提供する方法について学習します。
認定資格
Microsoft Certified: Azure Developer Associate - Certifications
Azure Functions の作成、Web アプリの実装と管理、Azure ストレージを利用したソリューションの開発などを行うために、Microsoft Azure でエンド ツー エンドのソリューションを構築します。