인스턴스에 대한 감사 이벤트 스트리밍
GitLab v19.4Offering: GitLab Self-Managed, GitLab Dedicated
요약
인스턴스 감사 이벤트 스트리밍을 사용하면 관리자는 다음을 수행할 수 있습니다. 각 스트리밍 대상에는 스트리밍되는 이벤트마다 최대 20개의 사용자 지정 HTTP 헤더를 포함할 수 있습니다. GitLab은 같은 대상에 하나의 이벤트를 두 번 이상 스트리밍할 수 있습니다.
인스턴스 감사 이벤트 스트리밍을 사용하면 관리자는 다음을 수행할 수 있습니다.
- 인스턴스 전체에 스트리밍 대상을 설정해 해당 인스턴스의 모든 감사 이벤트를 구조화된 JSON으로 수신합니다.
- 서드파티 시스템에서 감사 로그를 관리합니다. 구조화된 JSON 데이터를 수신할 수 있는 서비스라면 무엇이든 스트리밍 대상으로 사용할 수 있습니다.
각 스트리밍 대상에는 스트리밍되는 이벤트마다 최대 20개의 사용자 지정 HTTP 헤더를 포함할 수 있습니다.
GitLab은 같은 대상에 하나의 이벤트를 두 번 이상 스트리밍할 수 있습니다. 수신 데이터를 중복 제거하려면 페이로드의
id 키를 사용합니다.
감사 이벤트는 HTTP가 지원하는 POST 요청 메서드 프로토콜로 전송됩니다.
스트리밍 대상은 민감한 정보가 포함될 수 있는 모든 감사 이벤트 데이터를 수신합니다. 스트리밍 대상을 신뢰할 수 있는지 확인합니다.
인스턴스 전체의 스트리밍 대상을 관리합니다.
HTTP 대상#
사전 요구 사항:
- 보안을 강화하려면 대상 URL에 SSL 인증서를 사용해야 합니다.
인스턴스 전체의 HTTP 스트리밍 대상을 관리합니다.
새 HTTP 대상 추가#
인스턴스에 새 HTTP 스트리밍 대상을 추가합니다.
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
인스턴스에 스트리밍 대상을 추가하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- Add streaming destination을 선택하고 HTTP endpoint를 선택해 대상 추가 섹션을 표시합니다.
- Name 및 Destination URL 필드에 대상 이름과 URL을 입력합니다.
- 선택 사항. 사용자 지정 HTTP 헤더를 추가하려면 Add header를 선택해 새 이름과 값 쌍을 만들고 값을 입력합니다. 필요한 이름과 값 쌍의 수만큼 이 단계를 반복합니다. 스트리밍 대상마다 최대 20개의 헤더를 추가할 수 있습니다.
- 헤더를 활성화하려면 Active 체크박스를 선택합니다. 해당 헤더는 감사 이벤트와 함께 전송됩니다.
- Add header를 선택해 새 이름과 값 쌍을 만듭니다. 필요한 이름과 값 쌍의 수만큼 이 단계를 반복합니다. 스트리밍 대상마다 최대 20개의 헤더를 추가할 수 있습니다.
- 모든 헤더를 입력한 다음 Add를 선택해 새 스트리밍 대상을 추가합니다.
HTTP 대상 업데이트#
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
인스턴스 스트리밍 대상의 이름을 업데이트하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- 확장할 스트림을 선택합니다.
- Name 필드에 업데이트할 대상 이름을 입력합니다.
- Save를 선택해 스트리밍 대상을 업데이트합니다.
인스턴스 스트리밍 대상의 사용자 지정 HTTP 헤더를 업데이트하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- 확장할 스트림을 선택합니다.
- Custom HTTP headers 표를 찾습니다.
- 업데이트할 헤더를 찾습니다.
- 헤더를 활성화하려면 Active 체크박스를 선택합니다. 해당 헤더는 감사 이벤트와 함께 전송됩니다.
- Add header를 선택해 새 이름과 값 쌍을 만듭니다. 필요한 만큼 이름과 값 쌍을 입력합니다. 스트리밍 대상마다 최대 20개의 헤더를 추가할 수 있습니다.
- Save를 선택해 스트리밍 대상을 업데이트합니다.
이벤트 진위 확인#
각 스트리밍 대상에는 이벤트의 진위를 확인하는 데 사용할 수 있는 고유한 확인 토큰(verificationToken)이 있습니다. 이
토큰은 Owner가 지정하거나 이벤트 대상을 생성할 때 자동으로 생성되며 변경할 수 없습니다.
스트리밍되는 각 이벤트는 X-Gitlab-Event-Streaming-Token HTTP 헤더에 확인 토큰을 포함하며, 스트리밍 대상을
나열할 때 대상의 값과 대조해 확인할 수 있습니다.
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
인스턴스의 스트리밍 대상을 나열하고 확인 토큰을 보는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- 각 항목의 오른쪽에서 확인 토큰을 확인합니다.
이벤트 필터 업데이트#
이 기능을 활성화하면 사용자가 대상별로 스트리밍되는 감사 이벤트를 필터링하도록 허용할 수 있습니다. 필터 없이 기능만 활성화하면 대상은 모든 감사 이벤트를 수신합니다.
이벤트 유형 필터가 설정된 스트리밍 대상에는 filtered([filter]) 레이블이 표시됩니다.
스트리밍 대상의 이벤트 필터를 업데이트하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- 확장할 스트림을 선택합니다.
- Filter by audit event type 드롭다운 목록을 찾습니다.
- 드롭다운 목록을 선택하고 필요한 이벤트 유형을 선택하거나 선택 해제합니다.
- Save를 선택해 이벤트 필터를 업데이트합니다.
기본 콘텐츠 유형 헤더 재정의#
기본적으로 스트리밍 대상은 content-type 헤더로 application/x-www-form-urlencoded를 사용합니다. 다만
content-type 헤더를 다른 값으로 설정해야 할 수 있습니다. 예를 들면 application/json 입니다.
인스턴스 스트리밍 대상의 content-type 헤더 기본값을 재정의하려면 다음 중 하나를 사용합니다.
Google Cloud Logging 대상#
인스턴스 전체의 Google Cloud Logging 대상을 관리합니다.
사전 요구 사항#
Google Cloud Logging 감사 이벤트 스트리밍을 설정하기 전에 다음을 수행해야 합니다.
- Google Cloud 프로젝트에서 Cloud Logging API를 활성화합니다.
- 적절한 자격 증명과 권한을 가진 Google Cloud 서비스 계정을 만듭니다. 이 계정은 감사 로그 스트리밍 인증을 구성하는 데 사용됩니다. 자세한 내용은 Google Cloud 문서의 서비스 계정 생성 및 관리를 참고합니다.
- Google Cloud에서 로깅을 사용하도록 서비스 계정에 Logs Writer 역할을 활성화합니다. 자세한 내용은 IAM을 사용한 액세스 제어를 참고합니다.
- 서비스 계정의 JSON 키를 만듭니다. 자세한 내용은 서비스 계정 키 생성을 참고합니다.
새 Google Cloud Logging 대상 추가#
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
인스턴스에 Google Cloud Logging 스트리밍 대상을 추가하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- Add streaming destination을 선택하고 Google Cloud Logging을 선택해 대상 추가 섹션을 표시합니다.
- 새 대상의 이름으로 사용할 임의 문자열을 입력합니다.
- 앞서 만든 Google Cloud 서비스 계정 키의 Google 프로젝트 ID와 Google 클라이언트 이메일을 입력합니다.
- 앞서 만든 Google Cloud 서비스 계정 키의 Google 비공개 키를 입력합니다.
비공개 키는 PEM 형식이어야 하며
-----BEGIN PRIVATE KEY-----로 시작합니다. JSON 키 전체를 업로드하지 않습니다. - 새 대상의 로그 ID로 사용할 임의 문자열을 입력합니다. 이후 Google Cloud에서 로그 결과를 필터링할 때 사용할 수 있습니다.
- Add를 선택해 새 스트리밍 대상을 추가합니다.
Google Cloud Logging 대상 업데이트#
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
인스턴스의 Google Cloud Logging 스트리밍 대상을 업데이트하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- 확장할 Google Cloud Logging 스트림을 선택합니다.
- 대상의 이름으로 사용할 임의 문자열을 입력합니다.
- 대상을 업데이트하려면 앞서 만든 Google Cloud 서비스 계정 키의 Google 프로젝트 ID와 Google 클라이언트 이메일을 입력합니다.
- 대상의 로그 ID를 업데이트할 임의 문자열을 입력합니다. 이후 Google Cloud에서 로그 결과를 필터링할 때 사용할 수 있습니다.
- 비공개 키를 업데이트하려면 Add a new private key를 선택하고 Google 비공개 키를 입력합니다.
- Save를 선택해 스트리밍 대상을 업데이트합니다.
AWS S3 대상#
인스턴스 전체의 AWS S3 대상을 관리합니다.
사전 요구 사항#
AWS S3 감사 이벤트 스트리밍을 설정하기 전에 다음을 수행해야 합니다.
- 적절한 자격 증명과 권한을 가진 AWS 액세스 키를 만듭니다. 이 계정은 감사 로그 스트리밍 인증을 구성하는 데 사용됩니다. 자세한 내용은 액세스 키 관리를 참고합니다.
- AWS S3 버킷을 만듭니다. 이 버킷은 감사 로그 스트리밍 데이터를 저장하는 데 사용됩니다. 자세한 내용은 버킷 생성을 참고합니다.
새 AWS S3 대상 추가#
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
인스턴스에 AWS S3 스트리밍 대상을 추가하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- Add streaming destination을 선택하고 AWS S3를 선택해 대상 추가 섹션을 표시합니다.
- 새 대상의 이름으로 사용할 임의 문자열을 입력합니다.
- 앞서 만든 AWS 액세스 키와 버킷의 Access Key ID, Secret Access Key, Bucket Name, AWS Region을 입력해 새 대상에 추가합니다.
- Add를 선택해 새 스트리밍 대상을 추가합니다.
AWS S3 대상 업데이트#
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
인스턴스의 AWS S3 스트리밍 대상을 업데이트하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- 확장할 AWS S3 스트림을 선택합니다.
- 대상의 이름으로 사용할 임의 문자열을 입력합니다.
- 대상을 업데이트하려면 앞서 만든 AWS 액세스 키와 버킷의 Access Key ID, Secret Access Key, Bucket Name, AWS Region을 입력합니다.
- Secret Access Key를 업데이트하려면 Add a new Secret Access Key를 선택하고 AWS Secret Access Key를 입력합니다.
- Save를 선택합니다.
스트리밍 대상 나열#
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
인스턴스의 스트리밍 대상을 나열하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- 확장할 스트림을 선택합니다.
스트리밍 대상 활성화 또는 비활성화#
히스토리
- GitLab 18.2에서 도입되었습니다.
대상 구성을 삭제하지 않고 해당 대상으로의 감사 이벤트 스트리밍을 일시적으로 비활성화할 수 있습니다. 스트리밍 대상을 비활성화하면 다음과 같이 동작합니다.
- 해당 대상으로의 감사 이벤트 스트리밍이 즉시 중단됩니다.
- 대상 구성은 그대로 유지됩니다.
- 언제든지 대상을 다시 활성화할 수 있습니다.
- 활성 상태인 다른 대상은 계속 이벤트를 수신합니다.
스트리밍 대상 비활성화#
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
스트리밍 대상을 비활성화하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- 확장할 스트림을 선택합니다.
- Active 체크박스를 선택 해제합니다.
- Save를 선택합니다.
해당 대상은 감사 이벤트 수신을 중단합니다.
스트리밍 대상 활성화#
이전에 비활성화한 스트리밍 대상을 다시 활성화하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- 확장할 스트림을 선택합니다.
- Active 체크박스를 선택합니다.
- Save를 선택합니다.
해당 대상은 즉시 감사 이벤트 수신을 재개합니다.
AI 감사 이벤트 스트리밍#
히스토리
- GitLab 19.1에서 베타로 도입되었습니다.
AI 감사 이벤트 스트리밍을 활성화하면 인스턴스 성능에 영향을 줄 수 있습니다. 인스턴스의 부하를 평가한 뒤에 이 설정을 활성화합니다.
GitLab Duo Agent Platform은 다음과 같은 활동에 대해 AI 감사 이벤트를 기록합니다.
- 에이전트 세션.
- LLM 요청.
- 도구 호출.
- 사용자 입력.
GitLab은 이 이벤트를 항상 데이터베이스에 저장합니다.
또한 별도의 설정으로 GitLab 이 AI 감사 이벤트를 외부 대상으로 스트리밍할지 여부를 제어할 수 있습니다. 이 설정은 기본적으로 꺼져 있습니다.
AI 감사 이벤트 스트리밍의 상태에 따라 동작은 다음과 같습니다.
- 켜져 있으면 GitLab은 활성 상태인 모든 인스턴스 스트리밍 대상으로 AI 감사 이벤트를 스트리밍합니다. 이벤트 유형 필터, 사용자 지정 HTTP 헤더, 확인 토큰은 다른 감사 이벤트와 동일한 방식으로 AI 감사 이벤트에도 적용됩니다.
- 꺼져 있으면 GitLab은 AI 감사 이벤트를 데이터베이스에 계속 저장하지만 외부 대상으로는 전송하지 않습니다. 다른 감사 이벤트 유형은 각 대상의 구성에 따라 계속 스트리밍됩니다.
AI 감사 이벤트 스트리밍 켜기#
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
AI 감사 이벤트 스트리밍을 켜는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 GitLab Duo를 선택합니다.
- Change configuration을 선택합니다.
- Enable AI audit event streaming 체크박스를 선택합니다.
- Save changes를 선택합니다.
AI 감사 이벤트 스트리밍 끄기#
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
AI 감사 이벤트 스트리밍을 끄는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 GitLab Duo를 선택합니다.
- Change configuration을 선택합니다.
- Enable AI audit event streaming 체크박스를 선택 해제합니다.
- Save changes를 선택합니다.
AI 감사 이벤트 스트리밍이 즉시 중단됩니다. GitLab은 이 이벤트를 계속 데이터베이스에 저장합니다.
스트리밍 대상 삭제#
인스턴스 전체의 스트리밍 대상을 삭제합니다. 마지막 대상이 삭제되면 해당 인스턴스의 스트리밍이 비활성화됩니다.
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
인스턴스의 스트리밍 대상을 삭제하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- 확장할 스트림을 선택합니다.
- Delete destination을 선택합니다.
- 확인하려면 Delete destination을 선택합니다.
사용자 지정 HTTP 헤더만 삭제#
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한.
스트리밍 대상의 사용자 지정 HTTP 헤더만 삭제하는 방법은 다음과 같습니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Monitoring > Audit events를 선택합니다.
- 기본 영역에서 Streams 탭을 선택합니다.
- 항목 오른쪽에서 Edit(✏️)를 선택합니다.
- Custom HTTP headers 표를 찾습니다.
- 제거할 헤더를 찾습니다.
- 헤더 오른쪽에서 Delete([remove])를 선택합니다.
- Save를 선택합니다.