Atlassian Cloud 관리자 감사 로그 수집
이 문서에서는 AWS S3를 사용하여 Atlassian Cloud Admin 감사 로그를 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 로그 풀러 스크립트 만들기
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
을 클릭하여vi
를 저장하고 종료한 후 >에:wq
을 입력합니다.
환경 변수 저장
/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 전문가로부터 답변을 받으세요.