收集 Atlassian Cloud 管理员审核日志

支持的语言:

本文档介绍了如何使用 AWS S3 将 Atlassian Cloud 管理员审核日志注入到 Google Security Operations。解析器首先尝试将传入的消息处理为 JSON 对象。如果失败,它会使用正则表达式(Grok 模式)从各种 Atlassian Jira 日志格式中提取字段,最终将提取的数据映射到统一数据模型 (UDM)。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例
  • 对 AWS 的特权访问权限
  • 对 Atlassian 的特权访问权限

配置 AWS IAM 和 S3 存储分区

  1. 按照以下用户指南创建 Amazon S3 存储桶创建存储桶
  2. 登录 AWS 控制台
  3. 依次前往 S3 > 创建存储桶
  4. 为存储桶提供名称(例如 atlassian-admin-audit-logs)。
  5. 保留其他默认设置(或根据需要配置加密和版本控制)。
  6. 点击创建
  7. 保存相应存储桶的名称区域,以供日后参考。
  8. 按照以下用户指南创建用户创建 IAM 用户
  9. 选择创建的用户
  10. 选择安全凭据标签页。
  11. 访问密钥部分中,点击创建访问密钥
  12. 选择第三方服务作为使用情形
  13. 点击下一步
  14. 可选:添加说明标记。
  15. 点击创建访问密钥
  16. 点击下载 CSV 文件,然后存储 Access IDSecret Access Key 以供日后参考。
  17. 点击完成
  18. 权限政策下的权限标签页中,点击添加权限
  19. 选择直接附加政策
  20. 搜索 AmazonS3FullAccess 政策。
  21. 选择相应政策。
  22. 点击下一步
  23. 点击添加权限

在 Atlassian 中配置 API 密钥

  1. 登录 Atlassian
  2. 依次前往设置 > API 密钥
  3. 点击右上角的 Create API key
  4. 为密钥提供一个唯一的描述性名称
  5. 失效日期下选择新的失效日期。
  1. 点击创建进行保存。
  2. 复制并保存您的 API 密钥组织 ID
  3. 点击完成

配置必需的软件包

  1. 登录日志收集主机(例如 AWS 虚拟机),然后运行以下命令来配置 AWS 凭据:

    pip install boto3 requests
    aws configure
    

创建 Atlassian 日志提取器脚本

  1. 输入 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()
    
  2. 点击 esc > 输入 :wq,保存并退出 vi

存储环境变量

  1. 创建一个安全文件,用于在 /etc/atlassian_audit.env 中存储环境变量:

    export ATL_TOKEN="your_atlassian_key"
    export ATL_ORG_ID="your_org_id"
    export AWS_PROFILE="atlassian-logs"
    
  2. 确保文件安全:

    chmod 600 /etc/atlassian_audit.env
    

使用 Cron 实现自动化

  1. 运行 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
    
  2. 让该文件可执行:

    chmod +x /usr/local/bin/run_atlassian_audit.sh
    
  3. 配置为每天在 02:00(世界协调时间)运行:

    crontab -e
    0 2 * * * /usr/local/bin/run_atlassian_audit.sh >> /var/log/atl_audit.log 2>&1
    

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。