Published on

March 19, 2019

Configuration de l’audit de la base de données Azure SQL à l’aide de modèles ARM

Dans un article précédent, nous avons discuté de la façon dont les modèles Azure Resource Manager (ARM) peuvent être utilisés pour provisionner des bases de données Azure SQL. Cependant, les modèles ARM peuvent également être utilisés pour configurer et maintenir des instances existantes de bases de données Azure SQL. Dans cet article, nous explorerons un exemple d’utilisation de modèles ARM pour activer l’audit sur un serveur logique de base de données Azure SQL.

Par défaut, les déploiements de modèles sont incrémentiels, ce qui signifie que seules les ressources et les propriétés explicitement référencées dans le modèle seront modifiées. Cela rend les modifications de configuration basées sur des modèles rapides et efficaces.

Considérons un scénario où nous voulons activer l’audit sur un serveur logique, qui sera hérité par toutes ses bases de données. Les paramètres d’audit sont contrôlés par les propriétés du type de ressource “auditingSettings”. Voici un exemple de configuration :

{
  "name": "DefaultAuditingSettings",
  "type": "auditingSettings",
  "apiVersion": "2017-03-01-preview",
  "dependsOn": [
    "<server_resourceId>",
    "<storage_account_resourceId>"
  ],
  "properties": {
    "state": "Enabled",
    "storageEndpoint": "<storage_account_blob_endpoint_Uri>",
    "storageAccountAccessKey": "<storage_account_primary_key>",
    "storageAccountSubscriptionId": "<subscriptionId>",
    "retentionDays": 0,
    "auditActionsAndGroups": null,
    "isStorageSecondaryKeyInUse": false
  }
}

Comme vous pouvez le voir, la configuration nécessite l’accès à un compte de stockage Azure existant et à un serveur logique de base de données Azure SQL existant. Pour mettre en œuvre cette ressource, nous pouvons utiliser un modèle ARM qui provisionnera automatiquement le compte de stockage. Le seul paramètre requis sera le nom du serveur logique.

Voici quelques aspects intéressants du modèle :

  • Le nom du compte de stockage doit être globalement unique. Nous pouvons utiliser la fonction uniqueString() avec la valeur de départ dérivée de l’identifiant du groupe de ressources pour générer un nom unique.
  • La valeur de la première clé du compte de stockage peut être récupérée à l’aide de la fonction listKeys().
  • La région Azure cible où a lieu le déploiement est déterminée en fonction de l’emplacement du groupe de ressources.

Voici un exemple de modèle ARM :

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "serverName": {
      "type": "string"
    }
  },
  "variables": {
    "storageAccountName": "[concat('st', uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[variables('storageAccountName')]",
      "apiVersion": "2018-07-01",
      "location": "[resourceGroup().location]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": {}
    },
    {
      "name": "[parameters('serverName')]",
      "type": "Microsoft.Sql/servers",
      "apiVersion": "2015-05-01-preview",
      "location": "[resourceGroup().location]",
      "properties": {
        "version": "12.0"
      },
      "resources": [
        {
          "name": "DefaultAuditingSettings",
          "type": "auditingSettings",
          "apiVersion": "2017-03-01-preview",
          "dependsOn": [
            "[concat('Microsoft.Sql/servers/', parameters('serverName'))]",
            "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]"
          ],
          "properties": {
            "state": "Enabled",
            "storageEndpoint": "[concat('https://', variables('storageAccountName'), '.blob.core.windows.net/')]",
            "storageAccountAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value]",
            "storageAccountSubscriptionId": "[subscription().subscriptionId]",
            "retentionDays": 0,
            "auditActionsAndGroups": null,
            "isStorageSecondaryKeyInUse": false
          }
        }
      ]
    }
  ],
  "outputs": {}
}

En déployant ce modèle, le serveur logique aura l’audit activé avec une rétention illimitée, et le compte de stockage inclus dans le déploiement sera configuré comme destination du journal d’audit.

L’utilisation de modèles ARM pour configurer des instances existantes de bases de données Azure SQL offre une approche cohérente et reproductible. Cela favorise également les principes de DevOps et d’Infrastructure en tant que code, ce qui en fait la méthode recommandée pour gérer les services basés sur le cloud.

Restez à l’écoute pour plus d’articles sur DatabaseJournal où nous explorerons d’autres utilisations des modèles ARM.

Voir tous les articles de Marcin Policht

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.