🗂

Office 365 管理アクティビティ API で監査ログを取得する

2022/04/14に公開

Office 365 の監査ログは管理センターから取得することができますが、Office 365 管理アクティビティ API でも取得することできます。ここでは Office 365 管理アクティビティ API を使用して監査ログを取得する基本的な手順について記載します。

なお、Office 365 管理アクティビティ API で取得できるコンテンツは最大過去7日間のものになります。これより前のコンテンツを取得する場合は、Microsoft 365 コンプライアンスセンターから取得してください。

Azure Active Directory でアプリケーションを登録

クライアントが Office 365 管理アクティビティ API にアクセスできるようにするためには、Azure Active Directory にアプリケーションを登録し、クライアントシークレットを設定しておく必要があります。登録及び設定は、以下のドキュメントの

  • Azure portal を使用してアプリケーションを Azure AD で登録する
  • アプリケーションの新しいキーを生成する
  • アプリが Office 365 Management API にアクセスするために必要な許可を指定します

の手順に沿って行ってください。今回の手順ではリダイレクトURL、X.509 証明書は使用しないため、設定する必要はありません。

https://docs.microsoft.com/ja-jp/office/office-365-management-api/get-started-with-office-365-management-apis

テナント IDアプリケーション IDシークレット値は後で使用するので、控えておいてください。

Azure Active Directory からアクセストークンの取得

Azure Active Directory からアクセストークンを取得するために、以下の REST API をコールします。

https://login.microsoftonline.com/<テナントID>/oauth2/token

リクエストメソッド:POST
ヘッダー:
Content-Type:application/x-www-form-urlencoded
本文:
client_id=<アプリケーションID>&client_secret=<シークレット値>&grant_type=client_credentials&resource=https://manage.office.com

以下のようなレスポンスが得られるので、access_token の値をアクセストークン値として控えておきます。

{
    "token_type": "Bearer",
    "expires_in": "3599",
    "ext_expires_in": "3599",
    "expires_on": "1649843102",
    "not_before": "1649839202",
    "resource": "https://manage.office.com",
    "access_token": "xxx"
}

PublisherIdetifier の取得

Office 365 管理アクティビティ API では、PublisherIdentifier パラメータを使用することで専用のクォータを取得して、要求率の調整を行うことができます。このパラメータの値となる GUIDhttps://guidgenerator.com で作成し、値を控えておきます。

サブスクリプションの作成

Office 365 管理アクティビティ API は、アクションとイベントを、タイプ別及びコンテンツのソース別に分類されたテナント固有コンテンツ blob に集約します。現時点でサポートされているコンテンツタイプは以下になります。

  • Audit.AzureActiveDirectory
  • Audit.Exchange
  • Audit.SharePoint
  • Audit.General (上記のコンテンツタイプに含まれない、その他すべてのワークロードが含まれる)
  • DLP.All (すべてのワークロードの DLP のみ)

テナントのコンテンツ blob の取得を開始するには、取得するコンテンツタイプに対するサブスクリプションを作成します。ここでは、Audit.SharePointに対するサブスクリプションを、以下の REST API をコールすることで作成します。

https://manage.office.com/api/v1.0/<テナントID>/activity/feed/subscriptions/start?contentType=Audit.SharePoint&PublisherIdentifier=<GUID>

リクエストメソッド:POST
ヘッダー:
Authorization:Bearer <アクセストークン値>

作成済みのサブスクリプションは、以下の REST API をコールすることで確認できます。

https://manage.office.com/api/v1.0/<テナントID>/activity/feed/subscriptions/list?PublisherIdentifier=<GUID>

リクエストメソッド:GET
ヘッダー:
Authorization:Bearer <アクセストークン値>

Audit.SharePoint コンテンツタイプに対するサブスクリプションが作成されている場合は、以下のようなレスポンスが得られます。

[
    {
        "contentType": "Audit.SharePoint",
        "status": "enabled",
        "webhook": null
    }
]

利用可能なコンテンツリストの取得

Audit.SharePoint コンテンツタイプに対して、以下の REST API をコールすることでコンテンツリストを取得します。開始時間/終了時間を指定して取得範囲を絞り込むこともできます。

https://manage.office.com/api/v1.0/<テナントID>/activity/feed/subscriptions/content?contentType=Audit.SharePoint&PublisherIdentifier=<GUID>

リクエストメソッド:POST
ヘッダー:
Authorization:Bearer <アクセストークン値>

以下のようなレスポンスが得られます。

[
    {
        "contentUri": "https://manage.office.com/api/v1.0/<テナントID>/activity/feed/audit/<contentId>",
        "contentId": "<contentId>",
        "contentType": "Audit.SharePoint",
        "contentCreated": "2022-04-14T02:55:21.916Z",
        "contentExpiration": "2022-04-21T02:48:20.663Z"
    },
    {
        ......
]

contentUri がテナントのコンテンツ blob になります。この値を控えておいてください。なお、取得期間内の複数のコンテンツ blob がある場合には複数の contentUri が得られます。

コンテンツ blob の取得

コンテンツリストから得られた contentUri をコールすることで、コンテンツ blob が得られます。

https://manage.office.com/api/v1.0/<テナントID>/activity/feed/audit/<contentId>

リクエストメソッド:GET
ヘッダー:
Authorization:Bearer <アクセストークン値>

Office 365 管理アクティビティ API のより詳細な利用方法やスキーマについては、以下のドキュメントを参照してください。
https://docs.microsoft.com/ja-jp/office/office-365-management-api/office-365-management-activity-api-reference
https://docs.microsoft.com/ja-jp/office/office-365-management-api/office-365-management-activity-api-scha

Discussion