Example #1
0
 private static void AssertEqual(SensitivityLabel expected, SensitivityLabel actual)
 {
     Assert.NotNull(actual);
     Assert.Equal(expected.LabelName, actual.LabelName);
     Assert.Equal(expected.InformationType, actual.InformationType);
     Assert.Equal(expected.Type, actual.Type);
     Assert.Equal(s_Current, actual.Name);
 }
 private static SensitivityLabelModel ToSensitivityLabelModel(SensitivityLabel sensitivityLabel)
 {
     string[] idComponents = sensitivityLabel.Id.Split('/');
     return(new SensitivityLabelModel
     {
         SchemaName = idComponents[12],
         TableName = idComponents[14],
         ColumnName = idComponents[16],
         SensitivityLabel = NullifyStringIfEmpty(sensitivityLabel.LabelName),
         SensitivityLabelId = NullifyStringIfEmpty(sensitivityLabel.LabelId),
         InformationType = NullifyStringIfEmpty(sensitivityLabel.InformationType),
         InformationTypeId = NullifyStringIfEmpty(sensitivityLabel.InformationTypeId)
     });
 }
 private static SensitivityLabelModel ToSensitivityLabelModel(SensitivityLabel sensitivityLabel)
 {
     string[] idComponents = sensitivityLabel.Id.Split('/');
     return(new SensitivityLabelModel
     {
         SchemaName = idComponents[12],
         TableName = idComponents[14],
         ColumnName = idComponents[16],
         SensitivityLabel = sensitivityLabel.LabelName,
         SensitivityLabelId = sensitivityLabel.LabelId,
         InformationType = sensitivityLabel.InformationType,
         InformationTypeId = sensitivityLabel.InformationTypeId
     });
 }
Example #4
0
        private static SensitivityLabelModel ToSensitivityLabelModel(SensitivityLabel sensitivityLabel)
        {
            var match = new global::System.Text.RegularExpressions.Regex("/schemas/(?<schemaName>.*)/tables/(?<tableName>.*)/columns/(?<columnName>.*)/sensitivityLabels/",
                                                                         global::System.Text.RegularExpressions.RegexOptions.IgnoreCase).Match(sensitivityLabel.Id);

            return(new SensitivityLabelModel
            {
                SchemaName = match.Groups["schemaName"].Value,
                TableName = match.Groups["tableName"].Value,
                ColumnName = match.Groups["columnName"].Value,
                SensitivityLabel = NullifyStringIfEmpty(sensitivityLabel.LabelName),
                SensitivityLabelId = NullifyStringIfEmpty(sensitivityLabel.LabelId),
                InformationType = NullifyStringIfEmpty(sensitivityLabel.InformationType),
                InformationTypeId = NullifyStringIfEmpty(sensitivityLabel.InformationTypeId),
                Rank = ToSensitivityRank(sensitivityLabel.Rank)
            });
        }
Example #5
0
        protected void RunTest(ISqlManagementClient client,
                               string resourceGroupName, string serverName, string databaseName)
        {
            IPage <SensitivityLabel> sensitivityLabels = ListCurrentSensitivityLabels(
                client, resourceGroupName, serverName, databaseName);

            Assert.NotNull(sensitivityLabels);
            Assert.Empty(sensitivityLabels);

            sensitivityLabels = ListRecommendedSensitivityLabels(client, resourceGroupName, serverName, databaseName);
            Assert.NotNull(sensitivityLabels);
            Assert.NotEmpty(sensitivityLabels);
            int recommendedLabelsCount        = sensitivityLabels.Count();
            SensitivityLabel recommendedLabel = sensitivityLabels.First();
            string           columnName       = recommendedLabel.Id.Split("/")[16];

            SensitivityLabel newLabel = new SensitivityLabel(
                labelName: recommendedLabel.LabelName,
                labelId: recommendedLabel.LabelId,
                informationType: recommendedLabel.InformationType,
                informationTypeId: recommendedLabel.InformationTypeId);

            SensitivityLabel createdLabel = CreateOrUpdateSensitivityLabel(client, resourceGroupName, serverName, databaseName,
                                                                           s_SchemaName, s_TableName, columnName, newLabel);

            AssertEqual(recommendedLabel, createdLabel);

            createdLabel = GetSensitivityLabel(client, resourceGroupName, serverName, databaseName, s_SchemaName, s_TableName, columnName);
            AssertEqual(recommendedLabel, createdLabel);

            sensitivityLabels = ListRecommendedSensitivityLabels(client, resourceGroupName, serverName, databaseName);
            Assert.NotNull(sensitivityLabels);
            Assert.Equal(recommendedLabelsCount - 1, sensitivityLabels.Count());

            DeleteSensitivityLabel(client, resourceGroupName, serverName, databaseName, s_SchemaName, s_TableName, columnName);

            sensitivityLabels = ListRecommendedSensitivityLabels(
                client, resourceGroupName, serverName, databaseName);
            Assert.NotNull(sensitivityLabels);
            Assert.Equal(recommendedLabelsCount, sensitivityLabels.Count());
        }
 /// <summary>
 /// Creates or updates the sensitivity label of a given column
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group that contains the resource. You can obtain
 /// this value from the Azure Resource Manager API or the portal.
 /// </param>
 /// <param name='serverName'>
 /// The name of the server.
 /// </param>
 /// <param name='databaseName'>
 /// The name of the database.
 /// </param>
 /// <param name='schemaName'>
 /// The name of the schema.
 /// </param>
 /// <param name='tableName'>
 /// The name of the table.
 /// </param>
 /// <param name='columnName'>
 /// The name of the column.
 /// </param>
 /// <param name='parameters'>
 /// The column sensitivity label resource.
 /// </param>
 public static SensitivityLabel CreateOrUpdate(this ISensitivityLabelsOperations operations, string resourceGroupName, string serverName, string databaseName, string schemaName, string tableName, string columnName, SensitivityLabel parameters)
 {
     return(operations.CreateOrUpdateAsync(resourceGroupName, serverName, databaseName, schemaName, tableName, columnName, parameters).GetAwaiter().GetResult());
 }
Example #7
0
        public void TestDatabaseSensitivityLabels()
        {
            using (SqlManagementTestContext context = new SqlManagementTestContext(this))
            {
                ResourceGroup        resourceGroup = context.CreateResourceGroup();
                ISqlManagementClient client        = context.GetClient <SqlManagementClient>();
                Server server = context.CreateServer(resourceGroup);
                client.FirewallRules.CreateOrUpdate(resourceGroup.Name, server.Name, "sqltestrule", new FirewallRule()
                {
                    StartIpAddress = "0.0.0.0",
                    EndIpAddress   = "255.255.255.255"
                });

                Database database = client.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, SqlManagementTestUtilities.GenerateName(s_DatabaseNamePrefix), new Database()
                {
                    Location = server.Location,
                });
                Assert.NotNull(database);

                if (HttpMockServer.GetCurrentMode() != HttpRecorderMode.Playback)
                {
                    SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder()
                    {
                        DataSource     = string.Format(server.FullyQualifiedDomainName, server.Name),
                        UserID         = SqlManagementTestUtilities.DefaultLogin,
                        Password       = SqlManagementTestUtilities.DefaultPassword,
                        InitialCatalog = database.Name
                    };

                    using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
                    {
                        connection.Open();
                        SqlCommand command = new SqlCommand(string.Format(@"
                            CREATE TABLE {0} (
                                PersonID int,
                                LastName varchar(255),
                                FirstName varchar(255),
                                Address varchar(255),
                                City varchar(255)
                            );", s_TableName), connection);
                        command.ExecuteNonQuery();
                    }

                    SleepIfNeeded();
                    IPage <SensitivityLabel> sensitivityLabels = client.SensitivityLabels.ListByDatabase(resourceGroup.Name, server.Name, database.Name);
                    Assert.NotNull(sensitivityLabels);
                    Assert.NotEmpty(sensitivityLabels);
                    Assert.DoesNotContain(sensitivityLabels, label => label.Name.Equals(s_Current));
                    int labelsCount = sensitivityLabels.Count();
                    SensitivityLabel sensitivityLabel = sensitivityLabels.First();
                    string           columnName       = sensitivityLabel.Id.Split("/")[16];

                    SensitivityLabel responseLabel = client.SensitivityLabels.CreateOrUpdate(
                        resourceGroup.Name, server.Name, database.Name, s_SchemaName, s_TableName, columnName,
                        new SensitivityLabel(labelName: sensitivityLabel.LabelName, informationType: sensitivityLabel.InformationType));
                    AssertEqual(sensitivityLabel, responseLabel);

                    responseLabel = client.SensitivityLabels.Get(resourceGroup.Name, server.Name, database.Name, s_SchemaName, s_TableName, columnName, SensitivityLabelSource.Current);
                    AssertEqual(sensitivityLabel, responseLabel);

                    sensitivityLabels = client.SensitivityLabels.ListByDatabase(resourceGroup.Name, server.Name, database.Name);
                    Assert.NotNull(sensitivityLabels);
                    Assert.Equal(labelsCount, sensitivityLabels.Count());
                    Assert.Equal(labelsCount - 1, sensitivityLabels.Where(l => l.Name == "recommended").Count());
                    Assert.Contains(sensitivityLabels, label => label.Name.Equals(s_Current));

                    client.SensitivityLabels.Delete(resourceGroup.Name, server.Name, database.Name, s_SchemaName, s_TableName, columnName);

                    sensitivityLabels = client.SensitivityLabels.ListByDatabase(resourceGroup.Name, server.Name, database.Name);
                    Assert.NotNull(sensitivityLabels);
                    Assert.Equal(labelsCount, sensitivityLabels.Count());
                    Assert.DoesNotContain(sensitivityLabels, label => label.Name.Equals(s_Current));

                    client.Databases.Delete(resourceGroup.Name, server.Name, database.Name);
                    client.Servers.Delete(resourceGroup.Name, server.Name);
                }
            }
        }
 /// <summary>
 /// Creates or updates the sensitivity label of a given column in a Sql pool
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group. The name is case insensitive.
 /// </param>
 /// <param name='workspaceName'>
 /// The name of the workspace
 /// </param>
 /// <param name='sqlPoolName'>
 /// SQL pool name
 /// </param>
 /// <param name='schemaName'>
 /// The name of the schema.
 /// </param>
 /// <param name='tableName'>
 /// The name of the table.
 /// </param>
 /// <param name='columnName'>
 /// The name of the column.
 /// </param>
 /// <param name='parameters'>
 /// The column sensitivity label resource.
 /// </param>
 public static SensitivityLabel CreateOrUpdate(this ISqlPoolSensitivityLabels operations, string resourceGroupName, string workspaceName, string sqlPoolName, string schemaName, string tableName, string columnName, SensitivityLabel parameters)
 {
     return(operations.CreateOrUpdateAsync(resourceGroupName, workspaceName, sqlPoolName, schemaName, tableName, columnName, parameters).GetAwaiter().GetResult());
 }
Example #9
0
 protected virtual SensitivityLabel CreateOrUpdateSensitivityLabel(ISqlManagementClient client,
                                                                   string resourceGroupName, string serverName, string databaseName,
                                                                   string schemaName, string tableName, string columnName, SensitivityLabel label)
 {
     return(client.SensitivityLabels.CreateOrUpdate(
                resourceGroupName, serverName, databaseName, schemaName, tableName, columnName, label));
 }