APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【Alibaba Cloud】ActionTrailを触ってみる

はじめに

こんにちは、IaC技術推進部の山路です。前回のOperation Orchestration Serviceの紹介記事の中で、 Alibaba Cloudを利用する時は複数のリージョンを利用することが多くなるだろう、と書かせていただきました。複数のリージョンを利用すれば、管理する対象のリソースは別々のリージョンに配置されるため、管理をする側としては大変です。特に各ユーザーの操作履歴を記録しておくことは、監査やセキュリティの面からも重要になるだけでなく、誤操作によるリソース削除などの問題が発生したときの調査に利用することもできます。Alibaba Cloudは各種リソースの管理に関するサービスを提供しており、その中にはユーザーの操作履歴を管理するものも含まれています。今回は、Alibaba Cloudのリソースの操作履歴を追跡できるActionTrailについて、その概要と利用方法を紹介いたします。

ActionTrailとは

ActionTrailはAlibaba Cloudの提供するサービスの一つであり、Alibaba Cloudのリソースに対する操作履歴を記録する機能を提供します。この機能により、Alibaba Cloudのリソースに対する操作履歴を追跡することが可能になります。また各RAMユーザーの操作履歴を追跡できるので、コンプライアンス監査にも利用することが可能です。

ActionTrailの特徴としては、以下のような点が挙げられます。

  • 簡単にサービスを利用開始できる:ActionTrailは「Trail」という単位でログの取得やログ出力先を指定するだけで利用可能となります。
  • 監視対象範囲:ActionTrailは複数のリージョンにまたがるリソースをモニターすることができます。
  • OSSやLog Serviceへのログ転送:ActionTrailは一定期間が経過すると操作ログが削除されてしまいますが、Alibaba Cloudの別サービスであるOSSLog Serviceを利用することで、操作ログの長期保存やログ解析も可能になります。
  • 無料で利用可能:ActionTrailを利用すること自体は無料で利用可能ですが、ログ出力先としてOSSやLog Serviceを利用する場合は、そちらを利用した分だけ課金が発生します。

一方でActionTrailにはいくつか利用制限があり、代表的なものとしては以下のようなものが挙げられます。

  • TrailとOSSとの紐づけ:1つのTrailは1つのOSSバケットのみ関連付けができます。
  • ログを確認できるまでの時間:ActionTrailでログを確認できるのは、イベント発生後10分経過してからになります。
  • 取得するリソース種別に制限がある:ActionTrailはAlibaba Cloudのすべてのリソースに対応しているわけではなく、例えばCloud Storage GatewayVPN Gatewayといったリソースは、本記事執筆時点では監視対象とすることはできません(対応しているリソース一覧はこちらから)。

利用方法

ここからActionTrailの利用方法について紹介します。

Trailの作成

まずはTrailの作成を行います。ActionTrailの画面に移動し、「Create Trail」を選択します。

f:id:FY0323:20200702095951p:plain

以下がTrailの作成画面になります。

Apply Trail to All Regionsでは、リソース操作を追跡するリージョンを指定することができます。特定のリージョン内の操作を追跡したい場合は「No」を選択し、リージョンを指定することができます。

Deliver Eventsでは、ActionTrailで追跡した結果をログとして別のリソースに出力するよう設定することができます。出力先として選択できるのはOSSかLog Serviceから選びますが、一度に両方のサービスを出力先として選択することも可能です。SLS LogstoreはLog Serviceで利用するログの保存先を示します。

f:id:FY0323:20200702100030p:plain

今回は全リージョンを対象に、すべてのイベントの操作ログを取得します。またOSSとLog Serviceを新規で作成し、両方に操作ログを転送するよう設定します。

f:id:FY0323:20200702100109p:plain

Trailの作成が完了すると、ActionTrailは利用可能となります。History Searchを見ると、以下のようにActionTrailやOSSの作成ログが確認できます。

f:id:FY0323:20200702100240p:plain

各ログの詳細についても確認することができます。

f:id:FY0323:20200702100424p:plain

OSS / Log Serviceの利用

続いてOSSを確認してみます。指定したOSSは以下の通り作成が完了しており、すでにいくつかファイルも格納されています。

f:id:FY0323:20200702100527p:plain

操作ログはダウンロードすることで内容を見ることができます。ファイルはgzファイルとして圧縮されており、解凍するとJSON形式のファイルを確認することができます。

なお、OSSバケット内のフォルダ構成はAliyunLogs/ActionTrail/<リージョン>/<yy>/<mm>/<dd>/<ログ>となります。

f:id:FY0323:20200702100726p:plainf:id:FY0323:20200702100736p:plain

ファイルを整形して見やすくすると、以下のような出力(ファイルの一部のみ抽出)が確認できます。以下はDescribeTrailsというAPIの情報を取得しており、各リージョンに設定されているTrailの情報を取得したものになります。

[
    {
        "acsRegion": "ap-northeast-1",
        "additionalEventData": {
            "Scheme": "http"
        },
        "apiVersion": "2017-12-04",
        "eventId": "4C684641-75FC-490E-9676-CEF0196DC850",
        "eventName": "DescribeTrails",
        "eventSource": "actiontrail-openapi-share.ap-northeast-1.aliyuncs.com",
        "eventTime": "2020-06-29T01:16:54Z",
        "eventType": "ApiCall",
        "eventVersion": "1",
        "requestId": "4C684641-75FC-490E-9676-CEF0196DC850",
        "requestParameters": {
            "AcsProduct": "Actiontrail",
            " charset": "UTF-8",
            "AcceptLanguage": "en-US",
            "Region": "ap-northeast-1",
            "RequestId": "4C684641-75FC-490E-9676-CEF0196DC850",
            "RegionId": "ap-northeast-1",
            "IncludeShadowTrails": true,
            "HostId": "actiontrail-openapi-share.ap-northeast-1.aliyuncs.com",
            "AcsHost": "actiontrail-openapi-share.ap-northeast-1.aliyuncs.com"
        },
        "serviceName": "Actiontrail",
        "sourceIpAddress": "<IPアドレスを表示>",
        "userAgent": "Apache-HttpClient/4.5.7 (Java/1.8.0_152)",
        "userIdentity": {
            "accountId": "<IDを表示>",
            "principalId": "<IDを表示>",
            "sessionContext": {
                "attributes": {
                    "creationDate": "2020-06-29T01:16:54Z",
                    "mfaAuthenticated": "false"
                }
            },
            "type": "ram-user",
            "userName": "yamaji"
        }
    },

※参考リンク:

出力ログには、機密情報が含まれることも多いため、OSSのServer-Side Encryption機能を利用し、ファイルアップロード時に暗号化することが推奨されます。暗号化には、AES-256のほか、事前にKey Management Service(KMS)にマスターキーを保存しておくことで、それを利用することも可能です。

また、OSSバケット内にログがたまり続けることを防ぐには、OSSのLifecycleという機能を使い、一定期間が経過したらアーカイブバケットに転送することも可能です。簡単な使い方は、以前私が書いたこちらの記事をご覧ください。

次にLog Serviceを見てみます。ActionTrailのデータはLog Service内のLogstoreに保存されます。Log Serviceは収集したログの分析や表示の機能を担い、操作したリソース毎の操作内容を確認したり、リソースの分布状況などを確認することができます。

Log Serviceの画面に移動し、Trail作成時に指定したProject名を指定します。

f:id:FY0323:20200702100914p:plain

Projectを指定すると、以下のような画面へ移動します。

f:id:FY0323:20200702100959p:plain

Projectの左横メニューからDashboardを指定すると、以下のように利用しているリージョンやリソースの情報などがグラフで表示されます。Dashboardの構成はカスタマイズ可能です。

f:id:FY0323:20200702104447p:plain

Project配下のSearch & Analysisを選択すると、操作ログの発生日時と各ログの詳細を確認することができます。また操作ログのグラフを表示することも可能で、各チャートやテーブルなどを表示することが可能です。

f:id:FY0323:20200702101121p:plain

Log Serviceは多くの機能を備えており、ここで全てを紹介することはできませんが、ActionTrailに関連した機能としては、例えばCloudMonitorと連携してアラート通知を飛ばすことも可能です。

Single Account / Multi Accountについて

ActionTrailを利用する際、Single-Account TrailかMulti-Account Trailのどちらかを選択する必要があります。

Single-Account Trailは、一つのアカウントに紐づける形でActionTrailを利用し、追跡対象は紐づけた単一のアカウントが操作したものとなります。

single-account

公式ドキュメントより

一方Multi-Account Trailは、エンタープライズ向けの機能で、Resource Management機能を利用し、Master AccountとMember Accountというものを用意します。Master AccountはActionTrailの管理アカウントとして設定や操作権限などを持ち、監視対象のアカウントはMember AccountとしてResource Directoryに追加します。

multi-account

公式ドキュメントより

この時注意したいこととして、というより私が勘違いをしていたことなのですが、ここでのアカウントというのはRAMユーザーのことではなく、Alibaba Cloudアカウント(プライマリアカウント)を指しているという点です。

ActionTrailのSingle-Account Trailを作成した場合、単一のAlibaba Cloudアカウントと、利用している全てのRAMユーザーに関する操作履歴が記録されます。なので、組織やプロジェクト内でアカウントは一つだけ利用し、RAMユーザーを複数利用している場合は、Single-Account Trailを利用すれば、メンバーの操作履歴は記録されます。

また、監視対象のRAMユーザーを指定することはできず、全てのRAMユーザーに関する操作履歴が記録されます。

なお、Single-Account Trailを複数利用し、一つのアカウントの下に複数のTrailを作成することもできます。そうすることで、異なるOSSに異なる操作ログを送信・保存することができ、それによって複数リージョンでのコンプライアンス監査や操作ログのバックアップに利用することが可能となります。

※参考ドキュメント: