Atlassian Cloud 관리자 감사 로그 수집

다음에서 지원:

이 문서에서는 AWS S3를 사용하여 Atlassian Cloud Admin 감사 로그를 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 파일 다운로드를 클릭하고 향후 참조를 위해 액세스 ID보안 비밀 액세스 키를 저장합니다.
  17. 완료를 클릭합니다.
  18. 권한 정책권한 탭에서 권한 추가를 클릭합니다.
  19. 정책 직접 연결을 선택합니다.
  20. AmazonS3FullAccess 정책을 검색합니다.
  21. 정책을 선택합니다.
  22. 다음을 클릭합니다.
  23. 권한 추가를 클릭합니다.

Atlassian에서 API 키 구성

  1. Atlassian에 로그인합니다.
  2. 설정 > API 키로 이동합니다.
  3. 오른쪽 상단에서 API 키 만들기를 클릭합니다.
  4. 키의 고유하고 설명적인 이름을 제공합니다.
  5. 만료일에서 새 만료일을 선택합니다.
  1. 만들기를 클릭하여 저장합니다.
  2. API 키조직 ID를 복사하여 저장합니다.
  3. 완료를 클릭합니다.

필수 패키지 구성

  1. 로그 수집 호스트 (예: AWS VM)에 로그인하고 다음을 실행하여 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을 클릭하여 vi를 저장하고 종료한 후 >:wq을 입력합니다.

환경 변수 저장

  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(UTC)에 실행되도록 구성합니다.

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

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.