Microsoft 365 アプリケーションコンプライアンスオートメーションツールを使用して Microsoft 365 アプリケーションを継続的に準拠させ続ける
Microsoft 365 アプリ コンプライアンスオートメーション ツール (ACAT) は、Microsoft 365 認定資格の重要なコントロールを合理化します。 ACAT を使用して、Microsoft 365 アプリケーションの継続的なコンプライアンスを維持します。 通知を通じてコンプライアンスエラーを常に更新し、継続的インテグレーション/継続的デプロイ パイプラインに ACAT をシームレスに統合します。
注:
ACAT は現在パブリック プレビュー段階であり、Azure 上に構築されたアプリケーションのみをサポートしています。 今後の更新プログラムには、Microsoft 以外のホスト型クラウド サービス上に構築されたアプリの機能が含まれます。 ACAT パブリック プレビューに関するフィードバックについては、こちらの フォームに記入してください。 ACAT製品チームの専門家は、できるだけ早くあなたにフォローアップします。
通知を使用してコンプライアンス レポートの最新の制御評価を取得する
Microsoft 365 アプリケーションまたは環境のコンプライアンス レポートを作成すると、ACAT はコンプライアンス データを自動的に収集し、毎日の制御評価を行います。 さらに、レポート設定または評価の変更に関する通知を受け取ることができます。
Webhook で通知を取得する
ACAT から通知を受信する Webhook を作成します。
左側の [レポート] に移動します。
通知を受信するレポートを開きます。
ツール バーから [通知] を選択します。
[通知の作成] を選択し、[Webhook] を選択します
- Webhook 名: これは、このレポート内の Webhook の一意の識別子です。
- ペイロード URL: ペイロード URL は、ACAT から Webhook POST 要求を受信するサーバーの URL です。
- コンテンツ タイプ: ACAT は現在、POST 要求の本文として JSON ペイロードを直接配信する application/json コンテンツ タイプのみをサポートしています。
- シークレット: Webhook シークレットを設定すると、ペイロード URL に送信される POST 要求が ACAT から送信されるようにすることができます。 シークレットが設定されると、ACAT はそれを使用して、各ペイロードでハッシュ署名を作成します。 このハッシュ署名は、x-acat-signature-256 として各要求のヘッダーに含まれています。
- SSL 検証: SSL 検証は、ペイロード URL がセキュリティで保護されたサイト (HTTPS) である場合にのみ表示され、ペイロードがペイロード URL に安全に配信されるようにするのに役立ちます。 [SSL 検証を有効にする] をオンにしておくことをお勧めします。
- トリガー イベント: ACAT イベントをサブスクライブして通知を取得します。
ヒント
Webhook ペイロードの詳細については、こちらをご覧ください。
継続的インテグレーション/継続的デプロイ パイプラインで迅速なコンプライアンス評価を取得する
ACAT は、ポータルの定期的な使用状況と最新の通知の受信に加えて、継続的インテグレーション/継続的デプロイ (CI/CD) パイプライン内で迅速なコンプライアンス評価を実行できます。 Microsoft 365 アプリケーションの継続的なコンプライアンスを確保する。
ACAT では、コントロール評価は、Microsoft 365 認定のセキュリティ ドメイン、コントロール ファミリ、および個々のコントロールに従って分類された構造化されたコンプライアンス評価です。 ACAT の未加工コンプライアンス データ内で制御評価を開始するには、収集する必要があります。 ただし、この未加工のコンプライアンス情報の一部は、技術的な観点からは容易にアクセスできない場合があります。 この課題に対処するために、ACAT では "クイック コンプライアンス評価" と呼ばれる概念が導入されています。 この機能は、コンプライアンスの状態を迅速に評価できるように設計されており、重要な生のコンプライアンス データをすぐに収集できます。
迅速なコンプライアンス評価の実装には、次の 2 つの目的があります。
- タイムリーな分析情報: コンプライアンス体制をリアルタイムで理解し、アプリケーションのセキュリティ標準とベスト プラクティスへの準拠を可視化します。
- シームレスな統合: 迅速なコンプライアンス評価により、CI/CD パイプラインにシームレスに統合できるため、アプリケーションは堅牢でコンプライアンス要件に合わせて維持されます。
GitHub Actionsによる CI/CD パイプラインとの統合
注:
ACAT GitHub Actionsのサポートはプレビューであり、Microsoft Azure 上に構築されたアプリのみをサポートします。 今後の更新プログラムには、他のクラウド上に構築されたアプリの機能が含まれます。
クイック コンプライアンス評価は、 Microsoft 365 認定クイック評価 GitHub Action を使用して CI/CD パイプラインで利用できます。 この GitHub アクションには、次の 2 つの用途が考えられます。
- CI/CD パイプラインの最新のデプロイをアプリケーションの決定的な状態として使用します。ACAT は、パイプライン内の最新のデプロイに基づいて迅速なコンプライアンス評価を行います。 さらに、この展開に基づいて対応するコンプライアンス レポートを更新するように ACAT に要求し、毎日の更新で包括的な制御評価を許可することもできます。
- アプリケーションの参照として、既存のコンプライアンス レポートに依存します。 ACAT は、既存のコンプライアンス レポートで定義されているリソースを利用して、迅速なコンプライアンス評価を実行します。
ACAT REST API を使用した CI/CD パイプラインとの統合
ACAT REST API を使用して、CI/CD パイプラインで迅速なコンプライアンス評価を取得します。
サービス プリンシパル認証を使用して Azure リソースに接続します。 この ガイド に従って、リソースにアクセスできるサービス プリンシパルを作成する方法について説明します。 サービス プリンシパルが作成されたら、パイプライン ツールのガイダンスに従って資格情報を格納します。 たとえば、 ARM サービス接続を使用して Microsoft Azure に接続します。
迅速なコンプライアンス評価に使用するリソースの一覧を取得します。
- CI/CD パイプラインで最新のデプロイを使用します。 Azure PowerShell - Get-AzResourceGroupDeploymentOperation を確認して、デプロイからリソースを取得します。
$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 コンプライアンス レポートを使用するには、 ACAT REST API Report - Get を選択して、レポート定義からリソースを取得します。
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: $_" }
triggerEvaluation API を使用して、特定のリソースの迅速なコンプライアンス評価を取得します。
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: $_"
}
- triggerEvaluation API の結果から迅速なコンプライアンス評価を取得します。
リファレンス
Webhook ペイロード
各イベントの ACAT Webhook ペイロードには、いくつかの共通プロパティが含まれています。
キー
必須
型
説明
EventDesc
はい
String
通知をトリガーする特定のイベント。
メッセージ
はい
String
通知の内容。 通常、レポート名は一意の識別子として、このイベントが発生した場合のタイムスタンプが含まれます。
詳細
いいえ
String
これは、この通知の詳細を含む JSON 形式のコンテンツです。 コントロール評価の失敗を例にとると、詳細には、各コントロールと影響を受けるリソースに対して失敗したすべての顧客の責任が含まれます。
ACAT REST API triggerEvaluation
API 名: triggerEvaluation
- サービス: アプリコンプライアンスオートメーション
- API バージョン: 2023-02-15-preview
特定のリソースの迅速なコンプライアンス評価を取得します。
POST https://management.azure.com/providers/Microsoft.AppComplianceAutomation/triggerEvaluation?api-version=2023-02-15-preview
URI パラメーター
名前
In
必須
型
説明
api-version
query
はい
string
この操作に使用する API バージョン。 "2023-02-15-preview" を使用できます
要求ヘッダー
名前
In
必須
型
説明
Authorization
head
はい
string
ベアラー + " " + アクセス トークン
x-ms-aad-user-token
head
はい
string
ベアラー + " " + アクセス トークン
Content-Type
head
はい
string
value: "application/json"
要求本文
名前
必須
型
説明
resourceIds
はい
文字列配列
評価するリソース ID の一覧
応答ヘッダー
名前
型
説明
200 OK
応答は、特定のリソース ID の迅速なコンプライアンス評価が完了したことを示します。
202 Accepted
応答は、特定のリソース ID の迅速なコンプライアンス評価がトリガーされ、バックエンドで実行されていることを示します。
その他の状態コード
ErrorResponse
エラー応答。
TriggerEvaluationResponse
名前
型
説明
triggerTime
string
評価がトリガーされる時刻。
evaluationEndTime
string
評価が終了した時刻。
resourceIds
string[]
評価するリソース ID の一覧
quickAssessments
クイック評価の一覧
QuickAssessment
名前
型
説明
resourceId
string
リソース ID
responsibilityId
文字列
責任 ID
timestamp
文字列
リソース作成のタイムスタンプ (UTC)。
resourceStatus
ResourceStatus
クイック評価の状態。
displayName
string
クイック評価の表示名。
説明
string
クイック評価の説明。
remediationLink
string
このクイック評価の修復手順にリンクします。