Cibles et fonctionnalités dans Azure Chaos Studio

Avant de pouvoir injecter une erreur dans une ressource Azure, les cibles et les fonctionnalités correspondantes doivent d’abord être activées pour la ressource. Les cibles et les fonctionnalités contrôlent quelles ressources sont activées pour l’injection d’erreurs, et quelles erreurs peuvent s’exécuter sur ces ressources.

En utilisant des cibles et des fonctionnalités avec d’autres mesures de sécurité, vous pouvez éviter une injection accidentelle ou malveillante d’erreurs avec Azure Chaos Studio. Par exemple, avec des cibles et des fonctionnalités, vous pouvez autoriser l’exécution de l’erreur de pression du processeur sur vos machines virtuelles de production tout en empêchant l’exécution de l’erreur de processus de destruction sur celles-ci.

Targets

Une cible de chaos permet à Chaos Studio d’interagir avec une ressource pour un type de cible particulier. Un type de cible représente la méthode d’injection des erreurs sur une ressource. Les types de ressources qui prennent uniquement en charge les erreurs directes de service ont un type cible. Par exemple, il s’agit du type d’Azure Microsoft-CosmosDB Cosmos DB.

Les types de ressources qui prennent en charge les erreurs directes de service et d’agent ont deux types cibles. Un type cible est destiné aux erreurs directes de service (par exemple, Microsoft-VirtualMachine). L’autre type cible est destiné aux erreurs basées sur l’agent (toujours Microsoft-Agent).

Une cible est une ressource d’extension créée en tant qu’enfant de la ressource qui est intégrée à Chaos Studio. Par exemple, une machine virtuelle ou un groupe de sécurité réseau. Une cible définit le type cible activé sur la ressource. Par exemple, si vous intégrez une instance Azure Cosmos DB à cet ID de ressource :

/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB

La ressource Azure Cosmos DB a une ressource enfant mise en forme comme cet exemple :

/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB

Seules les ressources dotées d’une cible créée à partir d’elles-mêmes peuvent être ciblées pour l’injection d’erreurs avec Chaos Studio.

Fonctionnalités

Une fonctionnalité permet à Chaos Studio d’exécuter une erreur particulière sur une ressource, telle que l’arrêt d’une machine virtuelle. Les fonctionnalités sont uniques par type cible. Ils représentent l’erreur qu’ils activent, par exemple CPUPressure-1.0. Pour comprendre toutes les erreurs disponibles et leurs noms de fonctionnalités et types cibles correspondants, consultez la bibliothèque d’erreurs Chaos Studio.

Une fonctionnalité est une ressource d’extension créée en tant qu’enfant d’une cible. Par exemple, si vous activez l’erreur d’arrêt sur une machine virtuelle avec un ID cible direct de service :

/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine

La ressource cible a une ressource enfant mise en forme comme cet exemple :

/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0

Une expérience peut uniquement injecter des erreurs sur les cibles intégrées avec les fonctionnalités correspondantes activées.

Répertorier les noms et paramètres des fonctionnalités

Pour référence, une liste de noms de fonctionnalités, d’URI d’erreur et de paramètres est disponible dans notre bibliothèque d’erreurs. Vous pouvez utiliser la réponse HTTP pour créer une fonctionnalité ou effectuer une opération GET sur une fonctionnalité existante pour obtenir ces informations à la demande. Par exemple, pour effectuer une opération GET sur une fonctionnalité d’arrêt de machine virtuelle :

az rest --method get --url "https://management.azure.com/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0?api-version=2023-11-01"

Retourne le code JSON suivant :

{
  "id": "/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0",
  "name": "shutdown-1.0",
  "properties": {
    "description": null,
    "name": "shutdown-1.0",
    "parametersSchema": "https://schema-tc.eastus.chaos-prod.azure.com/targetTypes/Microsoft-VirtualMachine/capabilityTypes/Shutdown-1.0/parametersSchema.json",
    "publisher": "Microsoft",
    "targetType": "VirtualMachine",
    "type": "shutdown",
    "urn": "urn:csci:microsoft:virtualMachine:shutdown/1.0",
    "version": "1.0"
  },
  "resourceGroup": "myRG",
  "systemData": {
    "createdAt": "2021-09-15T23:00:00.826575+00:00",
    "lastModifiedAt": "2021-09-15T23:00:00.826575+00:00"
  },
  "type": "Microsoft.Chaos/targets/capabilities"
}

La propriété properties.urn est utilisée pour définir l’erreur que vous souhaitez exécuter dans une expérience de chaos. Pour comprendre le schéma des paramètres de cette erreur, vous pouvez OBTENIR le schéma référencé par properties.parametersSchema:

az rest --method get --url "https://schema-tc.eastus.chaos-prod.azure.com/targetTypes/Microsoft-VirtualMachine/capabilityTypes/Shutdown-1.0/parametersSchema.json"

Retourne le code JSON suivant :

{
  "$schema": "https://json-schema.org/draft-07/schema",
  "properties": {
    "abruptShutdown": {
      "type": "boolean"
    },
    "restartWhenComplete": {
      "type": "boolean"
    }
  },
  "type": "object"
}

Étapes suivantes

Maintenant que vous comprenez les cibles et fonctionnalités, vous êtes prêt à :