Atlassian Cloud 管理監査ログを収集する
このドキュメントでは、AWS S3 を使用して Atlassian Cloud 管理者監査ログを Google Security Operations に取り込む方法について説明します。パーサーは、まず受信メッセージを JSON オブジェクトとして処理しようとします。失敗した場合は、正規表現(Grok パターン)を使用してさまざまな Atlassian Jira ログ形式からフィールドを抽出し、最終的に抽出されたデータを統合データモデル(UDM)にマッピングします。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- AWS への特権アクセス
- Atlassian への特権アクセス
AWS IAM と S3 バケットを構成する
- バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
- AWS コンソールにログインします。
- [S3] > [バケットを作成] に移動します。
- バケットの名前を指定します(例:
atlassian-admin-audit-logs
)。 - 他のデフォルトはそのままにします(必要に応じて暗号化とバージョン管理を構成します)。
- [作成] をクリックします。
- バケットの名前とリージョンを後で参照できるように保存します。
- IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
- 作成した [ユーザー] を選択します。
- [セキュリティ認証情報] タブを選択します。
- [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
- [ユースケース] として [サードパーティ サービス] を選択します。
- [次へ] をクリックします。
- (省略可)説明タグを追加します。
- [アクセスキーを作成] をクリックします。
- [CSV ファイルをダウンロード] をクリックし、[アクセス ID] と [シークレット アクセスキー] を保存して、今後の参照に備えます。
- [完了] をクリックします。
- [権限ポリシー] の [権限] タブで、[権限を追加] をクリックします。
- [ポリシーを直接アタッチする] を選択します。
- AmazonS3FullAccess ポリシーを検索します。
- ポリシーを選択します。
- [次へ] をクリックします。
- [権限を追加] をクリックします。
Atlassian で API キーを構成する
- Atlassian にログインします。
- [設定] > [API キー] に移動します。
- 右上にある [API キーを作成] をクリックします。
- 鍵の一意でわかりやすい名前を指定します。
- [有効期限] で新しい有効期限を選択します。
- [作成] をクリックして保存します。
- API キーと組織 ID をコピーして保存します。
- [完了] をクリックします。
必要なパッケージを構成する
ログ収集ホスト(AWS VM など)にログインし、次のコマンドを実行して AWS 認証情報を構成します。
pip install boto3 requests aws configure
Atlassian Log Puller スクリプトを作成する
sudo vi area1_to_s3.py
と入力して次のファイルを作成し、次のコードをコピーします。- 以下を調整します。
#!/usr/bin/env python3 import os, requests, boto3, datetime # Settings TOKEN = os.environ["ATL_TOKEN"] ORG_ID = os.environ["ATL_ORG_ID"] AWS_PROFILE = os.getenv("AWS_PROFILE") BUCKET = "atlassian-admin-audit-logs" def fetch_events(cursor=None): url = f"https://api.atlassian.com/admin/v1/orgs/{ORG_ID}/events" headers = {"Authorization":f"Bearer {TOKEN}"} params = {"limit":100, "cursor":cursor} if cursor else {"limit":100} resp = requests.get(url, headers=headers, params=params) resp.raise_for_status() return resp.json() def upload_json(data, filename): session = boto3.Session(profile_name=AWS_PROFILE) if AWS_PROFILE else boto3.Session() session.client("s3").put_object(Bucket=BUCKET, Key=filename, Body=data, ContentType="application/json") print(f"Uploaded {filename}") def main(): today = datetime.datetime.utcnow().strftime("%Y-%m-%d") cursor = None count = 0 while True: resp = fetch_events(cursor) key = f"audits/{today}/events_{count}.json" upload_json(resp["data"], key) count += 1 cursor = resp.get("links",{}).get("next") if not cursor: break if __name__=="__main__": main()
esc
>:wq
** と入力して、vi
を保存して終了します。
環境変数を保存する
/etc/atlassian_audit.env
に環境変数を格納する安全なファイルを作成します。export ATL_TOKEN="your_atlassian_key" export ATL_ORG_ID="your_org_id" export AWS_PROFILE="atlassian-logs"
ファイルのセキュリティを確保します。
chmod 600 /etc/atlassian_audit.env
Cron を使用して自動化する
sudo vi /usr/local/bin/run_atlassian_audit.sh
を実行して Cron のラッパー スクリプトを作成し、次のコードをコピーします。#!/usr/bin/env bash source /etc/atlassian_audit.env python3 /opt/scripts/export_atlassian_audit.py
ファイルを実行可能にします。
chmod +x /usr/local/bin/run_atlassian_audit.sh
毎日 02:00 UTC に実行するように構成します。
crontab -e 0 2 * * * /usr/local/bin/run_atlassian_audit.sh >> /var/log/atl_audit.log 2>&1
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。