Azure Database for MySQLは、高可用性、自動バックアップ、およびスケーラブルな MySQL と互換性のあるデータベース ホスティングを提供する、フル マネージドのリレーショナル データベース サービスです。 柔軟なサーバー展開をセキュリティで保護することで、機密データの保護、ID とネットワークの露出の削減、コンプライアンス要件のサポートに役立ちます。
この記事では、Azure Database for MySQL展開を保護するためのセキュリティに関する推奨事項について説明します。
この記事のセキュリティに関する推奨事項では、ゼロ トラストの原則 ("明示的に確認する"、"最小限の特権アクセスを使用する"、"侵害を想定する") が実装されています。 包括的なゼロ トラスト ガイダンスについては、 ゼロ トラスト ガイダンス センターを参照してください。
ネットワークのセキュリティ
ネットワーク セキュリティ制御は、クライアントが柔軟なサーバー インスタンスAzure Database for MySQL到達する方法を制限し、パブリック インターネット トラフィックへの露出を減らすのに役立ちます。
- 運用サーバーのパブリック ネットワーク アクセスを無効にする: クライアントがプライベート エンドポイント経由で接続できる場合はパブリック アクセスを無効にして、プライベート接続パスのみがフレキシブル サーバーに到達できるようにします。 詳細については、「Azure Database for MySQL 用の Private Link - フレキシブル サーバー」を参照してください。
- パブリック アクセス サーバーにプライベート エンドポイントを使用する: Private Linkを使用して、仮想ネットワーク内のプライベート IP アドレスを介してフレキシブル サーバーを公開し、承認されたプライベート エンドポイント接続へのデータ アクセスを制限します。 詳細については、「Azure Database for MySQL 用の Private Link - フレキシブル サーバー」を参照してください。
- 仮想ネットワーク統合を使用してプライベート アクセス サーバーをデプロイする: フレキシブル サーバーを委任されたサブネットに挿入し、同じ仮想ネットワーク、ピアリングされた仮想ネットワーク、VPN、または ExpressRoute からのみアクセスする必要がある場合は、仮想ネットワーク統合を使用します。 詳細については、「Azure Database for MySQL - フレキシブル サーバーの仮想ネットワーク統合を使用したプライベート ネットワーク アクセス」を参照してください。
- パブリック ファイアウォール規則を制限する: パブリック ファイアウォール規則は、パブリック接続を必要とするシナリオにのみ使用し、特定の IPv4 範囲のみを許可し、他の顧客のサブスクリプションからの接続を許可できるため、すべてのAzure サービスからのアクセスを許可するオプションを回避します。 詳細については、「Azure Database for MySQL - フレキシブル サーバーのパブリック ネットワーク アクセス」を参照してください。
アイデンティティとアクセス管理
ID とアクセス制御は、認証を一元化し、資格情報の公開を減らし、Azure管理操作とデータベース アクセスの両方に最小限の特権を適用するのに役立ちます。
- データベース アクセスにMicrosoft Entra認証を使用する: ユーザーとアプリケーションが MySQL パスワードのみに依存するのではなく、Microsoft Entra ID で認証できるように、Azure Database for MySQL フレキシブル サーバーのMicrosoft Entra認証を構成します。 詳細については、「Azure Database for MySQL - フレキシブル サーバー用の Microsoft Entra 認証」を参照してください。
- Microsoft Entra専用認証を可能な限り使用する: ユーザーとアプリケーションをMicrosoft Entra認証に移行した後で MySQL ネイティブ認証を無効にして、フレキシブル サーバーへのパスワード ベースのアクセス パスを減らします。 詳細については、「Azure Database for MySQL - フレキシブル サーバー向け Microsoft Entra 認証」を参照してください。
- アプリケーション接続にマネージド ID を使用する: マネージド ID またはサービス プリンシパルをMicrosoft Entra認証で使用して、アプリケーションが埋め込みデータベース パスワードではなくトークンを使用してAzure Database for MySQLに接続できるようにします。 詳細については、「Azure Database for MySQL - フレキシブル サーバー向け Microsoft Entra 認証」を参照してください。
- 最小特権データベースのアクセス許可の割り当て: アプリケーションまたは管理機能ごとに専用の MySQL ユーザーまたはMicrosoft Entraマップされたデータベース ユーザーを作成し、各 ID に必要なスキーマ、テーブル、および操作のアクセス許可のみを付与します。 詳細については、「 Azure Database for MySQL でユーザーを作成する」を参照してください。
- Azure Database for MySQL の管理者向けに条件付きアクセスを強制する: Azure portal、Azure CLI、Azure PowerShell などの Azure Resource Manager ツールを使用してフレキシブル サーバー リソースを管理できる ID に対して、多要素認証を必須とする条件付きアクセス ポリシーを適用します。 詳細については、「Azure管理のためのMFA必須」をご覧ください。
データ保護
Azure Database for MySQLは、既定でサービスマネージド キーを使用して保存データを暗号化します。 次のコントロールを使用すると、暗号化、キー管理、および暗号化されたクライアント接続をより詳細に制御できます。
-
暗号化されたクライアント接続を必須にする: Azure Database for MySQL へのクライアント接続で TLS 暗号化が使用され、データベース トラフィックが平文で送信されないように、
require_secure_transportを有効のままにします。 詳細については、Azure Database for MySQLのトランスポート層セキュリティ (TLS) を参照してください。 -
MySQL 8.0 サーバーに TLS 1.3 を適用する: クライアント アプリケーションとドライバーが TLS 1.3 をサポートしていることを確認した後、Azure Database for MySQL 8.0 フレキシブル サーバーで
tls_versionをTLS 1.3に設定します。 詳細については、Azure Database for MySQLのトランスポート層セキュリティ (TLS) を参照してください。 - クライアントからのサーバー証明書を検証する: サーバー証明書チェーンを検証し、ルート証明機関のみを信頼するようにクライアント アプリケーションを構成します。そのため、定期的な中間 CA またはサーバー証明書のローテーションによってセキュリティで保護された接続が中断されることはありません。 詳細については、Azure Database for MySQLのトランスポート層セキュリティ (TLS) を参照してください。
- キー制御にカスタマー マネージド キーを使用する: Azure Key Vaultまたは Azure Key Vault Managed HSM に格納されているカスタマー マネージド キーは、業務の分離、顧客が管理するキー ライフサイクル管理、または保存データ暗号化のコンプライアンス制御が必要な場合に使用します。 詳細については、「 Azure Database for MySQL のカスタマー マネージド キーを使用したデータ暗号化」を参照してください。
- カスタマー マネージド キーの依存関係を保護する: カスタマー マネージド キーを格納する Key Vault または Managed HSM で論理的な削除と消去保護を有効にし、必要なキーのアクセス許可をサーバーのユーザー割り当てマネージド ID に割り当て、キー アクセスの損失によってフレキシブル サーバーにアクセスできなくなる可能性があるため、キー アクセスを監視します。 詳細については、「 Azure Database for MySQL のカスタマー マネージド キーを使用したデータ暗号化」を参照してください。
ログ記録と監視
ログと監視の制御は、疑わしいデータベース アクティビティの検出、管理上の変更の調査、コンプライアンスのための監査証拠の保持に役立ちます。
-
MySQL 監査ログを有効にする:
audit_log_enabledをONに設定し、セキュリティとコンプライアンスの要件に一致する監査イベントの種類を選択し、調査のために接続、管理、DDL、DML イベントをキャプチャします。 詳細については、「チュートリアル: Azure Database for MySQL - フレキシブル サーバーを使用して監査ログを構成する」を参照してください。 -
監査ログをAzure Monitorにルーティングする:
MySqlAuditLogsリソース ログ カテゴリを Log Analytics ワークスペース、イベント ハブ、またはストレージ アカウントに送信するように診断設定を構成します。そのため、AzureDiagnosticsテーブル内の監査イベントに対してクエリを実行し、証拠を保持し、データベース監査イベントをセキュリティ操作ワークフローと統合できます。 詳細については、「チュートリアル: Azure Database for MySQL - フレキシブル サーバーを使用して監査ログを構成する」を参照してください。 - 監査ブックを使用する: Azure Database for MySQL用の組み込みのAzure Monitor監査ブックを使用して、管理アクション、監査の概要、接続イベント、テーブル アクセスの概要、および識別されたエラーを確認します。 詳細については、「チュートリアル: Azure Database for MySQL - フレキシブル サーバーを使用して監査ログを構成する」を参照してください。
- オープンソース リレーショナル データベースのDefenderを有効にする: Microsoft Defender for Cloudのオープンソース リレーショナル データベースのMicrosoft Defenderを有効にして、Azure Database for MySQLフレキシブル サーバー インスタンスは、異常または潜在的に有害なデータベース アクティビティに関するアラートを生成できます。 詳細については、「Azureでオープンソース リレーショナル データベースのDefenderを有効にする」を参照してください。
コンプライアンスとガバナンス
コンプライアンスおよびガバナンスの制御は、Azure Database for MySQL フレキシブル サーバーのフリート全体で一貫した安全な構成を適用し、本番環境のリソースを偶発的または許可されていない変更から保護するのに役立ちます。
-
Azure Policyを使用して診断ログを適用する: Log Analytics、Event Hubs、Storage にログをルーティングするポリシーなど、
microsoft.dbformysql/flexibleservers診断設定に組み込みのAzure Policy定義を割り当てて、柔軟なサーバー監査データが一貫して収集されるようにします。 詳細については、「Azure Policy の組み込みのポリシー定義」を参照してください。 -
運用サーバーに削除ロックを適用する: 運用Azure Database for MySQLフレキシブル サーバー リソースに
CanNotDeleteロックを追加して、通常の運用上の変更を維持しながら、誤って削除するリスクを軽減します。 詳細については、「 Azure リソースをロックしてインフラストラクチャを保護する」を参照してください。 - ガバナンス用のデータベース リソースにタグを付ける: ワークロード、環境、データ分類、所有者、コスト センターなどのタグを適用して、柔軟なサーバー リソースをAzure Database for MySQLし、ポリシーの割り当て、インベントリ クエリ、コスト レビューで運用ワークロードと機密性の高いデータベース ワークロードを区別できるようにします。 詳細については、「タグを使用してAzureリソースと管理階層を整理するを参照してください。
バックアップと回復
バックアップと回復の制御は、誤った削除、データの破損、リージョンの停止、危険な変更操作から復旧するのに役立ちます。
- 復旧目標のバックアップリテンション期間を構成する: ワークロードの復旧ポイントの要件とコンプライアンスのニーズに基づいて、Azure Database for MySQLフレキシブル サーバーのバックアップ保有期間を 1 日から 35 日間に設定します。 詳細については、「Azure Database for MySQL でのバックアップと復元」を参照してください。
- リージョンの復旧に geo 冗長バックアップを使用する: ペアになっているリージョンへのバックアップ レプリケーションが必要な場合に geo 冗長バックアップ ストレージを有効にし、リージョンの停止後に geo リストアする機能を有効にします。 詳細については、「Azure Database for MySQL - フレキシブル サーバーを使用したビジネス継続性の概要」を参照してください。
- リスクの高い変更の前にオンデマンド バックアップをトリガーする: スキーマの移行、主要な構成変更、またはメンテナンス操作の前にオンデマンド バックアップを作成し、最新の復元ポイントをサーバーのバックアップ保持ポリシーに合わせて維持します。 詳細については、「Azure ポータルを使用して Azure Database for MySQL - フレキシブル サーバー インスタンスのオンデマンド バックアップをトリガーする」を参照してください。
- 復元手順のテスト: 代表的なワークロードのポイントインタイム リストアと geo リストアの手順を検証して、復旧中に必要なサーバー設定、タグ、ネットワーク ルール、復元後のアクションを理解できるようにします。 詳細については、「Azure Database for MySQL でのバックアップと復元」を参照してください。