This class is responsible for all the REST communication with the audit REST endpoints
        private bool UpdateDiagnosticSettingsForModel(
            DiagnosticSettingsResource settings, AuditModelType model)
        {
            DiagnosticSettingsResource modifiedSettings = UpdateDiagnosticSettings(settings, model);

            if (modifiedSettings == null)
            {
                return(false);
            }

            List <DiagnosticSettingsResource> diagnosticsEnablingAuditCategory = new List <DiagnosticSettingsResource>();

            foreach (DiagnosticSettingsResource existingSettings in model.DiagnosticsEnablingAuditCategory)
            {
                if (!string.Equals(modifiedSettings.Id, existingSettings.Id))
                {
                    diagnosticsEnablingAuditCategory.Add(existingSettings);
                }
                else if (AuditingEndpointsCommunicator.IsAuditCategoryEnabled(modifiedSettings, GetDiagnosticsEnablingAuditCategoryName()))
                {
                    diagnosticsEnablingAuditCategory.Add(modifiedSettings);
                }
            }

            model.DiagnosticsEnablingAuditCategory = diagnosticsEnablingAuditCategory.Any() ? diagnosticsEnablingAuditCategory : null;
            return(true);
        }
예제 #2
0
 public SqlAuditAdapter(IAzureContext context)
 {
     Context           = context;
     Subscription      = context?.Subscription;
     Communicator      = new AuditingEndpointsCommunicator(Context);
     AzureCommunicator = new AzureEndpointsCommunicator(Context);
 }
예제 #3
0
        internal bool UpdateDiagnosticSettings(
            DiagnosticSettingsResource settings,
            dynamic model)
        {
            DiagnosticSettingsResource updatedSettings;

            if (model is DatabaseBlobAuditingSettingsModel || model is DatabaseAuditModel)
            {
                updatedSettings = Communicator.UpdateDiagnosticSettings(settings,
                                                                        model.ResourceGroupName, model.ServerName, model.DatabaseName);
            }
            else
            {
                updatedSettings = Communicator.UpdateDiagnosticSettings(settings,
                                                                        model.ResourceGroupName, model.ServerName);
            }

            if (updatedSettings == null)
            {
                return(false);
            }

            model.DiagnosticsEnablingAuditCategory =
                AuditingEndpointsCommunicator.IsAuditCategoryEnabled(updatedSettings) ?
                new List <DiagnosticSettingsResource> {
                updatedSettings
            } : null;
            return(true);
        }
예제 #4
0
 public SqlAuditAdapter(AzureProfile profile, AzureSubscription subscription)
 {
     Profile = profile;
     Subscription = subscription;
     Communicator = new AuditingEndpointsCommunicator(Profile, subscription);
     AzureCommunicator = new AzureEndpointsCommunicator(Profile, subscription);
     IgnoreStorage = false;
 }
예제 #5
0
 public SqlAuditAdapter(AzureContext context)
 {
     Context           = context;
     Subscription      = context.Subscription;
     Communicator      = new AuditingEndpointsCommunicator(Context);
     AzureCommunicator = new AzureEndpointsCommunicator(Context);
     IgnoreStorage     = false;
 }
예제 #6
0
 public SqlAuditAdapter(AzureProfile profile, AzureSubscription subscription)
 {
     Profile           = profile;
     Subscription      = subscription;
     Communicator      = new AuditingEndpointsCommunicator(Profile, subscription);
     AzureCommunicator = new AzureEndpointsCommunicator(Profile, subscription);
     IgnoreStorage     = false;
 }
예제 #7
0
 public SqlAuditAdapter(AzureContext context)
 {
     Context = context;
     Subscription = context.Subscription;
     Communicator = new AuditingEndpointsCommunicator(Context);
     AzureCommunicator = new AzureEndpointsCommunicator(Context);
     IgnoreStorage = false;
 }
 public SqlAuditAdapter(IAzureContext context, Guid roleAssignmentId = default(Guid))
 {
     Context           = context;
     Subscription      = context?.Subscription;
     Communicator      = new AuditingEndpointsCommunicator(Context);
     AzureCommunicator = new AzureEndpointsCommunicator(Context);
     RoleAssignmentId  = roleAssignmentId;
 }
예제 #9
0
        internal bool UpdateDiagnosticSettings(
            DiagnosticSettingsResource settings,
            ServerAuditModel model)
        {
            DiagnosticSettingsResource modifiedSettings;

            if (model is DatabaseAuditModel databaseAuditModel)
            {
                modifiedSettings = Communicator.UpdateDiagnosticSettings(settings,
                                                                         databaseAuditModel.ResourceGroupName, databaseAuditModel.ServerName, databaseAuditModel.DatabaseName);
            }
            else
            {
                modifiedSettings = Communicator.UpdateDiagnosticSettings(settings,
                                                                         model.ResourceGroupName, model.ServerName);
            }

            if (modifiedSettings == null)
            {
                return(false);
            }

            List <DiagnosticSettingsResource> diagnosticsEnablingAuditCategory = new List <DiagnosticSettingsResource>();

            foreach (DiagnosticSettingsResource existingSettings in model.DiagnosticsEnablingAuditCategory)
            {
                if (!string.Equals(modifiedSettings.Id, existingSettings.Id))
                {
                    diagnosticsEnablingAuditCategory.Add(existingSettings);
                }
                else if (AuditingEndpointsCommunicator.IsAuditCategoryEnabled(modifiedSettings))
                {
                    diagnosticsEnablingAuditCategory.Add(modifiedSettings);
                }
            }

            model.DiagnosticsEnablingAuditCategory = diagnosticsEnablingAuditCategory.Any() ? diagnosticsEnablingAuditCategory : null;
            return(true);
        }