適用対象:Azure SQL Managed Instance
Azure SQL Managed Instanceは、サービスとしてのフル マネージド プラットフォーム (PaaS) データベース エンジンであり、最新のSQL Server Database Engineとの互換性を約 100% 提供します。 SQL Serverの長所と、フル マネージド サービスの運用上の利点が組み合わせられます。 顧客レコード、財務情報、知的財産などの重要なビジネス データが格納されることが多いため、データ侵害、不正アクセス、コンプライアンス違反から保護するには、SQL Managed Instanceのセキュリティ保護が不可欠です。
この記事では、Azure SQL Managed Instance展開を最適にセキュリティで保護する方法に関するガイダンスを提供します。
ネットワークのセキュリティ
SQL Managed Instanceのネットワーク セキュリティは、不正な接続を防ぎ、攻撃にさらされるリスクを軽減し、適切なネットワーク分離とアクセス制御を通じて信頼できるソースのみがデータベースに到達できるようにします。
専用仮想ネットワークにデプロイする: マネージド インスタンスを仮想ネットワーク内の専用サブネットに配置して、ネットワークの分離とトラフィック フローの制御を実現します。 これにより、データベースが他のリソースから分離され、ネットワーク境界によって保護されます。 詳細については、「 仮想ネットワークの要件」を参照してください。
ネットワーク セキュリティ グループ (NSG) の構成: NSG を SQL マネージド インスタンス サブネットに適用して、受信トラフィックと送信トラフィックを制御します。 攻撃対象領域を最小限に抑えるために、必要なポートとソースのみにアクセスを制限します。 詳細については、「 ネットワーク セキュリティ グループ」を参照してください。
可能な場合はプライベート エンドポイントを使用します。プライベート IP アドレス経由で SQL マネージド インスタンスに接続して、データベースがパブリック インターネットに公開されないようにします。 プライベート接続により、外部攻撃やデータ流出のリスクが軽減されます。 詳細については、「 プライベート エンドポイント接続」を参照してください。
既定でパブリック エンドポイントを無効にする: アーキテクチャに絶対に必要な場合にのみパブリック エンドポイントを有効にします。 有効にした場合は、厳密なファイアウォール規則を使用して、承認された IP アドレスのみにアクセスを制限します。 詳細については、「 パブリック エンドポイントの概要」を参照してください。
ハイブリッド接続のための ExpressRoute または VPN の実装: オンプレミス ネットワークとAzure間のセキュリティで保護されたプライベート接続には、Azure ExpressRouteまたはサイト間 VPN を使用します。 これにより、データがパブリック インターネットを経由しないようにします。 詳細については、「 接続アーキテクチャ」を参照してください。
接続暗号化を有効にする: 転送中の暗号化を使用するようにすべてのクライアント接続を構成します。 SQL Managed Instanceでは TLS 1.2 が既定でサポートされており、クライアントとデータベース間の移動中にデータが確実に保護されます。 TLS 1.3 は、SQL Managed Instanceでも使用できます。 詳細については、「 接続のセキュリティ」を参照してください。
ID 管理
強力な ID と認証の制御により、承認されたユーザーとアプリケーションのみがSQL Managed Instance リソースにアクセスでき、一元化された ID 管理とアカウント ライフサイクル制御が容易になります。
Microsoft Entra管理者の構成: 一元化された ID 管理と高度なセキュリティ機能を有効にするために、SQL マネージド インスタンスのMicrosoft Entra管理者を指定します。 この管理者は、アクセス ポリシーと認証ポリシーを管理できます。 詳細については、「Microsoft Entra admin」を参照してください。
Microsoft Entra認証を使用する: 一元化された ID 管理とアカウント ライフサイクル制御を容易にするために、SQL 認証よりもMicrosoft Entra認証を優先します。 Microsoft Entra IDは優れたセキュリティを提供し、条件付きアクセスなどの高度な機能を有効にします。 詳細については、「認証の構成Microsoft Entraを参照してください。
包含データベース ユーザーの作成: 可能な場合は、サーバー レベルのログインではなく、Microsoft Entra グループにマップする包含データベース ユーザーを使用します。 これにより、サーバー レベルのアクセスが不要になり、アクセス許可の管理が簡素化され、セキュリティが向上します。 詳細については、「包含データベースを使用してデータベースの可搬性を確保する」を参照してください。
多要素認証を有効にする: パスワードを超えるセキュリティレイヤーを追加するには、管理アカウントと特権ユーザーに多要素認証が必要です。 詳細については、「 多要素認証 (MFA)」を参照してください。
アプリケーションのマネージド ID を使用する: Azure リソースのマネージド ID を有効にして、資格情報を格納せずにアプリケーションを認証できるようにします。 これにより、パスワードが埋め込まれた接続文字列を管理する必要がなくなります。 詳細については、「 Azure リソースの管理 ID」を参照してください。
強力なパスワード ポリシーを適用する: SQL 認証を使用する場合は、簡単に推測できない複雑なパスワードが必要です。 パスワード ローテーション ポリシーを実装し、異なるアカウント間でパスワードを再利用しないようにします。 詳細については、「 パスワード ポリシー」を参照してください。
特権アクセス
特権アクセスを制御することで、承認されていない変更を防ぎ、侵害されたアカウントの影響を軽減し、管理アクションが適切に監視および制御されるようにします。
最小限の特権アクセスを実装する: ジョブ機能を実行するために必要な最小限のアクセス許可のみをユーザーに付与します。 最小限の特権の原則を維持するために、アクセス許可を定期的に確認して調整します。 詳細については、「 データベース エンジンのアクセス許可の概要」を参照してください。
個別の管理ロール: すべてのデータベース管理者に管理者権限を付与しないようにします。 可能な場合は CONTROL SERVER などのより詳細なアクセス許可を使用し、さまざまな管理機能間で職務の分離を実装します。 詳細については、「アクセス許可」を参照してください。
ロールベースのアクセス制御 (RBAC)Azure使用: AZURE RBAC を実装して、SQL マネージド インスタンス管理操作へのアクセスを制御します。 特定の管理タスクに必要なアクセス許可のみを提供するカスタム ロールを作成します。 詳細については、Azure RBAC for SQL Managed Instance を参照してください。
特権アクティビティの監視: 監査を有効にして、特権アカウントによって実行されたすべてのアクションを追跡します。 疑わしいアクティビティや未承認の変更がないか、監査ログを定期的に確認します。 詳細については、「SQL Server audit in Azure SQL Managed Instance」を参照してください。
データベース レベルのアクセスにサーバー ロールを使用する: 組み込みのサーバー ロールを利用し、ロールベースのセキュリティを実装するためのカスタム ロールを作成します。 個々のアクセス許可を付与するのではなく、ロールにユーザーを割り当てて、管理を簡素化し、エラーを減らします。 詳しくは、「サーバー レベルのロール」を参照してください。
データ保護
データ保護は、暗号化、アクセス制御、およびデータ分類を通じて情報を保護し、機密情報の不正な開示、改ざん、または損失を防ぎます。
Enable Transparent Data Encryption (TDE): TDE を使用して、保存中のデータベース、ログ、およびバックアップ ファイルを暗号化します。 暗号化キーをさらに制御するために、Azure Key Vaultでカスタマー マネージド キーを使用することを検討してください。 詳細については、「Transparent Data Encryption」を参照してください。
機密データに対して Always Encrypted を実装する: Always Encrypted を使用して、使用中、保存中、転送中の機密性の高いデータを保護します。 これにより、データベース管理者でも機密データをプレーンテキストで表示できなくなります。 詳細については、「 Always Encrypted」を参照してください。
SQL Managed Instance : 台帳で機密データに対する変更の不変レコードを作成し、改ざんを防止するログを提供できるようにします。 詳細については、 台帳の概要を参照してください。動的データ マスクの使用: アプリケーションのデータ機能を維持しながら、特権のないユーザーの機密データを難読化するために動的データ マスクを適用します。 これは、機密情報への不正アクセスを防ぐのに役立ちます。 詳細については、「 動的データ マスク」を参照してください。
機密データの分類とラベル付け: SQL データの検出と分類を使用して、データベース内の機密データを識別、分類、ラベル付けします。 これにより、保護とコンプライアンスレポートが向上します。 詳細については、「 データの検出と分類」を参照してください。
列レベルのセキュリティを実装する: 列レベルでアクセス許可を付与して、機密データへのアクセスを制限します。 機密性の高い列へのアクセスが特に必要なユーザーにのみ、SELECT、UPDATE、または REFERENCES のアクセス許可を付与します。 詳細については、「 データの列を暗号化する」を参照してください。
Row-Level セキュリティ (RLS) を使用する: RLS を実装して、ユーザーがそれらに関連するデータ行にのみアクセスできるようにします。 これにより、アプリケーションレベルのセキュリティが提供され、アプリケーションを大幅に変更する必要はありません。 詳細については、「 Row-Level セキュリティ」を参照してください。
バックアップと回復
信頼性の高いバックアップと復旧プロセスにより、障害、災害、または攻撃によるデータの損失を防ぎ、復旧時間とポイント目標を確実に満たすことができます。
自動バックアップ構成を確認する: 自動バックアップが適切に構成され、保有期間がビジネス要件を満たしていることを確認します。 Azure SQL Managed Instanceでは、既定で自動バックアップが提供され、構成可能な保持期間は最大 35 日間です。 バックアップ ストレージはインスタンス ストレージから独立しており、サイズに制限はありません。 詳細については、「 自動バックアップ」を参照してください。
バックアップ アクティビティの監視: SQL マネージド インスタンスで自動バックアップが実行されたタイミングを追跡して、バックアップ操作が正常に完了していることを確認します。 詳細については、「 バックアップ アクティビティの監視」を参照してください。
geo 冗長バックアップ ストレージを使用する: 地域の災害から保護するために、バックアップ用に geo 冗長ストレージを構成します。 これにより、プライマリ リージョンが使用できなくなった場合でも、データを確実に復旧できます。 詳細については、「 バックアップ ストレージの冗長性」を参照してください。
バックアップと復元の手順をテストする: バックアップと復元の手順を定期的にテストして、それらが正しく動作し、目標復旧時間を満たしていることを確認します。 復元されたデータベースが完全に機能し、データの整合性が維持されていることを検証します。 詳細については、「 ポイントインタイム リストア」を参照してください。
ネイティブ バックアップと復元の機能を使用する: 移行シナリオでは、ネイティブ バックアップとAzure Blob Storageからの復元を利用します。 コピーのみの完全バックアップを作成し、.bak ファイルから復元できます (SQL Server 2005 以降)。 データベースがサービスで管理される TDE によって暗号化されている場合、コピーのみのバックアップは実行できません。 詳細については、「URL からのネイティブ復元」を参照してください。
長期保有ポリシーを実装する: 既定の保持期間を超えるコンプライアンス要件に対して、長期的なバックアップ保有期間を構成します。 これにより、データ保持に関する規制要件を満たすことができます。 詳細については、「 長期バックアップリテンション期間」を参照してください。
監視と脅威の検出
包括的な監視と脅威検出は、セキュリティの問題を特定し、異常なアクティビティを検出し、SQL マネージド インスタンスに対する潜在的な脅威に迅速に対応するのに役立ちます。
Microsoft Defender for SQL を有効にする: データベースへの異常かつ有害なアクセス試行を検出するように Microsoft Defender for SQL を構成します。 これにより、脆弱性評価や脅威検出などの高度な脅威保護機能が提供されます。 詳細については、SQL のMicrosoft Defenderを参照してください。
構成Advanced Threat Protection: 潜在的な SQL インジェクション、異常な場所やデータ センターからのアクセス、未知のプリンシパルからのアクセス、ブルート フォース SQL 資格情報などの特定の脅威を検出するAdvanced Threat Protectionを設定します。 脅威アラートの電子メール通知とストレージ アカウントを構成します。 詳細については、「Configure Advanced Threat Protection」を参照してください。
構成 SQL 監査: 包括的な監査を有効にして、データベース イベントを追跡し、Azure Storage、Log Analytics、または Event Hubs に書き込みます。 これにより、セキュリティ分析とコンプライアンス レポートの詳細なログが提供されます。 詳細については、「SQL Server audit in Azure SQL Managed Instance」を参照してください。
Azure Monitor : Azure Monitorを使用してプラットフォーム メトリック、診断ログを収集し、SQL マネージド インスタンスのカスタム アラートを作成します。 リソース消費量、パフォーマンス メトリック、セキュリティ イベントを一元的な場所で監視します。 詳細については、「Monitor Azure SQL Managed Instanceを参照してください。メトリック アラートの作成: 疑わしいアクティビティ、ログイン試行の失敗、通常とは異なるデータベース アクセス パターン、およびリソース消費のしきい値に対するアラートを設定します。 アラート メトリックは、個々のデータベースではなく、SQL マネージド インスタンス レベルで使用できます。 詳細については、「
SQL Managed Instance を参照してください。SQL 脆弱性評価を使用する: 定期的な脆弱性評価を実行して、データベースのセキュリティ構成の誤りと潜在的な脆弱性を特定します。 特定された問題を迅速に修復して、強力なセキュリティ体制を維持します。 詳細については、「 SQL 脆弱性評価」を参照してください。
動的管理ビュー (DMV) を使用した監視: DMV を使用してパフォーマンスを監視し、ブロックされたクエリ、リソースのボトルネック、およびセキュリティ関連のアクティビティを検出します。 DMV は、データベース エンジンの操作とセキュリティ イベントに関する詳細な分析情報を提供します。 詳細については、動的管理ビューを使用した Monitor Azure SQL Managed Instance パフォーマンスを参照してください。
監視Query Storeの実装: Query Storeを有効にして、時間の経過と共にクエリのパフォーマンスを追跡し、パフォーマンスの低下を特定し、クエリ実行パターンを監視します。 これは、セキュリティの問題を示す可能性のある異常なクエリ動作を検出するのに役立ちます。 詳細については、「Query Store を使用した
Monitor のパフォーマンス」を参照してください。 拡張イベントを使用して詳細な監視を行う: セキュリティ イベントやパフォーマンスの問題など、データベース アクティビティのオーバーヘッドが少ない詳細な監視のために拡張イベント (XEvents) を実装します。 XEvent は、パフォーマンスへの影響が少ない SQL Profiler よりも詳細な監視を提供します。 詳細については、拡張イベントに関する記事を参照してください。
Database Watcher (プレビュー)を設定する: 一元化されたダッシュボードとAzure SQL資産全体の詳細なパフォーマンス分析情報を使用して、詳細なワークロード監視に Database watcher を使用することを検討してください。 詳細については、「Monitor Azure SQL ワークロードとデータベース ウォッチャー (プレビュー)」を参照>。
コンプライアンスとガバナンス
コンプライアンスとガバナンスを維持することで、適切な制御とドキュメントを通じて、SQL Managed Instance展開が規制要件と組織のセキュリティ ポリシーを確実に満たすことができます。
ガバナンスのアプリケーションAzure Policy: Azure Policyを使用して組織のセキュリティ標準を適用し、すべての SQL マネージド インスタンスで一貫した構成を確保します。 特定のコンプライアンス要件のカスタム ポリシーを作成します。 Microsoft Entraのみの認証、バックアップ ストレージの冗長性、データ所在地の要件を適用するためのポリシーを検討してください。 詳細については、SQL Managed Instance 用 Azure Policy を参照してください。
Enforce Microsoft Entra専用認証: Azure Policyを使用して、新しい SQL マネージド インスタンスに対してMicrosoft Entraのみの認証を要求し、セキュリティ強化のために SQL 認証が無効になっていることを確認します。 これにより、ID 管理が一元化され、パスワードベースの認証の脆弱性が排除されます。 詳細については、「Azure Policyを使用してMicrosoft Entra専用認証を適用するを参照してください。
リソースタグ付け戦略: 一貫性のあるAzureタグを適用して、リソースの所有権、環境分類、コスト センター、コンプライアンス要件を特定します。 タグを使用して、自動化されたガバナンス、コスト追跡、およびリソース管理を行います。 詳細については、「Azure リソースの名前付けおよびタグ付け戦略を開発するを参照してください。
データ ガバナンスのためのLeverage Microsoft Purview: データの分類、系列の追跡、データ資産全体の統合されたデータ ガバナンスのMicrosoft Purviewと統合します。 機密ラベルとデータ損失防止ポリシーを使用して、分類されたデータを保護します。 詳細については、「Microsoft Purview Information Protectionを参照してください。
セキュリティ手順を文書化する: セキュリティ手順、インシデント対応計画、アクセス制御ポリシーの包括的なドキュメントを保持します。 現在のプラクティスとコンプライアンス要件を反映するように、ドキュメントを定期的に確認して更新します。 詳細については、「セキュリティの ベスト プラクティス」を参照してください。
定期的なセキュリティ評価の実施: 定期的なセキュリティ評価を実行して、セキュリティ体制を評価し、改善のための領域を特定します。 侵入テストと脆弱性評価をセキュリティ プログラムに含めます。 コンプライアンス レポートの修復作業を文書化します。 詳細については、「 SQL 脆弱性評価」を参照してください。
監査証跡を維持する: すべての管理アクションとデータ アクセスが正しくログに記録され、監査証跡が必要な保持期間にわたって維持されるようにします。 監査ログを改ざんや未承認のアクセスから保護します。 規制要件 (SOX、PCI DSS) に基づいて監査ログの保持を構成します。 詳細については、「 監査の概要」を参照してください。
Meet 規制コンプライアンス標準: Azure SQL Managed Instanceは、ISO 27001、PCI DSS、FedRAMP、SOX などのさまざまな規制フレームワークへの準拠をサポートします。 業界の要件に固有のコントロールを確認して実装します。 詳細については、Azureコンプライアンスドキュメントを参照してください。
リソース ロックを使用する: リソース ロックを適用して、重要な SQL マネージド インスタンス リソースを誤って削除または変更しないようにします。 これにより、構成の整合性を維持し、コンプライアンスに影響を与える可能性のある未承認の変更を防ぐことができます。 詳細については、「 リソース ロック」を参照してください。
Monitor with Azure Advisor: Azure Advisorを使用して、セキュリティ、コストの最適化、パフォーマンス、オペレーショナル エクセレンスに関するパーソナライズされた推奨事項を受け取ります。 ベスト プラクティスを維持するために、アドバイザーの推奨事項を定期的に確認して実装します。 詳細については、「Azure Advisorを参照してください。
関連コンテンツ
包括的なセキュリティ ガイダンスについては、Azure SQL Managed Instance セキュリティのベスト プラクティスおよびAzure SQL Managed Instanceセキュリティ機能の概要を参照してください。