この記事では、セキュリティの脆弱性にフラグを付け、ベスト プラクティスからの逸脱 (構成の不備、過剰なアクセス許可など) がはっきりわかるようにするために使用される、一連の組み込みルールの一覧を示します。 規則は Microsoft のベスト プラクティスに基づき、データベースとその貴重なデータにとって最も大きなリスクとなるセキュリティの問題に注目します。 これらのルールは、データベース レベルの問題だけでなく、サーバーのファイアウォール設定やサーバー レベルの権限など、サーバー レベルのセキュリティ問題もカバーしたものとなっています。 これらのルールでは、さまざまな規制機関の数多くのコンプライアンス基準を満たすための要件も示しています。
適用対象: Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Server (サポートされているすべてのバージョン)
データベース スキャンで示されるルールは、スキャンされた SQL のバージョンとプラットフォームによって異なります。
Azure に脆弱性評価を実装する方法の詳細については、「脆弱性評価を実装する」を参照してください。
これらのルールに対する変更の一覧については、「SQL 脆弱性評価ルールの変更ログ」を参照してください。
ルール カテゴリ
SQL 脆弱性評価ルールには、次のセクションに示す 5 つのカテゴリがあります。
1 SQL Server 2012+ は、SQL Server 2012 およびそれ以降のすべてのバージョンを示します。
2 SQL Server 2017+ は、SQL Server 2017 およびそれ以降のすべてのバージョンを示します。
3 SQL Server 2016+ は、SQL Server 2016 およびそれ以降のすべてのバージョンを示します。
認証と承認
ルールの ID | ルールのタイトル | ルールの重大度 | ルールの説明 | プラットフォーム |
---|---|---|---|---|
VA1017 | すべてのユーザー (dbo を除く) からの xp_cmdshell に対する実行アクセス許可を取り消す必要があります | 高 | xp_cmdshell 拡張ストアド プロシージャを使用すると、Windows コマンド シェルが生成され、実行用の文字列が渡されます。 このルールは、xp_cmdshell の拡張ストアド プロシージャを実行する権限を持つユーザー (sysadmin サーバー ロールのメンバーのような CONTROL SERVER 権限を持つユーザーを除く) がいないことを確認します。 | |
VA1020 | データベース ユーザー GUEST は、どのロールのメンバーにすることもできません | 高 | ゲスト ユーザーは、特定のデータベース ユーザーにマップされていないあらゆるログインで、データベースへのアクセスを許可します。 このルールでは、ゲスト ユーザーにデータベース ロールが割り当てられていないことが確認されます。 | SQL Database |
VA1042 | master 、msdb 、tempdb を除くすべてのデータベースで、データベース所有権の継承が無効にされている必要があります |
高 | 複数データベース間の所有権の継承は、データベースの境界を越えることを除き、所有権の継承の拡張です。 このルールでは、master 、msdb 、tempdb を除くすべてのデータベースで、このオプションが無効になっていることが確認されます。 master 、msdb 、tempdb の場合、複数データベース間の所有権の継承は既定で有効になります。 |
SQL Managed Instance |
VA1043 | プリンシパル GUEST は、すべてのユーザー データベースへのアクセス権がありません | Medium | ゲスト ユーザーは、特定のデータベース ユーザーにマップされていないあらゆるログインで、データベースへのアクセスを許可します。 このルールでは、ゲスト ユーザーがどのデータベースにも接続できないことが確認されます。 | SQL Managed Instance |
VA1046 | すべての SQL ログインで CHECK_POLICY を有効にする必要があります | 低 | CHECK_POLICY オプションを指定すると、ドメイン ポリシーに対する SQL ログインの検証が有効になります。 このルールでは、すべての SQL ログインで CHECK_POLICY オプションが有効になっていることが確認されます。 | SQL Managed Instance |
VA1047 | すべての SQL ログインでパスワードの有効期限のチェックが有効になっている必要があります | 低 | パスワードの有効期限のポリシーは、パスワードの寿命を管理します。 SQL Server でパスワードの有効期限が適用されている場合、ユーザーは古いパスワードを変更するよう通知され、有効期限が切れたパスワードを持つアカウントは無効になります。 このルールでは、すべての SQL ログインでパスワード有効期限ポリシーが有効になっていることが確認されます。 | SQL Managed Instance |
VA1048 | データベース プリンシパルは sa アカウントにマップしないでください |
高 | sa アカウントにマップされているデータベース プリンシパルは、攻撃者によって sysadmin に対するアクセス許可の昇格に悪用される可能性があります |
SQL Managed Instance |
VA1052 | サーバー ログインとしての BUILTIN\Administrators を削除します | 低 | BUILTIN\Administrators グループには、Windows ローカル管理者グループが含まれています。 以前のバージョンの Microsoft SQL Server では、このグループには既定で管理者権限があります。 このルールでは、SQL Server からこのグループが削除されていることが確認されます。 | |
VA1053 | 既定の名前 sa を持つアカウントは、名前を変更するか、無効にする必要があります |
低 | sa は、プリンシパル ID が 1 のよく知られたアカウントです。 このルールでは、sa アカウントが名前を変更されているか、無効になっていることが確認されます。 |
SQL Managed Instance |
VA1054 | オブジェクトまたは列の PUBLIC ロールに対して必要以上のアクセス許可を付与しないでください | 低 | すべての SQL Server ログインは、PUBLIC サーバー ロールに属しています。 サーバー プリンシパルにセキュリティ保護可能なオブジェクトに対する特定のアクセス許可が与えられていないか、またはアクセス許可が拒否されている場合、そのユーザーは、そのオブジェクトに対して PUBLIC に対して付与されているアクセス許可を継承します。 このルールでは、すべてのユーザーが PUBLIC ロールを介してアクセスできる、セキュリティ保護可能なすべてのオブジェクトまたは列の一覧が表示されます。 | SQL Database |
VA1058 | sa ログインは無効にする必要があります |
高 | sa は、プリンシパル ID が 1 のよく知られたアカウントです。 このルールでは、sa アカウントが無効にされていることが確認されます。 |
SQL Managed Instance |
VA1059 | xp_cmdshell を無効にする必要があります | 高 | xp_cmdshell では、Windows のコマンド シェルが起動されて、実行用の文字列が渡されます。 このルールでは、xp_cmdshell が無効になっていることが確認されます。 | SQL Managed Instance |
VA1067 | データベース メール XP は、使用していない間は無効にする必要があります | 中 | このルールでは、データベース メール プロファイルが構成されていない場合に、データベース メールが無効になっているかどうかが確認されます。 データベース メールは、SQL Server データベース エンジンから電子メール メッセージを送信する場合に使用でき、既定では無効になっています。 この機能を使用していない場合は、この機能を無効にして、外部からのアクセスを減らすことをお勧めします。 | |
VA1068 | サーバーのアクセス許可をプリンシパルに直接付与しないでください | 低 | サーバー レベルのアクセス許可は、オブジェクトにアクセスできるユーザーを制御するために、サーバー レベルのオブジェクトに関連付けられます。 このルールでは、ログインに直接付与されているサーバー レベルの権限がないことが確認されます。 | SQL Managed Instance |
VA1070 | データベース ユーザーとサーバー ログインは同じ名前を共有できません | 低 | データベース ユーザーは、サーバー ログインと同じ名前を共有する場合があります。 このルールでは、そのようなユーザーがいないことが検証されます。 | SQL Managed Instance |
VA1072 | 認証モードは Windows 認証である必要があります | Medium | 次の 2 つの認証モードを使用できます: Windows 認証モードと混合モードの 2 つです。 混合モードは、SQL Server によって Windows 認証と SQL Server 認証の両方が有効にされることを意味します。 このルールでは、認証モードが Windows 認証に設定されていることが確認されます。 | |
VA1094 | データベースのアクセス許可をプリンシパルに直接付与しないでください | 低 | アクセス許可は、オブジェクトにアクセスできるユーザーを制御するために、セキュリティ保護可能なオブジェクトに関連付けられている規則です。 このルールでは、DB のアクセス許可がユーザーに対して直接付与されていないことが確認されます。 | SQL Managed Instance |
VA1095 | PUBLIC ロールに対して必要以上のアクセス許可を付与しないでください | Medium | すべての SQL Server ログインは、PUBLIC サーバー ロールに属しています。 サーバー プリンシパルにセキュリティ保護可能なオブジェクトに対する特定の権限が与えられていないか権限が拒否されている場合、そのユーザーは、そのオブジェクトに対して public に付与されている権限を継承します。 これにより、PUBLIC ロールに付与されているすべてのアクセス許可の一覧が示されます。 | SQL Managed Instance SQL Database |
VA1096 | プリンシパル GUEST には、データベースでのアクセス許可を付与しないでください | 低 | 各データベースには、GUEST という名前のユーザーが含まれます。 GUEST ユーザーに付与されたアクセス許可は、データベースにはアクセスできるが、データベースにユーザー アカウントを持っていないユーザーに継承されます。 このルールでは、すべてのアクセス許可が GUEST ユーザーから取り消されていることが確認されます。 | SQL Managed Instance SQL Database |
VA1097 | プリンシパル GUEST には、オブジェクトまたは列に対するアクセス許可を付与しないでください | 低 | 各データベースには、GUEST という名前のユーザーが含まれます。 GUEST ユーザーに付与されたアクセス許可は、データベースにはアクセスできるが、データベースにユーザー アカウントを持っていないユーザーに継承されます。 このルールでは、すべてのアクセス許可が GUEST ユーザーから取り消されていることが確認されます。 | SQL Managed Instance SQL Database |
VA1099 | GUEST ユーザーに、データベースのセキュリティ保護可能なリソースに対するアクセス許可を付与しないでください | 低 | 各データベースには、GUEST という名前のユーザーが含まれます。 GUEST ユーザーに付与されたアクセス許可は、データベースにはアクセスできるが、データベースにユーザー アカウントを持っていないユーザーに継承されます。 このルールでは、すべてのアクセス許可が GUEST ユーザーから取り消されていることが確認されます。 | SQL Managed Instance SQL Database |
VA1246 | アプリケーション ロールは使用できません | 低 | アプリケーション ロールは、ユーザーのような独自のアクセス許可でアプリケーションを実行できるようにするデータベース プリンシパルです。 アプリケーション ロールを使用すると、特定のアプリケーション経由で接続しているユーザーのみが、特定のデータにアクセスできます。 アプリケーション ロールはパスワードに基づくものであり (通常は、アプリケーションでハードコーディングされています)、パスワードの推測によってアプリ ロールの借用にデータベースが公開されるアクセス許可ベースではありません。 このルールでは、データベースでアプリケーション ロールが定義されていないことが確認されます。 | SQL Managed Instance SQL Database |
VA1248 | ユーザー定義データベース ロールを固定ロールのメンバーにすることはできません | Medium | データベースでアクセス許可を簡単に管理できるように、SQL Server にはいくつかのロールが用意されています。ロールは、他のプリンシパルをグループ化するセキュリティ プリンシパルです。 それらは、Microsoft Windows オペレーティング システムのグループに似ています。 データベース アカウントや SQL Server の他のロールを、データベース レベルのロールに追加できます。 固定データベース ロールの各メンバーは、その同じロールに他のユーザーを追加できます。 このルールでは、固定ロールのメンバーであるユーザー定義ロールがないことが確認されます。 | SQL Managed Instance SQL Database Azure Synapse |
VA1267 | 包含ユーザーは Windows 認証を使用する必要があります | Medium | 包含ユーザーとは、データベース内に存在し、ログイン マッピングを必要としないユーザーのことです。 このルールでは、包含ユーザーが Windows 認証を使用していることが確認されます。 | SQL Managed Instance |
VA1280 | PUBLIC に対して付与されるサーバーのアクセス許可を最小限にする必要があります | Medium | すべての SQL Server ログインは、PUBLIC サーバー ロールに属しています。 サーバー プリンシパルにセキュリティ保護可能なオブジェクトに対する特定のアクセス許可が与えられていないか、またはアクセス許可が拒否されている場合、そのユーザーは、そのオブジェクトに対して PUBLIC に対して付与されているアクセス許可を継承します。 このルールでは、PUBLIC に対して付与されるサーバーのアクセス許可が最小限であることが確認されます。 | SQL Managed Instance |
VA1282 | 孤立したロールを削除する必要があります | 低 | 孤立したロールは、メンバーを持たないユーザー定義ロールです。 孤立したロールは、システムには必要ないため削除します。 このルールでは、孤立したロールがあるかどうかが確認されます。 | SQL Managed Instance SQL Database Azure Synapse |
VA2020 | データベース スコープの ALTER または ALTER ANY USER アクセス許可は、最小限のプリンシパル セットに付与する必要があります | 高 | SQL Server のすべてのセキュリティ保護可能なリソースには、プリンシパルに付与できるアクセス許可が関連付けられています。 アクセス許可のスコープは、サーバー レベル (ログインおよびサーバー ロールに割り当てられます) およびデータベース レベル (データベース ユーザーおよびデータベース ロールに割り当てられます) で設定できます。 これらのルールでは、データベース スコープの ALTER または ALTER ANY USER アクセス許可が、最小限のプリンシパル セットだけに付与されていることが確認されます。 | SQL Managed Instance SQL Database Azure Synapse |
VA2033 | オブジェクトまたは列に対するデータベース スコープの EXECUTE アクセス許可は、最小限のプリンシパル セットに付与する必要があります | 低 | このルールでは、このアクセス許可が付与されているプリンシパル セットが最小限であることを確認するため、オブジェクトまたは列に対する EXECUTE アクセス許可がどのプリンシパルに付与されているかが確認されます。 SQL Server のすべてのセキュリティ保護可能なリソースには、プリンシパルに付与できるアクセス許可が関連付けられています。 アクセス許可のスコープは、サーバー レベル (ログインおよびサーバー ロールに割り当てられます) およびデータベース レベル (データベース ユーザー、データベース ロール、またはアプリケーション ロールに割り当てられます) で設定できます。 EXECUTE アクセス許可は、計算列で使用できるストアド プロシージャとスカラー関数の両方に適用されます。 | SQL Managed Instance SQL Database Azure Synapse |
VA2103 | 拡張ストアド プロシージャに対する不必要な実行アクセス許可は取り消す必要があります | Medium | 拡張ストアド プロシージャは、SQL Server のインスタンスで動的に読み込んで実行できる DLL です。 SQL Server は、システム DLL とやり取りできる多くの拡張ストアド プロシージャと共にパッケージ化されています。 このルールでは、拡張ストアド プロシージャに対する不必要な実行アクセス許可が取り消されていることが確認されます。 | SQL Managed Instance |
VA2107 | Azure SQL DB master 固定データベース ロールのメンバーにするプリンシパルのセットは、最小限にする必要があります | 高 | SQL Database の master データベースには、データベース作成またはログイン管理のためのアクセス許可を付与する 2 つの制限付き管理者ロールが用意されており、それにユーザー アカウントを追加できます。 このルールでは、最小限のプリンシパルのセットが、これらの管理者ロールのメンバーになっていることが確認されます。 | Azure Synapse |
VA2108 | 影響の大きい固定データベース ロールのメンバーにするプリンシパルのセットは、最小限にする必要があります | 高 | SQL Server には、アクセス許可の管理に役立つロールが用意されています。 ロールは、他のプリンシパルをグループ化するセキュリティ プリンシパルです。 データベース レベルのロールのアクセス許可のスコープは、データベース全体です。 このルールでは、プリンシパルの最小限のセットが、固定データベース ロールのメンバーになっていることが確認されます。 | SQL Managed Instance SQL Database Azure Synapse |
VA2109 | 影響の小さい固定データベース ロールのメンバーにするプリンシパルのセットは、最小限にする必要があります | 低 | SQL Server には、アクセス許可の管理に役立つロールが用意されています。 ロールは、他のプリンシパルをグループ化するセキュリティ プリンシパルです。 データベース レベルのロールのアクセス許可のスコープは、データベース全体です。 このルールでは、プリンシパルの最小限のセットが、固定データベース ロールのメンバーになっていることが確認されます。 | SQL Managed Instance SQL Database Azure Synapse |
VA2110 | レジストリにアクセスするための実行アクセス許可を取り消す必要があります | 高 | レジストリ拡張ストアド プロシージャを使用すると、Microsoft SQL Server でレジストリ内の値とキーの読み取り、書き込み、列挙を行うことができます。 これらは、サーバーを構成するために Enterprise Manager によって使用されます。 このルールでは、レジストリ拡張ストアド プロシージャを実行するアクセス許可が、すべてのユーザー (dbo 以外) から取り消されていることが確認されます。 | SQL Managed Instance |
VA2113 | データ変換サービス (DTS) のアクセス許可は、SSIS ロールに対してのみ付与する必要があります | Medium | データ変換サービス (DTS) は、データベースとの間での抽出、変換、読み込み操作の自動化を可能にする一連のオブジェクトとユーティリティです。 オブジェクトは DTS パッケージとそのコンポーネントであり、ユーティリティは DTS ツールと呼ばれます。 このルールでは、DTS システム ストアド プロシージャを使用するアクセス許可が SSIS ロールだけに与えられていること、および DTS システム ストアド プロシージャを使用するための PUBLIC ロールに対するアクセス許可が取り消されていることが確認されます。 | SQL Managed Instance |
VA2114 | 影響の大きい固定サーバー ロールのメンバーにするプリンシパルのセットは、最小限にする必要があります | 高 | SQL Server には、アクセス許可の管理に役立つロールが用意されています。 ロールは、他のプリンシパルをグループ化するセキュリティ プリンシパルです。 サーバー レベルのロールのアクセス許可のスコープは、サーバー全体に及びます。 このルールでは、プリンシパルの最小限のセットが、固定サーバー ロールのメンバーになっていることが確認されます。 | SQL Managed Instance |
VA2129 | 署名付きモジュールに対する変更を承認する必要があります | 高 | ストアド プロシージャ、関数、トリガーには、証明書または非対称キーを使用して署名することができます。 これは、所有権の継承によってアクセス許可を継承できない場合や、所有権の継承が壊れている場合 (動的 SQL など) に適しています。 このルールでは、署名付きモジュールに対して行われた変更が確認されます。これは、悪意のある使用を示している可能性があります。 | SQL Database SQL Managed Instance |
VA2130 | データベースへのアクセス権を持つすべてのユーザーを追跡します | 低 | このチェックでは、データベースへのアクセス権を持つすべてのユーザーが追跡されます。 これらのユーザーが、組織内の現在のロールに従って承認されていることを確認してください。 | Azure Synapse |
VA2201 | 一般的に使われる名前を持つ SQL ログインを無効にする必要があります | 高 | このルールでは、データベース所有者アクセス許可を持つアカウントで一般的に使われる名前を調べます。 データベース所有者アクセス許可を持つアカウントに一般的に使われる名前を割り当てると、ブルート フォース攻撃が成功する可能性が高くなります。 |
監査とログ記録
ルールの ID | ルールのタイトル | ルールの重大度 | ルールの説明 | プラットフォーム |
---|---|---|---|---|
VA1045 | 既定のトレースを有効にする必要があります | Medium | 既定のトレース機能は、問題が初めて発生したときに、その問題を診断するために必要なログ データを提供することによって、データベース管理者によるトラブルシューティングを支援します。 このルールでは、既定のトレースが有効になっていることが確認されます。 | SQL Managed Instance |
VA1091 | "ログインの監査" がログインを追跡するように設定されている場合、ログイン試行の成功と失敗両方の監査 (既定のトレース) を有効にする必要があります | 低 | SQL Server のログイン監査の構成を使用すると、管理者は、SQL Server インスタンスにログインしているユーザーを追跡できます。 ユーザーが SQL Server インスタンスにログインしているユーザーを追跡するために "ログインの監査" でのカウントを選択する場合は、成功したログイン試行と失敗したログイン試行の両方に対して有効にすることが重要です。 | |
VA1093 | エラー ログの最大数は 12 以上である必要があります | 低 | 各 SQL Server エラー ログには、SQL Server が最後に再起動された後、または最後にエラー ログをリサイクルした後に発生した障害やエラーに関連するすべての情報が含まれます。 このルールでは、エラー ログの最大数が 12 以上であることが確認されます。 | |
VA1258 | データベース所有者は想定されていたものです | 高 | データベース所有者は、SQL Server のデータベースでのすべての構成作業とメンテナンス作業を実行でき、データベースを削除することもできます。 一部のプリンシパルに対して過剰なアクセス許可が設定されないようにするには、データベースの所有者を追跡することが重要です。 データベースの予期されるデータベース所有者を定義するベースラインを作成します。 このルールでは、データベース所有者がベースラインで定義されているものかどうかが確認されます。 | SQL Database Azure Synapse |
VA1264 | 成功したログインと失敗したログイン両方の監査を有効にする必要があります | 低 | SQL Server の監査の構成を使用すると、管理者は自分が担当する SQL Server インスタンスにログインしているユーザーを追跡できます。 このルールでは、成功と失敗両方のログイン試行について、監査が有効になっていることが確認されます。 | SQL Managed Instance |
VA1265 | 包含 DB 認証に対する成功と失敗両方のログイン試行の監査が有効になっている必要があります | Medium | SQL Server の監査の構成を使用すると、管理者は自分が担当する SQL Server インスタンスに対するユーザーのログインを追跡できます。 このルールでは、包含 DB 認証に対する成功と失敗両方のログイン試行について、監査が有効になっていることが確認されます。 | SQL Managed Instance |
VA1281 | ユーザー定義ロールに対するすべてのメンバーシップが意図されたものである必要があります | Medium | ユーザー定義ロールは、アクセス許可の管理を容易にすることを目的として、プリンシパルをグループ化するためにユーザーによって定義されるセキュリティ プリンシパルです。 これらのロールの監視は、アクセス許可が過剰にならないようにするために重要です。 各ユーザー定義ロールに対して予想されるメンバーシップを定義するベースラインを作成します。 このルールでは、ユーザー定義ロールのすべてのメンバーシップがベースラインで定義されているかどうかが確認されます。 | SQL Managed Instance SQL Database Azure Synapse |
VA1283 | 少なくとも 1 つのアクティブな監査がシステムに存在する必要があります | 低 | SQL Server データベース エンジンまたは個々のデータベースのインスタンスを監査するには、データベース エンジンで発生するイベントを追跡し、ログに記録します。 SQL Server の監査オブジェクトでは、監視対象であるサーバー レベルまたはデータベース レベルのアクションの 1 つのインスタンスおよびアクションのグループが収集されます。 このルールでは、システム内に少なくとも 1 つのアクティブな監査があることが確認されます。 | SQL Managed Instance |
VA2061 | 監査をサーバー レベルで有効にする必要があります | 高 | Azure SQL Database の監査では、データベース イベントが追跡され、Azure Storage アカウントの監査ログにイベントが書き込まれます。 監査により、データベース活動の理解、ビジネス上の懸念やセキュリティ違犯の疑いを示す差異や異常に対する分析情報の取得、規制コンプライアンスの維持が容易になります。 詳細については、Azure SQL の監査に関するページを参照してください。 このルールでは、監査が有効になっていることが確認されます。 | Azure Synapse |
データ保護
ルールの ID | ルールのタイトル | ルールの重大度 | ルールの説明 | プラットフォーム |
---|---|---|---|---|
VA1098 | 既存のすべての SSB エンドポイントまたはミラーリング エンドポイントには、AES 接続が必要です | 高 | Service Broker エンドポイントとミラーリング エンドポイントでは、暗号化なしを含むさまざまな暗号化アルゴリズムがサポートされます。 このルールでは、既存のすべてのエンドポイントで AES 暗号化が要求されていることが確認されます。 | |
VA1219 | Transparent Data Encryption が有効にされている必要があります | 中 | Transparent Data Encryption (TDE) を使用すると、データベース、関連付けられているバックアップ、保管されているトランザクション ログ ファイルの暗号化と暗号化の解除をリアルタイムで実行することにより、情報漏えいからデータベース ファイルを保護できます。アプリケーションを変更する必要はありません。 このルールでは、データベースで TDE が有効になっていることが確認されます。 | SQL Managed Instance SQL Database Azure Synapse |
VA1220 | TDS を使用したデータベース通信が TLS によって保護されている必要があります | 高 | Microsoft SQL Server では、Secure Sockets Layer (SSL) またはトランスポート層セキュリティ (TLS) を使用して、SQL Server のインスタンスとクライアント アプリケーションの間のネットワークで送信されるデータを暗号化できます。 このルールでは、SQL Server へのすべての接続が TLS によって暗号化されることが確認されます。 | SQL Managed Instance |
VA1221 | データベース暗号化の対称キーでは AES アルゴリズムが使用されている必要があります | 高 | SQL Server では、暗号化キーを使用して、サーバーのデータベースに格納されているデータ、資格情報、接続情報がセキュリティ保護されます。 SQL Server には、対称と非対称の 2 種類のキーがあります。 このルールでは、データベース暗号化の対称キーで AES アルゴリズムが使用されていることが確認されます。 | SQL Managed Instance SQL Database Azure Synapse |
VA1222 | セルレベル暗号化のキーでは AES アルゴリズムが使用されている必要があります | 高 | セルレベル暗号化 (CLE) では、対称キーと非対称キーを使用してデータを暗号化できます。 このルールでは、セルレベル暗号化の対称キーで AES アルゴリズムが使用されていることが確認されます。 | SQL Managed Instance |
VA1223 | 証明書のキーでは 2048 ビット以上が使用されている必要があります | 高 | 証明書のキーは、RSA や他の暗号化アルゴリズムによって、データを保護するために使用されます。 これらのキーは、ユーザーのデータをセキュリティ保護するのに十分な長さである必要があります。 このルールでは、すべての証明書について、キーの長さが 2048 ビット以上であることが確認されます。 | SQL Managed Instance SQL Database Azure Synapse |
VA1224 | 非同期キーの長さは、少なくとも 2048 ビットである必要があります | 高 | データベースの非対称キーは、多くの暗号化アルゴリズムで使用されます。これらのキーは、暗号化されるデータをセキュリティ保護するのに十分な長さである必要があります。このルールでは、データベースに格納されているすべての非対称キーが、2048 ビット以上の長さであることが確認されます | SQL Database |
VA1279 | TDS に対して強制的な暗号化を有効にする必要があります | 高 | データベース エンジンの [強制的に暗号化] オプションを有効にすると、[暗号化接続] オプション (SSMS からなど) がオンになっているかどうかに関係なく、クライアントとサーバー間のすべての通信が暗号化されます。 このルールでは、[強制的に暗号化] オプションが有効になっていることが確認されます。 | |
VA2060 | SQL の脅威検出をサーバー レベルで有効にする必要があります | Medium | SQL の脅威検出では、SQL インジェクション攻撃や異常な動作パターンなど、データベースでの潜在的な脆弱性や異常なアクティビティを検出するセキュリティのレイヤーが提供されます。 潜在的な脅威が検出されると、脅威検出により、メールと Microsoft Defender for Cloud でアクションにつながるリアルタイム アラートが送信されます。これには、特定の脅威に対する調査と修復のわかりやすい手順が含まれます。 詳細については、脅威検出の構成に関するページを参照してください。 このチェックでは、SQL の脅威検出が有効になっていることが確認されます | SQL Managed Instance SQL Database Azure Synapse |
インストールの更新プログラムと修正プログラム
ルールの ID | ルールのタイトル | ルールの重大度 | ルールの説明 | プラットフォーム |
---|---|---|---|---|
VA1018 | 最新の更新プログラムがインストールされている必要があります | 高 | Microsoft から、SQL Server の各バージョンに対する累積的な更新プログラム (CU) が定期的にリリースされます。 このルールでは、実行用の文字列を渡し、使用されている特定のバージョンの SQL Server に対して、最新の CU がインストールされているかどうかが確認されます。 このルールでは、すべてのユーザー (dbo を除く) に xp_cmdshell 拡張ストアド プロシージャを実行するアクセス許可がないことが確認されます。 | SQL Server 2017 SQL Server 2019 SQL Server 2022 |
VA2128 | 脆弱性評価は SQL Server 2012 より前のバージョンの SQL Server ではサポートされていません | 高 | SQL Server で脆弱性評価スキャンを実行するには、サーバーを SQL Server 2012 以降にアップグレードする必要があります。SQL Server 2008 R2 およびそれより前のバージョンは、Microsoft ではサポートされなくなりました。 詳細については、こちらをご覧ください | SQL Managed Instance SQL Database Azure Synapse |
外部からのアクセスの縮小
ルールの ID | ルールのタイトル | ルールの重大度 | ルールの説明 | プラットフォーム |
---|---|---|---|---|
VA1022 | アドホック分散クエリは無効にする必要があります | Medium | アドホック分散クエリでは、OLE DB を使用するリモート データ ソースに接続するために、OPENROWSET 関数と OPENDATASOURCE 関数が使用されます。 このルールでは、アドホック分散クエリが無効になっていることが確認されます。 |
|
VA1023 | CLR は無効にする必要があります | 高 | CLR を使用すると、マネージド コードをホストし、Microsoft SQL Server 環境で実行することができます。 このルールでは、CLR が無効になっていることが確認されます。 | |
VA1026 | CLR は無効にする必要があります | Medium | CLR を使用すると、マネージド コードをホストし、Microsoft SQL Server 環境で実行することができます。 CLR strict security を使用すると、SAFE アセンブリと EXTERNAL_ACCESS アセンブリは UNSAFE とマークされた場合と同じように扱われ、すべてのアセンブリは、master データベースでの UNSAFE ASSEMBLY アクセス許可を付与されている対応するログインにより、証明書または非対称キーを使用して署名されている必要があります。 このルールでは、CLR が無効になっていることが確認されます。 | SQL Managed Instance |
VA1027 | 追跡されていない信頼されたアセンブリは削除される必要があります | 高 | UNSAFE としてマークされたアセンブリは、master データベースでの UNSAFE ASSEMBLY アクセス許可を付与されている対応するログインにより、証明書または非対称キーを使用して署名されている必要があります。 信頼されたアセンブリは、この要件をバイパスする可能性があります。 | SQL Managed Instance |
VA1044 | 特に必要な場合以外は、リモート管理接続を無効にする必要があります | 中 | このルールでは、リモート専用管理者接続が攻撃面を減らすためのクラスタリングに使用されていない場合に、これが無効になっているかどうかが確認されます。 SQL Server では、専用管理者接続 (DAC) が提供されます。 DAC を使用すると、管理者は実行中のサーバーにアクセスして、診断機能や Transact-SQL ステートメントを実行したり、サーバー上の問題をトラブルシューティングしたりすることができます。また、これをリモートで有効にした場合は、攻撃の最適なターゲットになります。 | SQL Managed Instance |
VA1051 | すべてのデータベースで AUTO_CLOSE を無効にする必要があります | 中 | AUTO_CLOSE オプションでは、最後のユーザーが切断した後で、データベースを正常にシャットダウンしてリソースを解放するかどうかが指定されます。 これには利点もありますが、データベースを積極的に開いたり閉じたりすることによってサービス拒否が発生する可能性があるため、この機能は無効にしておくことが重要です。 このルールでは、現在のデータベースでこのオプションが無効になっていることが確認されます。 | |
VA1066 | 使用されていない Service Broker エンドポイントを削除する必要があります | 低 | Service Broker では、SQL Server に対してキューと信頼性の高いメッセージングが提供されます。 Service Broker は、単一の SQL Server インスタンスを使用するアプリケーションと、処理を複数のインスタンスに分散するアプリケーションの両方で使用されます。 Service Broker エンドポイントでは、トランスポート セキュリティとメッセージ転送に関するオプションが提供されます。 このルールでは、すべての Service Broker エンドポイントが列挙されます。 使用されていないものを削除します。 | |
VA1071 | "スタートアップ時にストアド プロシージャをスキャンする" オプションを無効にする必要があります | Medium | "スタートアップ時のストアド プロシージャのスキャン" を有効にした場合、SQL Server では、サーバーで定義されている自動実行のストアド プロシージャがすべてスキャンされて実行されます。 このオプションを有効にした場合、SQL Server では、サーバーで定義されている自動実行のストアド プロシージャがすべてスキャンされて実行されます。 このルールでは、このオプションが無効になっていることが確認されます。 | |
VA1092 | SQL Server インスタンスが SQL Server Browser サービスによってアドバタイズさないようにしてください | 低 | SQL Server では、SQL Server Browser サービスを使用して、コンピューターにインストールされているデータベース エンジンのインスタンスが列挙されます。 この機能により、クライアント アプリケーションはサーバーを参照できるようになり、クライアントは、同じコンピューター上にあるデータベース エンジンの複数のインスタンスを区別できるようになります。 このルールでは、SQL インスタンスが隠ぺいされていることが確認されます。 | |
VA1102 | MSDB を除くすべてのデータベースで、TRUSTWORTHY ビットを無効にする必要があります | 高 | TRUSTWORTHY データベース プロパティは、データベースとその内容が SQL Server のインスタンスによって信頼されているかどうかを示すために使用されます。 このオプションが有効になっていると、借用コンテキストを使用するデータベース モジュール (ユーザー定義関数やストアド プロシージャなど) から、データベース外部のリソースにアクセスできます。 このルールでは、MSDB を除くすべてのデータベースで TRUSTWORTHY ビットが無効になっていることが検証されます。 | SQL Managed Instance |
VA1143 | 通常のサービス操作に "dbo" ユーザーを使用することはできません | Medium | "dbo" またはデータベース所有者は、データベースですべてのアクティビティを実行するための暗黙的なアクセス許可を持つユーザー アカウントです。 sysadmin 固定サーバー ロールのメンバーは、dbo に自動的にマップされます。 このルールでは、このデータベースへのアクセスが許可されているアカウントが dbo だけでないことが確認されます。 新しく作成されたクリーン データベースでは、追加のロールが作成されるまで、このルールが失敗することにご注意ください。 | SQL Managed Instance SQL Database Azure Synapse |
VA1144 | model データベースには "dbo" だけがアクセスできる必要があります | Medium | model データベースは、SQL Server のインスタンスで作成されるすべてのデータベースに対するテンプレートとして使用されます。 データベース サイズ、復旧モデル、その他のデータベース オプションなど、model データベースに対して行われた変更は、それ以降に作成されるすべてのデータベースに適用されます。 このルールでは、model データベースへのアクセスを許可されているアカウントが dbo だけであることが確認されます。 | SQL Managed Instance |
VA1230 | filestream が無効になっている必要があります | 高 | FILESTREAM では、varbinary (max) BLOB (バイナリ ラージ オブジェクト) データをファイル システムにファイルとして格納することにより、SQL Server データベース エンジンと NTFS ファイル システムが統合されます。 Transact-SQL ステートメントでは、FILESTREAM データの挿入、更新、クエリ、検索、バックアップを行うことができます。 SQL Server で Filestream を有効にすると、追加の NTFS streaming API が公開されます。これにより、攻撃面が増え、悪意のある攻撃を受けやすくなります。 このルールでは、filestream が無効になっていることが確認されます。 | |
VA1235 | サーバー構成 'Replication XPs' を無効にする必要があります | 中 | 非推奨のサーバー構成 'Replication XPs' を無効にして、攻撃面を制限します。 これは、内部専用の構成設定です。 | SQL Managed Instance |
VA1244 | 孤立したユーザーを SQL Server データベースから削除する必要があります | Medium | データベースに存在するが master データベースに対応するログインがないデータベース ユーザー、または外部リソース (Windows ユーザーなど) として存在するデータベース ユーザーは、孤立したユーザーと呼ばれ、削除するか、または有効なログインに再マップする必要があります。 このルールでは、孤立したユーザーがいないことが確認されます。 | SQL Managed Instance |
VA1245 | ターゲット DB と master の間で、dbo 情報が一貫している必要があります | 高 | すべてのデータベースの dbo ID に関して冗長な情報が存在します。データベース自体に格納されているメタデータと、master DB に格納されているメタデータです。 このルールでは、ターゲット DB と master の間でこの情報が一致していることが確認されます。 | SQL Managed Instance |
VA1247 | 自動開始としてマークされている SP が存在しないようにします | 高 | SQL Server が "スタートアップ プロシージャのスキャン" をするように構成されている場合、サーバーによって master DB で自動開始としてマークされているストアド プロシージャがスキャンされます。 このルールでは、自動開始としてマークされている SP がないことが確認されます。 | |
VA1256 | ユーザー CLR アセンブリをデータベース内で定義しないでください | 高 | CLR アセンブリを使用して、SQL Server プロセスで任意のコードを実行できます。 このルールでは、ユーザー定義の CLR アセンブリがデータベースに存在しないことが確認されます。 | SQL Managed Instance |
VA1277 | PolyBase ネットワーク暗号化が有効にされている必要があります | 高 | PolyBase は、非リレーショナル データとリレーショナル データ両方へのアクセスとそれらの結合のすべてを SQL Server 内から行うテクノロジです。 PolyBase ネットワークの暗号化オプションでは、Polybase を使用するときにコントロール チャネルとデータ チャネルを暗号化するように、SQL Server が構成されます。 このルールでは、このオプションが有効になっていることが検証されます。 | |
VA1278 | 外部キー管理プロバイダーのベースラインを作成します | Medium | SQL Server の拡張キー管理 (EKM) を使用すると、サードパーティの EKM または、ハードウェア セキュリティ モジュール (HSM) ベンダーは、モジュールを SQL Server に登録できます。 登録された SQL Server ユーザーが EKM モジュールに格納されている暗号化キーを使用できる場合、このルールでは、システムで使用されている EKM プロバイダーの一覧が表示されます。 | SQL Managed Instance |
VA2062 | データベース レベルのファイアウォール規則で、必要以上のアクセス許可を付与しないでください | 高 | Azure SQL Database レベルのファイアウォールでは、アクセス許可のある IP アドレスをユーザーが指定するまで、データベースへのすべてのアクセスを禁止することで、データが保護されます。 データベース レベルのファイアウォール規則では、各要求の送信元 IP アドレスに基づいて、特定のデータベースへのアクセス権が付与されます。 master データベースおよびユーザー データベースに対するデータベース レベルのファイアウォール規則は、Transact-SQL を使用することによってのみ作成および管理できます (Azure portal または PowerShell を使用して作成および管理することもできるサーバー レベルのファイアウォール規則とは異なります)。 詳細については、Azure SQL Database と Azure Synapse Analytics の IP ファイアウォール規則に関するページを参照してください。 このチェックでは、データベースレベルのファイアウォール規則で 255 を超える IP アドレスへのアクセスが許可されていないことが検証されます。 | Azure Synapse |
VA2063 | サーバー レベルのファイアウォール規則で、必要以上のアクセス許可を付与しないでください | 高 | Azure SQL のサーバー レベルのファイアウォールでは、アクセス許可のある IP アドレスをユーザーが指定するまで、データベースへのすべてのアクセスを禁止することで、サーバーが保護されます。 サーバー レベルのファイアウォール規則では、各要求の送信元 IP アドレスに基づいて、サーバーに属するすべてのデータベースへのアクセス権が付与されます。 サーバー レベルのファイアウォール規則は、Transact-SQL だけでなく、Azure portal または PowerShell を使用して作成および管理することもできます。 詳細については、Azure SQL Database と Azure Synapse Analytics の IP ファイアウォール規則に関するページを参照してください。 このチェックでは、サーバーレベルのファイアウォール規則で 255 を超える IP アドレスへのアクセスが許可されていないことが検証されます。 | Azure Synapse |
VA2064 | データベース レベルのファイアウォール規則は、厳密に最小限で追跡および管理する必要があります | 高 | Azure SQL Database レベルのファイアウォールでは、アクセス許可のある IP アドレスをユーザーが指定するまで、データベースへのすべてのアクセスを禁止することで、データが保護されます。 データベース レベルのファイアウォール規則では、各要求の送信元 IP アドレスに基づいて、特定のデータベースへのアクセス権が付与されます。 master データベースおよびユーザー データベースに対するデータベース レベルのファイアウォール規則は、Transact-SQL を使用することによってのみ作成および管理できます (Azure portal または PowerShell を使用して作成および管理することもできるサーバー レベルのファイアウォール規則とは異なります)。 詳細については、Azure SQL Database と Azure Synapse Analytics の IP ファイアウォール規則に関するページを参照してください。 このチェックでは、規則に対して行われたすべての変更を識別して対応できるように、すべてのデータベース レベルのファイアウォール規則が列挙されます。 | Azure Synapse |
VA2065 | サーバー レベルのファイアウォール規則は、厳密に最小限で追跡および管理する必要があります | 高 | Azure SQL のサーバー レベルのファイアウォールでは、アクセス許可のある IP アドレスをユーザーが指定するまで、データベースへのすべてのアクセスを禁止することで、データが保護されます。 サーバー レベルのファイアウォール規則では、各要求の送信元 IP アドレスに基づいて、サーバーに属するすべてのデータベースへのアクセス権が付与されます。 サーバー レベルのファイアウォール規則は、Transact-SQL のほかに、Azure portal または PowerShell を使用して作成および管理することもできます。 詳細については、Azure SQL Database と Azure Synapse Analytics の IP ファイアウォール規則に関するページを参照してください。 このチェックでは、規則に対して行われたすべての変更を識別して対応できるように、すべてのサーバー レベルのファイアウォール規則が列挙されます。 | Azure Synapse |
VA2111 | サンプル データベースを削除する必要があります | 低 | Microsoft SQL Server には、いくつかのサンプル データベースが付属しています。 このルールでは、サンプル データベースが削除されたことが確認されます。 | SQL Managed Instance |
VA2120 | セキュリティに影響する可能性のある機能を無効にする必要があります | 高 | SQL Server は、さまざまな機能やサービスを提供することができます。 既定で提供される一部の機能とサービスは必要なく、有効にするとシステムのセキュリティに悪影響を及ぼす可能性があります。 このルールでは、これらの機能が無効になっていることが確認されます。 | SQL Managed Instance |
VA2121 | "OLE Automation Procedures" 機能を無効にする必要があります | 高 | SQL Server は、さまざまな機能やサービスを提供することができます。 既定で提供される一部の機能とサービスは必要ない場合があり、有効にするとシステムのセキュリティに悪影響を及ぼす可能性があります。 OLE Automation Procedures オプションでは、Transact-SQL バッチ内で OLE オートメーション オブジェクトをインスタンス化できるかどうかが制御されます。 これらの拡張ストアド プロシージャを使用すると、SQL Server のユーザーは SQL Server の外部にある関数を実行できます。 これには利点もありますが、悪用される可能性もあり、ターゲット コンピューター上にファイルを仕掛けるための一般的なメカニズムとして知られています。 このツールの代わりに PowerShell を使用することをお勧めします。 このルールでは、"OLE Automation Procedures" 機能が無効になっていることが確認されます。 | SQL Managed Instance |
VA2122 | "ユーザー オプション" 機能を無効にする必要があります | Medium | SQL Server は、さまざまな機能やサービスを提供することができます。 既定で提供される一部の機能とサービスは必要なく、有効にするとシステムのセキュリティに悪影響を及ぼす可能性があります。 ユーザー オプションでは、すべてのユーザーに対するグローバルな既定値を指定します。 ユーザーの作業セッション中に、一連の既定のクエリ処理オプションが設定されます。 ユーザー オプションを使用すると、SET オプションの既定値を変更できます (サーバーの既定の設定が適切でない場合)。 このルールでは、"ユーザー オプション" 機能が無効になっていることが確認されます。 | SQL Managed Instance |
VA2126 | セキュリティに影響を与える可能性がある機能は、必要ない場合は無効にする必要があります | Medium | SQL Server には、さまざまな機能とサービスが用意されています。 既定で提供される一部の機能とサービスは必要ない場合があり、有効にするとシステムのセキュリティに悪影響を及ぼす可能性があります。 このルールでは、外部データ ソースへのデータの抽出を許可する構成と、特定のリモート言語拡張機能を使用したスクリプトの実行が無効になっていることが確認されます。 |
削除されたルール
ルールの ID | ルールのタイトル |
---|---|
VA1021 | グローバル一時ストアド プロシージャは削除される必要があります |
VA1024 | C2 Audit Mode を有効にする必要があります |
VA1069 | システム テーブルとビューから選択するためのアクセス許可を、sysadmin 以外から取り消す必要があります |
VA1090 | すべてのGovernment Off The Shelf (GOTS) とカスタム ストアド プロシージャが暗号化されていることを確認します |
VA1103 | SAFE_ACCESS アクセス許可を持つ CLR のみを使用します |
VA1229 | レジストリと SQL Server の構成で、filestream の設定が一致している必要があります |
VA1231 | filestream が無効になっている必要があります (SQL) |
VA1234 | 情報セキュリティ国際評価基準の設定を有効にする必要があります |
VA1252 | サーバー監査の仕様によって監査され、一元管理されるイベントの一覧。 |
VA1253 | サーバー監査の仕様によって監査され、一元管理される DB スコープのイベントの一覧 |
VA1263 | システム内のすべてのアクティブな監査を一覧表示します |
VA1266 | すべての SQL ログインで "MUST_CHANGE" オプションが設定されている必要があります |
VA1276 | エージェント XP 機能を無効にする必要があります |
VA1286 | データベースのアクセス許可をプリンシパルに直接付与しないでください (OBJECT または COLUMN) |
VA2000 | 影響の大きいデータベース スコープのアクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2001 | オブジェクトまたは列に対する影響の大きいデータベース スコープのアクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2002 | さまざまなセキュリティ保護可能なリソースに対する影響の大きいデータベース スコープのアクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2010 | 影響が中程度であるデータベース スコープのアクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2021 | オブジェクトまたは列に対するデータベース スコープの ALTER アクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2022 | さまざまなセキュリティ保護可能なリソースに対するデータベース スコープの ALTER アクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2030 | データベース スコープの SELECT または EXECUTE アクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2031 | データベース スコープの SELECT は、最小限のプリンシパル セットに付与する必要があります |
VA2032 | スキーマに対するデータベース スコープの SELECT または EXECUTE アクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2034 | XML スキーマ コレクションに対するデータベース スコープの EXECUTE アクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2040 | 影響の小さいデータベース スコープのアクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2041 | オブジェクトまたは列に対する影響の小さいデータベース スコープのアクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2042 | スキーマに対する影響の小さいデータベース スコープのアクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2050 | データベース スコープの VIEW DEFINITION アクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2051 | オブジェクトまたは列に対するデータベース スコープの VIEW DEFINITION アクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2052 | さまざまなセキュリティ保護可能なリソースに対するデータベース スコープの VIEW DEFINITION アクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2100 | 影響の大きいサーバー スコープのアクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2101 | 影響が中程度のサーバー スコープのアクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2102 | 影響が小さいサーバー スコープのアクセス許可は、最小限のプリンシパル セットに付与する必要があります |
VA2104 | 拡張ストアド プロシージャに対する実行アクセス許可を、PUBLIC から取り消す必要があります |
VA2105 | ログイン パスワードが簡単に推測されないようにしてください |
VA2112 | データ変換サービス (DTS) に対する PUBLIC からのアクセス許可を取り消す必要があります |
VA2115 | 影響が中程度の固定サーバー ロールのメンバーにするプリンシパルのセットは、最小限にする必要があります |
VA2123 | "リモート アクセス" 機能を無効にする必要があります |
VA2127 | "外部スクリプト" 機能を無効にする必要があります |