Azure Database for PostgreSQL は、高可用性、自動バックアップ、スケーリング機能を備えたフルマネージド データベース サービスです。 PostgreSQL データベースのデプロイをセキュリティで保護することは、機密データの安全性を確保し、業界標準への準拠を維持するうえで重要です。
この記事では、Azure Database for PostgreSQL Server のデプロイをセキュリティで保護する方法について説明します。
ネットワークのセキュリティ
ネットワーク セキュリティ セクションでは、パブリック アクセスを防止し、ネットワーク機能を活用して PostgreSQL を安全かつ分離されたクラウド ネットワーク アーキテクチャに統合する方法を説明します。
パブリック ネットワーク アクセスを無効にする: PostgreSQL のパブリック ネットワーク アクセスを無効にすることで、インターネット経由の不要なアクセスを防止できます。 この操作により、信頼できるネットワークからのみデータベースにアクセスできるようになります。
プライベート エンドポイント: プライベート エンドポイントを使用することで、仮想ネットワーク内から PostgreSQL に安全に接続できます。
または、仮想ネットワーク統合を使用する: 仮想ネットワーク統合を使用して、PostgreSQL を仮想ネットワークに接続することもできます。 この統合により、Azure リソースからの安全なアクセスが可能になるほか、サーバーから AI などの利用先リソースにも安全に接続できます。
従来のファイアウォール規則とサービス エンドポイント: 特定の IP アドレスからのアクセスを許可する必要がある場合は、従来のファイアウォール規則とサービス エンドポイントを使用します。 ただし、この方法は推奨されません。 代わりに、プライベート エンドポイントまたは仮想ネットワーク統合の使用を推奨します。
ネットワーク セキュリティに関する記事は、ネットワーク セクションに掲載されています。
パブリック アクセス (許可された IP アドレス) を使用した Azure Database for PostgreSQL のネットワークの概要
Azure Database for PostgreSQL のプライベート アクセスを使用したネットワーク (仮想ネットワーク統合)
ID 管理
ID 管理セクションでは、一元化された ID およびアクセス管理システムを活用し、認証、ID の保護、アクセス制御に関する内容を中心に解説しています。 アプリケーション向けの強固な認証メカニズムやマネージド ID の活用など、ベスト プラクティスを紹介しています。
ID 管理セクションで活用できるセキュリティ サービス、機能、ベスト プラクティスの一例を以下に示します。
データベース ローカル認証の代わりに Entra を使用する: PostgreSQL サーバーのローカル認証を禁止する必要があります。 代わりに、Microsoft Entra 認証のみを使用して、データベースへのアクセスを管理してください (混合モードは使用しないでください)。 Microsoft Entra は、強力なセキュリティ制御と Defender for Identity によるリアルタイム保護を備えた、一元的な認証機能を提供します。 詳細については、Microsoft Entra の概要ページおよび Azure Database for PostgreSQL における Entra 認証に関するドキュメントをご参照ください。
セキュリティで保護されたアプリケーション アクセスにマネージド ID を使用する: Azure のマネージド ID を利用することで、資格情報の管理なしにアプリケーションやサービスを安全に認証できます。 これにより、Azure Database for PostgreSQL などのリソースに、安全かつシンプルにアクセスできるようになります。 詳細については、「マネージド ID」を参照してください。
条件付きアクセス ポリシーを使用してセキュリティを適用する: Microsoft Entra で条件付きアクセス ポリシーを設定することで、ユーザー、場所、デバイスなどの状況に応じたセキュリティ制御を実現できます。 これらのポリシーにより、リスクに応じてセキュリティ要件を柔軟に適用でき、セキュリティ態勢全体の強化につながります。 詳細については、「Microsoft Entra 条件付きアクセス」を参照してください。
ローカル認証では SCRAM 認証を使用する必要がある: ローカル認証を使用する必要がある場合は、強力なパスワード ポリシーが適用されていることを確認してください。 パスワードの複雑さの要件と定期的なパスワードローテーションを使用して、アカウント侵害のリスクを効果的に抑制できます。 詳細については、「Azure Database for PostgreSQL での SCRAM 認証」に関するページを参照してください。
アクセス制御
アクセス制御セクションでは、最小特権の原則に基づき、必要最小限のアクセス権を確保することに重点を置いています。 昇格されたアクセス権の制限と管理、多要素認証の適用、特権操作のログ記録と監査を通じて、機密性の高いリソースへの不正アクセス リスクを最小限に抑えることが重視されています。
アクセス制御セクションに関連するセキュリティ サービス、機能、およびベスト プラクティスの一例を以下に示します。
アクセス制御に Entra ロールを使用する: Azure のロールベース アクセス制御 (RBAC) を実装して、Azure Database for PostgreSQL リソースへのアクセスを管理します。 最小特権の原則に従ってロールを割り当て、ユーザーやアプリケーションに必要最小限のアクセス許可のみが付与されていることを確認してください。 詳細については、「Azure ロールベースのアクセス制御 (RBAC)」の概要ページと、「Azure Database for PostgreSQL における Microsoft Entra ロールの管理」に関するドキュメントをご参照ください。
Entra のベスト プラクティスに従う: MFA、条件付きアクセス ポリシー、Just-In-Time (JIT) アクセスを利用して、ユーザーとデータベースの安全性を確保します。
ローカル データベースのユーザー、ロール、およびアクセス許可を管理する: PostgreSQL の組み込みロール管理を使用して、データベース レベルでアクセスを制御します。 最小特権の原則を適用するために、特定のアクセス許可を持つカスタム ロールを作成します。 これらのロールを定期的に見直し、監査を行うことで、セキュリティ ポリシーへの準拠状況を確認します。 詳細については、「Azure Database for PostgreSQL でユーザーを作成する」を参照してください。
データ保護
データ保護セクションでは、保存時および転送時の機密データの安全性確保に重点を置いています。 これにより、データの暗号化、アクセス制御が行われ、機密情報が不正アクセスから保護されます。 データの整合性と機密性を保護するために、暗号化、安全な接続、データ マスキングの活用が重要視されています。
データ保護セクションに関連するセキュリティ サービス、機能、ベスト プラクティスの一例を以下に示します。
転送中のデータを暗号化する
TLS 接続を確認する: Azure PostgreSQL では、アプリケーションとデータベース間の通信において、常に SSL または TLS による暗号化が適用されます。 アプリケーションでは、ルート CA、期限切れの証明書、ホスト名の不一致、証明書の失効などを検証できるように構成する必要があります。 この対策により、傍受や中間者攻撃から機密情報を保護できます。 詳細については、「Azure Database for PostgreSQL の TLS と SSL を使用したセキュリティで保護された接続」に関するページを参照してください。
クライアントに最新の TLS 証明書がインストールされていることを確認する: セキュリティで保護された接続をサポートするために、クライアント アプリケーションに最新の TLS 証明書がインストールされていることを確認します。 この方法は、接続の失敗を防ぎ、アプリケーションが PostgreSQL サーバーとのセキュアな接続を確立するために有効です。 詳細については、「ルート CA 証明書のダウンロードとアプリケーション クライアントの更新」に関するページをご参照ください。
TLS 1.3 の使用が必要: すべての接続に対して TLS 1.3 を使用するよう、PostgreSQL サーバーの設定を行います。 この構成により、最新かつ安全性の高いプロトコルのみが使用されるため、セキュリティとパフォーマンスの向上が期待できます。 詳細については、「TLS のバージョン」を参照してください。
保存時の暗号化
保存データは、SMK を使用して常に透過的に暗号化される: Azure Database for PostgreSQL では、サービス マネージド キー (SMK) により、保存データが自動的に暗号化されます。 この暗号化により、追加の構成を行わなくても、データは確実に保護されます。 この機能は、Azure の基盤となるストレージ インフラストラクチャに依存しています。 プライマリ サーバー、レプリカ、ポイントインタイム リカバリー (PITR)、バックアップを対象としています。 詳細については、「Azure Database for PostgreSQL でのデータ暗号化」に関するページを参照してください。
カスタマー マネージド キーを使用して追加の制御を行う: 暗号化キーの管理をより細かく制御したい場合は、Azure Key Vault または Azure HSM に格納されたカスタマー マネージド キー (CMK) を使用してください。 このオプションを使用すると、暗号化キーを自分で管理できるようになり、セキュリティやコンプライアンスの選択肢がさらに広がります。 詳細については、「Azure Database for PostgreSQL のカスタマー マネージド キー」と「Azure Database for PostgreSQL でのデータ暗号化の構成」に関するページを参照してください。
KV または Managed HSM で自動キー ローテーションを設定する: カスタマー マネージド キーを使用する場合は、暗号化キーを定期的に更新できるよう、Azure Key Vault で自動キー ローテーションを構成してください。 キーのローテーション後、Azure Database for PostgreSQL によってキー バージョンが自動的に更新されます。 Key Vault の詳細については、「Azure Managed HSM でキーの自動ローテーションを構成する」または「Azure Key Vault の自動ローテーションについて」を参照してください。 自動キー ローテーションの構成方法については、「サーバーのプロビジョニング時にカスタマー マネージド キーを使用したデータ暗号化の構成」に関するページをご参照ください。
クライアント側の暗号化を使用して超機密データを暗号化する: 超機密データの場合は、クライアント側の暗号化の実装を検討してください。 この方法では、データベースに送信する前にデータを暗号化することで、暗号化された情報のみが保存されるようになります。 この方法を採用することで、セキュリティ層が追加され、データベース自体および管理者は暗号化されていないデータにアクセスできなくなります。
機密コンピューティング
Azure Confidential Computing (ACC) は、個人データや保護対象の健康情報 (PHI) などの機密データを安全に処理・共有するための機能を組織に提供します。 ACC は、Trusted Execution Environment (TEE) を通じて使用中のデータを保護することで、不正アクセスに対する組み込みの保護機能を提供します。
- SaaS およびホスティング プロバイダーは、コンフィデンシャル コンピューティングの構成を検討する: PostgreSQL ワークロードで機密データを扱う サービスとしてのソフトウェア (SaaS) やホスティング プロバイダーの場合は、Azure Confidential Computing を使用して使用中のデータを保護することをご検討ください。 このソリューションでは、セキュリティ保護された環境でデータを処理することで、特権ユーザーによる不正アクセスを防ぎ、セキュリティをさらに強化します。 詳細については、「Azure Database for PostgreSQL の Azure Confidential Computing」に関するページを参照してください。
データ マスキングと秘匿処理
データ マスキングを実装する: PostgreSQL Anonymizer 拡張機能を使用して、以下をサポートします。
匿名ダンプ: マスクされたデータを SQL ファイルにエクスポートします。
静的マスク: 規則に従って個人データを削除します。
動的マスク: マスクされたユーザーの個人データのみを非表示にします。
マスク ビュー: マスクされたユーザー専用のビューを作成します。
マスク データ ラッパー: 外部データにマスク ルールを適用します。
ログと脅威検出
ログ記録と脅威検出のセクションでは、Azure 環境における脅威の検出に使用される制御機能について説明しています。 Azure サービスにおける監査ログの有効化、収集、保存方法について説明します。 これは、ネイティブの脅威検出機能の活用、一元化されたログ管理、セキュリティ調査やコンプライアンス対応のための適切なログ保持期間の設定を重視しています。 このセクションでは、高品質なアラートの生成、Azure ツールによるセキュリティ分析の一元管理、正確な時刻同期の維持、効果的なログ保持戦略の実施に焦点を当てています。
ログ記録と脅威検出に関するセクションで活用できるセキュリティ サービス、機能、ベスト プラクティスを以下に示します。
診断ログの収集を有効にする: カテゴリ グループ "監査" を選択して診断ログが有効になっていることを確認し、Azure Policy を使用して構成を自動化します。
PostgreSQL (microsoft.dbforpostgresql/flexibleservers) のカテゴリ グループ別のログ記録を Log Analytics に対して有効にするポリシー
イニシアティブ: Log Analytics でサポートされているリソースに対して、監査カテゴリ グループのリソース ログを有効化します
Microsoft Defender for Open-Source リレーショナル データベースを利用する: Microsoft Defender for Open-Source リレーショナル データベースを使用して、PostgreSQL フレキシブル サーバー インスタンスのセキュリティ体制を強化します。 このサービスでは、オープンソース データベース向けに最適化された高度な脅威保護、脆弱性評価、セキュリティ推奨事項を提供します。 詳細については、「Microsoft Defender for Open-Source リレーショナル データベースの概要」を参照してください。
監査ログを有効にする: pgaudit 拡張機能を使用してデータベース操作を追跡およびログ記録するように PostgreSQL の監査ログを構成します。 詳細については、「Azure Database for PostgreSQL の監査ログ」に関するページを参照してください。
バックアップと回復
バックアップと回復のセクションでは、Azure サービス全体のデータと構成が、障害や災害時にも定期的にバックアップされ、保護され、回復可能であることを重視しています。 このセクションでは、バックアップの自動化、バックアップ データのセキュリティ保護、そして復旧時間目標 (RTO) および復旧ポイント目標 (RPO) を満たすための復旧プロセスのテストと検証が重視されています。 このセクションでは、バックアップ プロセスの監視と監査が、コンプライアンスの維持と復旧体制の整備において重要である点にも触れています。 概要については、「Azure Database for PostgreSQL を使用したビジネス継続性の概要」を参照してください。
バックアップと回復の監視に関するセクションで活用できるセキュリティ サービス、機能、ベスト プラクティスを以下に示します。
高可用性を利用する: PostgreSQL フレキシブル サーバー インスタンスの高可用性 (HA) 構成を実装して、ダウンタイムを最小限に抑え、データベースへの継続的なアクセスを確保します。 詳細については、「Azure Database for PostgreSQL の高可用性 (信頼性)」と「高可用性の構成」に関するページを参照してください。
自動バックアップの構成: Azure Database for PostgreSQL は、データベース ファイルの毎日のバックアップを自動的に実行し、トランザクション ログを継続的にバックアップします。 バックアップは 7 日から最大 35 日間まで保持できます。 データベース サーバーは、バックアップの保持期間内の任意の時点に復元できます。 RTO は、復元するデータの容量とログ回復の所要時間に応じて変動します。 所要時間は数分から最大 12 時間まで変動します。 詳細については、「Azure Database for PostgreSQL でのバックアップと復元」を参照してください。
読み取りレプリカの構成: 読み取りレプリカを使用することで、プライマリ サーバーの読み取り負荷を軽減し、パフォーマンスと可用性を向上させることができます。 また、ディザスター リカバリー シナリオでは、プライマリ サーバーに障害が発生した際に、読み取りレプリカへ迅速に切り替えることで可用性を維持できます。 詳細については、「Azure Database for PostgreSQL の読み取りレプリカ」に関するページを参照してください。
カスタマー マネージド キー暗号化を使用してバックアップ データを保護する: 保存時の暗号化を使用することで、バックアップ データの安全性を確保できます。