使用動態資料遮罩來管理敏感性資料
Azure SQL Database、Azure SQL 受控執行個體與 Azure Synapse Analytics 都支援動態資料遮罩。 動態資料遮罩可確保有限的資料暴露給非特殊權限的使用者,使其無法查看正在遮罩的資料。 它也可協助您避免未經授權存取對應用程式層影響最低的機密資訊。 動態資料遮罩是以原則為基礎的安全性功能。 其會在對指定的資料庫欄位執行的查詢結果集中隱藏敏感性資料。
讓我們為您提供其運作方式的範例。 假設您在銀行的客服中心擔任服務代表。 因為合規性,任何呼叫者都必須提供其信用卡號碼的數個數字來識別自己的身分。 在此案例中,完整的信用卡號碼不應完全公開給撥接中心的服務代表。 您可以定義遮罩規則,該規則會遮罩除了信用卡號碼的最後四個數字以外的所有資料,您會收到一個查詢,只提供信用卡號碼的最後四個數字作為結果。 這只是一個可同樣套用至各種個人資料的範例,因此不會違反合規性。 針對 Azure Synapse Analytics,設定動態資料遮罩原則的方式是使用 PowerShell 或 REST API。 動態資料遮罩原則的設定可由 Azure SQL Database 管理員、伺服器管理員或 SQL 安全性管理員角色來完成。
在 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 參數,則除了資料庫識別碼之外,也會傳回描述目前資料遮罩原則的物件。
資料庫識別碼可以包括 ResourceGroupName、ServerName 和 DatabaseName。
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:資料庫名稱
必須提供 TableName 和 ColumnName,才能指定規則的目標。
需有 MaskingFunction 參數才能定義如何遮罩資料。
如果 MaskingFunction 的值為 [數字] 或 [文字],則可針對數字遮罩指定 NumberFrom 和 NumberTo 參數,或針對文字遮罩指定 PrefixSize、ReplacementString 和 SuffixSize。
如果命令成功並使用了 PassThru 參數,此 Cmdlet 傳回的物件除了描述規則識別碼,還會描述資料遮罩規則屬性。
例如,規則識別碼可以是 ResourceGroupName、ServerName、DatabaseName 和 RuleID。
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:規則的識別碼
您可以提供 SchemaName、TableName 和 ColumnName 的任何參數,以重設規則的目標。
指定 MaskingFunction 參數,以修改資料的遮蔽方式。
如果您為 MaskingFunction 指定的值為 [數字] 或 [文字],則可針對數字遮罩指定 NumberFrom 和 NumberTo 參數,或針對文字遮罩指定 PrefixSize、ReplacementString 和 SuffixSize 參數。
如果命令成功,而且您指定 PassThru 參數,此 Cmdlet 傳回的物件會描述資料遮罩規則屬性和規則識別碼。
規則識別碼可以是 ResourceGroupName、ServerName、DatabaseName 和 RuleId。
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 版本。