Skip to content

Commit 5127415

Browse files
authored
Merge pull request Azure#10382 from bashahee/dataClassification
Disable and enable sensitivity recommendations on columns in a database
2 parents 05fa62d + dc19e82 commit 5127415

25 files changed

+4702
-198
lines changed

src/Sql/Sql.Test/ScenarioTests/DataClassificationTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,12 @@ public void TestBasicDataClassificationOnSqlManagedDatabase()
5555
{
5656
RunPowerShellTest("Test-BasicDataClassificationOnSqlManagedDatabase");
5757
}
58+
59+
[Fact]
60+
[Trait(Category.AcceptanceType, Category.CheckIn)]
61+
public void TestEnableDisableRecommendationsOnSqlDatabase()
62+
{
63+
RunPowerShellTest("Test-EnableDisableRecommendationsOnSqlDatabase");
64+
}
5865
}
5966
}

src/Sql/Sql.Test/ScenarioTests/DataClassificationTests.ps1

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,4 +527,118 @@ function Create-SqlDataClassificationTestEnvironment ($testSuffix, $location = "
527527
$connection.Close()
528528
}
529529
}
530+
}
531+
532+
<#
533+
.SYNOPSIS
534+
Tests enable and disable recommdations on columns in a SQL database.
535+
#>
536+
function Test-EnableDisableRecommendationsOnSqlDatabase
537+
{
538+
# Setup
539+
$testSuffix = getAssetName
540+
Create-SqlDataClassificationTestEnvironment $testSuffix
541+
$params = Get-DataClassificationTestEnvironmentParameters $testSuffix
542+
543+
try
544+
{
545+
# Get recommended sensitivity labels, and verify.
546+
$recommendations = Get-AzSqlDatabaseSensitivityRecommendation -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName
547+
Assert-AreEqual $params.rgname $recommendations.ResourceGroupName
548+
Assert-AreEqual $params.serverName $recommendations.ServerName
549+
Assert-AreEqual $params.databaseName $recommendations.DatabaseName
550+
551+
$recommendationsCount = ($recommendations.SensitivityLabels).count
552+
Assert-AreEqual 4 $recommendationsCount
553+
554+
$firstRecommendation = ($recommendations.SensitivityLabels)[0]
555+
$firstSchemaName = $firstRecommendation.SchemaName
556+
$firstTableName = $firstRecommendation.TableName
557+
$firstColumnName = $firstRecommendation.ColumnName
558+
$firstInformationType = $firstRecommendation.InformationType
559+
$firstSensitivityLabel = $firstRecommendation.SensitivityLabel
560+
561+
Assert-AreEqual "dbo" $firstSchemaName
562+
Assert-AreEqual "Persons" $firstTableName
563+
Assert-NotNullOrEmpty $firstColumnName
564+
Assert-NotNullOrEmpty $firstInformationType
565+
Assert-NotNullOrEmpty $firstSensitivityLabel
566+
567+
$secondRecommendation = ($recommendations.SensitivityLabels)[1]
568+
$secondSchemaName = $secondRecommendation.SchemaName
569+
$secondTableName = $secondRecommendation.TableName
570+
$secondColumnName = $secondRecommendation.ColumnName
571+
$secondInformationType = $secondRecommendation.InformationType
572+
$secondSensitivityLabel = $secondRecommendation.SensitivityLabel
573+
574+
Assert-AreEqual "dbo" $secondSchemaName
575+
Assert-AreEqual "Persons" $secondTableName
576+
Assert-NotNullOrEmpty $secondColumnName
577+
Assert-NotNullOrEmpty $secondInformationType
578+
Assert-NotNullOrEmpty $secondSensitivityLabel
579+
580+
# Disable first two recommdationsd, second recommdation is disabled using pipeline.
581+
Disable-AzSqlDatabaseSensitivityRecommendation -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName -SchemaName $firstSchemaName -TableName $firstTableName -ColumnName $firstColumnName
582+
Get-AzSqlDatabase -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName | Disable-AzSqlDatabaseSensitivityRecommendation -SchemaName $secondSchemaName -TableName $secondTableName -ColumnName $secondColumnName
583+
584+
# Get, using pipeline, recommended sensitivity labels, and verify.
585+
$recommendations = Get-AzSqlDatabase -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName | Get-AzSqlDatabaseSensitivityRecommendation
586+
Assert-AreEqual $params.rgname $recommendations.ResourceGroupName
587+
Assert-AreEqual $params.serverName $recommendations.ServerName
588+
Assert-AreEqual $params.databaseName $recommendations.DatabaseName
589+
Assert-AreEqual 2 ($recommendations.SensitivityLabels).count
590+
591+
# Verify disabled recommdations are not part of the new recommdations.
592+
Assert-AreNotEqual $firstColumnName ($recommendations.SensitivityLabels)[0].ColumnName
593+
Assert-AreNotEqual $firstColumnName ($recommendations.SensitivityLabels)[1].ColumnName
594+
Assert-AreNotEqual $secondColumnName ($recommendations.SensitivityLabels)[0].ColumnName
595+
Assert-AreNotEqual $secondColumnName ($recommendations.SensitivityLabels)[1].ColumnName
596+
597+
# Enable second disabled recommdation.
598+
Enable-AzSqlDatabaseSensitivityRecommendation -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName -SchemaName $secondSchemaName -TableName $secondTableName -ColumnName $secondColumnName
599+
600+
# Get, using pipeline, recommended sensitivity labels, and verify.
601+
$recommendations = Get-AzSqlDatabase -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName | Get-AzSqlDatabaseSensitivityRecommendation
602+
Assert-AreEqual 3 ($recommendations.SensitivityLabels).count
603+
Assert-AreEqual $params.rgname $recommendations.ResourceGroupName
604+
Assert-AreEqual $params.serverName $recommendations.ServerName
605+
Assert-AreEqual $params.databaseName $recommendations.DatabaseName
606+
607+
# Verify disabled recommdation is not part of the new recommdations.
608+
Assert-AreNotEqual $firstColumnName ($recommendations.SensitivityLabels)[0].ColumnName
609+
Assert-AreNotEqual $firstColumnName ($recommendations.SensitivityLabels)[1].ColumnName
610+
Assert-AreNotEqual $firstColumnName ($recommendations.SensitivityLabels)[2].ColumnName
611+
612+
# Disable, using pipeline, all recommended columns.
613+
Get-AzSqlDatabase -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName | Get-AzSqlDatabaseSensitivityRecommendation | Disable-AzSqlDatabaseSensitivityRecommendation
614+
615+
# Verify no recommdations are retrieved since all are disabled.
616+
$recommendations = Get-AzSqlDatabase -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName | Get-AzSqlDatabaseSensitivityRecommendation
617+
Assert-AreEqual $params.rgname $recommendations.ResourceGroupName
618+
Assert-AreEqual $params.serverName $recommendations.ServerName
619+
Assert-AreEqual $params.databaseName $recommendations.DatabaseName
620+
Assert-AreEqual 0 ($recommendations.SensitivityLabels).count
621+
622+
# Enable, using pipeline, second disabled recommdation and verify
623+
Get-AzSqlDatabase -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName | Enable-AzSqlDatabaseSensitivityRecommendation -SchemaName $secondSchemaName -TableName $secondTableName -ColumnName $secondColumnName
624+
625+
# Verify enabled recommdation is now part of the recommendations.
626+
$recommendations = Get-AzSqlDatabase -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName | Get-AzSqlDatabaseSensitivityRecommendation
627+
Assert-AreEqual $params.rgname $recommendations.ResourceGroupName
628+
Assert-AreEqual $params.serverName $recommendations.ServerName
629+
Assert-AreEqual $params.databaseName $recommendations.DatabaseName
630+
Assert-AreEqual 1 ($recommendations.SensitivityLabels).count
631+
632+
$recommendation = ($recommendations.SensitivityLabels)[0]
633+
Assert-AreEqual $secondSchemaName $recommendation.SchemaName
634+
Assert-AreEqual $secondTableName $recommendation.TableName
635+
Assert-AreEqual $secondColumnName $recommendation.ColumnName
636+
Assert-NotNullOrEmpty $recommendation.InformationType
637+
Assert-NotNullOrEmpty $recommendation.SensitivityLabel
638+
}
639+
finally
640+
{
641+
# Cleanup
642+
Remove-DataClassificationTestEnvironment $testSuffix
643+
}
530644
}

0 commit comments

Comments
 (0)