/// <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); }
/// <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); }
/// <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)); }