sql >> データベース >  >> RDS >> Sqlserver

13SQLServerのセキュリティのベストプラクティス

    データはすべての組織にとって重要な資産であり、セキュリティが不十分なデータベースは、セキュリティ違反のせいにすることがあまりにも頻繁です。この記事では、SQLサーバーのセキュリティのベストプラクティスと、データベースを悪意のある攻撃から保護するための重要なセキュリティの考慮事項について詳しく説明します。

    データセキュリティは、機密性、整合性、可用性(CIA)の3つの重要な柱で構成され、意図的および偶発的なアクセスからデータを保護するための特定のプロセスを扱います。現在使用されている最も人気のあるリレーショナルデータベースの1つであるSQLServerセキュリティに取り組む際に取るべきさまざまな領域と手順を分析してみましょう。

    SQLServerセキュリティのベストプラクティス

    1。 SQLServerの物理的なセキュリティを確保する

    SQL Serverのセキュリティに関しては、物理的なセキュリティを見逃すことはできません。物理的セキュリティとは、データセンターまたはその他の物理サーバーコンポーネントへの不正アクセスを制限することです。たとえば、スマートカード、指紋、または顔認識を使用して、アクセスが制限された施錠された部屋を実装できます。 SQLServerの制限付きネットワークセグメントを構成することもできます。

    データセンターには、ルーター、スイッチ、サーバー、ファイアウォール、ストレージデバイスなどの組織のインフラストラクチャが収容されています。物理的セキュリティは、ハードウェア、ソフトウェア、およびネットワークを不正アクセスや自然災害から保護することを目的としています。次の領域が関係する可能性があります。

    • 許可された個人のみが施設と設備にアクセスできるようにする
    • アクセス制御システムの保守
    • オンサイトの警備員またはCCTV監視を使用した24時間365日の警戒
    • 無停電電源装置(UPS)
    • 火災警報システムと吸引式煙探知システムを備えている
    • アクティブな漏水検知パネルを持っている
    • 齧歯類忌避システム
    • 消火システム
    • 温度と湿度の制御と監視
    • 定期的なハードウェアのメンテナンス

    2。オペレーティングシステムを保護する

    SQL Serverは、WindowsやLinuxなどの既存のオペレーティングシステムの上にインストールされます。したがって、オペレーティングシステムのセキュリティは、SQLServerのセキュリティにおいて重要な役割を果たします。以下は、オペレーティングシステムを保護するためのいくつかの推奨事項です。

    • 通常のオペレーティングシステムのセキュリティパッチとサービスパックを適用する
    • 下位環境にパッチを適用し、その後に本番パッチを適用するオペレーティングシステムのパッチ適用ポリシーを定義します
    • 常に安定したサポートされている製品のオペレーティングシステムバージョンを使用してください。たとえば、MicrosoftはWindows Server 2003のサポートを終了したため、データベースホスティングには使用しないでください。
    • データベースサーバーでインターネットアクセスを許可しないでください
    • 潜在的な攻撃の手段を減らすために、未使用のアプリケーションとドライブをアンインストール、停止、または無効にする必要があります
    • データベースサーバーへのアクセスが制限されたファイアウォールを実装して、データベースサーバーへのアクセスを必要とするアプリケーションサーバーのみがファイアウォールからのトラフィックの通過を許可されるようにします。
    • ファイアウォールで特定のポートを開きます。たとえば、デフォルトでは、SQL Serverはポート1433で実行されます。したがって、サーバーで他のアプリケーションが実行されていない場合は、リモートサーバーアクセスにTCPポート1433および3389を許可できます。同様に、分析サービスはデフォルトのポート2383を標準ポートとして使用します。 SQL Serverのポートの完全なリストについては、SQLServerで使用されるポートに関するこのドキュメントを参照してください。 SSLまたはTLS証明書を使用して、SQLServerへのアクセスを保護することもできます。これらの証明書は、SQLServerとクライアントアプリケーション間のデータ転送を暗号化できます。自己署名証明書または認証局(CA)によって発行された証明書には、SQLServerの構成が必要です。詳細については、「暗号化されたSQLServer接続を設定して使用する方法」の記事を参照してください。
    • [認証の拡張保護]オプションを利用して、サービスバインディングとチャネルバインディングを使用した認証リレー攻撃を防止します。拡張保護を有効にするには、SQL Server構成マネージャーに移動し、画面を展開して、[プロトコル]を右クリックし、[高度な拡張保護]に移動します。デフォルトでは、これはオフになっていることに注意してください。

    同様に、次のオプションを使用して、SQLServerへの暗号化された接続を強制できます。

    詳細については、拡張保護を参照することもできます。

    3。表面積を減らす

    SQL Serverの表面領域は、電子メールの送信などの追加機能を提供するデータベースエンジン機能で構成されています。これらのコンポーネントは、悪意のあるアクティビティのためにSQLServerにアクセスするための潜在的なターゲットになる可能性があります。したがって、潜在的な攻撃の可能性を制限するため、使用されていないSQLServerのコンポーネントと機能を無効にする必要があります。確認して無効にできる主なコンポーネントを以下に示します。

    • スタートアッププロシージャをスキャンする
    • OLEオートメーションの手順
    • CLRが有効
    • クロスDB所有権チェーン
    • xp_cmdshell
    • データベースメールXP

    サーバー構成オプションの詳細については、この記事を参照してください。

    4。別のポートでリッスンするようにサーバーを構成する

    Microsoft SQL Serverは、すべてのデータベース接続にデフォルトのポート1433を使用します。データベースの専門家は通常、デフォルトのポートを変更しないため、これは多くのデータベース環境で一般的なセキュリティリスクです。これはよく知られたポートであり、侵入者はこの機会を利用してSQLServerにアクセスできます。したがって、SQL Serverのセキュリティを強化するには、デフォルト以外のポートを使用する必要があります。これは、SQLServer構成マネージャーを使用して変更できます。

    5。 SQLServer認証を調整する

    データの保護は、特定のデータへのアクセスを認証する機能に依存します。 SQL Serverには、データベース認証用の2つのオプションがあります。

    • Windows認証
    • WindowsおよびSQL認証(混合モード)

    サーバー認証モデルを確認するには、SQL Serverインスタンスを右クリックして、[セキュリティ]に移動します。

    Windows認証では、認証にActiveDirectoryアカウントを使用します。パスワードの複雑さ、パスワードの有効期限、アカウントのロックアウト、およびActiveDirectory内のActiveDirectoryグループを一元的に管理できます。したがって、SQLServer認証の代わりにWindows認証を使用する必要があります。ここでは、ユーザーはWindowsアカウントを使用して接続し、SQLServerはWindowsプリンシパルトークンを使用して資格情報を検証します。認証にKerberosセキュリティプロトコルを使用します。詳細については、認証モードを参照してください。

    ただし、SQL Serverログインを使用する必要がある場合でも、以下で強調表示されているようにパスワードポリシーを適用できます。

    6。サービスアカウントの権限を忘れないでください

    SQL Servicesは、Windowsアカウントを使用してサービスを実行します。ネットワークサービスやローカルシステムなどの特権の高い組み込みアカウントは使用しないでください。同様に、ドメインサービスアカウントの場合は、役割に適した権限を割り当てる必要があります。

    したがって、SQL Serverサービスアカウントのアクセス許可の詳細については、Windowsサービスアカウントとアクセス許可の構成を参照することをお勧めします。

    7。 SQLServerのパッチを本番環境に適用する

    Microsoftは、既知の問題とセキュリティの問題を修正するために、通常のサービスパック(SQL Server 2016以前)と累積パック(SQL Server 2017以降)をリリースしています。したがって、本番インスタンスにSQLServerパッチを実装することを常に計画する必要があります。ただし、本番インスタンスにパッチを直接適用しないでください。常に最初にテスト環境に適用し、本番環境への導入を検証して計画します。

    Microsoft SQL Serverの最新の更新を参照して、最新のサービスパックと累積パックの詳細を確認できます。

    8。バックアップを保護する

    SQL Serverのセキュリティに関しては、バックアップを保護することが重要です。通常、データベースの専門家は、データベースのバックアップを保護するためのすべての要件を考慮しているわけではありません。データベースのバックアップは、データベースの動作状態、アーキテクチャ、および保存されたデータのコピーを作成するプロセスです。したがって、それを保護することも同様に重要です。これは、バックアップファイルへのアクセスを制限し、それらを適切に暗号化することを意味します。バックアップの保護に関しては、ここにいくつかの注意点があります。

    • バックアップファイルを作成、表示、変更、および削除するためのバックアップフォルダの権限をすべての人に付与しないでください
    • 暗号化を使用してデータベースのバックアップを使用します。詳細については、バックアップ暗号化に関するこの記事を参照してください

    9。 SQLServerの暗号化とデータマスキングの手法を忘れないでください

    SQL Serverのセキュリティの重要な領域は、暗号化です。さまざまな暗号化メカニズムを使用して、SQLServerデータベース内の機密データを保護できます。さまざまな暗号化オプションは次のとおりです。

    • 常に暗号化:常に暗号化された手法は、クライアントアプリケーション内の機密データを暗号化するのに役立ちます。常に暗号化が有効になっているドライバーは、クライアントアプリケーションの機密データを自動的に暗号化および復号化します。暗号化キーがSQLServerデータベースエンジンに公開されることはありません。機密データを保護します。
    • 透過的データ暗号化(TDE):TDEは保存されているデータを暗号化します。データファイル、ログファイル、バックアップファイルを保護するのに役立ちます。
    • 列レベルの暗号化:列レベルの暗号化は、クレジットカード番号や社会保障番号などの特定の列データを暗号化するのに役立ちます。
    • 静的データマスキング:静的データマスキングは、定義されたデータ変換ルールを使用して機密データを置き換えます。
    • 動的データマスキング:動的データマスキングは、機密データの公開を非特権ユーザーに制限するのに役立ちます。
    • 行レベルのセキュリティ:行レベルのセキュリティは、データ行へのアクセスを制限します。

    10。システム管理者のパスワードを複雑にする

    SQL認証を使用している場合は、sysadmin権限を持つログインSAが作成されます。 SQL Serverを保護するには、次の手順を実行します。

    • SAという名前のログインの名前を別の名前に変更します
    • アカウントを使用する予定がない場合は、アカウントを無効にしてください
    • 複雑なパスワードを使用する
    • アプリケーションが接続文字列でSAアカウントを使用することを許可しない

    11。データベースログインの監査

    SQL Serverのセキュリティに関しては、監査は見過ごされがちです。ログインに失敗した場合は、SQLServerの定期的な監査を行う必要があります。アカウントを確認するには、デフォルトのログイン監査メカニズムを使用できます。たとえば、任意のユーザーが高い特権アカウントでSQLServerに接続しようとしているとします。その場合、ログインの失敗と着信要求(クライアント)のIPアドレスを確認できます。これは、疑わしいアクティビティをキャプチャして排除するのに役立ちます。

    SQL Server監査には、拡張イベント、SQLトレース、変更データキャプチャ、トリガー(DDL、DML、またはログオン)、データベースまたはサーバーレベルの監査仕様を使用できます。

    12。サーバーレベルとデータベースのアクセス許可に注意してください

    データベースの専門家は、サーバーレベルまたはデータベースレベルのアクセス許可を割り当てるときに注意する必要があります。開発者がサーバーレベルでsysadminを取得したり、データベースレベルでデータベース所有者の権限を取得したりすることがあります。これらは、ユーザーがインスタンスレベルまたはデータベースレベルでそれぞれ持つことができる最高の権限です。

    • 固定サーバーレベルの役割とその機能を理解するには、固定サーバーレベルの役割を参照してください。
    • 固定データベースレベルの役割をよりよく理解するには、データベースレベルの役割を参照してください。

    13。 SQLServerブラウザサービスをオフにします

    SQL Serverは、指定されたインスタンスにブラウザーサービスを使用します。 SQLServer接続のすべての着信要求をリッスンします。 UDPポート1434を使用し、SQLServerへの接続に必要なTCP/IPポート番号で要求に応答します。したがって、ブラウザサービスをオフにして、アプリケーション文字列でポート番号を明示的に定義できます。これにより、ポート番号が着信接続要求にさらされるのを防ぎ、SQLServerのセキュリティに役立ちます。

    SQL Serverブラウザサービスをよりよく理解するには、SQLServerブラウザの仕組みに関する記事を参照してください。

    SQLServerのセキュリティに関するその他の考慮事項

    概説したように、SQL Serverのセキュリティは、さまざまな要素と手順を伴う継続的なプロセスです。 SQL Serverインスタンス、セキュリティポリシーを定期的に再確認し、オペレーティングシステムレベルとSQLServerレベルの両方で定期的に更新する必要があります。これらのベストプラクティスを定期的に適用することで、ビジネスのためのより安全で中断のないデータベースサービスの作成に役立ちます。


    1. MSAccess呼び出しSQLServerストアドプロシージャ

    2. 解析日後のOracleSelectステートメントからの戻り番号

    3. PHPでSQLServerに接続できません

    4. PDO ::__ Construct():サーバーがクライアントに不明な文字セット(255)を送信しました。開発者に報告してください