適用対象:SQL Server
Azure SQL Managed Instance
SQL Assessment API には、ベスト プラクティスのために SQL Server の構成を評価するメカニズムが用意されています。 APIはSQL Serverチームから提案されたベストプラクティスルールを含むルールセットとともに提供されます。 このルールセットは新バージョンのリリースで強化されますが、同時にAPIは高度にカスタマイズ可能で拡張性のあるソリューションを提供するよう構築されています。 ユーザーは既定のルールを調整し、独自のものを作成できます。
SQL Assessment API は、使用する SQL Server の構成が、推奨されるベスト プラクティスに準拠していることを確認する必要がある場合に便利です。 初期評価後は、定期的にスケジュールされた評価によって構成の安定性を追跡できます。
この API は次を評価するために使用することができます。
- Azure 仮想マシン上の SQL Server
- Azure SQL Managed Instance
- SQL Server 2012 以降
- Linux ベースのシステムとコンテナーの SQL Server
注
SQL Assessment API はさまざまな領域で評価を提供しますが、セキュリティに深く関するものではありません。 SQL Server の脆弱性評価を使用して、データベースのセキュリティを事前に向上させます。
ルール
チェックとも呼ばれるルールは、JSON 形式のファイルで定義されます。 ルールセット形式では、ルールセット名とバージョンの指定が必要です。 カスタムルールセットを使うと、どの推奨がどのルールセットから来ているかを簡単に把握できます。
Microsoft から配布されるルール セットは、GitHub で入手できます。 サンプルのリポジトリでルールセット全体を確認することができます。
SQL Assessment コマンドレットと関連する拡張機能
API を直接使用する
SQL Assessment API を利用でき、これらのコンポーネントの一部としてマネージド コードを通じて使用できます。
- SQL Server 管理オブジェクト (SMO) (2019 年 7 月以降のリリース バージョン)
- SQL Server PowerShell モジュール (2019 年 7 月以降のリリース バージョン)
SQL Assessment API 自体の使用を開始する前に、次のいずれかを必ずインストールしてください。
SMO Framework は、次のメソッドを備える SQL Assessment API 拡張機能によって補完されています。
-
GetAssessmentItems: 特定の SQL オブジェクトの使用可能なチェックを返します (IEnumerable<...>) -
GetAssessmentResults: 同期的に評価を査定し、結果とエラー (ある場合) を返します (IEnumerable<...>) -
GetAssessmentResultsList: 非同期的に評価を査定し、結果とエラー (ある場合) を返します (Task<...>)
PowerShell 経由で API を使う
PowerShell 経由で SQL Assessment API を呼び出す場合は、SQL Server PowerShell モジュールをインストールする必要があります。 この SqlServer モジュールには、SQL Assessment API で動作する 2 つのコマンドレットが用意されています。
-
Get-SqlAssessmentItem: SQL Server オブジェクトの使用可能な評価チェックの一覧を提供します -
Invoke-SqlAssessment: 評価の結果を提供します
SQL Assessment コマンドレットの使用を開始する
選択した SQL Server オブジェクトに対して評価が実行されます。 デフォルトのルールセットでは、 Server と Database の2種類のオブジェクトのみのチェックがあります(さらにAPIは Filegroup と AvailabilityGroupの2種類をサポートしています)。 SQL Server インスタンスとそのすべてのデータベースを評価する場合は、オブジェクトごとに SQL Assessment コマンドレットを個別に実行する必要があります。 あるいは、変数またはパイプラインで SQL Assessment コマンドレットに評価用のオブジェクトを渡すことができます。
SqlServer と RegisteredServer オブジェクトは交換可能なので、いずれも SQL Assessment コマンドレットに渡すことができます。
以下の例を参照して始めてください。
ローカルの既定インスタンスで使用できるチェックの一覧を取得すると、チェックに慣れることができます。 この例では、
Get-SqlInstanceコマンドレットの出力をGet-SqlAssessmentItemコマンドレットにパイプして、それにインスタンス オブジェクトを渡します。Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItemインスタンスのすべてのデータベースで使用できるチェックの一覧を取得します。 ここでは、
Get-Itemコマンドレットと Windows PowerShell SQL Server プロバイダーで実装されたパスを使用してデータベースの一覧を取得し、それをGet-SqlDatabaseコマンドレットにパイプしています。Get-Item SQLSERVER:\SQL\localhost\default | Get-SqlAssessmentItemまた、
Get-SqlDatabaseコマンドレットを使用して同じことを実行できます。Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItemインスタンスの評価を呼び出し、結果を SQL Server テーブルに保存します。 この例では、
Get-SqlInstanceコマンドレットの出力をInvoke-SqlAssessmentコマンドレットにパイプし、その結果をWrite-SqlTableDataコマンドレットにパイプします。 この例では、Invoke-Assessmentコマンドレットが-FlattenOutputパラメーターを使用して実行されます。 このパラメーターにより、Write-SqlTableDataコマンドレットに適した出力になります。 後者の場合、このパラメーターを省略すると、エラーが発生します。Get-SqlInstance -ServerInstance 'localhost' | Invoke-SqlAssessment -FlattenOutput | Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force次に、インスタンスのすべてのデータベースの評価を呼び出し、同じテーブルに結果を追加しましょう。
Get-SqlDatabase -ServerInstance 'localhost' | Invoke-SqlAssessment -FlattenOutput | Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force推奨事項を詳しく理解するには、テーブルの説明とリンクに従います。
環境と組織の要件に基づいてルールをカスタマイズします (以下を参照してください)。
評価を定期的に実行するか、オンデマンドで進行状況を測定するようにタスクまたはジョブをスケジュールします。
ルールをカスタマイズする
ルールは、カスタマイズおよび拡張できるように設計されています。 Microsoftのルールセットはほとんどの環境で動作するよう設計されています。 しかし、すべての環境に適用できる一つのルールセットを持つことは不可能です。 ユーザーは、独自の JSON ファイルを作成し、既存のルールをカスタマイズしたり、新しく追加したりすることができます。 カスタマイズの例やMicrosoftリリースの完全なルールセットはサンプルリポジトリで入手可能です。 カスタム JSON ファイルを使用して SQL Assessment コマンドレットを実行する方法の詳細については、Get-Help コマンドレットを使用します。
ルールのカスタマイズ機能で使用できるオプション
特定のルールまたはルールのグループを有効または無効にする (タグを使用)
実際の環境に該当しない場合、または問題を修正するためのスケジュールされた作業が完了するまで、特定のルールを無効にすることができます。
しきい値パラメーターを変更する
各ルールにはしきい値があり、メトリックの現在の値と比較して問題が検出されます。 既定のしきい値が適切でない場合は、変更できます。
自分またはサード パーティが作成したルールをさらに追加する
SQL Assessment API の呼び出しにパラメーターとして 1 つまたは複数の JSON ファイルを追加することで、ルールセットをまとめることができます。 このようなファイルは、自分の組織で作成する場合と、サード パーティから取得する場合があります。 例えば、Microsoftのルールセットから特定のルールを無効にするJSONファイルと、環境に合ったルールを含む業界専門家による別のJSONファイル、さらにそのJSONファイルの閾値を変更する別のJSONファイルを作ることができます。
重要
信頼されていないソースから提供されたルールセットは、安全であることを十分に確認するまで使用しないことをお勧めします。