Azure App Configuration では、保存されている機密情報を暗号化します。 カスタマー マネージド キーを使用すると、暗号化キーをより高度に制御できるようにすることで、データ保護が強化されます。 マネージド キー暗号化を使用すると、App Configuration のすべての機密情報が、指定した Azure Key Vault キーで暗号化されます。 その結果、必要に応じて暗号化キーをローテーションできます。 キーへのストアのアクセスを取り消すことで、App Configuration ストアの機密情報へのアクセスを取り消すこともできます。
概要
App Configuration は、Microsoft が提供する 256 ビットの Advanced Encryption Standard (AES) 暗号化キーを使用して、保存中の機密情報を暗号化します。 すべての App Configuration ストアには、サービスによって管理され、機密情報の暗号化に使用される独自の暗号化キーがあります。 機密情報には、キーと値のペアで検出された値が含まれます。
App Configuration でカスタマー マネージド キーを使用すると、次のイベントが発生します。
- App Configuration は、App Configuration ストアに割り当てられたマネージド ID を使用して、Microsoft Entra ID で認証します。
- マネージド ID は Key Vault を呼び出し、App Configuration ストアの暗号化キーをラップします。
- ラップされた暗号化キーが格納されます。
- ラップされていない暗号化キーは、App Configuration 内に 1 時間キャッシュされます。
- App Configuration は、App Configuration ストアの暗号化キーのラップされていないバージョンを 1 時間ごとに更新します。
この処理により、通常の運用条件下での可用性が保証されます。
重要
次のいずれかの条件が満たされると、App Configuration ストアに格納されている機密情報を復号化できません。
- App Configuration ストアに割り当てられた ID は、ストアの暗号化キーのラップを解除する権限がなくなりました。
- マネージド キーは完全に削除されます。
- 使用中のマネージド キーのバージョンの有効期限が切れます。
Key Vault の 論理的な削除 関数を使用して、誤って暗号化キーを削除する可能性を軽減できます。 基になるマネージド キーの有効期限が切れる可能性を軽減するために、マネージド キー暗号化を構成し、Key Vault でキーの自動ローテーションを設定するときに、キーのバージョンを省略できます。 詳細については、この記事で後述する 「キーのローテーション」を参照してください。
必要条件
App Configuration のカスタマー マネージド キー機能を正常に有効にするには、次のコンポーネントが必要です。 この記事では、これらのコンポーネントを設定する方法について説明します。
- Standard レベルまたは Premium レベルの App Configuration ストア。
- ソフト削除と消去防止機能が有効になっている Key Vault のインスタンス。
- 次の要件を満たすキーボールト内のキー。
- ハードウェア セキュリティ モジュール (RSA-HSM) を使用する Rivest-Shamir-Adleman (RSA) 暗号化または RSA 暗号化を使用します。
- 有効期限が切れていない。
- 有効になっています。
- ラップ機能とラップ解除機能が有効になっています。
この記事では、これらのリソースを構成する方法について説明した後、App Configuration ストアで Key Vault キーを使用できるように、次の手順について説明します。
- App Configuration ストアにマネージド ID を割り当てます。
- Key Vault キーにアクセスできるように、ID にアクセス許可を付与します。
- Azure ロールベースのアクセス制御 (Azure RBAC) を使用するキー コンテナーの場合は、ターゲット キー コンテナーで Key Vault Crypto Service Encryption ユーザー ロールを ID に割り当てます。
- アクセス ポリシー認可を使用するキー コンテナーの場合は、ターゲット キー コンテナーのアクセス ポリシーで
GET、WRAP、およびUNWRAPアクセス許可を ID に付与します。
カスタマー マネージド キー暗号化を有効にする
カスタマー マネージド キー暗号化を使用するには、次のセクションの手順を実行します。
リソースを作成する
App Configuration ストアがない場合は、Standard レベルまたは Premium レベルで作成します。 手順については、「 クイック スタート: Azure App Configuration ストアを作成する」を参照してください。
次の Azure CLI コマンドを実行して、消去保護が有効になっている Key Vault のインスタンスを作成します。 論理的な削除は既定で有効になっています。
<vault-name>と<resource-group-name>を独自の一意の値に置き換えます。az keyvault create --name <vault-name> --resource-group <resource-group-name> --enable-purge-protectionこのコマンドの出力には、キー コンテナーのリソース ID
idが一覧表示されます。 次の形式の値に注意してください。/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<vault-name>Azure CLI を使用して、キーを作成する必要があるキー コンテナーへのアクセス権を自分自身に割り当てます。 使用するコマンドは、キーボールトが使用する承認システムによって異なります。 次の 2 つのモデルを使用できます。
- Azure RBAC モデル
- アクセス ポリシー モデル
どちらのモデルでも、コマンドを実行するにはユーザー オブジェクト ID が必要です。 次のいずれかの方法を使用して、ユーザー オブジェクト ID を見つけることができます。
Azure CLI で
az ad user show --id <user-principal-name>コマンドを使用します。ここで、<user-principal-name>はユーザー プリンシパル名 (UPN) です。Azure portal を使用します。
- [Microsoft Entra ID] を選択し、[管理>ユーザー] を選択します。
- 検索ボックスに自分の名前を入力し、結果でユーザー名を選択します。
- オブジェクト ID の値をコピーします。
キー コンテナーの承認システムに適したコマンドを実行して、自分自身にアクセス権を割り当てます。
プレースホルダーを次の値に置き換えます。
-
<user-object-ID>の場合は、見つけたオブジェクト ID を使用します。 -
<role>の場合は、キーを作成するために必要なアクセス権を付与する Key Vault Crypto Officer などのロールを使用します。 ロール名を引用符で囲みます。 -
<vault-resource-ID>の場合は、前の手順のキー コンテナー リソース ID を使用します。
az role assignment create --assignee <user-object-ID> --role <role> --scope <vault-resource-ID>次のコマンドを実行して、Key Vault キーを作成します。 プレースホルダーを次の値に置き換えます。
-
<key-name>の場合は、独自の一意の値を使用します。 -
<key-type>の場合:- RSA 暗号化には
RSAを使用します。 - RSA-HSM 暗号化には
RSA-HSMを使用します。 RSA-HSM 暗号化は Premium レベルでのみ使用できます。
- RSA 暗号化には
-
<vault-name>の場合は、ステップ 2 のキー ボールトの名前を使用します。
az keyvault key create --name <key-name> --kty <key-type> --vault-name <vault-name>このコマンドの出力には、生成されたキーのキー ID
kidが一覧表示されます。 次の形式の値に注意してください。https://<vault-name>.vault.azure.net/keys/<key-name>/<key-version>キー ID には、次のコンポーネントが含まれています。
- キー ボールト URI:
https://<vault-name>.vault.azure.net - キー コンテナーのキー名:
<key-name> - キー コンテナーのキー バージョン:
<key-version>
-
次のいずれかのオプションを使用して、App Configuration ストアのマネージド ID を作成します。
ユーザー割り当てマネージド ID を作成するには、「 ユーザー割り当て ID の追加」の手順に従います。 ID の
clientIdプロパティとprincipalIdプロパティの値に注意してください。システム割り当てマネージド ID を作成するには、次の Azure CLI コマンドを使用します。 プレースホルダーを次の値に置き換えます。
-
<App-Configuration-store-name>の場合は、手順 1 の App Configuration ストアの名前を使用します。 -
<resource-group-name>の場合は、App Configuration ストアを含むリソース グループの名前を使用します。
-
az appconfig identity assign --name <App-Configuration-store-name> --resource-group <resource-group-name> --identities [system]このコマンドの出力には、システム割り当て ID のプリンシパル ID、
principalId、テナント IDtenantIdが含まれます。principalIDプロパティの値に注意してください。{ "principalId": <principal-ID>, "tenantId": <tenant-ID>, "type": "SystemAssigned", "userAssignedIdentities": null }
アクセス権を付与し、キーを有効にする
App Configuration ストアのマネージド ID は、キーの検証、暗号化、および暗号化解除を実行するためにキーにアクセスする必要があります。 具体的には、マネージド ID は、キーの GET、 WRAP、および UNWRAP アクションにアクセスする必要があります。
- Azure RBAC を使用するキー コンテナーの場合は、マネージド ID に Key Vault Crypto Service Encryption ユーザー ロールを割り当てることで、これらのアクセス許可を付与できます。
- アクセス ポリシー承認を使用するキー ボールトの場合は、これらのキー アクセス許可に対してポリシーを設定できます。
キー コンテナーの承認システムに適したコマンドを使用して、マネージド キーへのアクセス権をマネージド ID に付与します。 どちらのシステムでも、
<managed-identity-principal-ID>を前の手順のプリンシパル ID に置き換えます。<key-vault-resource-id>を、「リソースの作成」の手順 2 のキー コンテナーのリソース ID に置き換えます。az role assignment create --assignee <managed-identity-principal-ID> --role "Key Vault Crypto Service Encryption User" --scope <key-vault-resource-id>次のいずれかの Azure CLI コマンドを実行して、サービスでカスタマー マネージド キー機能を有効にします。 プレースホルダーを次の値に置き換えます。
-
<resource-group-name>の場合は、App Configuration ストアを含むリソース グループの名前を使用します。 -
<App-Configuration-store-name>の場合は、App Configuration ストアの名前を使用します。 -
<key-name>と<key-vault-URI>については、「リソースの作成」の手順 4 の値を使用します。
既定では、コマンドはシステム割り当てマネージド ID を使用してキー コンテナーで認証します。
システム割り当てマネージド ID を使用してカスタマー マネージド キーにアクセスする場合は、次のコマンドを実行します。
az appconfig update -g <resource-group-name> -n <App-Configuration-store-name> --encryption-key-name <key-name> --encryption-key-vault <key-vault-URI>ユーザー割り当てマネージド ID を使用してカスタマー マネージド キーにアクセスする場合は、クライアント ID を明示的に指定する次のコマンドを実行します。
<user-assigned-managed-identity-client-ID>を、「clientId」の手順 5. の値に置き換えます。az appconfig update -g <resource-group-name> -n <App-Configuration-store-name> --encryption-key-name <key-name> --encryption-key-vault <key-vault-URI> --identity-client-id <user-assigned-managed-identity-client-ID>
-
これで、Key Vault に格納されているカスタマー マネージド キーを使用するように App Configuration ストアが構成されました。
カスタマー マネージド キー暗号化を無効にする
カスタマー マネージド キーの暗号化を無効にすると、App Configuration ストアは Microsoft マネージド キーの使用に戻ります。 ただし、Microsoft マネージド キーに戻す前に、App Configuration は現在のキーを使用して既存のすべてのデータの暗号化を解除します。 現在のキーの有効期限が切れている場合、またはそのキーへのアクセスが取り消された場合は、まずそのキーへのアクセスを復元する必要があります。
Note
暗号化にカスタマー マネージド キーではなく Microsoft マネージド キーを使用するように App Configuration ストアを構成する前に、この変更が組織のセキュリティ ポリシーとコンプライアンス要件と一致していることを確認してください。
現在のカスタマー マネージド キーが有効で運用可能であることを確認します。
次の Azure CLI コマンドを使用して、カスタマー マネージド キーの構成を削除して App Configuration ストアを更新します。
<resource-group-name>と<App-Configuration-store-name>を環境内の値に置き換えます。az appconfig update -g <resource-group-name> -n <App-Configuration-store-name> --encryption-key-name ""カスタマー マネージド キーの構成が無効になっていることを確認するには、App Configuration ストアのプロパティを確認します。
az appconfig show -g <resource-group-name> -n <App-Configuration-store-name> --query "encryption"このコマンドの出力では、
encryption.keyVaultPropertiesプロパティの値はnullである必要があります。
これで、暗号化に Microsoft マネージド キーを使用するように App Configuration ストアが構成されました。
アクセスの失効
App Configuration ストアでカスタマー マネージド キー機能を有効にすると、機密情報にアクセスするサービスの機能を制御できます。 マネージド キーはルート暗号化キーとして機能します。
Key Vault アクセス ポリシーを変更することで、App Configuration ストアのマネージド キーへのアクセスを取り消すことができます。 このアクセスを取り消すと、App Configuration は 1 時間以内にユーザー データの暗号化を解除できなくなります。 この時点で、App Configuration ストアはすべてのアクセス試行を禁止します。
この状況は、App Configuration サービスにマネージド キーへのアクセス権をもう一度付与することで回復できます。 1 時間以内に、App Configuration はユーザー データの暗号化を解除し、通常の条件下で動作できます。
Note
すべての App Configuration データは、分離されたバックアップに最大 24 時間保存されます。 このデータには、復号された暗号化キーが含まれています。 このデータは、サービスやサービス チームですぐに使用できるわけではありません。 緊急復元中に、App Configuration はマネージド キー データから自身を再度取り消します。
キーのローテーション
App Configuration ストアでカスタマー マネージド キーを構成する場合は、期限切れにならないよう、マネージド キーを定期的にローテーションする必要があります。 キーのローテーションを成功させるには、現在のキーが有効で操作可能である必要があります。 現在のキーの有効期限が切れている場合、またはそれに対する App Configuration アクセスが取り消された場合、App Configuration ストアはデータの暗号化を解除できず、ローテーションは失敗します。
自動回転
ベスト プラクティスは、カスタマー マネージド キーの Key Vault で 自動ローテーション を構成することです。 キーを頻繁にローテーションすると、セキュリティが向上します。 また、自動回転を使用する場合は、回転がないためにアクセスが失われないようにします。 また、暗号化キーを手動でローテーションする必要がなくなります。
バージョンレス キー
カスタマー マネージド キー暗号化の自動ローテーションのもう 1 つのベスト プラクティスは、キー コンテナー キーのバージョンを省略することです。 特定のキー バージョンを構成しない場合、App Configuration はキーが自動的にローテーションされたときに最新バージョンのキーに移動できます。 その結果、App Configuration ストアでは、現在使用中のマネージド キーのバージョンが期限切れになると、アクセスが失われるのを回避できます。
カスタマー マネージド キー暗号化を設定するときは、キー コンテナー内のキーの識別子を指定します。 キーコンテナーのキー識別子は次のような形式です。
- バージョンレス キー識別子:
https://<vault-name>.vault.azure.net/keys/<key-name> - バージョン付きキー識別子 (非推奨):
https://<vault-name>.vault.azure.net/keys/<key-name>/<key-version>
バージョンレス キーを構成するには、バージョンを省略する識別子形式を使用します。
次のステップ
この記事では、暗号化にカスタマー マネージド キーを使用するように App Configuration ストアを構成しました。 App Service と Azure マネージド ID を統合する方法の詳細については、次の手順に進んでください。