/// <summary>
        /// Provides a database Vulnerability Assessment settings model for the given database
        /// </summary>
        public DatabaseVulnerabilityAssessmentSettingsModel ConvertSettingsToModel(string resourceGroup, string serverName,
                                                                                   string databaseName, DatabaseVulnerabilityAssessment settings)
        {
            if (settings.RecurringScans == null)
            {
                // This should never happen
                settings.RecurringScans = new VulnerabilityAssessmentRecurringScansProperties()
                {
                    IsEnabled = false,
                    EmailSubscriptionAdmins = true,
                    Emails = null
                };
            }

            // Getting storage info from StorageContainerPath
            string storageAccountName       = string.Empty;
            string storageBlobContainerName = string.Empty;

            if (!string.IsNullOrEmpty(settings.StorageContainerPath))
            {
                string storageAccountNamePart = settings.StorageContainerPath.Split(new string[] { "https://" }, StringSplitOptions.RemoveEmptyEntries)[0];
                if (!string.IsNullOrEmpty(storageAccountNamePart))
                {
                    storageAccountName = storageAccountNamePart.Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries)[0];
                }

#if !NETSTANDARD
                CloudBlob cloudBlob = new CloudBlob(new Uri(settings.StorageContainerPath));
                storageBlobContainerName = cloudBlob.Container.Name;
#endif
            }

            var databaseVulnerabilityAssessmentSettingsModel = new DatabaseVulnerabilityAssessmentSettingsModel
            {
                ResourceGroupName        = resourceGroup,
                ServerName               = serverName,
                DatabaseName             = databaseName,
                StorageAccountName       = storageAccountName,
                ScanResultsContainerName = storageBlobContainerName,
                RecurringScansInterval   = settings.RecurringScans.IsEnabled.Value
                    ? RecurringScansInterval.Weekly
                    : RecurringScansInterval.None,
                EmailAdmins       = settings.RecurringScans.EmailSubscriptionAdmins.Value,
                NotificationEmail = settings.RecurringScans.Emails?.ToArray()
            };

            return(databaseVulnerabilityAssessmentSettingsModel);
        }
Пример #2
0
        /// <summary>
        /// Provides a database Vulnerability Assessment settings model for the given database
        /// </summary>
        public DatabaseVulnerabilityAssessmentSettingsModel ConvertSettingsToModel(string resourceGroup, string serverName,
                                                                                   string databaseName, DatabaseVulnerabilityAssessment settings)
        {
            if (settings.RecurringScans == null)
            {
                // This should never happen
                settings.RecurringScans = new VulnerabilityAssessmentRecurringScansProperties
                {
                    IsEnabled = false,
                    EmailSubscriptionAdmins = true,
                    Emails = null
                };
            }

            // Getting storage info from StorageContainerPath
            var storageAccountName       = string.Empty;
            var storageBlobContainerName = string.Empty;

            if (!string.IsNullOrEmpty(settings.StorageContainerPath))
            {
                // StorageContainerPath is in the format of : "https://va1storage.blob.core.windows.net/vulnerability-assessment"
                var storageAccountNamePart = settings.StorageContainerPath.Split(new[] { "https://" }, StringSplitOptions.RemoveEmptyEntries)[0];
                if (!string.IsNullOrEmpty(storageAccountNamePart))
                {
                    storageAccountName = storageAccountNamePart.Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries)[0];
                }

                storageBlobContainerName = settings.StorageContainerPath.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault();
            }

            var databaseVulnerabilityAssessmentSettingsModel = new DatabaseVulnerabilityAssessmentSettingsModel
            {
                ResourceGroupName        = resourceGroup,
                ServerName               = serverName,
                DatabaseName             = databaseName,
                StorageAccountName       = storageAccountName,
                ScanResultsContainerName = storageBlobContainerName,
                RecurringScansInterval   = settings.RecurringScans.IsEnabled.Value
                    ? RecurringScansInterval.Weekly
                    : RecurringScansInterval.None,
                EmailAdmins       = settings.RecurringScans.EmailSubscriptionAdmins.Value,
                NotificationEmail = settings.RecurringScans.Emails?.ToArray()
            };

            return(databaseVulnerabilityAssessmentSettingsModel);
        }
        /// <summary>
        /// Transforms the given model to its endpoints acceptable structure and sends it to the endpoint
        /// </summary>
        public DatabaseVulnerabilityAssessmentSettingsModel SetDatabaseVulnerabilityAssessmentSettings(DatabaseVulnerabilityAssessmentSettingsModel model, string storageContainerPath,
                                                                                                       string storageAccountSasKey)
        {
            DatabaseVulnerabilityAssessment settings = new DatabaseVulnerabilityAssessment
            {
                StorageContainerPath   = storageContainerPath,
                StorageContainerSasKey = storageAccountSasKey,

                RecurringScans = new VulnerabilityAssessmentRecurringScansProperties()
                {
                    IsEnabled = model.RecurringScansInterval != RecurringScansInterval.None,
                    EmailSubscriptionAdmins = model.EmailAdmins,
                    Emails = model.NotificationEmail
                }
            };

            var vulnerabilityAssessmentSettings = VulnerabilityAssessmentCommunicator.SetDatabaseVulnerabilityAssessmentSettings(model.ResourceGroupName,
                                                                                                                                 model.ServerName, model.DatabaseName, settings);

            return(ConvertSettingsToModel(model.ResourceGroupName, model.ServerName, model.DatabaseName, vulnerabilityAssessmentSettings));
        }
 /// <summary>
 /// Remove the Vulnerability Assessment
 /// </summary>
 public void ClearDatabaseVulnerabilityAssessmentSettings(DatabaseVulnerabilityAssessmentSettingsModel model)
 {
     VulnerabilityAssessmentCommunicator.ClearDatabaseVulnerabilityAssessmentSettings(model.ResourceGroupName, model.ServerName, model.DatabaseName);
 }
Пример #5
0
        /// <summary>
        /// Set settings with storage access key
        /// </summary>
        public DatabaseVulnerabilityAssessmentSettingsModel SetDatabaseVulnerabilityAssessmentSettingsWithStorageAccessKey(DatabaseVulnerabilityAssessmentSettingsModel model)
        {
            var resourceGroupName    = AzureCommunicator.GetStorageResourceGroup(model.StorageAccountName);
            var storageContainerInfo = VulnerabilityAssessmentCommunicator.GetStorageContainerInfo(resourceGroupName, model.StorageAccountName,
                                                                                                   model.ScanResultsContainerName);

            DatabaseVulnerabilityAssessment settings = new DatabaseVulnerabilityAssessment
            {
                StorageContainerPath    = storageContainerInfo.StorageContainerPath,
                StorageAccountAccessKey = storageContainerInfo.StorageAccountAccessKey,

                RecurringScans = new VulnerabilityAssessmentRecurringScansProperties()
                {
                    IsEnabled = model.RecurringScansInterval != RecurringScansInterval.None,
                    EmailSubscriptionAdmins = model.EmailAdmins,
                    Emails = model.NotificationEmail
                }
            };

            var vulnerabilityAssessmentSettings = VulnerabilityAssessmentCommunicator.SetDatabaseVulnerabilityAssessmentSettings(model.ResourceGroupName,
                                                                                                                                 model.ServerName, model.DatabaseName, settings);

            return(ConvertSettingsToModel(model.ResourceGroupName, model.ServerName, model.DatabaseName, vulnerabilityAssessmentSettings));
        }