public async void TestExecuteGetListDatabaseVulnerabilityAssessmentScans()
        {
            using (SqlManagementTestContext context = new SqlManagementTestContext(this))
            {
                string testPrefix = "sqlvulnerabilityassessmentscantest-";

                ResourceGroup       resourceGroup = context.CreateResourceGroup();
                SqlManagementClient sqlClient     = context.GetClient <SqlManagementClient>();
                Server server = context.CreateServer(resourceGroup);

                // Create database
                //
                string dbName = SqlManagementTestUtilities.GenerateName(testPrefix);
                var    db1    = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, new Database()
                {
                    Location = server.Location,
                });
                Assert.NotNull(db1);

                // Turn ON database threat detection as a prerequisite to use VA
                DatabaseSecurityAlertPolicy updatedDatabasePolicy = new DatabaseSecurityAlertPolicy
                {
                    State = SecurityAlertPolicyState.Enabled,
                    EmailAccountAdmins = SecurityAlertPolicyEmailAccountAdmins.Enabled
                };
                sqlClient.DatabaseThreatDetectionPolicies.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, updatedDatabasePolicy);

                // Set policy
                await SetPolicy(context, sqlClient, resourceGroup, server, dbName);

                // Run some scans
                string scanId = string.Format("scantest1_{0}", testPrefix);
                sqlClient.DatabaseVulnerabilityAssessmentScans.InitiateScan(resourceGroup.Name, server.Name, dbName, scanId);

                string scanId1 = string.Format("scantest2_{0}", testPrefix);
                sqlClient.DatabaseVulnerabilityAssessmentScans.InitiateScan(resourceGroup.Name, server.Name, dbName, scanId1);

                // Verify get scan and list scans
                VulnerabilityAssessmentScanRecord scanRecord = sqlClient.DatabaseVulnerabilityAssessmentScans.Get(resourceGroup.Name, server.Name, dbName, scanId);
                Assert.Equal(scanId, scanRecord.ScanId);

                IPage <VulnerabilityAssessmentScanRecord> scanRecords = sqlClient.DatabaseVulnerabilityAssessmentScans.ListByDatabase(resourceGroup.Name, server.Name, dbName);
                Assert.Equal(2, scanRecords.ToList().Count);
                Assert.Contains(scanRecords.ToList(), item => item.ScanId == scanId);
                Assert.Contains(scanRecords.ToList(), item => item.ScanId == scanId1);

                VulnerabilityAssessmentScanRecord scanId1Record         = sqlClient.DatabaseVulnerabilityAssessmentScans.Get(resourceGroup.Name, server.Name, dbName, scanId1);
                VulnerabilityAssessmentScanRecord scanId1RecordFromList = scanRecords.FirstOrDefault(item => item.ScanId == scanId1);
                Assert.Equal(scanId1Record.ScanId, scanId1RecordFromList.ScanId);
                Assert.Equal(scanId1Record.TriggerType, scanId1RecordFromList.TriggerType);
                Assert.Equal(scanId1Record.State, scanId1RecordFromList.State);
                Assert.Equal(scanId1Record.StartTime, scanId1RecordFromList.StartTime);
                Assert.Equal(scanId1Record.EndTime, scanId1RecordFromList.EndTime);
                Assert.Equal(scanId1Record.Errors, scanId1RecordFromList.Errors);
                Assert.Equal(scanId1Record.StorageContainerPath, scanId1RecordFromList.StorageContainerPath);
                Assert.Equal(scanId1Record.NumberOfFailedSecurityChecks, scanId1RecordFromList.NumberOfFailedSecurityChecks);
            }
        }
        public async void TestExecuteGetListDatabaseVulnerabilityAssessmentScans()
        {
            string testPrefix = "sqlvulnerabilityassessmentscantest-";

            SqlManagementClient sqlClient = m_testFixture.Context.GetClient <SqlManagementClient>();

            // Create managed database
            //
            string dbName = SqlManagementTestUtilities.GenerateName(testPrefix);
            var    db1    = sqlClient.ManagedDatabases.CreateOrUpdate(m_testFixture.ResourceGroup.Name, m_testFixture.ManagedInstance.Name, dbName, new ManagedDatabase()
            {
                Location = m_testFixture.ManagedInstance.Location,
            });

            Assert.NotNull(db1);

            // Set policy
            await SetPolicy(m_testFixture.Context, sqlClient, m_testFixture.ResourceGroup, m_testFixture.ManagedInstance, dbName);

            // Run some scans
            string scanId = string.Format("scantest1_{0}", testPrefix);

            sqlClient.ManagedDatabaseVulnerabilityAssessmentScans.InitiateScan(m_testFixture.ResourceGroup.Name, m_testFixture.ManagedInstance.Name, dbName, scanId);

            string scanId1 = string.Format("scantest2_{0}", testPrefix);

            sqlClient.ManagedDatabaseVulnerabilityAssessmentScans.InitiateScan(m_testFixture.ResourceGroup.Name, m_testFixture.ManagedInstance.Name, dbName, scanId1);

            // Verify get scan and list scans
            VulnerabilityAssessmentScanRecord scanRecord = sqlClient.ManagedDatabaseVulnerabilityAssessmentScans.Get(m_testFixture.ResourceGroup.Name, m_testFixture.ManagedInstance.Name, dbName, scanId);

            Assert.Equal(scanId, scanRecord.ScanId);

            IPage <VulnerabilityAssessmentScanRecord> scanRecords = sqlClient.ManagedDatabaseVulnerabilityAssessmentScans.ListByDatabase(m_testFixture.ResourceGroup.Name, m_testFixture.ManagedInstance.Name, dbName);

            Assert.Equal(2, scanRecords.ToList().Count);
            Assert.Contains(scanRecords.ToList(), item => item.ScanId == scanId);
            Assert.Contains(scanRecords.ToList(), item => item.ScanId == scanId1);

            VulnerabilityAssessmentScanRecord scanId1Record         = sqlClient.ManagedDatabaseVulnerabilityAssessmentScans.Get(m_testFixture.ResourceGroup.Name, m_testFixture.ManagedInstance.Name, dbName, scanId1);
            VulnerabilityAssessmentScanRecord scanId1RecordFromList = scanRecords.FirstOrDefault(item => item.ScanId == scanId1);

            Assert.Equal(scanId1Record.ScanId, scanId1RecordFromList.ScanId);
            Assert.Equal(scanId1Record.TriggerType, scanId1RecordFromList.TriggerType);
            Assert.Equal(scanId1Record.State, scanId1RecordFromList.State);
            Assert.Equal(scanId1Record.StartTime, scanId1RecordFromList.StartTime);
            Assert.Equal(scanId1Record.EndTime, scanId1RecordFromList.EndTime);
            Assert.Equal(scanId1Record.Errors, scanId1RecordFromList.Errors);
            Assert.Equal(scanId1Record.StorageContainerPath, scanId1RecordFromList.StorageContainerPath);
            Assert.Equal(scanId1Record.NumberOfFailedSecurityChecks, scanId1RecordFromList.NumberOfFailedSecurityChecks);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Convert <see cref="VulnerabilityAssessmentScanRecord"/> to <see cref="VulnerabilityAssessmentScanRecordModel"/>
        /// </summary>
        private VulnerabilityAssessmentScanRecordModel ConvertVulnerabilityAssessmentScanRecord(string resourceGroup, VulnerabilityAssessmentScanRecord scanRecord)
        {
            TriggerType scanTriggerType;

            Enum.TryParse(scanRecord.TriggerType, true, out scanTriggerType);

            return(new VulnerabilityAssessmentScanRecordModel()
            {
                ResourceGroupName = resourceGroup,
                ScanId = scanRecord.ScanId,
                TriggerType = scanTriggerType,
                State = scanRecord.State,
                StartTime = scanRecord.StartTime,
                EndTime = scanRecord.EndTime,
                Errors = scanRecord.Errors?.Select(scanError =>
                                                   new VulnerabilityAssessmentScanErrorModel()
                {
                    Code = scanError.Code,
                    Message = scanError.Message
                }).ToList(),
                ScanResultsLocationPath = scanRecord.StorageContainerPath,
                NumberOfFailedSecurityChecks = scanRecord.NumberOfFailedSecurityChecks
            });
        }