Maintenir la conformité des applications Microsoft 365 en continu avec l’outil d’automatisation de la conformité des applications pour Microsoft 365

L’outil ACAT (App Compliance Automation) Microsoft 365 simplifie les contrôles essentiels pour la certification Microsoft 365. Conservez la conformité continue de votre application Microsoft 365 à l’aide d’ACAT. Restez informé des échecs de conformité via des notifications et intégrez ACAT en toute transparence à votre pipeline d’intégration continue/déploiement continu.

Remarque

ACAT est actuellement en préversion publique et prend uniquement en charge les applications basées sur Azure. Les futures mises à jour incluront des fonctionnalités pour les applications basées sur des services cloud non hébergés par Microsoft. Pour tout commentaire sur la préversion publique d’ACAT, remplissez ce formulaire. Un spécialiste de l’équipe produit ACAT effectuera un suivi avec vous dès que possible.

Obtenir la dernière évaluation de contrôle de votre rapport de conformité via des notifications

Après avoir créé un rapport de conformité pour votre application ou environnement Microsoft 365, ACAT collecte automatiquement les données de conformité et effectue des évaluations de contrôle quotidiennes. En outre, vous pouvez recevoir des notifications pour toutes les modifications apportées aux paramètres ou aux évaluations des rapports.

Obtenir des notifications avec le webhook

Créez un webhook pour recevoir des notifications d’ACAT.

  • Accédez à Rapports sur la gauche.

  • Ouvrez le rapport pour lequel vous souhaitez recevoir des notifications.

  • Sélectionnez Notifications dans la barre d’outils.

  • Sélectionnez Créer une notification, puis choisissez Webhook.

    • Nom du webhook : il s’agit de l’identificateur unique du webhook dans ce rapport.
    • URL de la charge utile : l’URL de la charge utile est l’URL du serveur qui reçoit les requêtes POST du webhook d’ACAT.
    • Type de contenu : ACAT prend actuellement uniquement en charge le type de contenu application/json, qui fournit la charge utile JSON directement comme corps de la requête POST.
    • Secret : la définition d’un secret de webhook vous permet de vous assurer que les requêtes POST envoyées à l’URL de charge utile proviennent d’ACAT. Lorsque le secret est défini, ACAT l’utilise pour créer une signature de hachage avec chaque charge utile. Cette signature de hachage est incluse avec les en-têtes de chaque requête sous la forme x-acat-signature-256.
    • Vérification SSL : la vérification SSL s’affiche uniquement lorsque l’URL de votre charge utile est un site sécurisé (HTTPS), et permet de garantir que les charges utiles sont remises à votre URL de charge utile en toute sécurité. Nous vous recommandons de conserver l’option Activer la vérification SSL sélectionnée.
    • Événements déclencheurs : Abonnez-vous aux événements ACAT pour recevoir des notifications.

    Créer une notification de webhook

    Conseil

    En savoir plus sur la charge utile du webhook.

Obtenir une évaluation rapide de la conformité dans le pipeline d’intégration continue/déploiement continu

En plus de l’utilisation régulière du portail et de la réception de notifications à jour, ACAT peut effectuer une évaluation de conformité rapide dans votre pipeline d’intégration continue/déploiement continu (CI/CD). Garantir la conformité continue de votre application Microsoft 365.

Dans ACAT, les évaluations de contrôle sont des évaluations de conformité structurées classées en fonction des domaines de sécurité de la certification Microsoft 365, des familles de contrôles et des contrôles individuels. Pour lancer des évaluations de contrôle dans les données de conformité brutes ACAT doivent être collectées. Toutefois, certaines de ces informations de conformité brutes peuvent ne pas être facilement accessibles d’un point de vue technique. Pour relever ce défi, ACAT introduit un concept appelé « évaluation rapide de la conformité ». Cette fonctionnalité est conçue pour fournir une évaluation rapide des status de conformité, ce qui permet la collecte immédiate de données de conformité brutes essentielles.

L’implémentation d’une évaluation de conformité rapide a deux objectifs :

  • Insights en temps opportun : facilite la compréhension en temps réel de votre posture de conformité, ce qui permet de rendre visible l’adhésion d’une application aux normes de sécurité et aux meilleures pratiques.
  • Intégration transparente : l’évaluation rapide de la conformité peut s’intégrer en toute transparence dans votre pipeline CI/CD, garantissant ainsi que vos applications restent robustes et alignées sur les exigences de conformité.

Intégration au pipeline CI/CD par GitHub Actions

Les évaluations de conformité rapides sont disponibles dans le pipeline CI/CD à l’aide de l’action GitHub d’évaluation rapide de la certification Microsoft 365. Il existe deux utilisations possibles pour cette action GitHub :

  • Tirez parti du dernier déploiement dans le pipeline CI/CD comme état définitif pour l’application : ACAT effectue des évaluations de conformité rapides basées sur le déploiement le plus récent au sein du pipeline. En outre, vous avez la possibilité de demander à ACAT d’actualiser les rapports de conformité correspondants en fonction de ce déploiement, ce qui vous permet d’effectuer des évaluations de contrôle complètes avec des mises à jour quotidiennes.
  • Utilisez un rapport de conformité existant comme référence pour l’application.** ACAT utilise les ressources définies dans un rapport de conformité existant pour effectuer l’évaluation rapide de la conformité.

Intégration au pipeline CI/CD via l’API REST ACAT

Obtenez des évaluations de conformité rapides dans le pipeline CI/CD via l’API REST ACAT.

  • Connectez-vous aux ressources Azure avec l’authentification du principal du service. Suivez ce guide pour découvrir comment créer un principal de service qui peut accéder aux ressources. Une fois le principal de service créé, suivez les instructions de votre outil de pipeline pour stocker les informations d’identification. Par exemple, connectez-vous à Microsoft Azure avec une connexion de service ARM.

  • Obtenez la liste des ressources que vous souhaitez utiliser pour l’évaluation rapide de la conformité.

    $resourceGroupName
    $deploymentName
    
    $resourceIds = @()
    Get-AzResourceGroupDeploymentOperation `
        -ResourceGroupName $resourceGroupName `
        -Name $deploymentName `
    | ForEach-Object {
        if (![String]::IsNullOrEmpty($_.TargetResource)) {
            $resourceIds += $_.TargetResource
        }
    }
    
    • Pour acquérir des ressources basées sur la stratégie de gestion des ressources cloud (par exemple, des ressources avec des étiquettes spécifiques, des ressources dans des groupes de ressources particuliers, etc.), passez en revue la Azure PowerShell - Get-AzResource.
    # Get resources with same tag
    $key = "<key-of-your-tag>"
    $value = "<value-of-your-tag>"
    
    $resourceIds = (Get-AzResource -TagName $key -TagValue $value).ResourceId
    
    try {
        $token = "<your-Azure-credentials>"
        $reportName = "<report-name>"
        $apiVersion = "2023-02-15-preview"
    
        $header = @{}
        $header["Authorization"] = $token
        $header["x-ms-aad-user-token"] = $token
        $header["accept"] = "application/json"
    
        $uri = "https://management.azure.com/providers/Microsoft.AppComplianceAutomation/reports/" + $reportName + "?api-version=" + $apiVersion
        $response = Invoke-WebRequest $uri `
            -Method GET `
            -Headers $header `
            -ContentType "application/json" `
            -Verbose `
            -UseBasicParsing
    
        $resourceIds = @()
        if ($response.StatusCode -ne 200) {
            Write-Host "Failed to get resources from compliance report: $response"
            return 
        }
    
        $resources = $response.Content | ConvertFrom-Json
        $resourceIds = $resources.properties.resources.resourceId
    }
    catch {
        Write-Output "Failed to get resources from compliance report with exception: $_"
    }
    
  • Utilisez l’API triggerEvaluation pour obtenir une évaluation rapide de la conformité pour les ressources données.

try {
    $token = "<your-Azure-credentials>"
    $resourceIds = "<resource-ids-from-previous-step>"
    $apiVersion = "2023-02-15-preview"

    $header = @{}
    $header["Authorization"] = $token
    $header["x-ms-aad-user-token"] = $token
    $header["accept"] = "application/json"

    $body = @{resourceIds = $resourceIds }

    $uri = "https://management.azure.com/providers/Microsoft.AppComplianceAutomation/triggerEvaluation?api-version=$apiVersion"
    $response = Invoke-WebRequest $uri `
        -Method POST `
        -Headers $header `
        -ContentType "application/json" `
        -Body (ConvertTo-Json $body -Depth 8) `
        -Verbose `
        -UseBasicParsing
    
    # The triggerEvaluation API is asynchronous. Therefore, you need to pull the status to check whether it is completed. 
    # StatusCode 200: OK. The response indicates the quick compliance evaluation for given resource ids is completed.
    # StatusCode 202: Accepted. The response indicates the quick compliance evaluation for given resource ids is triggered and performing in backend. 
    if ($response.StatusCode -eq 200) {
        $result = $response.Content | ConvertFrom-Json
        Write-Host "Successfully get evaluation result:$result"
        return $result
    }
    elseif ($response.StatusCode -eq 202) {
        $retry_url = $response.Headers["Location"]

        do {
            Start-Sleep 10
            Write-Host "retry_url: $retry_url"
            $opResponse = Invoke-WebRequest `
                -Uri $retry_url `
                -ContentType "application/json" `
                -Verbose `
                -Method GET `
                -Headers $header `
                -UseBasicParsing

            if ($opResponse.StatusCode -eq 200) {
                $opResult = $opResponse.Content | ConvertFrom-Json
                Write-Host "Successfully get evaluation result: $opResult"
                return $opResult
            }
            elseif ($opResponse.StatusCode -eq 202) {
                continue
            }
            else {
                Write-Host "Failed to get evaluation result"
                break
            }
        } while ($true)
    }
    else {
        Write-Host "Failed to get compliance evaluation with triggerEvaluation API: $response"
    }
}
catch {
    Write-Output "Failed to get quick compliance assessment with exception: $_"
}
  • Obtenez l’évaluation de conformité rapide à partir du résultat de l’API triggerEvaluation.

Référence

Charges utiles de webhook

Pour les charges utiles de webhook ACAT pour chaque événement, elles contiennent des propriétés communes.

Clé

Obligatoire ?

Type

Description

EventDesc

Oui

Chaîne

Événement spécifique qui déclenche la notification.

Message

Oui

String

Contenu de la notification. Il contient généralement le nom du rapport comme identificateur unique et l’horodatage lorsque cet événement se produit.

Détails

Non

Chaîne

Il s’agit du contenu au format JSON qui contient les détails de cette notification. En prenant l’exemple de l’échec des évaluations de contrôle, les détails incluent toutes les responsabilités client ayant échoué pour chaque contrôle et les ressources affectées.

Déclencheur de l’API REST ACATÉvaluation

Nom de l’API : triggerEvaluation

  • Service : Automatisation de la conformité des applications
  • Version de l’API : 2023-02-15-preview

Obtenez une évaluation rapide de la conformité pour des ressources données.

POST https://management.azure.com/providers/Microsoft.AppComplianceAutomation/triggerEvaluation?api-version=2023-02-15-preview
Paramètres d’URI

Nom

Dans le paramètre

Obligatoire

Type

Description

api-version

requête

True

string

Version de l’API à utiliser pour cette opération. Vous pouvez utiliser « 2023-02-15-preview »

En-tête de demande

Nom

Dans le paramètre

Obligatoire

Type

Description

Autorisation

head

True

string

Porteur + " " + Jeton d’accès

x-ms-aad-user-token

head

True

string

Porteur + " " + Jeton d’accès

Content-Type

head

True

string

value : « application/json »

Corps de la requête

Nom

Obligatoire

Type

Description

resourceIds

Vrai

tableau de chaînes

Liste des ID de ressource à évaluer

En-tête des réponses

Nom

Type

Description

200 OK

La réponse indique que l’évaluation rapide de la conformité pour les ID de ressource donnés est terminée.

202 Accepté

La réponse indique que l’évaluation rapide de la conformité pour les ID de ressource donnés est déclenchée et s’exécute dans le back-end.

Autres codes d’état

ErrorResponse

Réponse d’erreur.

TriggerEvaluationResponse

Nom

Type

Description

triggerTime

string

Heure à laquelle l’évaluation est déclenchée.

evaluationEndTime

chaîne

Heure de fin de l’évaluation.

resourceIds

string[]

Liste des ID de ressource à évaluer

quickAssessments

Liste des évaluations rapides

QuickAssessment

Nom

Type

Description

resourceId

chaîne

ID de ressource

responsibilityId

chaîne

ID de responsabilité

Timestamp

chaîne

Horodatage de la création de ressources (UTC).

resourceStatus

ResourceStatus

Status d’évaluation rapide.

displayName

string

Nom complet de l’évaluation rapide.

description

string

Description des évaluations rapides.

remediationLink

chaîne

Lien vers les étapes de correction pour cette évaluation rapide.