SQL Server をセキュリティで保護する

SQL Server は、アプリケーション、分析、およびレポートの重要なビジネス データを格納および管理するリレーショナル データベース管理システム (RDBMS) です。 多くの場合、顧客レコード、財務データ、知的財産などの機密情報が含まれているため、SQL Server のセキュリティ保護は、データ侵害、不正アクセス、コンプライアンス リスクから組織を保護するために不可欠です。

この記事では、SQL Server を最適にセキュリティで保護する方法に関するガイダンスを提供します。

ネットワークのセキュリティ

SQL Server へのネットワーク アクセスをセキュリティで保護することで、承認されていない接続を防ぎ、攻撃にさらされるリスクを軽減し、信頼できるソースのみがデータベースに到達できるようにします。

ID 管理

強力な ID と認証の制御は、承認されたユーザーとアプリケーションのみが SQL Server リソースにアクセスできるようにするのに役立ちます。

  • Windows 認証または Microsoft Entra 認証を使用する: 一元化された ID 管理とアカウント ライフサイクル制御を容易にするために、SQL 認証よりも Windows 認証または Microsoft Entra 認証を優先します。 詳細については、「認証モードの選択」を参照してください。

  • サービスにグループ管理サービス アカウント (gMSA) を使用する: gMSA を使用して、サービス アカウントの資格情報を自動的かつ安全に管理します。 詳細については、「 Group-Managed サービス アカウントの概要」を参照してください。

  • 強力なパスワード ポリシーを適用する: SQL 認証を使用している場合は、簡単に推測できない複雑なパスワードが必要であり、他のアカウントでは使用されません。 定期的にパスワードを更新し、Active Directory ポリシーを適用します。 詳細については、「 強力なパスワード」を参照してください。

  • 必要に応じて包含データベース ユーザーを使用する: サーバー レベルのログインを必要とせずにデータベース レベルの認証を必要とするアプリケーションの包含データベース ユーザーを検討してください。 詳細については、「 包含データベース ユーザー」を参照してください。

特権アクセス

特権アクセスの制限と監視は、承認されていない変更を防ぎ、侵害されたアカウントの影響を軽減するのに役立ちます。

  • 必要な最小限のアクセス許可を付与する: 各ユーザーまたはサービスに必要な最小レベルの特権を割り当てます。 最小限の特権を維持するために、アクセス許可を定期的に確認して調整します。 詳細については、「 データベース エンジンのアクセス許可の概要」を参照してください。

  • データベース管理者 (DBA) ロールと sysadmin ロールを分離する: すべての DBA に sysadmin 権限を付与しないようにします。 CONTROL SERVER 権限は、 DENY のアクセス許可を尊重し、より詳細な制御が可能であるため、可能な限り使用します。 仮想マシンへのアクセスを制限する職務、オペレーティング システムにログインする機能、エラーログと監査ログを変更する機能、アプリケーションや機能をインストールする機能を分離することを検討してください。 詳細については、「 権限 (データベース エンジン)」を参照してください。

  • 特権アクティビティの監視と監査: 監査を有効にして、特権アカウントによって行われた変更を追跡し、疑わしいアクティビティについてログを定期的に確認します。 詳細については、「SQL Server Audit (データベース エンジン)」を参照してください。

  • 役割の分離を実装する: Active Directory ユーザーを AD グループに配置し、AD グループを SQL Server ロールにマップし、SQL Server ロールにアプリケーションで必要な最小限のアクセス許可を付与します。 詳細については、「 データベース エンジンのアクセス許可の概要」を参照してください。

データ保護

無許可の開示や改ざんを防ぐためには、保存中および転送中のデータを保護することが重要です。

  • Always Encrypted を使用して機密情報を暗号化する: セキュリティで保護されたエンクレーブで Always Encrypted と Always Encrypted を使用して、SQL Server の機密データを保護します。 セキュリティを強化するためにランダム化された暗号化を優先します。 詳細については、「 Always Encrypted」を参照してください。

  • データベース ファイルに Transparent Data Encryption (TDE) を使用する: TDE でデータベース、バックアップ、tempdb ファイルを暗号化し、物理メディアが侵害された場合にデータを保護します。 詳細については、「Transparent Data Encryption (TDE)」を参照してください。

  • 動的データ マスク (DDM) を使用して機密データをマスクする: 暗号化できない場合は、DDM を使用してクエリ結果の機密データを難読化します。 詳細については、「 Dynamic Data Masking」を参照してください。

  • 列レベルのアクセス許可を付与する: 承認されたユーザーにのみ SELECTREFERENCES、または UPDATE のアクセス許可を付与することで、機密性の高い列へのアクセスを制限します。 詳細については、「 GRANT アクセス許可」を参照してください。

  • Row-Level セキュリティ (RLS) を使用してデータ アクセスを制限する: RLS を実装して、ユーザーがそれらに関連するデータのみを表示できるようにします。 ユーザーが SQL アカウントを共有する中間層アプリケーションには、 SESSION_CONTEXT を使用します。 詳細については、「 Row-Level セキュリティ」を参照してください。

  • セキュリティ機能を組み合わせて最大限の保護を実現する: Row-Level セキュリティと Always Encrypted または動的データ マスクを組み合わせて使用して、組織のセキュリティ体制を最大化します。 詳細については、「 Row-Level セキュリティのベスト プラクティス」を参照してください。

ログ記録と脅威の検出

包括的なログ記録と監視は、脅威の検出、インシデントの調査、コンプライアンス要件の満たすのに役立ちます。

  • SQL Server 監査を有効にして構成する: サーバーレベルとデータベース レベルの両方で、機密データと構成へのアクセスと変更を監査します。 セキュリティ対策が適用されている機密データを含むテーブルと列の監査を検討してください。 監査ログを定期的に確認します。特に、完全なセキュリティ対策が不可能な機密情報を含むテーブルについて確認します。 詳細については、「SQL Server Audit (データベース エンジン)」を参照してください。

  • SQL Server で台帳を使用する: 台帳で機密データに対する変更の不変レコードを作成し、改ざんが明らかなログ記録を提供できるようにします。 詳細については、台帳データベースの構成に関するページを参照してください。

バックアップと回復

信頼性の高いバックアップと回復プロセスにより、障害、災害、または攻撃によるデータの損失を防ぐことができます。

セキュリティ評価と脅威の軽減

SQL Server 環境を定期的に評価することで、脆弱性を特定し、セキュリティ体制を向上させることができます。

  • 有効な機能を制限して攻撃対象領域を減らす: 環境に必要な SQL Server 機能のみを有効にします。 詳細については、「攻撃面の構成」を参照してください。

  • 脆弱性評価の実行: SQL のMicrosoft Defenderを通じて提供される SQL 脆弱性評価を使用して、クラウドとオンプレミスのリソース全体で潜在的なデータベースの脆弱性を検出して修復します。 詳細については、「SQL Serverの脆弱性評価」を参照してください。

  • 機密データの分類とラベル付け: SQL データの検出と分類を使用して機密データを識別してラベル付けし、保護とコンプライアンスを強化します。 詳細については、「 SQL データの検出と分類」を参照してください。

  • 一般的な脅威の確認と軽減: 入力の検証、修正プログラムの適用、アクセス制御に関する推奨プラクティスに従って、SQL インジェクション、サイドチャネル攻撃、ブルート フォース、パスワード スプレー、ランサムウェアから保護します。 詳細については、「 SQL インジェクションランサムウェア攻撃」を参照してください。

  • 多層防御セキュリティを実装する: さまざまなセキュリティ スコープを対象とする複数のセキュリティ機能を使用して、さまざまな脅威に対する包括的な保護を提供します。 詳細については、「 SQL Server セキュリティのベスト プラクティス」を参照してください