SQL データの検出と分類
適用対象: SQL Server
データの検出と分類により、データベース内の機密データの検出、分類、ラベル付け、およびレポートを行う機能が追加されます。 これは、T-SQL または SQL Server Management Studio (SSMS) を使って行うことができます。 最も機密性の高いデータ (ビジネス、財務、医療など) の検出と分類は、組織の情報保護の達成において極めて重要な役割を果たすことができます。 次のような場合にインフラストラクチャとして使用できます。
- データのプライバシー基準を満たせるようにする。
- 機密性の高いデータを含むデータベースまたは列へのアクセスを監視する。
Note
データの検出と分類は、SQL Server 2012 以降でサポートされ、SSMS 17.5 以降で使用できます。 Azure SQL Database については、「Azure SQL Database のデータの検出と分類」を参照してください。
概要
データの検出と分類を使用することで、データベースだけでなくデータの保護も目的として、SQL Database、SQL Managed Instance、および Azure Synapse の新しい情報保護パラダイムを形成することができます。 現在、次の機能がサポートされています。
- 検出および推奨事項 - 分類エンジンはデータベースをスキャンし、機密データが含まれる可能性のある列を識別します。 適切な分類の推奨事項を確認して適用するだけでなく、手動で列を分類するための簡単な方法が提供されます。
- ラベル付け - 列で永続的に機密分類ラベルにタグを付けることができます。
- 表示 - データベース分類状態を詳細なレポートに表示することができます。このレポートを印刷したりエクスポートしたりして、コンプライアンスと監査の目的に合わせて使用することができます。
機微な列の検出、分類およびラベル付け
次のセクションでは、データベース内の機密データを含む列の検出、分類、およびラベル付けの手順に加え、データベースの現在の分類状態の表示とレポートのエクスポートの手順について説明します。
分類には、次の 2 つのメタデータ属性が含まれます。
- ラベル - 列に格納されるデータの機密レベルを定義するために使用される、主な分類属性です。
- 情報の種類 - 列に格納されるデータの種類をさらに細分化します。
SQL Server データベースを分類するには:
SQL Server Management Studio (SSMS) で、SQL Server に接続します。
SSMS のオブジェクト エクスプローラーで、分類するデータベースを選び、[タスク]>[データ検出と分類]>[データの分類] を選びます。
分類エンジンによって、機密データが含まれる可能性のある列 (列名のみに基づく) についてデータベースがスキャンされ、推奨される列の分類のリストが提供されます。
推奨される列の分類のリストを表示するには、上部にある推奨事項通知ボックス、またはウィンドウの下部にある推奨事項パネルを選びます。
推奨事項のリストを確認します。
特定の列の推奨事項を承諾するには、関連する行の左側の列のチェック ボックスをオンにします。 推奨事項テーブル ヘッダーのチェック ボックスをオンにして、すべての推奨事項 を承諾済みとしてマークすることもできます。
ドロップダウン ボックスを使用して、推奨される情報の種類と機密ラベルを変更することもできます。
選んだ推奨事項を適用するには、[Save selected recommendations]\(選択した推奨事項を保存する\) を選びます。
Note
自動データ検出を実行し、機密性の高い列の推奨事項を提供するレコメンデーション エンジンは、Microsoft Purview 情報保護ポリシー モードを使用すると無効になります。
分類済みの列を表示するには、ドロップダウンから適切なスキーマと対応するテーブルを選んで、[Load Columns]\(列の読み込み\) を選びます。
代わりに列を手動で分類することもできます。さらに、推奨事項ベースの分類について、次の操作を実行することもできます。
ウィンドウの上部のメニューで、[分類の追加] を選択します。
開いたコンテキスト ウィンドウで、分類する列の名前、情報の種類、秘密度ラベルを入力します。 スキーマとテーブルは、メイン ページのエントリに基づいて選択されます。
特定のテーブルのすべての未分類の列の分類をまとめて追加する場合は、[分類の追加] ページの [列] ドロップダウンで [All Unclassified]\(すべての未分類\) を選びます。
分類を完了し、新しい分類メタデータでデータベース列に永続的にラベル (タグ) を付けるには、ウィンドウの上部のメニューで [保存] ボタンを選びます。
データベースの分類状態の完全な要約を示すレポートを生成するには、ウィンドウの上部のメニューで [View Report]\(レポートの表示\) を選びます。 (SSMS でレポートを生成することもできます。レポートを生成するデータベースを選び、[タスク]>[データの検出と分類]>[レポートの生成] を選びます。)
Microsoft Purview 情報保護 ポリシーを使用してデータベースを分類する
Note
Microsoft Information Protection (MIP と略記) は、Microsoft Purview 情報保護として再ブランド化されました。 MIP と Microsoft Purview 情報保護の両方の用語は、このドキュメントでは同じ意味で使用されることが多いですが、どちらも同じ概念を指します。
Microsoft Purview 情報保護 のラベルは、ユーザーが Server 内の機密データを分類するためのシンプルで統一された方法を提供します。 MIP の秘密度ラベルは、Microsoft 365 コンプライアンス センター [Microsoft Purview コンプライアンス ポータル にブランド変更されました] で作成および管理されます。 Microsoft Purview コンプライアンス ポータルで MIP の機密ラベルを作成および公開する方法については、Microsoft Information Protection の秘密度ラベルに関する記事をご覧ください。
これで、Microsoft Purview 情報保護 のラベルを使って SSMS でソース (SQL Server) のデータを分類できるようになり、それを Power BI、Office、その他の Microsoft 製品で使用できます。 これらの秘密度ラベルは、SQL Information Protection ポリシーと同じように、データベースの列レベルで適用されます。
サポートされているデータ ソース内の秘密度ラベル付きのデータに接続する Power BI のデータセットまたはレポートが、それらのラベルを自動的に継承できるようになります。これにより、そのデータは分類されたまま、Power BI に取り込まれたりダウンストリームのアプリケーションにエクスポートされたりします。 SSMS で MIP ポリシーを利用できるため、エンタープライズ全体の分類ソリューションをエンドツーエンドで実現できます。
Microsoft Purview 情報保護ポリシーを構成する手順
SQL Server Management Studio (SSMS) で、SQL Server に接続します。
SSMS のオブジェクト エクスプローラーで、分類するデータベースを選び、[タスク]>[データ検出と分類]>[Set Microsoft Information Protection Policy]\(Microsoft Information Protection ポリシーの設定\) を選びます
Microsoft Information Protection ポリシーを設定するための Microsoft 365 の認証ウィンドウが表示されます。 [サインイン] を選び、有効なユーザー資格情報を入力するか選んで、Microsoft 365 テナントに対する認証を行います。
認証が成功すると、[成功] という状態のポップアップ ウィンドウが表示されます。
省略可能 - 任意の Microsoft ソブリン クラウドにサインインして Microsoft 365 の認証を行いたい場合は、SSMS から >[ツール]>[オプション]>[Azure サービス]>[Azure クラウド] に移動し、[名前] を適切な Microsoft ソブリン クラウドに変更します。
SSMS の [オブジェクト エクスプローラー] ウィンドウで、分類するデータベースを右クリックして、[タスク]>[データ検出と分類]>[データの分類] を選びます。 Microsoft 365 テナントで定義されている MIP 秘密度ラベルを使って新しい分類を追加し、それらのラベルを使って SQL Server 内の列を分類できるようになります。
データの自動検出と推奨事項は、Microsoft Information Protection ポリシー モードの間は無効になっています。 現在は、SQL Information Protection ポリシー モードでのみ使用できます。
Information Protection ポリシーを既定値または SQL Information Protection にリセットするには、SSMS のオブジェクト エクスプローラーに移動し、データベースを右クリックして、[タスク]>[データ検出と分類]>[情報保護ポリシーを既定値にリセット] を選びます。 これにより、既定値または SQL Information Protection ポリシーが適用され、MIP ラベルの代わりに SQL の秘密度ラベルを使ってデータを分類できます。
カスタム JSON ファイルから Information Protection ポリシーを有効にするには、SSMS のオブジェクト エクスプローラーに移動し、データベースを右クリックして、[タスク]>[データ検出と分類]>[情報保護ポリシー ファイルの設定] を選びます。
Note
警告アイコンは、現在選択されているポリシー モードとは異なる Information Protection ポリシーを使って、列が以前に分類されたことを示します。 たとえば、現在は Microsoft Information Protection モードであり、列の 1 つが SQL Information Protection ポリシーまたはカスタム ポリシー ファイルからの Information Protection ポリシーを使って以前に分類されていた場合、その列に対して警告アイコンが表示されます。 その列の分類を、現在のポリシー モードで使用できるいずれかの秘密度ラベルに変更するか、そのままにするかを決定できます。
SSMS で Information Protection ポリシーを管理する
SSMS 18.4 以降を使って、Information Protection ポリシーを管理できます。
SQL Server Management Studio (SSMS) で、SQL Server に接続します。
SSMS のオブジェクト エクスプローラーで、目的のデータベースを右クリックし、[タスク]>[データ検出と分類] を選びます。
次のメニュー オプションで Information Protection ポリシーを管理できます。
[Set Microsoft Information Protection Policy]\(Microsoft Information Protection ポリシーの設定\): Information Protection ポリシーを Microsoft Purview 情報保護ポリシーに設定します。
[情報保護ポリシー ファイルの設定]: 選択されている JSON ファイルで定義されているものとして SQL Information Protection ポリシーを使用します。 (既定の情報保護ポリシー ファイルを参照してください)
[情報保護ポリシーのエクスポート]: Information Protection ポリシーを JSON ファイルにエクスポートします。
[情報保護ポリシーのリセット]: Information Protection ポリシーを既定の SQL Information Protection ポリシーにリセットします。
重要
情報保護ポリシー ファイルは SQL Server に保存されません。 SSMS では既定の Information Protection ポリシーが使用されます。 カスタマイズされた Information Protection ポリシーでエラーが発生した場合、SSMS では既定のポリシーを使用できません。 データ分類でエラーが発生します。 解決するには、[情報保護ポリシーのリセット] をクリックし、既定のポリシーを使用し、データ分類をもう一度有効にします。
分類メタデータへのアクセス
SQL Server 2019 には sys.sensitivity_classifications
というシステム カタログ ビューが導入されています。 このビューでは、情報の種類と機密ラベルが返されます。
SQL Server 2019 インスタンスで、sys.sensitivity_classifications
を問い合わせ、分類されているすべての列とそれらに対応する分類を確認します。 次に例を示します。
SELECT
schema_name(O.schema_id) AS schema_name,
O.NAME AS table_name,
C.NAME AS column_name,
information_type,
label,
rank,
rank_desc
FROM sys.sensitivity_classifications sc
JOIN sys.objects O
ON sc.major_id = O.object_id
JOIN sys.columns C
ON sc.major_id = C.object_id AND sc.minor_id = C.column_id
SQL Server 2019 より前の場合、情報の種類と機密ラベルの分類メタデータは次の拡張プロパティにあります。
sys_information_type_name
sys_sensitivity_label_name
SQL Server 2017 以前のインスタンスの場合、次の例からは、分類されているすべての列とそれらに対応する分類が返されます。
SELECT
schema_name(O.schema_id) AS schema_name,
O.NAME AS table_name,
C.NAME AS column_name,
information_type,
sensitivity_label
FROM
(
SELECT
IT.major_id,
IT.minor_id,
IT.information_type,
L.sensitivity_label
FROM
(
SELECT
major_id,
minor_id,
value AS information_type
FROM sys.extended_properties
WHERE NAME = 'sys_information_type_name'
) IT
FULL OUTER JOIN
(
SELECT
major_id,
minor_id,
value AS sensitivity_label
FROM sys.extended_properties
WHERE NAME = 'sys_sensitivity_label_name'
) L
ON IT.major_id = L.major_id AND IT.minor_id = L.minor_id
) EP
JOIN sys.objects O
ON EP.major_id = O.object_id
JOIN sys.columns C
ON EP.major_id = C.object_id AND EP.minor_id = C.column_id
アクセス許可
SQL Server 2019 のインスタンスでは、分類を表示するために VIEW ANY SENSITIVITY CLASSIFICATION 権限が必要です。 詳細については、「 Metadata Visibility Configuration」を参照してください。
SQL Server 2019 よりも前の場合、メタデータには、拡張プロパティ カタログ ビュー sys.extended_properties
を使用してアクセスすることができます。
分類を管理するには、ALTER ANY SENSITIVITY CLASSIFICATION 権限が必要です。 ALTER ANY SENSITIVITY CLASSIFICATION は、データベース権限 ALTER またはサーバー権限 CONTROL SERVER によって示されます。
分類の管理
T-SQL を使って、列の分類を追加または削除したり、データベース全体のすべての分類を取得したりできます。
- 1 つまたは複数の列の分類の追加/更新: ADD SENSITIVITY CLASSIFICATION
- 1 つまたは複数の列の分類の削除: DROP SENSITIVITY CLASSIFICATION
次のステップ
Azure SQL Database については、「Azure SQL Database のデータの検出と分類」を参照してください。
次の列レベルのセキュリティ メカニズムを適用して、機微な列の保護を検討してください。
- 動的データ マスク: 使用中の機微な列を難読化します。
- Always Encrypted: 保存中の機微な列を暗号化します。