Skip to main content

엔터프라이즈에 대한 감사 로그 스트리밍

감사 및 Git 이벤트 데이터를 GitHub에서 외부 데이터 관리 시스템으로 스트림하는 방법에 대해 알아봅니다.

누가 이 기능을 사용할 수 있나요?

Enterprise owners

Note

웹후크는 특정 사용 사례에 대한 감사 로그 또는 API 폴링의 좋은 대안이 될 수 있습니다. 웹후크는 리포지토리, 조직 또는 기업에 대해 특정 이벤트가 발생할 때 GitHub에서 서버에 알리는 방법입니다. 기업, 조직 또는 리포지토리에서 특정 이벤트가 발생할 때 이를 탐지하고 기록하려는 경우 API 또는 감사 로그 검색보다 웹후크가 더 효율적일 수 있습니다. "웹후크 설명서" 항목을 참조하세요.

감사 로그 스트리밍 정보

지적 재산을 보호하고 회사의 규정 준수를 유지하는 데 도움이 되도록 스트리밍을 사용하여 감사 로그 데이터의 복사본을 보관할 수 있습니다. 감사 로그는 설정 및 액세스 변경, 사용자 멤버 자격, 앱 권한 등의 이벤트를 자세히 설명합니다. "엔터프라이즈에 대한 감사 로그 이벤트", "조직의 감사 로그 이벤트", "보안 로그 이벤트" 항목을 참조하세요.

스트리밍 감사 로그 데이터에는 다음과 같은 이점이 있습니다.

  • 데이터 검색. 대량의 데이터를 쿼리하기 위해 기본 설정 도구를 사용하여 스트림된 이벤트를 검사합니다. 스트림에는 전체 엔터프라이즈 계정에 대한 감사 이벤트와 Git 이벤트가 모두 포함됩니다.
  • 데이터 보존. 내보낸 감사 로그와 Git 이벤트 데이터를 필요한 기간만큼 유지합니다.

언제든지 스트림을 설정 또는 삭제할 수 있습니다. 스트림은 엔터프라이즈의 모든 조직에 대해 스트림이 활성화된 시간부터 그 이후로 감사 및 Git 이벤트 데이터를 내보냅니다.

스트리밍된 모든 감사 로그는 압축된 JSON 파일로 전송됩니다. 파일 이름 형식은 YYYY/MM/HH/MM/<uuid>.json.gz입니다.

Note

참고: GitHub은(는) “한 번 이상” 배달 방법을 사용합니다. 특정 네트워크 또는 시스템 문제로 인해 일부 이벤트가 중복될 수 있습니다.

감사 로그 스트리밍을 사용하도록 설정하면 GitHub Enterprise Server 인스턴스의 성능에 사소한 영향을 미칠 수 있습니다. 성능에 미치는 이러한 영향을 완화하기 위해 리소스를 늘리는 방법을 알아보려면 "CPU 또는 메모리 리소스 늘리기" 항목을 참조하세요.

감사 로그 스트림에 대한 상태 검사

24시간마다 각 스트림에 대해 상태 검사가 실행됩니다. 스트림이 잘못 설정되면 엔터프라이즈 소유자에게 이메일이 전송됩니다. 감사 로그 이벤트가 스트림에서 삭제되지 않도록 하려면 잘못 구성된 스트림을 6일 이내에 수정해야 합니다.

스트리밍 구성을 수정하려면 "감사 로그 스트리밍 설정"의 단계를 따릅니다.

감사 로그 스트리밍 설정

감사 로그 스트림을 설정하려면 공급자에 대한 지침을 따릅니다.

Amazon S3으로 스트리밍 설정

Note

S3로 스트리밍하려면 어플라이언스에서 Amazon 지역 us-east-1에 연결할 수 있어야 합니다.

GitHub에서 감사 로그 스트리밍을 설정하려면 다음 항목이 필요합니다.

  • AWS 액세스 키 ID
  • AWS 비밀 키

액세스 키 ID 및 비밀 키를 만들거나 액세스하는 방법에 대한 자세한 내용은 AWS 설명서의 AWS 자격 증명 이해 및 가져오기를 참조하세요.

AWS에서:

  1. 버킷을 만들고 버킷에 대한 퍼블릭 액세스를 차단합니다. AWS 설명서의 Amazon S3 버킷 만들기, 구성, 작업을 참조하세요.

  2. GitHub가 버킷에 쓸 수 있는 정책을 만듭니다. 다음 JSON을 복사하고 EXAMPLE-BUCKET을 버킷의 이름으로 바꿉니다. GitHub에는 JSON의 권한만 필요합니다.

    {
       "Version": "2012-10-17",
       "Statement": [
          {
             "Sid": "VisualEditor0",
             "Effect": "Allow",
             "Action": [
                "s3:PutObject"
             ],
             "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/*"
         }
       ]
    }
    

    AWS 설명서의 IAM 정책 만들기를 참조하세요.

GitHub에서:

  1. GitHub Enterprise Server의 오른쪽 위 모서리에서 프로필 사진과 엔터프라이즈 설정을 차례로 클릭합니다.

    GitHub Enterprise Server에서 프로필 사진 클릭할 때 나타나는 드롭다운 메뉴의 스크린샷 "엔터프라이즈 설정" 옵션이 진한 주황색 윤곽선으로 강조 표시됩니다.

  2. 페이지 왼쪽의 엔터프라이즈 계정 사이드바에서 설정을 클릭합니다.

  3. " 설정"에서 감사 로그를 클릭합니다.

  4. “감사 로그”에서 로그 스트리밍을 클릭합니다.

  5. 스트림 구성 드롭다운 메뉴를 선택하고 Amazon S3를 클릭합니다.

  6. 스트림 설정을 구성합니다.

    • “버킷”에서 스트리밍할 버킷의 이름을 입력합니다. 예들 들어 auditlog-streaming-test입니다.
    • “액세스 키 ID”에서 액세스 키 ID를 입력합니다. 예들 들어 ABCAIOSFODNN7EXAMPLE1입니다.
    • “비밀 키”에서 비밀 키를 입력합니다. 예들 들어 aBcJalrXUtnWXYZ/A1MDENG/zPxRfiCYEXAMPLEKEY입니다.
  7. GitHub가 Amazon S3 엔드포인트에 연결하고 쓸 수 있는지 확인하려면 엔드포인트 확인을 클릭합니다.

  8. 엔드포인트를 성공적으로 확인한 후 저장을 클릭합니다.

AWS CloudTrail Lake와 통합

AWS CloudTrail Lake와 S3에 스트리밍을 통합하여 감사 로그를 통합할 수 있습니다. AWS CloudTrail 설명서 또는 aws-samples/aws-cloudtrail-lake-github-audit-log 리포지토리의 CloudTrail Open Audit에 대한 GitHub 감사 로그를 참조하세요.

Azure Blob Storage로 스트리밍 설정

Note

Azure Government의 Blob Storage에 대한 감사 로그 스트리밍은 지원되지 않습니다.

GitHub에서 스트림을 설정하기 전에 먼저 Microsoft Azure에서 스토리지 계정과 컨테이너를 만듭니다. Microsoft 설명서의 "Azure Blob Storage 소개"를 참조하세요.

스트림을 구성하려면 SAS 토큰의 URL이 필요합니다.

Microsoft Azure Portal에서:

  1. 홈페이지에서 스토리지 계정을 클릭합니다.
  2. "이름"에서 사용하려는 스토리지 계정의 이름을 클릭합니다.
  3. "데이터 스토리지"에서 컨테이너를 클릭합니다.
  4. 사용하려는 컨테이너의 이름을 클릭합니다.
  5. 왼쪽 사이드바의 "설정"에서 공유 액세스 토큰을 클릭합니다.
  6. 사용 권한 드롭다운 메뉴를 선택한 다음, CreateWrite를 선택하고 다른 모든 옵션을 선택 취소합니다.
  7. 비밀 회전 정책을 준수하는 만료 날짜를 설정합니다.
  8. SAS 토큰 및 URL 생성을 클릭합니다.
  9. 표시된 Blob SAS URL 필드의 값을 복사합니다. 이 URL은 GitHub에서 사용합니다.

GitHub에서:

  1. GitHub Enterprise Server의 오른쪽 위 모서리에서 프로필 사진과 엔터프라이즈 설정을 차례로 클릭합니다.

    GitHub Enterprise Server에서 프로필 사진 클릭할 때 나타나는 드롭다운 메뉴의 스크린샷 "엔터프라이즈 설정" 옵션이 진한 주황색 윤곽선으로 강조 표시됩니다.

  2. 페이지 왼쪽의 엔터프라이즈 계정 사이드바에서 설정을 클릭합니다.

  3. " 설정"에서 감사 로그를 클릭합니다.

  4. “감사 로그”에서 로그 스트리밍을 클릭합니다.

  5. 스트림 구성 드롭다운 메뉴를 선택하고, Azure Blob Storage를 클릭합니다.

  6. 구성 페이지에서 Azure에 복사한 Blob SAS URL을 입력합니다. 컨테이너 필드는 URL에 따라 자동으로 채워집니다.

  7. 엔드포인트 확인을 클릭하여 GitHub에서 Azure Blob Storage 엔드포인트에 연결하고 쓸 수 있는지 확인합니다.

  8. 엔드포인트를 성공적으로 확인한 후 저장을 클릭합니다.

Azure Event Hubs로 스트리밍 설정

Note

Azure Government의 Event Hubs 인스턴스는 지원되지 않습니다.

GitHub에서 스트림을 설정하기 전에 다음 항목이 필요합니다.

Microsoft Azure Portal에서:

  1. 페이지 상단에서 검색 상자를 사용하여 "이벤트 허브"를 검색합니다.
  2. Event Hubs를 선택합니다. 이벤트 허브의 이름이 나열됩니다.
  3. 스트림하려는 이벤트 허브의 이름을 적어 둡니다. 이벤트 허브를 클릭합니다.
  4. 왼쪽 메뉴에서 공유 액세스 정책을 선택합니다.
  5. 정책 목록에서 공유 액세스 정책을 선택하거나 새 정책을 만듭니다.
  6. 연결 문자열 기본 키 필드에서 연결 문자열을 복사합니다.

GitHub에서:

  1. GitHub Enterprise Server의 오른쪽 위 모서리에서 프로필 사진과 엔터프라이즈 설정을 차례로 클릭합니다.

    GitHub Enterprise Server에서 프로필 사진 클릭할 때 나타나는 드롭다운 메뉴의 스크린샷 "엔터프라이즈 설정" 옵션이 진한 주황색 윤곽선으로 강조 표시됩니다.

  2. 페이지 왼쪽의 엔터프라이즈 계정 사이드바에서 설정을 클릭합니다.

  3. " 설정"에서 감사 로그를 클릭합니다.

  4. “감사 로그”에서 로그 스트리밍을 클릭합니다.

  5. 스트림 구성 드롭다운을 선택하고 Azure Event Hubs를 클릭합니다.

  6. 구성 페이지에서 다음을 입력합니다.

    • Azure Event Hubs 인스턴스의 이름
    • 연결 문자열입니다.
  7. 엔드포인트 확인을 클릭하여 GitHub에서 Azure Events Hub 엔드포인트에 연결하고 쓸 수 있는지 확인합니다.

  8. 엔드포인트를 성공적으로 확인한 후 저장을 클릭합니다.

Datadog로 스트리밍 설정

Datadog에 대한 스트리밍을 설정하려면 Datadog에서 클라이언트 토큰 또는 API 키를 만든 다음 인증을 위해 토큰을 사용하여 GitHub Enterprise Server에서 감사 로그 스트리밍을 구성합니다. Datadog에서 버킷 또는 다른 스토리지 컨테이너를 만들 필요가 없습니다.

Datadog에 대한 스트리밍을 설정한 후 “github.audit.streaming”으로 필터링하여 감사 로그 데이터를 볼 수 있습니다. 로그 관리를 참조하세요.

  1. Datadog 계정이 아직 없는 경우 하나 만듭니다.

  2. Datadog에서 클라이언트 토큰 또는 API 키를 생성한 다음 키 복사를 클릭합니다. Datadog Docs의 API 및 애플리케이션 키를 참조하세요.

  3. GitHub Enterprise Server의 오른쪽 위 모서리에서 프로필 사진과 엔터프라이즈 설정을 차례로 클릭합니다.

    GitHub Enterprise Server에서 프로필 사진 클릭할 때 나타나는 드롭다운 메뉴의 스크린샷 "엔터프라이즈 설정" 옵션이 진한 주황색 윤곽선으로 강조 표시됩니다.

  4. 페이지 왼쪽의 엔터프라이즈 계정 사이드바에서 설정을 클릭합니다.

  5. " 설정"에서 감사 로그를 클릭합니다.

  6. “감사 로그”에서 로그 스트리밍을 클릭합니다.

  7. 스트림 구성 드롭다운을 선택하고 Datadog를 클릭합니다.

  8. 토큰 필드에 이전에 복사한 토큰을 붙여 넣습니다.

  9. 사이트 드롭다운을 선택하고 Datadog 사이트를 클릭합니다. 사이트를 확인하려면 Datadog URL을 Datadog Docs의 Datadog 사이트 내 테이블과 비교합니다.

  10. GitHub가 Datadog 엔드포인트에 연결하고 쓸 수 있는지 확인하려면 엔드포인트 확인을 클릭합니다.

  11. 엔드포인트를 성공적으로 확인한 후 저장을 클릭합니다.

  12. 몇 분 후 Datadog의 로그 탭에 감사 로그 데이터가 표시되는지 확인합니다. 표시되지 않으면 GitHub에서 토큰 및 사이트가 올바른지 확인합니다.

Google Cloud Storage로 스트리밍 설정

Google Cloud Storage로 스트림하도록 설정하려면 적절한 자격 증명 및 권한을 사용하여 Google Cloud에서 서비스 계정을 만든 다음, 인증을 위해 서비스 계정의 자격 증명을 사용하여 GitHub Enterprise Server에서 감사 로그 스트리밍을 구성합니다.

  1. Google Cloud에 대한 서비스 계정을 만듭니다. 이 계정에 대한 액세스 제어 또는 IAM 역할을 설정할 필요가 없습니다. Google Cloud 설명서의 서비스 계정 만들기 및 관리를 참조하세요.

  2. 서비스 계정에 대한 JSON 키를 만들고, 해당 키를 안전하게 저장합니다. Google Cloud 설명서의 서비스 계정 키 만들기 및 관리를 참조하세요.

  3. 아직 버킷을 만들지 않은 경우 만듭니다. Google Cloud 설명서의 스토리지 버킷 만들기를 참조하세요.

  4. 버킷에 대한 스토리지 개체 작성자 역할을 서비스 계정에 부여합니다. Google Cloud 설명서의 Cloud IAM 권한 사용을 참조하세요.

  5. GitHub Enterprise Server의 오른쪽 위 모서리에서 프로필 사진과 엔터프라이즈 설정을 차례로 클릭합니다.

    GitHub Enterprise Server에서 프로필 사진 클릭할 때 나타나는 드롭다운 메뉴의 스크린샷 "엔터프라이즈 설정" 옵션이 진한 주황색 윤곽선으로 강조 표시됩니다.

  6. 페이지 왼쪽의 엔터프라이즈 계정 사이드바에서 설정을 클릭합니다.

  7. " 설정"에서 감사 로그를 클릭합니다.

  8. “감사 로그”에서 로그 스트리밍을 클릭합니다.

  9. 스트림 구성 드롭다운을 선택하고 Google Cloud Storage를 클릭합니다.

  10. "버킷" 아래에서 Google Cloud Storage 버킷의 이름을 입력합니다.

  11. "JSON 자격 증명" 아래에서 서비스 계정의 JSON 키 파일에 대한 전체 콘텐츠를 붙여넣습니다.

  12. GitHub에서 Google Cloud Storage 버킷에 연결하고 쓸 수 있는지 확인하려면 엔드포인트 확인을 클릭합니다.

  13. 엔드포인트를 성공적으로 확인한 후 저장을 클릭합니다.

Splunk로 스트리밍 설정

감사 로그를 Splunk의 HEC(HTTP 이벤트 수집기) 엔드포인트로 스트림하려면 엔드포인트가 HTTPS 연결을 허용하도록 구성되어 있는지 확인합니다. Splunk 설명서의 Splunk Web에서 HTTP 이벤트 수집기 설정 및 사용을 참조하세요.

Note

GitHub은(는) <Domain>:port/services/collector를 통해 HEC 엔드포인트를 확인합니다. 엔드포인트를 자체 호스트하는 경우(예: OpenTelemetry를 통한 Splunk HEC 수신기 사용) 이 대상에서 연결할 수 있는지 확인합니다.

  1. GitHub Enterprise Server의 오른쪽 위 모서리에서 프로필 사진과 엔터프라이즈 설정을 차례로 클릭합니다.

    GitHub Enterprise Server에서 프로필 사진 클릭할 때 나타나는 드롭다운 메뉴의 스크린샷 "엔터프라이즈 설정" 옵션이 진한 주황색 윤곽선으로 강조 표시됩니다.

  2. 페이지 왼쪽의 엔터프라이즈 계정 사이드바에서 설정을 클릭합니다.

  3. " 설정"에서 감사 로그를 클릭합니다.

  4. “감사 로그”에서 로그 스트리밍을 클릭합니다.

  5. 스트림 구성 드롭다운을 선택하고 Splunk를 클릭합니다.

  6. 구성 페이지에서 다음을 입력합니다.

    • 스트림하려는 애플리케이션이 호스트되는 도메인

      Splunk Cloud를 사용하는 경우 Domainhttp-inputs-<host>여야 합니다. 여기서 host는 Splunk Cloud에서 사용하는 도메인입니다. 예들 들어 http-inputs-mycompany.splunkcloud.com입니다.

      Splunk Cloud의 무료 평가판 버전을 사용하는 경우 Domaininputs.<host>여야 합니다. 여기서 host는 Splunk Cloud에서 사용하는 도메인입니다. 예들 들어 inputs.mycompany.splunkcloud.com입니다.

    • 애플리케이션에서 데이터를 허용하는 포트

      Splunk Cloud를 사용하는 경우 Port443이어야 합니다.

      Splunk Cloud 평가판 버전을 사용하는 경우 Port8088이어야 합니다.

    • GitHub에서 타사 애플리케이션에 인증하는 데 사용할 수 있는 토큰

  7. SSL 확인 사용 확인란을 선택된 상태로 둡니다.

    감사 로그는 항상 암호화된 데이터로 스트림되지만, 이 옵션을 선택하면 GitHub에서 이벤트를 전달할 때 Splunk 인스턴스의 SSL 인증서를 확인합니다. SSL 확인은 이벤트가 URL 엔드포인트에 안전하게 전달되도록 하는 데 도움이 됩니다. 확인은 선택 사항이지만 SSL 확인을 사용하도록 설정하는 것이 좋습니다.

  8. 엔드포인트 확인을 클릭하여 GitHub에서 Splunk 엔드포인트에 연결하고 쓸 수 있는지 확인합니다.

  9. 엔드포인트를 성공적으로 확인한 후 저장을 클릭합니다.

감사 로그 스트림 삭제

  1. GitHub Enterprise Server의 오른쪽 위 모서리에서 프로필 사진과 엔터프라이즈 설정을 차례로 클릭합니다.

    GitHub Enterprise Server에서 프로필 사진 클릭할 때 나타나는 드롭다운 메뉴의 스크린샷 "엔터프라이즈 설정" 옵션이 진한 주황색 윤곽선으로 강조 표시됩니다.

  2. 페이지 왼쪽의 엔터프라이즈 계정 사이드바에서 설정을 클릭합니다.

  3. " 설정"에서 감사 로그를 클릭합니다.

  4. “감사 로그”에서 로그 스트리밍을 클릭합니다.

  5. "위험 영역"에서 스트림 삭제를 클릭합니다.

  6. 확인 메시지가 표시됩니다. 스트림 삭제를 클릭하여 확인합니다.