使用動態資料遮罩來管理敏感性資料

已完成

Azure SQL Database、Azure SQL 受控執行個體與 Azure Synapse Analytics 都支援動態資料遮罩。 動態資料遮罩可確保有限的資料暴露給非特殊權限的使用者,使其無法查看正在遮罩的資料。 它也可協助您避免未經授權存取對應用程式層影響最低的機密資訊。 動態資料遮罩是以原則為基礎的安全性功能。 其會在對指定的資料庫欄位執行的查詢結果集中隱藏敏感性資料。

讓我們為您提供其運作方式的範例。 假設您在銀行的客服中心擔任服務代表。 因為合規性,任何呼叫者都必須提供其信用卡號碼的數個數字來識別自己的身分。 在此案例中,完整的信用卡號碼不應完全公開給撥接中心的服務代表。 您可以定義遮罩規則,該規則會遮罩除了信用卡號碼的最後四個數字以外的所有資料,您會收到一個查詢,只提供信用卡號碼的最後四個數字作為結果。 這只是一個可同樣套用至各種個人資料的範例,因此不會違反合規性。 針對 Azure Synapse Analytics,設定動態資料遮罩原則的方式是使用 PowerShell 或 REST API。 動態資料遮罩原則的設定可由 Azure SQL Database 管理員、伺服器管理員或 SQL 安全性管理員角色來完成。

在 Azure Synapse Analytics 中,您可以在此找到動態資料遮罩:

動態資料遮罩 Azure Synapse Analytics

查看動態資料遮罩原則

  • 從動態資料遮罩原則中排除 SQL 的使用者

    下列的 SQL 使用者或 Microsoft Entra 身分識別可在 SQL 查詢結果中取得未遮罩的資料。 具有系統管理員權限的使用者永遠會從遮罩處理中排除,而且會看到沒有任何遮罩的原始資料。

  • 遮罩規則 - 遮罩規則是一組規則,其定義要進行遮罩處理的指定欄位,包括所使用的遮罩函式。 指定的欄位可使用資料庫結構描述名稱、資料表名稱和資料行名稱來定義。

  • 遮罩函式 - 遮罩函式是一組方法,可控制不同案例的資料顯示性。

使用 PowerShell Cmdlet 在 Azure Synapse Analytics 中設定資料庫的動態資料遮罩

在這個部分中,我們將使用 PowerShell Cmdlet 來深入探討 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 Cmdlet 的作用是取得 Azure SQL 資料庫的資料遮罩原則。

若要在 PowerShell 中使用此 Cmdlet,您必須指定下列參數來識別資料庫:

  • ResourceGroupName:您在其中部署資料庫的資源群組名稱
  • ServerName:SQL Server 名稱
  • DatabaseName:資料庫名稱

Azure 上的 SQL Server Stretch Database 服務也支援此 Cmdlet。

  • 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 Cmdlet 的作用是設定 Azure SQL 資料庫的資料遮罩原則。

若要在 PowerShell 中使用此 Cmdlet,您必須指定下列參數來識別資料庫:

  • ResourceGroupName:您在其中部署資料庫的資源群組名稱
  • ServerName:SQL Server 名稱
  • DatabaseName:資料庫名稱

此外,您還需要設定 DataMaskingState 參數,以指定已啟用或已停用資料遮罩作業。

如果 Cmdlet 成功並使用 PassThru 參數,則除了資料庫識別碼之外,也會傳回描述目前資料遮罩原則的物件。

資料庫識別碼可以包括 ResourceGroupNameServerNameDatabaseName

Azure 上的 SQL Server Stretch Database 服務也支援此 Cmdlet。

  • 資料遮罩規則
  • 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 Cmdlet 的作用是取得 Azure SQL 資料庫的特定資料遮罩規則或所有資料遮罩規則。

若要在 PowerShell 中使用此 Cmdlet,您必須指定下列參數來識別資料庫:

  • ResourceGroupName:您在其中部署資料庫的資源群組名稱
  • ServerName:SQL Server 名稱
  • DatabaseName:資料庫名稱

您也必須指定 RuleId 參數,以指定此 Cmdlet 所傳回的規則。

如果您未提供 RuleId,則會傳回該 Azure SQL Database 的所有資料遮罩規則。

Azure 上的 SQL Server Stretch Database 服務也支援此 Cmdlet。

  • 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 Cmdlet 的作用是建立 Azure SQL 資料庫的資料遮罩規則。

若要在 PowerShell 中使用此 Cmdlet,您必須指定下列參數來識別規則:

  • ResourceGroupName:您在其中部署資料庫的資源群組名稱
  • ServerName:SQL Server 名稱
  • DatabaseName:資料庫名稱

必須提供 TableNameColumnName,才能指定規則的目標。

需有 MaskingFunction 參數才能定義如何遮罩資料。

如果 MaskingFunction 的值為 [數字] 或 [文字],則可針對數字遮罩指定 NumberFromNumberTo 參數,或針對文字遮罩指定 PrefixSizeReplacementStringSuffixSize

如果命令成功並使用了 PassThru 參數,此 Cmdlet 傳回的物件除了描述規則識別碼,還會描述資料遮罩規則屬性。

例如,規則識別碼可以是 ResourceGroupNameServerNameDatabaseNameRuleID

Azure 上的 SQL Server Stretch Database 服務也支援此 Cmdlet。

  • 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 Cmdlet 的作用是從 Azure SQL 資料庫中移除特定資料遮罩規則。

若要在 PowerShell 中使用此 Cmdlet,您必須指定下列參數來識別需要移除的規則:

  • ResourceGroupName:您在其中部署資料庫的資源群組名稱
  • ServerName:SQL Server 名稱
  • DatabaseName:資料庫名稱
  • RuleId:規則的識別碼

Azure 上的 SQL Server Stretch Database 服務也支援此 Cmdlet。

  • 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 Cmdlet 的作用是設定 Azure SQL 資料庫的資料遮罩規則。

若要在 PowerShell 中使用此 Cmdlet,您必須指定下列參數來識別規則:

  • ResourceGroupName:您在其中部署資料庫的資源群組名稱
  • ServerName:SQL Server 名稱
  • DatabaseName:資料庫名稱
  • RuleId:規則的識別碼

您可以提供 SchemaNameTableNameColumnName 的任何參數,以重設規則的目標。

指定 MaskingFunction 參數,以修改資料的遮蔽方式。

如果您為 MaskingFunction 指定的值為 [數字] 或 [文字],則可針對數字遮罩指定 NumberFromNumberTo 參數,或針對文字遮罩指定 PrefixSizeReplacementStringSuffixSize 參數。

如果命令成功,而且您指定 PassThru 參數,此 Cmdlet 傳回的物件會描述資料遮罩規則屬性和規則識別碼。

規則識別碼可以是 ResourceGroupNameServerNameDatabaseNameRuleId

Azure 上的 SQL Server Stretch Database 服務也支援此 Cmdlet。

使用 REST API 在 Azure Synapse Analytics 中設定資料庫的動態資料遮罩

若要在 Azure Synapse Analytics 中設定動態資料遮罩,另一個可能性是利用 REST API。 這可讓您以程式設計方式管理資料遮罩原則和規則。

REST API 將支援下列作業:

  • 資料遮罩原則
  • 建立或更新

使用 REST API 建立或更新遮罩原則,將會建立或更新資料庫資料遮罩原則。

在 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:訂用帳戶的識別碼
  • ResourceGroupName:您在其中部署資料庫的資源群組名稱
  • ServerName:SQL Server 名稱
  • DatabaseName:資料庫名稱
  • dataMaskingPolicyName:資料遮罩原則的名稱
  • api 版本:所使用的 api 版本。
  • Get

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:訂用帳戶的識別碼
  • ResourceGroupName:您在其中部署資料庫的資源群組名稱
  • ServerName:SQL Server 名稱
  • DatabaseName:資料庫名稱
  • dataMaskingPolicyName:資料遮罩原則的名稱
  • api 版本:所使用的 api 版本。
  • 資料遮罩規則

  • 建立或更新

建立或更新遮罩規則可建立或更新資料庫資料遮罩規則。

在 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:訂用帳戶的識別碼
  • ResourceGroupName:您在其中部署資料庫的資源群組名稱
  • ServerName:SQL Server 名稱
  • DatabaseName:資料庫名稱
  • dataMaskingPolicyName:資料遮罩原則的名稱
  • dataMaskingRuleName:資料遮罩的規則名稱
  • api 版本:所使用的 api 版本。
  • 依資料庫列出

「依資料庫列出」要求可取得資料庫資料遮罩規則的清單。

在 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:訂用帳戶的識別碼
  • ResourceGroupName:您在其中部署資料庫的資源群組名稱
  • ServerName:SQL Server 名稱
  • DatabaseName:資料庫名稱
  • dataMaskingPolicyName:資料遮罩原則的名稱
  • api 版本:所使用的 api 版本。