Home
%3CLINGO-SUB%20id%3D%22lingo-sub-749450%22%20slang%3D%22en-US%22%3ELesson%20Learned%20%2399%3A%20Azure%20SQL%20Database%20-%20Adding%20Audit%20Actions%20in%20SQL%20Azure%20Auditing%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-749450%22%20slang%3D%22en-US%22%3E%3CP%3EToday%2C%20I%20worked%20in%20a%20service%20request%20that%20our%20customer%20wants%20to%20specify%20the%20number%20of%20actions%20that%20to%20be%20recorded%20in%20the%20SQL%20Audit%20file.%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EYou%20know%20that%20we%20have%20two%20options%20to%20archive%20this%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3EUsing%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fes-es%2Fpowershell%2Fmodule%2Faz.sql%2Fset-azsqldatabaseaudit%3Fview%3Dazps-2.4.0%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3EPowerShell%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3EUsing%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fes-es%2Frest%2Fapi%2Fsql%2Fdatabase%2520auditing%2520settings%2Fcreateorupdate%26nbsp%3B%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3EREST-API%3C%2FA%3E.%26nbsp%3B%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIn%20this%20example%2C%20our%20customer%20used%20REST-API%20to%20set%20up%20a%20serie%20of%20events%20instead%20all%20events%20that%20we%20are%20saving%20in%20SQL%20Auditing%20by%20default.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%3E%20%20%20%20%20%20%22resources%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22SqlLoginAuditing%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22auditingSettings%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22apiVersion%22%3A%20%222015-05-01-preview%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22state%22%3A%20%22%5Bif(parameters('enableSqlAuditing')%2C%20'Enabled'%2C%20'Disabled')%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22storageEndpoint%22%3A%20%22%5Breference(resourceId('Microsoft.Storage%2FstorageAccounts'%2C%20variables('logsStorageAccountName'))%2C%20'2018-03-01-preview').PrimaryEndpoints.Blob%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22storageAccountAccessKey%22%3A%20%22%5BlistKeys(resourceId('Microsoft.Storage%2FstorageAccounts'%2C%20variables('logsStorageAccountName'))%2C%20'2018-03-01-preview').keys%5B0%5D.value%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22storageAccountSubscriptionId%22%3A%20%22%5Bsubscription().subscriptionId%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22retentionDays%22%3A%20%22%5Bparameters('sqlAuditingRetentionInDays')%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22comments%22%3A%20%22Action%20group%20explanation%3A%20https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fsql%2Frelational-databases%2Fsecurity%2Fauditing%2Fsql-server-audit-action-groups-and-actions%3Fview%3Dsql-server-2017%23database-level-audit-action-groups%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22auditActionsAndGroups%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22SELECT%20on%20SCHEMA%3A%3Adbo%20by%20custom_sql_role%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22SELECT%20on%20SCHEMA%3A%3Adbo%20by%20dbo%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22UPDATE%20on%20SCHEMA%3A%3Adbo%20by%20custom_sql_role%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22UPDATE%20on%20SCHEMA%3A%3Adbo%20by%20dbo%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22INSERT%20on%20SCHEMA%3A%3Adbo%20by%20custom_sql_role%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22INSERT%20on%20SCHEMA%3A%3Adbo%20by%20dbo%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22DELETE%20on%20SCHEMA%3A%3Adbo%20by%20custom_sql_role%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22DELETE%20on%20SCHEMA%3A%3Adbo%20by%20dbo%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22FAILED_DATABASE_AUTHENTICATION_GROUP%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22DATABASE_OBJECT_CHANGE_GROUP%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22DATABASE_PERMISSION_CHANGE_GROUP%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22DATABASE_PRINCIPAL_CHANGE_GROUP%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22DATABASE_PRINCIPAL_IMPERSONATION_GROUP%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22DATABASE_ROLE_MEMBER_CHANGE_GROUP%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22SCHEMA_OBJECT_CHANGE_GROUP%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22USER_CHANGE_PASSWORD_GROUP%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22isStorageSecondaryKeyInUse%22%3A%20fals%3C%2FPRE%3E%0A%3CP%3EEnjoy!%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-749450%22%20slang%3D%22en-US%22%3E%3CP%3EToday%2C%20I%20worked%20in%20a%20service%20request%20that%20our%20customer%20wants%20to%20specify%20the%20number%20of%20actions%20that%20to%20be%20recorded%20in%20the%20SQL%20Audit%20file.%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-TEASER%3E

Today, I worked in a service request that our customer wants to specify the number of actions that to be recorded in the SQL Audit file. 

 

You know that we have two options to archive this:

 

 

In this example, our customer used REST-API to set up a serie of events instead all events that we are saving in SQL Auditing by default.

 

      "resources": [
        {
          "name": "SqlLoginAuditing",
          "type": "auditingSettings",
          "apiVersion": "2015-05-01-preview",
          "properties": {
            "state": "[if(parameters('enableSqlAuditing'), 'Enabled', 'Disabled')]",
            "storageEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('logsStorageAccountName')), '2018-03-01-preview').PrimaryEndpoints.Blob]",
            "storageAccountAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('logsStorageAccountName')), '2018-03-01-preview').keys[0].value]",
            "storageAccountSubscriptionId": "[subscription().subscriptionId]",
            "retentionDays": "[parameters('sqlAuditingRetentionInDays')]",
            "comments": "Action group explanation: https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions?view=sql-server-2017#database-level-audit-action-groups",
            "auditActionsAndGroups": [
              "SELECT on SCHEMA::dbo by custom_sql_role",
              "SELECT on SCHEMA::dbo by dbo",
              "UPDATE on SCHEMA::dbo by custom_sql_role",
              "UPDATE on SCHEMA::dbo by dbo",
              "INSERT on SCHEMA::dbo by custom_sql_role",
              "INSERT on SCHEMA::dbo by dbo",
              "DELETE on SCHEMA::dbo by custom_sql_role",
              "DELETE on SCHEMA::dbo by dbo",
              "SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP",
              "FAILED_DATABASE_AUTHENTICATION_GROUP",
              "DATABASE_OBJECT_CHANGE_GROUP",
              "DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP",
              "DATABASE_PERMISSION_CHANGE_GROUP",
              "DATABASE_PRINCIPAL_CHANGE_GROUP",
              "DATABASE_PRINCIPAL_IMPERSONATION_GROUP",
              "DATABASE_ROLE_MEMBER_CHANGE_GROUP",
              "SCHEMA_OBJECT_CHANGE_GROUP",
              "SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP",
              "SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP",
              "USER_CHANGE_PASSWORD_GROUP"
            ],
            "isStorageSecondaryKeyInUse": fals

Enjoy!