静的データ マスクStatic Data Masking

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

静的データ マスキングは、SQL Server Management Studio 18.0 プレビュー 5 以降のコンポーネントとしてリリースされました。Static Data Masking released as a component of SQL Server Management Studio 18.0 preview 5 and higher.


Microsoft では、現在のプロトタイプはお客様の期待を満たしていないと判断しました。We have decided that our current prototype does not meet our customer’s expectations. そのため、この機能の今後の改良は行われない予定です。We will therefore not carry this capability forward. これに代わるものが用意できた場合、弊社の計画を改めてお知らせします。We will update you on our plans if we have a replacement candidate.

静的データ マスク

静的データ マスクとはWhat is Static Data Masking?

静的データ マスクは SQL Server Management Studio の機能であり、データベースのマスクされたコピーを作成することができます。Static Data Masking is a feature of SQL Server Management Studio that allows users to create a masked copy of a database. 機密性の高いものが含まれるデータを、チーム間または他組織との間で共有する必要がある組織のために開発された機能です。The feature was developed for organizations that need to share data, some of which is sensitive, across teams or with other organizations.

静的データ マスクとで機密データ (マスク前のデータ) を新しいデータ (マスク後のデータ) に置き換えることで、次のシナリオが容易になります。By replacing sensitive data (pre-masking data) with new data (post-masking data), Static Data Masking will facilitate the following scenarios:

  • 開発とテストDevelopment and testing
  • 分析とビジネス レポートAnalytics and business reporting
  • トラブルシューティングTroubleshooting
  • コンサルタント、調査チーム、またはサード パーティとのデータベースの共有Sharing the database with a consultant, a research team or any third party

次の例では、静的データ マスクの動作方法のしくみを示します。The example below shows how Static Data Masking works in action. マスクが行われる前、列には社会保障番号が含まれています。Before masking, the column contains social security numbers. マスクが行われた後は、各社会保障番号の最初の 5 桁が、ランダムに生成された番号によって置き換えられています。After masking, the five first digits of each social security number have been replaced by randomly generated numbers.

米国の社会保障番号 (マスク前)US Social Security Number (pre-masking) 米国の社会保障番号 (マスク後)US Social Security Number (post-masking)
140-38-9110140-38-9110 302-92-9110302-92-9110
463-34-5535463-34-5535 189-70-5535189-70-5535
116-30-8733116-30-8733 201-01-8733201-01-8733
209-36-1971209-36-1971 683-10-1971683-10-1971
372-38-6948372-38-6948 372-38-6948372-38-6948
267-64-2334267-64-2334 100-03-2334100-03-2334
523-93-4176523-93-4176 582-20-4176582-20-4176
573-91-5137573-91-5137 730-20-5137730-20-5137
612-72-1026612-72-1026 369-40-1026369-40-1026

静的データ マスクのユーザーは、複数のマスク機能から選択できます。Users of Static Data Masking can choose from several masking functions. マスク機能次第で、マスク前のデータとマスク後のデータの関連が、高くなることも、まったくなくなることもあります。Depending on the masking function, the pre-masking data and post-masking data can be highly related or not related at all. シャッフルを実行するマスク機能では、マスク前データとマスク後データの関連性が高くなります。A masking function performing a shuffle will leave post-masking data highly related to pre-masking data.

米国の社会保障番号 (マスク前)US Social Security Number (pre-masking) 米国の社会保障番号 (マスク後)US Social Security Number (post-masking)
140-38-9110140-38-9110 612-72-1026612-72-1026
463-34-5535463-34-5535 372-38-6948372-38-6948
116-30-8733116-30-8733 523-93-4176523-93-4176
209-36-1971209-36-1971 209-36-1971209-36-1971
372-38-6948372-38-6948 140-38-9110140-38-9110
267-64-2334267-64-2334 463-34-5535463-34-5535
523-93-4176523-93-4176 573-91-5137573-91-5137
573-91-5137573-91-5137 267-64-2334267-64-2334
612-72-1026612-72-1026 116-30-8733116-30-8733

NULL 値での置換を実行するマスク機能では、マスク前データとマスク後データの関連性がなくなります。A masking function performing a replacement with NULL value will leave post-masking data unrelated to pre-masking data.

米国の社会保障番号 (マスク前)US Social Security Number (pre-masking) 米国の社会保障番号 (マスク後)US Social Security Number (post-masking)
140-38-9110140-38-9110 NULLNULL
463-34-5535463-34-5535 NULLNULL
116-30-8733116-30-8733 NULLNULL
209-36-1971209-36-1971 NULLNULL
372-38-6948372-38-6948 NULLNULL
267-64-2334267-64-2334 NULLNULL
523-93-4176523-93-4176 NULLNULL
573-91-5137573-91-5137 NULLNULL
612-72-1026612-72-1026 NULLNULL

静的なデータ マスクの動作How does Static Data Masking work?

静的データ マスクは列レベルで行われます。Static Data Masking happens at the column level. ユーザーは、マスクする列と、各列に適用するマスク機能を選択します。Users select which columns they wish to mask and, for each column selected, which masking function they wish to apply. 複数のマスク機能から選択できます。There are several masking functions to choose from. 詳しくは、「マスク機能」で説明します。They are described in detail in Masking Functions.

静的データ マスクでは、データベースのコピーが作成されます。Static Data Masking will then create a copy of the database. Azure SQL Database の場合、コピーはコピー機能によって実行されます。For Azure SQL Database, the copy is performed through the copy function. SQL Server の場合は、バックアップ操作とその後の復元操作によって実行されます。For SQL Server, it is performed through a backup operation followed by a restore operation. その後、各列のマスク前のデータが、選択したマスク機能に従って、マスク後のデータに置き換えられます。From there, for each column, Static Data Masking starts replacing the pre-masking data with post-masking data according to the masking function selected.

置換はストレージ レベルで行われます。The replacement is done at the storage level. そのため、静的データ マスクの完了後に、データベースのマスクされたコピーからマスク前のデータを取得することはできません。As a result, it is not possible to retrieve pre-masking data from the masked copy of the database after Static Data Masking has completed.

攻略ガイドHow-to Guide

静的データ マスクを実行する詳細な手順を次に示します。Below is a step-by-step guide to run Static Data Masking.

  1. SQL Server Management Studio を起動します。Launch SQL Server Management studio. データベースに接続します。Connect to your database. 左側の [オブジェクト エクスプローラー] ウィンドウで、[データベース] フォルダーを展開します。In the Object Explorer pane on the left side, expand the Databases folder. マスクを行うデータベースを右クリックします。Right click on the database you wish to mask. [タスク] をクリックします。Left click on Tasks. [データベースをマスク...(プレビュー)] をクリックします。Left click on Mask database... (Preview).

[タスク] メニュー

  1. マスク構成ウィンドウが表示されます。The masking configuration window pops up. データベース内のすべてのテーブルが表示されます。It will display all the tables in the database. テーブルはスキーマごとにまとめられ、スキーマ内はアルファベット順になっています。The tables are presented by schema and then ordered by alphabetical order within a schema.

ユーザー インターフェイス

  1. テーブル名の近くのドロップダウン アイコンをクリックして、テーブル内のすべての列の一覧を表示します。Click on the drop-down icon near the table name to get a list of all the columns in the table. テーブル内の各列について、データ型と、列が null 許容かどうかが示されています。For each column in the table, the datatype of the column is specified as well as whether the column is nullable. Null 許容の列は、エントリとして NULL 値を受け取ることができる列です。A nullable column is a column that can receive the NULL value as an entry.


  1. マスクするすべての列と、適用するマスク機能を選択します。Select all the columns you wish to mask and the masking function that you wish to apply. 使用可能なマスクの種類は、[Shuffle](シャッフル) マスク、[Group Shuffle](グループ シャッフル) マスク、[Single Value](単一値) マスク、[NULL] マスク、[String Composite](文字列合成) マスクです。The types of masking available are Shuffle masking, Group Shuffle masking, Single value masking, NULL masking, String Composite masking.


注:これらのマスク機能のほとんどには、追加の構成パラメーターがあります。NOTE: Most of these masking functions have additional configuration parameters. シャッフル マスクについては、既定のパラメーターが提供されています。For Shuffle masking, Static Data Masking provides a default parameter. グループ シャッフル マスク、単一値マスク、文字列合成マスクについては、ユーザーが構成パラメーターを指定する必要があります。For Group Shuffle masking, Single value masking, and String Composite masking, the user has to provide configuration parameters. 構成パラメーターを変更または指定するには、[構成...] オプションをクリックし、ポップアップ表示されるダイアログ ボックスでパラメーターの (代替) 値を指定します。To change or provide configuration parameters, click on the Configure... option and specify an (alternative) value for the parameter in the dialog box that pops up. 各マスク機能について詳しくは、「マスク機能」をご覧ください。Detailed descriptions of each masking function are provided in Masking Functions.


マスク構成の指定は、その場で、構成関連およびスキーマ関連のエラーと警告を検証されます。The masking configuration choices get validated for configuration- and schema-related errors and warnings on-the-fly. 検出されたものは左側にアイコンとして示され、それをマウスでポイントすると、追加情報が表示されます。Anything detected will show up as an icon to the left that you can hover over with your mouse to get additional details.

次の例では、ユーザーは、NULL 値が許容されていない (NOT NULL 制約) 列に対して、NULL マスクを選択しました。In the example below, the user-selected NULL masking for a column that does not allow NULL values (NOT NULL constraint).


次の例のユーザーは、列が 1 つだけなのにグループ シャッフル マスクを選択しました。In the example below, the user-selected Group Shuffle masking for only one column. グループ シャッフルには 2 つ以上の列が必要なので、警告が表示されます。Since Group Shuffle required a minimum of two columns a warning was issued.


  1. 完全なマスク構成を XML ファイルに保存して、後で使用することができます。The complete masking configuration can be saved to an XML file for later use. マスク機能の構成は、Azure SQL データベースとオンプレミスのデータベースで同じですが、保存される他のプロパティ (バックアップ ファイルのパスなど) にはわずかな違いがあります。While masking function configuration is identical between Azure SQL databases and on-premise databases, there are some slight differences in which other properties (such as the backup file path) that get saved. 構成を保存するには、[Save Config](構成の保存) をクリックして、ファイル名を入力し、[保存] をクリックします。To save the configuration, click on Save Config, provide a file name, and click save. ユーザーは、[Load Config](構成の読み込み) を使用して、既存の構成ファイルを後で読み込むことができます。列の数が多いテーブルには構成ファイルの使用をお勧めします。Users can later load an existing configuration file using Load Config. We recommend using configuration files for tables with a large number of columns.


  1. 静的データ マスクでは、ユーザーの [Documents] フォルダーに [Static Data Masking] という名前のフォルダーが作成されて、ログ ファイルが格納されます。Static Data Masking will create a folder in the user's Documents folder named Static Data Masking and place log files inside. ログ ファイルは、デバッグの目的に役立ちます。The log files can be useful for debugging purposes. ログ ファイルの名前は、構成ウィンドウの下部で示されます。The name of the log file is indicated at the bottom of the configuration window.

  2. (SQL Server のみ) オンプレミスのデータベースで静的データ マスクを使用すると、バックアップ/復元操作が実行されます。(SQL Server only) If you operate Static Data Masking on an on-premise database, Static Data Masking will perform a backup/restore operation. [Step 2:Clone .BAK file Location](ステップ 2: .BAK ファイルの場所の複製) では、バックアップ ファイルを格納するサーバー上の場所を指定します。In Step 2: Clone .BAK file Location, provide the location on the server where the backup file will be stored.

マスク機能Masking Functions

NULL マスクNULL masking

NULL マスクでは、列のすべての値が NULL に置き換えられます。NULL masking replaces all the values in the column with NULL. 列で NULL 値が許容されていない場合、静的データ マスク ツールはエラーを返します。If the column does not allow NULL values, Static Data Masking tool will return an error.

単一値マスクSingle-value masking

単一値マスクでは、列のすべての値が 1 つの固定値に置き換えられます。この値はユーザーが指定します。Single-value masking replaces all the values in the column with a single fixed value, this value is specified by the user. 入力の形式は、選択した列の型が何であっても変換できるものでなければなりません。The format of the input must be convertible to whatever the type of the selected column is. 値を指定するには、[構成...] をクリックして、値を指定し、[OK] をクリックします。To specify the value, click on Configure..., and provide a value and then click Okay.


シャッフル マスクShuffle masking

列のすべての値が、新しい行にシャッフルされます。All the values in the column are shuffled to new rows. 新しいデータは生成されません。No new data is generated. シャッフル マスクでは、列の NULL エントリを保持するオプションが提供されます。Shuffle masking provides the option to maintain NULL entries in the column. これを行うには、[構成] をクリックして、[Maintain NULL positions](NULL の位置を保持する) ボックスをオンにします。To do so, click on Configure... and select the box Maintain NULL positions.

シャッフル マスクのパラメーター

シャッフル マスクで NULL 値の位置を保持しない場合と保持する場合の例を次に示します。Below is an example of Shuffle masking with NULL values not maintained in place and then maintained in place.

米国の社会保障番号 (マスク前)US Social Security Number (pre-masking) 米国の社会保障番号 (マスク後、NULL エントリをシャッフルする)US Social Security Number (post-masking with NULL entries shuffled) 米国の社会保障番号 (マスク後、NULL エントリをシャッフルしない)US Social Security Number (post-masking with NULL entries not shuffled)
116-30-8733116-30-8733 612-72-1026612-72-1026 463-34-5535463-34-5535
140-38-9110140-38-9110 NULLNULL 573-91-5137573-91-5137
209-36-1971209-36-1971 523-93-4176523-93-4176 140-38-9110140-38-9110
NULLNULL 209-36-1971209-36-1971 NULLNULL
463-34-5535463-34-5535 140-38-9110140-38-9110 116-30-8733116-30-8733
523-93-4176523-93-4176 463-34-5535463-34-5535 612-72-1026612-72-1026
NULLNULL 573-91-5137573-91-5137 NULLNULL
573-91-5137573-91-5137 NULLNULL 523-93-4176523-93-4176
612-72-1026612-72-1026 116-30-8733116-30-8733 209-36-1971209-36-1971

グループ シャッフル マスクGroup Shuffle masking

グループ シャッフルでは、複数の列がシャッフル グループにバインドされます。Group Shuffle binds several columns together in a shuffle group. シャッフル グループ内の列はまとめてシャッフルされます。The columns in a shuffle group will be shuffled together. ユーザーは、[構成] オプションを使用してシャッフル グループの名前を指定する必要があります。The user must specify the name of the shuffle group using the Configure... option.

グループ シャッフル マスクのパラメーター

グループ シャッフルは同じテーブル内で行われます。複数のテーブルで同じシャッフル グループ名が使用されていても、2 つのグループ シャッフルは独立したアクションです。Group shuffles happen within the same table; if the same shuffle group name is used in multiple tables, the two group shuffles are independent actions. グループに含まれる各列で、グループ名が同じである必要があります。The group name must be the same for each column to be includes in the group. 名前の大文字と小文字は区別されます。The name is case-sensitive. 同じテーブルで複数のシャッフル グループ (別の名前) を使用できます。Multiple shuffle groups (with different names) can happen in the same table.

文字列合成マスクString Composite masking

文字列合成マスクでは、パターンに従ってランダムな文字列が生成されます。String Composite masking generates random strings along a pattern. エントリが有効であるためには文字列が定義済みのパターンに従う必要があるように設計されています。It is designed for strings that must follow a predefined pattern to be a valid entry. たとえば、米国の社会保障番号の形式は 123-45-6789 です。For example, American social security numbers have the format 123-45-6789. ユーザーは、文字列合成マスクの構文を指定するパターンを、ダイアログ ボックスで入力する必要があります。The syntax for String Composite masking is specified in the dialog box where the user has to enter the pattern.


文字列合成マスクでは 3 つのパターン例が提供されており、クリックしてテストできます。String Composite masking provides three example patterns that can be tested by clicking on them. [Phone Number](電話番号) をクリックすると、ランダムなアメリカの電話番号を生成するために必要な式が、パターン ボックスに自動的に設定されます。If you click on Phone Number, the pattern box will be automatically populated with the formula required to generate random American phone numbers.


文字列合成マスクには高度なモードもあり、既存データのサブセクションをパターンによって生成された文字列で置き換えることができます。String Composite masking also has an advanced mode that allows for subsections of the existing data to be replaced with pattern-generated strings. 文字列の置き換えられる部分は、正規表現のキャプチャ グループによって決定されます。The replaced portion of the string is determined by the capture group in a regular expression. たとえば、メール アドレスのドメインを維持しながらユーザー名部分を置き換えたり、市外局番を維持して電話番号を置き換えたりすることができます。For example, the username portion of an email can be replaced while preserving the domain, or phone number can be replaced by preserving the area code. 正規表現について詳しくは、こちらをご覧ください。More information on regular expressions is available here.


文字列合成マスクとその高度なモードは、データ型が char、varchar、text、nchar、nvarchar、ntext である列に対してのみ使用できます。String Composite masking and its advanced mode can only be used for columns with datatypes char, varchar, text, nchar, nvarchar, ntext.


静的データ マスクには、次のような制限があります。Static Data Masking has the following limitations:

  • 静的データ マスクでは、テンポラル テーブルを含むデータベースはサポートされません。Static Data Masking does not support databases with temporal tables.

  • 静的データ マスクでは、メモリ最適化テーブルはマスクされません。Static Data Masking does not mask memory-optimized tables.

  • 静的データ マスクでは、計算列および ID 列はマスクされません。Static Data Masking does not mask computed columns, and identity columns.

  • 静的データ マスクでは、Azure SQL のハイパースケール データベースはサポートされません。Static Data Masking does not support Azure SQL Hyperscale databases.

  • 静的データ マスクでは、geometry および geography データ型はサポートされません。Static Data Masking does not support geometry and geography datatypes.

さらに、静的データ マスクでは、そのマスク機能に関して 3 つの制限があります。In addition, Static Data Masking presents three limitations in its masking abilities:

  • 静的データ マスクでは、ヒストグラム統計は更新されません。Static Data Masking does not update histogram statistics. そのため、静的データ マスクが完了した後、データベースのマスクされたコピーのヒストグラム統計情報に、機密データがまだ含まれる可能性があります。Consequently, the masked copy of the database may still contain sensitive data in the histogram statistics once Static Data Masking has been completed. UPDATE STATISTICS を実行してこの問題を解決することを検討してください。Consider running UPDATE STATISTICS to remedy this issue.

  • 静的データ マスクでエラーが返った場合、すべてのマスク操作が中断されます。If Static Data Masking returns an error, all masking operations are suspended. データベースのコピーは削除されず、機密情報が含まれる可能性があります。The copy of the database is not deleted and may contain sensitive information. 静的データ マスクでエラーが返った場合は、ユーザーにコピーを削除する責任があります。The user is responsible for deleting the copy of the database if Static Data Masking returns an error.

  • (SQL Server のみ) 静的データ マスクが完了した後も、データ ファイルログ ファイルの未割り当てメモリ内に機密データが含まれる場合があります。(SQL Server only) The data file(s) and the log file may still contain bits of sensitive data in unallocated memory after Static Data Masking has completed. データ ファイルとログ ファイルに対するアクセス権が付与された場合、この機密データを 16 進エディターで取得できる可能性があります。This sensitive data may be retrievable with a hex editor if given access to the data file(s) and the log file.

参照See Also

動的なデータ マスキング Dynamic Data Masking
SQL Database の静的データ マスクでの作業開始Get started with SQL Database Static Data Masking