動的データ マスクを使用して機密データを管理する
Azure SQL Database、Azure SQL Managed Instance、および Azure Synapse Analytics は、動的データ マスクをサポートしています。 動的データ マスクにより、非特権ユーザーへのデータの開示が制限され、マスクされているデータが表示できなくなります。 また、アプリケーション レイヤーへの影響を最小限にする機密情報への不正アクセスの防止でも役立ちます。 動的データ マスクはポリシーベースのセキュリティ機能です。 これにより、指定されたデータベース フィールドで実行されるクエリの結果セット内の機密データが非表示になります。
それでは、そのしくみについて例を示します。 たとえば、ある銀行のコール センターのサービス担当者として働いているとします。 コンプライアンスのために、すべての発信者はクレジット カード番号の数字をいくつか伝えることによって、身元を証明する必要があります。 このシナリオでは、完全なクレジット カード番号を、コール センターのサービス担当者に完全に公開すべきではありません。 クレジット カード番号のたとえば下 4 桁を除くすべての数字をマスクするというマスク ルールを定義できるので、クレジット カード番号の下 4 桁だけを結果として与えるクエリが作成されます。 これは、コンプライアンスに違反しないようにさまざまな個人データに等しく適用できる一例にすぎません。 Azure Synapse Analytics の場合、動的データ マスキング ポリシーは、PowerShell または REST API を使用して設定します。 動的データ マスク ポリシーの構成は、Azure SQL Database 管理者、サーバー管理者、または SQL セキュリティ マネージャーの役割によって行うことができます。
Azure Synapse Analytics では、動的データ マスクを次の場所から見つけることができます。
動的データ マスク ポリシーについて:
動的データ マスク ポリシーから除外される SQL ユーザー
次の SQL ユーザーまたは Microsoft Entra の ID は、SQL クエリの結果でマスクされないデータを取得できます。 管理者特権を持つユーザーは常にマスクから除外され、マスクのない元のデータを見ることができます。
マスク ルール - マスク ルールとは、使用されるマスク関数を含む、マスクされる指定のフィールドを定義するルールのセットです。 データベースのスキーマ名、テーブル名、列名を使用し、指定のフィールドを定義できます。
マスク関数 - マスク関数とは、さまざまなシナリオに対応してデータの公開を制御する方法のセットです。
PowerShell コマンドレットを使用して Azure Synapse Analytics でデータベースの動的データ マスクを設定する
ここでは、PowerShell コマンドレットを使用して、Azure Synapse Analytics のデータベースの動的データ マスクについて説明します。
- データ マスキングのポリシー
- Get-AzSqlDatabaseDataMaskingPolicy
Get-AzSqlDatabaseDataMaskingPolicy は、データベースのデータ マスキング ポリシーを取得します。
PowerShell での Get-AzSqlDatabaseDataMaskingPolicy の構文は、次のとおりです。
Get-AzSqlDatabaseDataMaskingPolicy [-ServerName] <String> [-DatabaseName] <String>
[-ResourceGroupName] <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
[<CommonParameters>]
Get-AzSqlDatabaseDataMaskingPolicy コマンドレットは、Azure SQL データベースのデータ マスキング ポリシーを取得します。
PowerShell でこのコマンドレットを使用するには、次のパラメーターを指定してデータベースを識別する必要があります。
- ResourceGroupName: データベースをデプロイしたリソース グループの名前
- ServerName: SQL サーバー名
- DatabaseName : データベースの名前
このコマンドレットは、Azure 上の SQL Server Stretch Database サービスでもサポートされています。
- Set-AzSqlDatabaseDataMaskingPolicy
Set-AzSqlDatabaseDataMaskingPolicy は、データベースのデータ マスキングを設定します。
PowerShell での Set-AzSqlDatabaseDataMaskingPolicy の構文は、次のとおりです。
Set-AzSqlDatabaseDataMaskingPolicy [-PassThru] [-PrivilegedUsers <String>] [-DataMaskingState <String>]
[-ServerName] <String> [-DatabaseName] <String> [-ResourceGroupName] <String>
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
Set-AzSqlDatabaseDataMaskingPolicy コマンドレットは、Azure SQL データベースのデータ マスキング ポリシーを設定します。
PowerShell でこのコマンドレットを使用するには、次のパラメーターを指定してデータベースを識別する必要があります。
- ResourceGroupName: データベースをデプロイしたリソース グループの名前
- ServerName: SQL サーバー名
- DatabaseName : データベースの名前
さらに、データ マスキング操作を有効にするか無効にするかを指定するには、DataMaskingState パラメーターを設定する必要があります。
コマンドレットが成功し、PassThru パラメーターが使用されている場合は、データベース識別子に加えて、現在のデータ マスキング ポリシーを説明するオブジェクトが返されます。
データベース識別子には、ResourceGroupName、ServerName、および DatabaseName を含めることができます。
このコマンドレットは、Azure 上の SQL Server Stretch Database サービスでもサポートされています。
- データ マスキングのルール
- Get-AzSqlDatabaseDataMaskingRule
Get-AzSqlDatabaseDataMaskingRule は、データベースからデータ マスキング ルールを取得します。
PowerShell での Get-AzSqlDatabaseDataMaskingRule の構文は、次のとおりです。
Get-AzSqlDatabaseDataMaskingRule [-SchemaName <String>] [-TableName <String>] [-ColumnName <String>]
[-ServerName] <String> [-DatabaseName] <String> [-ResourceGroupName] <String>
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
Get-AzSqlDatabaseDataMaskingRule コマンドレットは、Azure SQL データベースの特定のデータ マスキング ルールまたはすべてのデータ マスキング ルールのいずれかを取得します。
PowerShell でこのコマンドレットを使用するには、次のパラメーターを指定してデータベースを識別する必要があります。
- ResourceGroupName: データベースをデプロイしたリソース グループの名前
- ServerName: SQL サーバー名
- DatabaseName : データベースの名前
また、RuleId パラメーターを指定して、このコマンドレットによって返されるルールを指定する必要があります。
RuleId を指定しない場合は、その Azure SQL データベースのすべてのデータ マスキング ルールが返されます。
このコマンドレットは、Azure 上の SQL Server Stretch Database サービスでもサポートされています。
- New-AzSqlDatabaseDataMaskingRule
New-AzSqlDatabaseDataMaskingRule によって、データベースのデータ マスキング ルールが作成されます。
PowerShell での New-AzSqlDatabaseDataMaskingRule の構文は、次のとおりです。
New-AzSqlDatabaseDataMaskingRule -MaskingFunction <String> [-PrefixSize <UInt32>] [-ReplacementString <String>]
[-SuffixSize <UInt32>] [-NumberFrom <Double>] [-NumberTo <Double>] [-PassThru] -SchemaName <String>
-TableName <String> -ColumnName <String> [-ServerName] <String> [-DatabaseName] <String>
[-ResourceGroupName] <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
[<CommonParameters>]
New-AzSqlDatabaseDataMaskingRule コマンドレットは、Azure SQL データベースのデータ マスキング ルールを作成します。
PowerShell でこのコマンドレットを使用するには、次のパラメーターを指定してルールを識別する必要があります。
- ResourceGroupName: データベースをデプロイしたリソース グループの名前
- ServerName: SQL サーバー名
- DatabaseName : データベースの名前
ルールの対象を指定するには、TableName と ColumnName を指定する必要があります。
MaskingFunction パラメーターは、データをマスクする方法を定義するために必要です。
MaskingFunction の値が数値またはテキストである場合は、数値マスキングについては NumberFrom および NumberTo パラメーターを指定し、テキスト マスキングについては PrefixSize、ReplacementString、および SuffixSize を指定することができます。
コマンドが成功し、 PassThru パラメーターが使用されている場合、コマンドレットはルール識別子に加えてデータ マスキング ルールのプロパティを記述するオブジェクトを返します。
ルール識別子は、ResourceGroupName、ServerName、DatabaseName、RuleID などになる場合があります。
このコマンドレットは、Azure 上の SQL Server Stretch Database サービスでもサポートされています。
- Remove-AzSqlDatabaseDataMaskingRule
Remove-AzSqlDatabaseDataMaskingRule は、データベースからデータ マスキング ルールを削除します。
PowerShell での Remove-AzSqlDatabaseDataMaskingRule の構文は、次のとおりです。
Remove-AzSqlDatabaseDataMaskingRule [-PassThru] [-Force] -SchemaName <String> -TableName <String>
-ColumnName <String> [-ServerName] <String> [-DatabaseName] <String> [-ResourceGroupName] <String>
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
Remove-AzSqlDatabaseDataMaskingRule コマンドレットは、Azure SQL データベースから特定のデータ マスキング ルールを削除します。
PowerShell でこのコマンドレットを使用するには、次のパラメーターを指定して、削除する必要があるルールを識別する必要があります。
- ResourceGroupName: データベースをデプロイしたリソース グループの名前
- ServerName: SQL サーバー名
- DatabaseName : データベースの名前
- RuleId : ルールの識別子
このコマンドレットは、Azure 上の SQL Server Stretch Database サービスでもサポートされています。
- Set-AzSqlDatabaseDataMaskingRule
Set-AzSqlDatabaseDataMaskingRule は、データベースのデータ マスキング ルールのプロパティを設定します。
PowerShell での Set-AzSqlDatabaseDataMaskingRule の構文は、次のとおりです。
Set-AzSqlDatabaseDataMaskingRule [-MaskingFunction <String>] [-PrefixSize <UInt32>]
[-ReplacementString <String>] [-SuffixSize <UInt32>] [-NumberFrom <Double>] [-NumberTo <Double>] [-PassThru]
-SchemaName <String> -TableName <String> -ColumnName <String> [-ServerName] <String> [-DatabaseName] <String>
[-ResourceGroupName] <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
[<CommonParameters>]
Set-AzSqlDatabaseDataMaskingRule コマンドレットは、Azure SQL データベースのデータ マスキング ルールを設定します。
PowerShell でこのコマンドレットを使用するには、次のパラメーターを指定してルールを識別する必要があります。
- ResourceGroupName: データベースをデプロイしたリソース グループの名前
- ServerName: SQL サーバー名
- DatabaseName : データベースの名前
- RuleId : ルールの識別子
SchemaName、TableName、および ColumnName の任意のパラメーターを指定して、ルールのターゲットを再指定することができます。
データのマスク方法を変更するには、MaskingFunction パラメーターを指定します。
MaskingFunction に数値またはテキストの値を指定した場合は、数値マスキングについては NumberFrom および NumberTo パラメーターを指定し、テキスト マスキングについては PrefixSize、ReplacementString、および SuffixSize パラメーターを指定することができます。
コマンドが成功し、 PassThru パラメーターが指定されている場合、コマンドレットはデータ マスキング ルールのプロパティを記述するオブジェクトとルール識別子を返します。
ルール識別子は、ResourceGroupName、ServerName、DatabaseName、RuleId になる場合があります。
このコマンドレットは、Azure 上の SQL Server Stretch Database サービスでもサポートされています。
REST API を使用して Azure Synapse Analytics でデータベースの動的データ マスクを設定する
Azure Synapse Analytics で SQL Database 動的データ マスクを設定する場合、REST API を使用することもできます。 これにより、データ マスキング ポリシーとルールをプログラムで管理できるようになります。
REST API は、次の操作をサポートします。
- データ マスキングのポリシー
- Create または Update
REST API を使用した Create または Update マスキング ポリシーでは、データベース データ マスキング ポリシーが作成または更新されます。
HTTP では、次の要求を行うことができます。>注: API の日付は時間の経過と同時に変更され、使用するバージョンは目的と必要な機能によって決まります。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/dataMaskingPolicies/Default?api-version=2021-06-01
次のパラメーターを渡す必要があります。
- SubscriptionID: サブスクリプションの ID
- ResourceGroupName: データベースをデプロイしたリソース グループの名前
- ServerName: SQL サーバー名
- DatabaseName : データベースの名前
- dataMaskingPolicyName: データ マスキング ポリシーの名前
- api version: 使用されている API のバージョン。
- 取得
Get ポリシーでは、データベース データ マスキング ポリシーが取得されます。
HTTP では、次の要求を行うことができます。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/dataMaskingPolicies/Default?api-version=2021-06-01
次のパラメーターを渡す必要があります。
- SubscriptionID: サブスクリプションの ID
- ResourceGroupName: データベースをデプロイしたリソース グループの名前
- ServerName: SQL サーバー名
- DatabaseName : データベースの名前
- dataMaskingPolicyName: データ マスキング ポリシーの名前
- api version: 使用されている API のバージョン。
データ マスキングのルール
Create または Update
Create または Update のマスキング ルールでは、データベース データ マスキング ルールが作成または更新されます。
HTTP では、次の要求を行うことができます。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/dataMaskingPolicies/Default/rules/{dataMaskingRuleName}?api-version=2021-06-01
次のパラメーターを渡す必要があります。
- SubscriptionID: サブスクリプションの ID
- ResourceGroupName: データベースをデプロイしたリソース グループの名前
- ServerName: SQL サーバー名
- DatabaseName : データベースの名前
- dataMaskingPolicyName: データ マスキング ポリシーの名前
- dataMaskingRuleName: データ マスキングのルールの名前
- api version: 使用されている API のバージョン。
- List By Database
List By Database 要求では、データベース データ マスキング ルールの一覧が取得されます。
HTTP では、次の要求を行うことができます。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/dataMaskingPolicies/Default/rules?api-version=2021-06-01
次のパラメーターを渡す必要があります。
- SubscriptionID: サブスクリプションの ID
- ResourceGroupName: データベースをデプロイしたリソース グループの名前
- ServerName: SQL サーバー名
- DatabaseName : データベースの名前
- dataMaskingPolicyName: データ マスキング ポリシーの名前
- api version: 使用されている API のバージョン。