Непрерывное обеспечение соответствия приложений Microsoft 365 с помощью средства автоматизации соответствия приложений для Microsoft 365

Средство автоматизации соответствия приложений Microsoft 365 (ACAT) упрощает основные элементы управления для сертификации Microsoft 365. Сохраняйте непрерывное соответствие приложению Microsoft 365 с помощью ACAT. Следите за сбоями соответствия требованиям с помощью уведомлений и легко интегрируйте ACAT в конвейер непрерывной интеграции и непрерывного развертывания.

Примечание.

В настоящее время ACAT находится в общедоступной предварительной версии и поддерживает только приложения, созданные на основе Azure. Будущие обновления будут включать функции для приложений, созданных на основе размещенных облачных служб сторонних разработчиков. Чтобы получить отзыв о общедоступной предварительной версии ACAT, заполните эту форму. Специалист группы по продуктам ACAT будет следить за вами как можно скорее.

Получение последней оценки контроля отчета о соответствии с помощью уведомлений

После создания отчета о соответствии для приложения или среды Microsoft 365 ACAT автоматически собирает данные о соответствии и проводит ежедневные оценки контроля. Кроме того, вы можете получать уведомления о любых изменениях в параметрах отчета или оценках.

Получение уведомлений с помощью веб-перехватчика

Создайте веб-перехватчик для получения уведомлений из ACAT.

  • Перейдите в раздел Отчеты слева.

  • Откройте отчет, для который вы хотите получать уведомления.

  • Выберите Уведомления на панели инструментов.

  • Выберите Создать уведомление, а затем выберите Веб-перехватчик.

    • Имя веб-перехватчика. Это уникальный идентификатор веб-перехватчика в этом отчете.
    • URL-адрес полезных данных. URL-адрес полезных данных — это URL-адрес сервера, который получает запросы POST веб-перехватчика из ACAT.
    • Тип контента: сейчас ACAT поддерживает только тип контента application/json, который предоставляет полезные данные JSON непосредственно в качестве текста запроса POST.
    • Секрет. Установка секрета веб-перехватчика позволяет убедиться, что запросы POST, отправленные на URL-адрес полезных данных, отправляются из ACAT. Если секрет задан, ACAT использует его для создания хэш-сигнатуры с каждой полезной нагрузкой. Эта хэш-подпись включается в заголовки каждого запроса как x-acat-signature-256.
    • Проверка SSL. Проверка SSL отображается только в том случае, если URL-адрес полезных данных является защищенным сайтом (HTTPS), и это помогает обеспечить безопасную доставку полезных данных в URL-адрес полезных данных. Рекомендуется оставить флажок Включить проверку SSL.
    • События триггера. Подпишитесь на события ACAT для получения уведомлений.

    Создание уведомления о веб-перехватчике

    Совет

    Дополнительные сведения о полезных данных веб-перехватчика.

Получение быстрой оценки соответствия в конвейере непрерывной интеграции и непрерывного развертывания

Помимо регулярного использования портала и получения актуальных уведомлений, ACAT может быстро оценить соответствие в конвейере непрерывной интеграции и непрерывного развертывания (CI/CD). Обеспечение непрерывного соответствия приложению Microsoft 365.

В ACAT оценки контроля — это структурированные оценки соответствия требованиям, классифицированные в соответствии с доменами безопасности сертификации Microsoft 365, семействами элементов управления и отдельными элементами управления. Чтобы инициировать контрольную оценку в рамках необработанных данных соответствия ACAT, необходимо собрать необработанные данные соответствия. Однако некоторые из этих необработанных сведений о соответствии могут быть недоступны с технической точки зрения. Чтобы решить эту проблему, ACAT вводит концепцию, известную как "быстрая оценка соответствия требованиям". Эта функция предназначена для быстрой оценки состояния соответствия требованиям, что позволяет немедленно собирать необходимые необработанные данные о соответствии.

Реализация быстрой оценки соответствия служит двум целям:

  • Своевременная аналитика: помогает в режиме реального времени понять состояние соответствия требованиям, обеспечивая наглядность соблюдения приложением стандартов безопасности и рекомендаций.
  • Простая интеграция. Быстрая оценка соответствия требованиям может легко интегрироваться в конвейер CI/CD, обеспечивая надежность приложений и соответствие требованиям к соответствию.

Интеграция с конвейером CI/CD с помощью GitHub Actions

Быстрые оценки соответствия доступны в конвейере CI/CD с помощью быстрой оценки сертификации Microsoft 365 GitHub Action. Это действие GitHub Action может использоваться двумя способами:

  • Используйте последнее развертывание в конвейере CI/CD в качестве окончательного состояния для приложения: ACAT проводит быструю оценку соответствия на основе последнего развертывания в конвейере. Кроме того, вы можете запросить ACAT обновить соответствующие отчеты о соответствии на основе этого развертывания, предоставляя вам комплексные оценки контроля с ежедневными обновлениями.
  • Используйте существующий отчет о соответствии в качестве справки для приложения.** ACAT использует ресурсы, определенные в существующем отчете о соответствии, для быстрой оценки соответствия.

Интеграция с конвейером CI/CD через REST API ACAT

Получите быстрые оценки соответствия в конвейере CI/CD с помощью REST API ACAT.

  • Подключение к ресурсам Azure с помощью проверки подлинности субъекта-службы. Следуйте этому руководству , чтобы узнать, как создать субъект-службу, который может получать доступ к ресурсам. После создания субъекта-службы следуйте указаниям из средства конвейера, чтобы сохранить учетные данные. Например, подключитесь к Microsoft Azure с помощью подключения к службе ARM.

  • Получите список ресурсов, которые вы хотите использовать для быстрой оценки соответствия требованиям.

    $resourceGroupName
    $deploymentName
    
    $resourceIds = @()
    Get-AzResourceGroupDeploymentOperation `
        -ResourceGroupName $resourceGroupName `
        -Name $deploymentName `
    | ForEach-Object {
        if (![String]::IsNullOrEmpty($_.TargetResource)) {
            $resourceIds += $_.TargetResource
        }
    }
    
    • Чтобы получить ресурсы на основе политики управления облачными ресурсами (например, ресурсы с определенными тегами, ресурсами в определенных группах ресурсов и т. д.), ознакомьтесь с 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
    
    • Чтобы использовать существующий отчет о соответствии ACAT, щелкните Отчет REST API ACAT — Получить , чтобы получить ресурсы из определения отчета.
    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: $_"
    }
    
  • Используйте API triggerEvaluation , чтобы быстро оценить соответствие заданным ресурсам.

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: $_"
}
  • Получите быструю оценку соответствия на основе результата API triggerEvaluation.

Ссылка

Полезные данные веб-перехватчика

Для полезных данных веб-перехватчика ACAT для каждого события они содержат некоторые общие свойства.

Ключ

Обязательный?

Тип

Описание

EventDesc

Да

String

Конкретное событие, которое активирует уведомление.

Сообщение

Да

String

Содержимое уведомления. Обычно он содержит имя отчета в качестве уникального идентификатора и метку времени при возникновении этого события.

Подробно

Нет

String

Это содержимое в формате JSON, содержащее сведения об этом уведомлении. Если взять в качестве примера сбой оценки элементов управления, в качестве примера можно включить все невыполненые обязанности клиента за каждый элемент управления и затронутые ресурсы.

Вычисление триггера REST API ACAT

Имя API: triggerEvaluation

  • Служба: автоматизация соответствия приложений
  • Версия API: 2023-02-15-preview

Получите быструю оценку соответствия для заданных ресурсов.

POST https://management.azure.com/providers/Microsoft.AppComplianceAutomation/triggerEvaluation?api-version=2023-02-15-preview
Параметры URI

Имя

Куда включается

Обязательный

Тип

Описание

версия api

Запрос

True

string

Версия API, используемая для этой операции. Можно использовать "2023-02-15-preview"

Заголовок запроса

Имя

Куда включается

Обязательный

Тип

Описание

Авторизация

head

True

string

Bearer + " " + Маркер доступа

x-ms-aad-user-token

head

True

string

Bearer + " " + Маркер доступа

Content-Type

head

True

string

value: "application/json"

Текст запроса

Имя

Обязательный

Тип

Описание

resourceIds

Верно

массив строк

Список идентификаторов ресурсов для оценки

Заголовок "Ответы"

Имя

Тип

Описание

200 OK

Ответ указывает, что быстрая оценка соответствия для заданных идентификаторов ресурсов завершена.

202 Принято

Ответ указывает, что быстрая оценка соответствия для заданных идентификаторов ресурсов активируется и выполняется в серверной части.

Другие коды состояния

ErrorResponse

Ответ на ошибку.

TriggerEvaluationResponse

Имя

Тип

Описание

triggerTime

string

Время активации оценки.

evaluationEndTime

string

Время окончания оценки.

resourceIds

string[]

Список идентификаторов ресурсов для оценки

quickAssessments

Список быстрых оценок

QuickAssessment

Имя

Тип

Описание

resourceId

string

Идентификатор ресурса

идентификатор ответственности

string

Идентификатор ответственности

Timestamp

string

Метка времени создания ресурса (UTC).

resourceStatus

ResourceStatus

Состояние быстрой оценки.

displayName

string

Отображаемое имя быстрой оценки.

description

string

Описание быстрых оценок.

remediationLink

string

Ссылка на действия по исправлению для этой быстрой оценки.