Azure Database for PostgreSQL - フレキシブル サーバーでのカスタマーマネージド キーを使用したデータ暗号化
適用対象: Azure Database for PostgreSQL - フレキシブル サーバー
Azure Database for PostgreSQL フレキシブル サーバーは、Azure Storage の暗号化と Microsoft マネージド キーを使って保存データを既定で暗号化します。 Azure Database for PostgreSQL フレキシブル サーバーのユーザーにとって、これは SQL Server などの他のデータベースの Transparent Data Encryption と似ています。
多くの組織では、カスタマー マネージド キー (CMK) を使用してデータへのアクセスを完全に制御する必要があります。 Azure Database for PostgreSQL フレキシブル サーバーの CMK によるデータ暗号化では、保存データの保護に独自のキー (BYOK) を使用できます。 また、組織でキーとデータの管理における職務の分離を実装することもできます。 CMK 暗号化を使用する場合、キーのライフサイクル、キーの使用アクセス許可、およびキーに対する操作の監査については、お客様の責任となり、お客様が完全に制御できます。
Azure Database for PostgreSQL フレキシブル サーバーの CMK によるデータ暗号化は、サーバー レベルで設定されます。 特定のサーバーについては、キー暗号化キー (KEK) と呼ばれる CMK タイプを使用して、サービスのデータ暗号化キー (DEK) を暗号化します。 KEK は、顧客が所有する、カスタマー マネージド Azure Key Vault インスタンスに格納される非対称キーです。 KEK と DEK については、この記事の後半で詳しく説明します。
Key Vault は、クラウドベースの外部キー管理システムです。 可用性が高く、FIPS 140 適合のハードウェア セキュリティ モジュール (HSM) によって必要に応じてサポートされる、スケーラブルで安全な RSA 暗号化キー向けストレージが提供されます。 格納されているキーに直接アクセスすることはできませんが、認可されたエンティティに対する暗号化と解読のサービスが提供されます。 Key Vault では、キーの生成、インポート、またはオンプレミス HSM デバイスからの転送を行うことができます。
メリット
Azure Database for PostgreSQL フレキシブル サーバーの CMK によるデータ暗号化には、次の利点があります。
データ アクセスを完全に制御します。 キーを削除して、データベースにアクセスできないようにすることができます。
会社のポリシーに合わせてキーのローテーションを含め、キーのライフ サイクルを完全に制御します。
Azure Key Vault を使用してキーを一元的に管理および整理できます。
PostgreSQL は両方のシナリオでデータ暗号化に Azure Storage レイヤーを使用するため、暗号化を有効にしても、CMK を使用するしないに関係なくパフォーマンスには影響しません。 唯一の違いは、CMK を使用すると、(実際のデータ暗号化を実行する) Azure Storage 暗号化キーが暗号化されるということです。
セキュリティ責任者、データベース管理者、およびシステム管理者の間での職務の分離を実装できます。
用語
データ暗号化キー (DEK) – パーティションまたはデータ ブロックの暗号化に使用する対称 AES 256 キー。 データの各ブロックを異なるキーで暗号化することによって、暗号化分析攻撃がより困難になります。 特定のブロックを暗号化および復号化するリソース プロバイダーまたはアプリケーション インスタンスには、DEK へのアクセスが必要です。 DEK を新しいキーで置き換える場合に、新しいキーを使用して再暗号化する必要があるのは、その関連ブロック内のデータのみです。
キー暗号化キー (KEK): DEK の暗号化に使用される暗号化キー。 Key Vault を離れることがない KEK では、DEK 自体を暗号化および制御できます。 KEK へのアクセス権を持つエンティティは、DEK を必要とするエンティティとは異なる場合があります。 DEL の復号化には KEK が必要であるため、KEK は事実上の単一ポイントです。KEK を削除すると実質的に DEK が削除されることになります。
KEK で暗号化された DEK は、個別に格納されます。 KEK へのアクセス権を持つエンティティでのみ、これらの DEK の暗号化を解除できます。 詳細については、保存時の暗号化のセキュリティに関するページを参照してください。
CMK を使用したデータ暗号化のしくみ
Microsoft Entra ユーザー割り当てマネージド ID は、CMK の接続と取得に使用されます。 ID を作成するには、このチュートリアルに従います。
PostgreSQL サーバーで DEK の暗号化のために Key Vault に格納されている CMK を使用する場合、Key Vault 管理者が上記で作成したマネージド ID に次のアクセス権を付与します。
get: Key Vault 内のキーの公開部分とプロパティを取得します
list: Key Vault 内のキーを一覧表示および反復処理します。
wrapKey: DEK を暗号化します。 暗号化された DEK は Azure Database for PostgreSQL に格納されます。
unwrapKey: DEK の暗号化を解除します。 Azure Database for PostgreSQL でデータを暗号化および復号化するには、暗号化解除された DEK が必要となります
Key Vault 管理者は、後で監査できるように、Key Vault の監査イベントのログ記録を有効にすることもできます。
アクセス権割り当ての代替として、前述のように、Key Vault Crypto Service Encryption User で新しい Azure RBAC ロールの割り当てを作成できます。
重要
Key Vault へのアクセスに対して前述のアクセス権または RBAC 割り当てをマネージド ID に提供しないと、暗号化キーのフェッチに失敗し、CMK 機能の設定に失敗する可能性があります。
Key Vault に格納されている CMK を使用するようにサーバーを構成する場合、暗号化のためにサーバーから DEK が Key Vault に送信されます。 Key Vault から、ユーザー データベースに格納されている暗号化された DEK が返されます。 必要に応じて、保護された DEK が暗号化解除のためにサーバーから Key Vault に送信されます。 ログ記録が有効になっている場合、監査者は Azure Monitor を使用して Key Vault の監査イベント ログを確認できます。
Azure Database for PostgreSQL フレキシブル サーバーのデータ暗号化を構成するための要件
Key Vault を構成するための要件を以下に示します。
キー コンテナーと Azure Database for PostgreSQL フレキシブル サーバーは、同じ Microsoft Entra テナントに属している必要があります。 テナント間の Key Vault とサーバーの対話はサポートされていません。 後で Key Vault リソースを移動する場合は、データ暗号化を再構成する必要があります。
Key Vault の [削除されたコンテナーを保持する日数] 設定は 90 にする必要があります。 既存の Key Vault インスタンスを小さい数値で構成した場合は、作成後にインスタンスを変更できないため、新しい Key Vault インスタンスを作成する必要があります。
Key Vault の削除したコンテナーの保持日数構成を 90 日に設定することをお勧めします。 既存の Key Vault インスタンスを小さい数字で構成している場合、引き続き有効になるはずです。 ただし、この設定を変更して値を増やす場合、新しい Key Vault インスタンスを作成する必要があります。 インスタンスの作成後、その構成を変更することはできません。
Key Vault で論理的な削除機能を有効にすると、キーまたは Key Vault インスタンスが誤って削除された場合にデータ損失から保護できます。 Key Vault は、論理的に削除されたリソースを 90 日間保持します (その間にユーザーが復旧または消去した場合を除く)。 復旧と消去のアクションには、Key Vault のアクセス ポリシーに関連付けられた独自のアクセス許可があります。
論理的な削除機能は既定ではオフになっていますが、PowerShell または Azure CLI を使用して有効にすることができます。 Azure portal から有効にすることはできません。
消去保護を有効にして、削除されたコンテナーおよびコンテナー オブジェクトに必須の保持期間を適用します。
Azure Database for PostgreSQL フレキシブル サーバー インスタンスに対し、その一意のマネージド ID を使用して、get、list、wrapKey、unwrapKey のアクセス許可による Key Vault へのアクセスの権限を付与します。 あるいは、マネージド ID に対して Key Vault Crypto Service Encryption User ロールで新しい Azure RBAC ロールの割り当てを作成します。
Azure Database for PostgreSQL フレキシブル サーバーで CMK を構成するための要件を次に示します。
DEK の暗号化に使用される CMK は、非対称の RSA または RSA-HSM のみです。 サポートされているキー サイズは、2,048、3,072、4,096 です。
キーのアクティブ化の日付と時刻 (設定する場合) は、過去の日付と時刻にする必要があります。 有効期限の日付と時刻 (設定する場合) は、後で指定する必要があります。
キーは、"
*Enabled-
" 状態になっている必要があります。Key Vault に既存のキーをインポートする場合は、サポートされているファイル形式 (
.pfx
、.byok
、または.backup
) で提供します。
推奨事項
データ暗号化に CMK を使用する場合は、Key Vault を構成するためのレコメンデーションを次に示します。
Key Vault でリソース ロックを設定して、この重要なリソースを削除できるユーザーを制御し、誤削除や許可されていない削除を防ぎます。
すべての暗号化キーの監査およびレポートを有効にします。 Key Vault が提供するログは、他のセキュリティ情報およびイベント管理 (SIEM) ツールに簡単に挿入できます。 Azure Monitor Log は、既に統合されているサービスの一例です。
[パブリック アクセスを無効にする] と [信頼された Microsoft サービスがこのファイアウォールをバイパスすることを許可する] を選択して、Key Vault をロックダウンします。
Note
[パブリック アクセスを無効にする] を選択し、[信頼された Microsoft サービスがこのファイアウォールをバイパスすることを許可する] を選択した後、ポータルでパブリック アクセスを使用して Key Vault を管理しようとすると、次のようなエラーが表示されることがあります。"ネットワーク アクセスの制御が有効になりました。 このキー コンテナーにアクセスできるのは、許可されたネットワークだけです。"このエラーにより CMK セットアップ中にキーを指定することや、サーバー捜査中に Key Vault からキーをフェッチすることができなくなります。
CMK を構成する場合のレコメンデーションは次のとおりです。
CMK のコピーを安全な場所に保管するか、エスクロー サービスにエスクローします。
Key Vault でキーを生成する場合は、初めてキーを使用する前に、キーのバックアップを作成します。 バックアップは Key Vault にのみ復元できます。
Key Vault からの誤ったキー アクセスの失効
Key Vault に対する十分なアクセス権を持つユーザーが、次のことを行うことで、キーへのサーバー アクセスを誤って無効にしてしまうことがあります。
KeyVault のキーを取得するために使った ID から、list、get、wrapKey、unwrapKey のアクセス許可を取り消す。
キーを削除する。
Key Vault インスタンスを削除するする。
キー コンテナーのファイアウォール規則を変更する。
Microsoft Entra ID でサーバーのマネージド ID を削除する。
Key Vault での CMK の監視
データベースの状態を監視したり、透過的データ暗号化保護機能へのアクセスができなくなった場合のアラートを有効にしたりするには、Azure の次の機能を構成します。
- リソース正常性: CMK へのアクセスを失ったデータベースは、データベースへの最初の接続が拒否された後、アクセス不可として表示されます。
- アクティビティ ログ: お客様によって管理される Key Vault インスタンス内の CMK へのアクセスに失敗すると、アクティビティ ログにエントリが追加されます。 これらのイベントに対してアラートを作成した場合は、できるだけ早くアクセスを再開できます。
- アクション グループ: 必要に応じて通知とアラートを受信するように、これらのグループを定義します。
Key Vault 内のカスタマー マネージド キーを使用した復元
Key Vault に格納されている顧客のマネージド キーで Azure Database for PostgreSQL フレキシブル サーバーが暗号化されると、新しく作成されるサーバーのコピーも暗号化されます。 この新しいコピーは、ポイントインタイム リストア (PITR) 操作を使用するか、読み取りレプリカを使用して作成することができます。
読み取りレプリカの復元または作成中にカスタマー マネージド データ暗号化を設定する場合は、プライマリ サーバーと復元済み/レプリカ サーバーで次の手順に従うことで、問題を回避できます。
プライマリ Azure Database for PostgreSQL フレキシブル サーバー インスタンスから、復元プロセスまたは読み取りレプリカを作成するプロセスを開始します。
復元されたサーバーまたはレプリカ サーバーでは、データ暗号化設定で Key Vault へのアクセスに使用される CMK や Microsoft Entra ID を変更できます。 新しく作成されたサーバーに、Key Vault に格納されているキーに対するリスト、ラップ、ラップ解除のアクセス許可があることを確認します。
復元後に元のキーを取り消さないでください。 現時点では、CMK 対応サーバーを別のサーバーに復元した後のキー失効はサポートされていません。
マネージド HSM
ハードウェア セキュリティ モジュール (HSM) は、データの暗号化、データの暗号化解除、デジタル署名の作成、デジタル証明書の作成に使用されるキーを生成、保護、管理することで、暗号化プロセスをセキュリティで保護するのに役立つ改ざんに強いハードウェア デバイスです。 HSM は、FIPS 140 や Common Criteria などの最高のセキュリティ標準に従ってテスト、検証、認定されています。
Azure Key Vault Managed HSM は、フル マネージドの高可用性シングルテナントの標準準拠クラウド サービスです。 FIPS 140-3 検証済み HSM を使用して、クラウド アプリケーションの暗号化キーを保護できます。
CMK 機能を使用して Azure portal で新しい Azure Database for PostgreSQL フレキシブル サーバー インスタンスを作成する場合は、Azure Key Vault の代わりに、キー ストアとして Azure Key Vault Managed HSM を選択できます。 ユーザー定義の ID とアクセス許可に関する前提条件は、Azure Key Vault の前提条件と同じです (この記事で前述)。 Managed HSM インスタンスを作成する方法、共有 Key Vault ベースの証明書ストアとの利点と違い、およびマネージド HSM にキーをインポートする方法の詳細については、「Azure Key Vault Managed HSM とは?」を参照してください。
アクセスできない CMK 条件
Key Vault で CMK を使用してデータ暗号化を構成する場合、サーバーをオンラインに保つには、このキーへの継続的なアクセスが必要です。 サーバーで Key Vault の CMK にアクセスできなくなった場合、サーバーでは 10 分以内にすべての接続を拒否し始めます。 サーバーで対応するエラー メッセージが発行され、サーバーの状態が "アクセス不可" に変更されます。
サーバーの状態が "アクセス不可" になる理由は次のようなものがあります。
- Key Vault インスタンスを削除すると、Azure Database for PostgreSQL フレキシブル サーバー インスタンスはキーにアクセスできなくなり、"アクセス不可" 状態に移行します。 サーバーを使用可能にするには、Key Vault インスタンスを復旧し、データ暗号化を再検証します。
- KeyVault からキーを削除すると、Azure Database for PostgreSQL フレキシブル サーバー インスタンスはキーにアクセスできなくなり、"アクセス不可" 状態に移行します。 サーバーを "使用可能" にするには、キーを回復し、データ暗号化を再検証しまます。
- Key Vault からキーを取得する目的で使用されているマネージド ID を Microsoft Entra ID から削除した場合、あるいは Key Vault Crypto Service Encryption User ロールのある Azure RBAC ロールの割り当てを削除した場合、 Azure Database for PostgreSQL フレキシブル サーバーはそのキーにアクセスできなくなり、アクセス不可状態に移行されます。 サーバーを "使用可能" にするには、ID を復旧し、データ暗号化を再検証します。
- KeyVault からキーを取得するために使われているマネージド ID からキー コンテナーの list、get、wrapKey、unwrapKey のアクセス ポリシーを取り消すと、Azure Database for PostgreSQL フレキシブル サーバー インスタンスはキーにアクセスできなくなり、"アクセス不可" 状態に移行します。 KeyVault の ID に必要なアクセス ポリシーを追加します。
- 過度に制限の厳しい Key Vault ファイアウォール規則を設定した場合、Azure Database for PostgreSQL フレキシブル サーバーは Key Vault と通信してキーを取得できません。 Key Vault ファイアウォールを構成するときは、信頼された Microsoft サービスが ファイアウォールをバイパスできるようにするオプションを必ず選択してください。
Note
キーが無効、削除、期限切れ、または到達できない場合、前に説明したように、そのキーを介して暗号化されたデータを持つサーバーは "アクセス不可" になります。 サーバーは、キーを再度有効にするか、新しいキーを割り当てるまで使用できなくなります。
一般に、キーが無効、削除、期限切れ、または到達不能になった後、サーバーは 60 分以内に "アクセス不可" になります。 キーが使用可能になると、サーバーが再び "アクセス可能" になるまでに最大 60 分かかることがあります。
マネージド ID 削除からの復旧
Azure Key Vault (AKV) からキーを取得するために CMK によって使用されている Entra ID マネージド ID が Microsoft Entra ID で削除されることがまれにあります。その場合、次が推奨されている復旧手順となります。
- ID を復旧するか、新しい Entra ID マネージド ID を作成します。
- Azure Key Vault (AKV) でキーを操作する適切なアクセス許可がこの ID に与えられていることを確認します。 キー コンテナーのアクセス許可モデル (アクセス ポリシーまたは Azure RBAC) に応じて、キー コンテナー上にアクセス ポリシー (list、get、wrapKey、unwrapKey アクセス ポリシー) を作成するか、Key Vault Crypto Service Encryption User ロールを使用して新しい Azure RBAC ロールの割り当てを作成することで、キー コンテナーへのアクセスを許可することができます。
- Azure portal の [Azure Database for PostgreSQL - Flexible Server データ暗号化] 画面で新しい ID か復旧した ID で CMK データ暗号化を再検証します。
重要
削除した ID と同じ名前で新しい Entra ID を作成しただけでは、マネージド ID 削除からの復旧とはなりません。
CMK と geo 冗長ビジネス継続性機能でのデータ暗号化の使用
Azure Database for PostgreSQL フレキシブル サーバーでは、レプリカや geo 冗長バックアップなどの高度なデータ復旧機能がサポートされています。 CMK とこれらの機能を使用してデータ暗号化を設定するための要件には、CMK を使用したデータ暗号化の基本的な要件に加えて、以下のものがあります。
- geo 冗長バックアップ暗号化キーは、geo 冗長バックアップが格納されているリージョンの Key Vault インスタンスに作成する必要があります
- geo 冗長バックアップが有効な CMK サーバーをサポートするための Azure Resource Manager REST API バージョンは、'2022-11-01-preview' です。 Azure Resource Manager テンプレートを使用して、CMK での暗号化と geo 冗長バックアップ機能の両方を使用するサーバーの作成を自動化する場合は、この API バージョンを使用します。
- プライマリ データベースの Key Vault インスタンスと geo 冗長バックアップの暗号化キーを保持する Key Vault インスタンスに対して、同じユーザーマネージド ID を使用して認証することはできません。 リージョンの回復性を維持するには、geo 冗長バックアップと同じリージョンにユーザーマネージド ID を作成することをお勧めします。
- 読み取りレプリカ データベースを作成中に CMK で暗号化するように設定した場合、その暗号化キーは、読み取りレプリカ データベースが存在するリージョンの Key Vault インスタンスに存在する必要があります。 この Key Vault インスタンスに対して認証するユーザー割り当て ID は、同じリージョンに作成する必要があります。
制限事項
Azure Database for PostgreSQL フレキシブル サーバーで CMK を構成するための現行の制限を次に示します。
CMK 暗号化は、既存の Azure Database for PostgreSQL フレキシブル サーバー インスタンスの更新としてではなく、新しいサーバーの作成時にのみ構成できます。 代わりに CMK 暗号化を使用して、PITR バックアップを新しいサーバーに復元できます。
CMK 暗号化を構成した後は削除できません。 この機能を削除する場合、唯一の方法は、サーバーを CMK 以外のサーバーに復元することです。
暗号化キーを格納する予定の Azure Key Vault マネージド HSM のインスタンスまたは Azure Key Vault のインスタンスは、フレキシブル サーバー用 Azure Database のインスタンスが作成されているのと同じリージョンに存在する必要があります。