SQL Server は、アプリケーション、分析、およびレポートの重要なビジネス データを格納および管理するリレーショナル データベース管理システム (RDBMS) です。 多くの場合、顧客レコード、財務データ、知的財産などの機密情報が含まれているため、SQL Server のセキュリティ保護は、データ侵害、不正アクセス、コンプライアンス リスクから組織を保護するために不可欠です。
この記事では、SQL Server を最適にセキュリティで保護する方法に関するガイダンスを提供します。
ネットワークのセキュリティ
SQL Server へのネットワーク アクセスをセキュリティで保護することで、承認されていない接続を防ぎ、攻撃にさらされるリスクを軽減し、信頼できるソースのみがデータベースに到達できるようにします。
ファイアウォールと NSG を使用して受信トラフィックを制限する: データベース エンジン アクセス用に Windows ファイアウォールを構成して、SQL Server へのネットワーク アクセスを制限します。 Azure 仮想マシン (VM) の SQL Server の場合は、 Azure Firewall と ネットワーク セキュリティ グループ (NSG) を 使用してこれらの制限を適用します。
SQL Server への接続を暗号化する: 証明書を使用して接続を暗号化するように SQL Server データベース エンジンを構成します。 これにより、転送中のデータが傍受や改ざんから保護されます。 詳細については、「 SQL Server データベース エンジンへの接続を暗号化する」を参照してください。
セキュリティで保護されたリモート管理: すべてのリモート接続に暗号化されたプロトコル (TLS 1.3 など) を使用します。 詳細については、「 TLS 1.3 の構成」を参照してください。
厳密な暗号化を使用して SQL Server に接続する: SQL Server 2022 では、すべての接続で暗号化を使用する必要がある
strict暗号化オプションが導入されました。 これにより、転送中のすべてのデータが確実に保護されます。 詳細については、「 厳密な暗号化を使用した 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」を参照してください。
列レベルのアクセス許可を付与する: 承認されたユーザーにのみ
SELECT、REFERENCES、またはUPDATEのアクセス許可を付与することで、機密性の高い列へのアクセスを制限します。 詳細については、「 GRANT アクセス許可」を参照してください。Row-Level セキュリティ (RLS) を使用してデータ アクセスを制限する: RLS を実装して、ユーザーがそれらに関連するデータのみを表示できるようにします。 ユーザーが SQL アカウントを共有する中間層アプリケーションには、
SESSION_CONTEXTを使用します。 詳細については、「 Row-Level セキュリティ」を参照してください。セキュリティ機能を組み合わせて最大限の保護を実現する: Row-Level セキュリティと Always Encrypted または動的データ マスクを組み合わせて使用して、組織のセキュリティ体制を最大化します。 詳細については、「 Row-Level セキュリティのベスト プラクティス」を参照してください。
ログ記録と脅威の検出
包括的なログ記録と監視は、脅威の検出、インシデントの調査、コンプライアンス要件の満たすのに役立ちます。
SQL Server 監査を有効にして構成する: サーバーレベルとデータベース レベルの両方で、機密データと構成へのアクセスと変更を監査します。 セキュリティ対策が適用されている機密データを含むテーブルと列の監査を検討してください。 監査ログを定期的に確認します。特に、完全なセキュリティ対策が不可能な機密情報を含むテーブルについて確認します。 詳細については、「SQL Server Audit (データベース エンジン)」を参照してください。
SQL Server で台帳を使用する: 台帳で機密データに対する変更の不変レコードを作成し、改ざんが明らかなログ記録を提供できるようにします。 詳細については、台帳データベースの構成に関するページを参照してください。
バックアップと回復
信頼性の高いバックアップと回復プロセスにより、障害、災害、または攻撃によるデータの損失を防ぐことができます。
定期的なバックアップを自動化する: データベース、システム構成、トランザクション ログの自動バックアップをスケジュールします。 Azure Backup または SQL Server ネイティブ ツールを使用します。 詳細については、「 SSMS を使用した SQL Server データベースのバックアップと復元 」および 「Azure VM 上の SQL Server のバックアップと復元」を参照してください。
バックアップ データの暗号化: Transparent Data Encryption (TDE) を使用してバックアップ ファイルを保護します。
復旧手順を定期的にテストする: バックアップを定期的に復元して復旧プロセスを検証し、復旧時間とポイント目標を満たすことができることを確認します。 詳細については、「 VM バックアップからファイルを復元する」を参照してください。
セキュリティ評価と脅威の軽減
SQL Server 環境を定期的に評価することで、脆弱性を特定し、セキュリティ体制を向上させることができます。
有効な機能を制限して攻撃対象領域を減らす: 環境に必要な SQL Server 機能のみを有効にします。 詳細については、「攻撃面の構成」を参照してください。
脆弱性評価の実行: SQL のMicrosoft Defenderを通じて提供される SQL 脆弱性評価を使用して、クラウドとオンプレミスのリソース全体で潜在的なデータベースの脆弱性を検出して修復します。 詳細については、「SQL Serverの脆弱性評価」を参照してください。
機密データの分類とラベル付け: SQL データの検出と分類を使用して機密データを識別してラベル付けし、保護とコンプライアンスを強化します。 詳細については、「 SQL データの検出と分類」を参照してください。
一般的な脅威の確認と軽減: 入力の検証、修正プログラムの適用、アクセス制御に関する推奨プラクティスに従って、SQL インジェクション、サイドチャネル攻撃、ブルート フォース、パスワード スプレー、ランサムウェアから保護します。 詳細については、「 SQL インジェクション と ランサムウェア攻撃」を参照してください。
多層防御セキュリティを実装する: さまざまなセキュリティ スコープを対象とする複数のセキュリティ機能を使用して、さまざまな脅威に対する包括的な保護を提供します。 詳細については、「 SQL Server セキュリティのベスト プラクティス」を参照してください。