IBM Cloud Activity Tracker with LogDNA のログを ICOS に Archive する

# はじめに

IBM Cloud Activity Tracker with LogDNA のログを ICOS に Archive してみました。


# Activity Tracker

IBM Cloud へのログイン履歴や操作履歴を監査の観点で1年分保存したい要件があります。

Activity Tracker自体では最長30日間のイベント検索ができるプランを選択できますが、
それ以上の期間のログを確認したい場合は別途Storageに保管(Archive)する必要があります。

Activity TrackerのログをArchiveする先として複数の選択肢がありますが、
今回はICOS(IBM Cloud Object Storage)を選択します。

## Activity Trackerのリージョンについて

取得したいログが記録されるリージョンにActivity Trackerのインスタンスを作成する必要があります。
例：ネットワークサービスのログを見るためにはフランクフルトに作成する必要があります（2022/06/30時点）

ネットワークサービス
https://cloud.ibm.com/docs/activity-tracker?topic=activity-tracker-cloud_services_locations#cloud_services_locations_network

VPC インフラストラクチャー・サービス
https://cloud.ibm.com/docs/activity-tracker?topic=activity-tracker-cloud_services_locations&locale=en#cloud_services_locations_vpc_infrastructure


## 操作手順

1. ICOSの作成（省略）
2. Service ID と API Key の作成
3. Activity Tracker の Archive設定


# ICOSサービスアクセス用のAPI Key作成

ユーザーIDでAPI Keyを作成した場合、将来ユーザーIDを削除した際に利用できなくなります。
そのため、今回はICOSサービスアクセス用のService IDおよびAPI Keyを作成します。

## サービスIDの作成

管理 > アクセス(IAM) > サービスID > 作成 > 名前入力

## サービスIDへのアクセス権限付与

Accessタブ > アクセス・ポリシー > アクセス権限の割り当て

| 項目 | 入力内容 |
|--|----------|
| サービス | Cloud Object Storage |
| リソース | 特定のリソース |
| 属性タイプ | サービス・インスタンス | 
| 値 | 作成済みのCOSインスタンス名を選択 |
| 役割とアクション | ライター |

![アクセス・ポリシーでの権限割り当て](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329464/3b19c476-88a5-6ee1-7def-48490a8b0812.png)



## API Keyの作成

APIキータブ > 作成 > 名前入力 > APIキーをコピー
※ Service ID を作成してからAPIキータブ内に「作成」ボタンが表示されるまで2～3分かかりました。

# Activity TrackerのログをArchive設定

Activity Tracker > ダッシュボード > Archiving > Manage > Settings

| 項目 | 入力内容 | 入力例 |
|--|----------|--|
|Bucket | ICOSのBucketから入力|bkt-name|
|Endpoint | ICOSのBucketから入力|s3.private.jp-tok.cloud-object-storage.appdomain.cloud|
|API Key | IAMでコピーしたAPI Keyを入力|英数字(44桁の模様)|
|Instance ID | ICOSのBucketから入力|crn:v1:bluemix:public:cloud-object-storage:global:`xxxx`:bucket::|


上記入力後にSaveする。

:::note warn
API Keyに対するアクセス権限が正しくない場合、「Supplied IBM Cloud Object Storage settings are not valid.」 のメッセージが表示される。
:::

:::note info
Saveが成功した場合は、「IBM Cloud Object Storage archiving settings are saved」のメッセージが表示される。
:::

# ICOSでの保存期間

ライフ・サイクル・ポリシーを有効にして、有効期限までの日数を365日に設定する

![ICOS-lifecycle-policy](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329464/66a79375-0de9-f5fb-3123-a6b68d9b9f40.png)


# Activity Tracker Tips

## ログイン履歴の表示

Activity Tracker Viewにてユーザーのログイン履歴のみをを表示したい場合は、`"login user-refreshtoken"` でフィルタリングする。
（`"login"`のみでフィルタリングすると、apikeyのログイン情報も表示されてしまう）


## Activity Trackerのログメッセージについて


代表的なログメッセージ例は下記リンク先を参照してください。

Network resources
https://cloud.ibm.com/docs/vpc?topic=vpc-at-events#events-network

Load balancer events
https://cloud.ibm.com/docs/vpc?topic=vpc-at-events#events-load-balancers

Security Group events
https://cloud.ibm.com/docs/vpc?topic=vpc-at-events#events-network-security-group

IBM Cloud Direct Link のイベントの監査
https://cloud.ibm.com/docs/dl?topic=dl-at_events

IBM Cloud Transit Gateway に関する Activity Tracker イベント
https://cloud.ibm.com/docs/transit-gateway?topic=transit-gateway-at_events&locale=ja

IAMのイベントの監査
https://cloud.ibm.com/docs/activity-tracker?topic=activity-tracker-at_events_iam&locale=ja#at_events_iam_ui


## Activity Trackerの時刻同期

(Supportに問い合わせた情報です)
Activity Trackerの時刻同期はIBMによって管理されています。
Activity Tracker コンソールのTime ZoneはクライアントのTime Zoneが反映されます。
仮にクライアントの時刻がNTPと大きくずれていると`The difference between the request time and the server's time is too large.` のようなエラーメッセージが表示されます。


# 参考

Creating and working with service IDs
https://cloud.ibm.com/docs/account?topic=account-serviceids&interface=ui

Deleting stale data with expiration rules
https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-expiry