Audit 이벤트 스트리밍 GraphQL API
- GitLab 15.1에 소개된 사용자 지정 HTTP 헤더 API, 기본으로 비활성화된
 streaming_audit_event_headers플래그와 함께.- GitLab 15.2에서 GitLab.com 및 자체 호스팅을 통해 활성화된 사용자 지정 HTTP 헤더 API.
 - GitLab 15.3에서 일반적으로 사용 가능하게 된 사용자 지정 HTTP 헤더 API. 피처 플래그
 streaming_audit_event_headers제거.- GitLab 15.4에서 사용자 지정 검증 토큰 API 지원 소개됨.
 - GitLab 16.1에서 인스턴스 레벨 스트리밍 대상을 위한 사용자 지정 HTTP 헤더용 API가 도입됨, 기본으로 비활성화된
 ff_external_audit_events플래그와 함께.- GitLab 16.2에서 기본으로 활성화된
 ff_external_audit_events피처 플래그.- GitLab 16.2에서 사용자 지정 대상 이름 API 지원 소개됨.
 - GitLab 16.4에서 API 피처 플래그
 ff_external_audit_events제거됨.
Audit 이벤트 스트리밍 대상은 GraphQL API를 사용하여 유지할 수 있습니다.
최상위 그룹 스트리밍 대상
최상위 그룹의 스트리밍 대상을 관리합니다.
HTTP 대상
최상위 그룹의 HTTP 스트리밍 대상을 관리합니다.
새 스트리밍 대상 추가
최상위 그룹에 새로운 스트리밍 대상을 추가합니다.
필수 조건:
- 최상위 그룹에 대한 소유자 역할.
 
스트리밍을 활성화하고 최상위 그룹에 대상을 추가하려면 externalAuditEventDestinationCreate 뮤테이션을 사용하세요.
mutation {
  externalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest", groupPath: "my-group" } ) {
    errors
    externalAuditEventDestination {
      id
      name
      destinationUrl
      verificationToken
      group {
        name
      }
    }
  }
}
기본적으로 GitLab에서 생성된 대신 별도의 검증 토큰을 지정할 수 있습니다. 길이는 16에서 24자여야 하며, 끝의 공백은 자동으로 제거되지 않습니다. 암호학적으로 무작위이고 고유한 값을 설정해야 합니다. 예:
mutation {
  externalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest", groupPath: "my-group", verificationToken: "여기에 고유한 무작위 검증 토큰 입력" } ) {
    errors
    externalAuditEventDestination {
      id
      name
      destinationUrl
      verificationToken
      group {
        name
      }
    }
  }
}
기본으로 GitLab에서 생성된 대신 별도의 대상 이름을 지정할 수 있습니다. 이름 길이는 72자를 초과할 수 없으며, 끝의 공백은 자동으로 제거되지 않습니다. 이 값은 그룹을 기준으로 해야 합니다. 예:
mutation {
  externalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest", name: "여기에 대상 이름 입력", groupPath: "my-group" }) {
    errors
    externalAuditEventDestination {
      id
      name
      destinationUrl
      verificationToken
      group {
        name
      }
    }
  }
}
다음이 되면 이벤트 스트리밍이 활성화됩니다:
- 반환된 
errors객체가 비어 있음. - API가 
200 OK로 응답함. 
GraphQL auditEventsStreamingHeadersCreate 뮤테이션을 사용하여 HTTP 헤더를 추가할 수 있습니다. 그룹에 대한 모든 스트리밍 대상을 나열하거나 위의 뮤테이션에서 대상 ID를 검색할 수 있습니다.
mutation {
  auditEventsStreamingHeadersCreate(input: {
    destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
     key: "foo",
     value: "bar",
     active: false
  }) {
    errors
    header {
      id
      key
      value
      active
    }
  }
}
반환된 errors 객체가 비어 있으면 헤더가 생성됩니다.
스트리밍 대상 디렉터리
최상위 그룹의 스트리밍 대상 디렉터리을 나열합니다.
필수 조건:
- 최상위 그룹에 대한 소유자 역할.
 
externalAuditEventDestinations 쿼리 유형을 사용하여 최상위 그룹의 스트리밍 대상 디렉터리을 볼 수 있습니다.
query {
  group(fullPath: "my-group") {
    id
    externalAuditEventDestinations {
      nodes {
        destinationUrl
        verificationToken
        id
        name
        headers {
          nodes {
            key
            value
            id
            active
          }
        }
        eventTypeFilters
        namespaceFilter {
          id
          namespace {
            id
            name
            fullName
          }
        }
      }
    }
  }
}
결과 디렉터리이 비어 있다면 해당 그룹에 대해 감사 스트리밍이 비활성화되어 있습니다.
스트리밍 대상 업데이트
최상위 그룹의 스트리밍 대상을 업데이트합니다.
필수 조건:
- 최상위 그룹에 대한 소유자 역할.
 
그룹의 스트리밍 대상을 업데이트하려면 externalAuditEventDestinationUpdate 뮤테이션 유형을 사용하세요. 그룹에 대한 모든 스트리밍 대상을 나열하거나 위의 뮤테이션에서 대상 ID를 검색할 수 있습니다.
mutation {
  externalAuditEventDestinationUpdate(input: {
    id:"gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
    destinationUrl: "https://www.new-domain.com/webhook",
    name: "대상 이름"} ) {
    errors
    externalAuditEventDestination {
      id
      name
      destinationUrl
      verificationToken
      group {
        name
      }
    }
  }
}
다음이 되면 스트리밍 대상이 업데이트됩니다:
- 반환된 
errors객체가 비어 있음. - API가 
200 OK로 응답함. 
그룹 소유자는 auditEventsStreamingHeadersUpdate 뮤테이션 유형을 사용하여 스트리밍 대상의 사용자 지정 HTTP 헤더를 업데이트할 수 있습니다. 그룹에 대한 모든 사용자 지정 HTTP 헤더를 나열하거나 위의 뮤테이션에서 사용자 지정 HTTP 헤더 ID를 검색할 수 있습니다.
mutation {
  auditEventsStreamingHeadersUpdate(input: { headerId: "gid://gitlab/AuditEvents::Streaming::Header/2", key: "새로운 키", value: "새로운 값", active: false }) {
    errors
    header {
      id
      key
      value
      active
    }
  }
}
그룹 소유자는 auditEventsStreamingHeadersDestroy GraphQL 뮤테이션을 사용하여 HTTP 헤더를 제거할 수 있습니다. 그룹에 대한 모든 사용자 지정 HTTP 헤더를 나열하거나 위의 뮤테이션에서 헤더 ID를 검색할 수 있습니다.
mutation {
  auditEventsStreamingHeadersDestroy(input: { headerId: "gid://gitlab/AuditEvents::Streaming::Header/1" }) {
    errors
  }
}
반환된 errors 객체가 비어 있으면 헤더가 제거됩니다.
스트리밍 대상 삭제
최상위 그룹의 스트리밍 대상을 삭제합니다.
마지막 대상이 성공적으로 삭제되면 해당 그룹의 스트리밍이 비활성화됩니다.
필수 조건:
- 최상위 그룹에 대한 소유자 역할.
 
그룹 소유자는 externalAuditEventDestinationDestroy 뮤테이션 유형을 사용하여 스트리밍 대상을 삭제할 수 있습니다. 그룹에 대한 모든 스트리밍 대상을 나열하거나 위의 뮤테이션에서 대상 ID를 검색할 수 있습니다.
mutation {
  externalAuditEventDestinationDestroy(input: { id: 대상 }) {
    errors
  }
}
다음이 되면 스트리밍 대상이 삭제됩니다:
- 반환된 
errors객체가 비어 있음. - API가 
200 OK로 응답함. 
그룹 소유자는 auditEventsStreamingHeadersDestroy GraphQL 뮤테이션을 사용하여 HTTP 헤더를 제거할 수 있습니다. 그룹에 대한 모든 사용자 지정 HTTP 헤더를 나열하거나 위의 뮤테이션에서 헤더 ID를 검색할 수 있습니다.
mutation {
  auditEventsStreamingHeadersDestroy(input: { headerId: "gid://gitlab/AuditEvents::Streaming::Header/1" }) {
    errors
  }
}
반환된 errors 객체가 비어 있으면 헤더가 제거됩니다.
이벤트 유형 필터
- 이벤트 유형 필터 API는 GitLab 15.7에서 소개되었습니다.
 
이 기능이 그룹에 대해 활성화되면 API를 사용하여 사용자가 스트리밍된 감사 이벤트를 대상별로 필터링할 수 있습니다. 필터 없이 활성화된 경우 대상은 모든 감사 이벤트를 수신합니다.
이벤트 유형 필터가 설정된 스트리밍 대상은 filtered () 라벨이 표시됩니다.
API를 사용하여 이벤트 유형 필터 추가
요구 사항:
- 그룹에 대해 소유자 역할이 있어야 합니다.
 
auditEventsStreamingDestinationEventsAdd 쿼리 유형을 사용하여 이벤트 유형 필터 디렉터리을 추가할 수 있습니다:
mutation {
  auditEventsStreamingDestinationEventsAdd(input: {
    destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
    eventTypeFilters: ["이벤트 유형 필터 디렉터리"]
  }) {
    errors
    eventTypeFilters
  }
}
이벤트 유형 필터가 추가되는 조건:
- 반환된 
errors객체가 비어 있어야 합니다. - API가 
200 OK로 응답해야 합니다. 
API를 사용하여 이벤트 유형 필터 제거
요구 사항:
- 그룹에 대해 소유자 역할이 있어야 합니다.
 
auditEventsStreamingDestinationEventsRemove 뮤테이션 유형을 사용하여 이벤트 유형 필터 디렉터리을 제거할 수 있습니다:
mutation {
  auditEventsStreamingDestinationEventsRemove(input: {
    destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
    eventTypeFilters: ["이벤트 유형 필터 디렉터리"]
  }) {
    errors
  }
}
이벤트 유형 필터가 제거되는 조건:
- 반환된 
errors객체가 비어 있어야 합니다. - API가 
200 OK로 응답해야 합니다. 
네임스페이스 필터
- 네임스페이스 필터 API는 GitLab 16.7에서 소개되었습니다.
 
그룹에 네임스페이스 필터를 적용하면 사용자가 그룹의 특정 하위 그룹 또는 프로젝트에 대해 대상별로 스트리밍된 감사 이벤트를 필터링할 수 있습니다. 그렇지 않으면 대상은 모든 감사 이벤트를 수신합니다.
네임스페이스 필터가 설정된 스트리밍 대상은 filtered () 라벨이 표시됩니다.
API를 사용하여 네임스페이스 필터 추가
요구 사항:
- 그룹에 대해 소유자 역할이 있어야 합니다.
 
네임스페이스 필터를 추가하려면 auditEventsStreamingHttpNamespaceFiltersAdd 뮤테이션 유형을 사용하여 하위 그룹과 프로젝트 모두에 대해 네임스페이스 필터를 추가할 수 있습니다.
네임스페이스 필터가 추가되는 조건:
- API가 빈 
errors객체를 반환해야 합니다. - API가 
200 OK로 응답해야 합니다. 
하위 그룹을 위한 뮤테이션
mutation auditEventsStreamingHttpNamespaceFiltersAdd {
  auditEventsStreamingHttpNamespaceFiltersAdd(input: {
    destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
    groupPath: "하위 그룹 경로"
  }) {
    errors
    namespaceFilter {
      id
      namespace {
        id
        name
        fullName
      }
    }
  }
}
프로젝트를 위한 뮤테이션
mutation auditEventsStreamingHttpNamespaceFiltersAdd {
  auditEventsStreamingHttpNamespaceFiltersAdd(input: {
    destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
    projectPath: "프로젝트 경로"
  }) {
    errors
    namespaceFilter {
      id
      namespace {
        id
        name
        fullName
      }
    }
  }
}
API를 사용하여 네임스페이스 필터 제거
요구 사항:
- 그룹에 대해 소유자 역할이 있어야 합니다.
 
네임스페이스 필터를 제거하려면 auditEventsStreamingHttpNamespaceFiltersDelete 뮤테이션 유형을 사용할 수 있습니다:
mutation auditEventsStreamingHttpNamespaceFiltersDelete {
  auditEventsStreamingHttpNamespaceFiltersDelete(input: {
    namespaceFilterId: "gid://gitlab/AuditEvents::Streaming::HTTP::NamespaceFilter/5"
  }) {
    errors
  }
}
네임스페이스 필터가 제거되는 조건:
- 반환된 
errors객체가 비어 있어야 합니다. - API가 
200 OK로 응답해야 합니다. 
Google Cloud Logging 대상
- GitLab 16.1에서 소개되었습니다.
 
최상위 그룹에 대한 Google Cloud Logging 대상을 관리합니다.
Google Cloud Logging 스트리밍 감사 이벤트를 설정하기 전에 필수 사항을 충족해야 합니다.
새 Google Cloud Logging 대상 추가
최상위 그룹에 새 Google Cloud Logging 구성 대상을 추가합니다.
요구 사항:
- 최상위 그룹에 대해 소유자 역할이 있어야 합니다.
 - Google Cloud 프로젝트에서 서비스 계정을 만들고 Google Cloud Logging을 활성화하기 위한 필요한 권한이 있어야 합니다.
 
스트리밍을 활성화하고 구성을 추가하려면 GraphQL API에서 googleCloudLoggingConfigurationCreate 뮤테이션을 사용합니다.
mutation {
  googleCloudLoggingConfigurationCreate(input: { groupPath: "내그룹", googleProjectIdName: "내_google_프로젝트", clientEmail: "내_이메일@내_google_project.iam.gservice.account.com", privateKey: "당신의_비공개_키", logIdName: "감사_이벤트", name: "대상_이름" } ) {
    errors
    googleCloudLoggingConfiguration {
      id
      googleProjectIdName
      logIdName
      clientEmail
      name
    }
    errors
  }
}
이벤트 스트리밍이 활성화되는 조건:
- 반환된 
errors객체가 비어 있어야 합니다. - API가 
200 OK로 응답해야 합니다. 
Google Cloud Logging 구성 디렉터리
최상위 그룹에 대한 모든 Google Cloud Logging 구성 대상을 나열합니다.
요구 사항:
- 최상위 그룹에 대해 소유자 역할이 있어야 합니다.
 
최상위 그룹에 대한 모든 스트리밍 구성을 보려면 googleCloudLoggingConfigurations 쿼리 유형을 사용할 수 있습니다.
query {
  group(fullPath: "내그룹") {
    id
    googleCloudLoggingConfigurations {
      nodes {
        id
        logIdName
        googleProjectIdName
        clientEmail
        name
      }
    }
  }
}
결과 디렉터리이 비어 있는 경우 그룹에 대해 감사 스트리밍이 활성화되지 않았습니다.
이 쿼리가 반환하는 ID 값을 업데이트 및 삭제 뮤테이션에 사용해야 합니다.
Google Cloud Logging 구성 업데이트
최상위 그룹에 대한 Google Cloud Logging 구성 대상을 업데이트합니다.
요구 사항:
- 최상위 그룹에 대해 소유자 역할이 있어야 합니다.
 
최상위 그룹의 스트리밍 구성을 업데이트하려면 googleCloudLoggingConfigurationUpdate 뮤테이션 유형을 사용합니다. 구성 ID를 검색하려면 모든 외부 대상을 나열할 수 있습니다.
mutation {
  googleCloudLoggingConfigurationUpdate(
    input: {id: "gid://gitlab/AuditEvents::GoogleCloudLoggingConfiguration/1", googleProjectIdName: "내_google_프로젝트", clientEmail: "내_이메일@내_google_project.iam.gservice.account.com", privateKey: "당신의_비공개_키", logIdName: "감사_이벤트", name: "업데이트된_대상_이름" }
  ) {
    errors
    googleCloudLoggingConfiguration {
      id
      logIdName
      googleProjectIdName
      clientEmail
      name
    }
  }
}
스트리밍 구성이 업데이트되는 조건:
- 반환된 
errors객체가 비어 있어야 합니다. - API가 
200 OK로 응답해야 합니다. 
Google Cloud Logging 구성 삭제
최상위 그룹에 대한 스트리밍 대상을 삭제합니다.
마지막 대상이 성공적으로 삭제되면 그룹의 스트리밍이 비활성화됩니다.
요구 사항:
- 최상위 그룹에 대해 소유자 역할이 있어야 합니다.
 
그룹의 소유자 역할을 가진 사용자는 googleCloudLoggingConfigurationDestroy 뮤테이션 유형을 사용하여 스트리밍 구성을 삭제할 수 있습니다. 그룹에 대한 스트리밍 대상을 나열하여 구성 ID 값을 검색해야 합니다.
mutation {
  googleCloudLoggingConfigurationDestroy(input: { id: "gid://gitlab/AuditEvents::GoogleCloudLoggingConfiguration/1" }) {
    errors
  }
}
스트리밍 구성이 삭제되는 조건:
- 반환된 
errors객체가 비어 있어야 합니다. - API가 
200 OK로 응답해야 합니다. 
인스턴스 스트리밍 대상
- GitLab 16.0에서 도입되었습니다. 기본으로 비활성화된
 ff_external_audit_events라는 플래그로 함께 도입됩니다.- 피처 플래그
 ff_external_audit_events은 GitLab 16.2에서 기본으로 활성화됩니다.- 인스턴스 스트리밍 대상은 GitLab 16.4에서 일반적으로 사용 가능해집니다. 피처 플래그
 ff_external_audit_events가 제거되었습니다.
전체 인스턴스의 스트리밍 대상을 관리합니다.
HTTP 대상
전체 인스턴스의 HTTP 스트리밍 대상을 관리합니다.
새 HTTP 대상 추가
인스턴스에 새 HTTP 스트리밍 대상을 추가합니다.
필수 조건:
- 인스턴스에서의 관리자 액세스.
 
스트리밍을 활성화하고 대상을 추가하려면 GraphQL API에서 instanceExternalAuditEventDestinationCreate 뮤테이션을 사용하세요.
mutation {
  instanceExternalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest"}) {
    errors
    instanceExternalAuditEventDestination {
      destinationUrl
      id
      name
      verificationToken
    }
  }
}
이벤트 스트리밍이 활성화되었을 때:
- 반환된 
errors개체가 비어 있습니다. - API가 
200 OK로 응답합니다. 
GraphQL instanceExternalAuditEventDestinationCreate 뮤테이션을 사용하여 고유한 대상 이름(기본 GitLab에서 생성된 이름 대신)을 지정할 수 있습니다. 이름 길이는 72자를 초과하지 않아야 하며 후행 공백은 제거되지 않습니다. 이 값은 고유해야 합니다. 예:
mutation {
  instanceExternalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest", name: "여기에 대상 이름 입력"}) {
    errors
    instanceExternalAuditEventDestination {
      destinationUrl
      id
      name
      verificationToken
    }
  }
}
인스턴스 관리자는 GraphQL auditEventsStreamingInstanceHeadersCreate 뮤테이션을 사용하여 HTTP 헤더를 추가할 수 있습니다. 대상 ID는 인스턴스에 대한 모든 스트리밍 대상을 나열하거나 위의 뮤테이션에서 가져올 수 있습니다.
mutation {
  auditEventsStreamingInstanceHeadersCreate(input:
    {
      destinationId: "gitlab/AuditEvents::InstanceExternalAuditEventDestination/42",
      key: "foo",
      value: "bar",
      active: true
    }) {
    errors
    header {
      id
      key
      value
      active
    }
  }
}
반환된 errors 개체가 비어 있으면 헤더가 생성됩니다.
스트리밍 대상 디렉터리
인스턴스의 모든 HTTP 스트리밍 대상을 나열합니다.
필수 조건:
- 인스턴스에서의 관리자 액세스.
 
인스턴스의 스트리밍 대상 디렉터리을 보려면 instanceExternalAuditEventDestinations 쿼리 유형을 사용하세요.
query {
  instanceExternalAuditEventDestinations {
    nodes {
      id
      name
      destinationUrl
      verificationToken
      headers {
        nodes {
          id
          key
          value
          active
        }
      }
      eventTypeFilters
    }
  }
}
결과 디렉터리이 비어 있으면 인스턴스에 대해 감사 스트리밍이 활성화되지 않습니다.
이 쿼리로 반환된 ID 값을 업데이트 및 삭제 뮤테이션에 사용하세요.
스트리밍 대상 업데이트
인스턴스의 HTTP 스트리밍 대상을 업데이트합니다.
필수 조건:
- 인스턴스에서의 관리자 액세스.
 
인스턴스의 스트리밍 대상을 업데이트하려면 instanceExternalAuditEventDestinationUpdate 뮤테이션 유형을 사용하세요. 대상 ID는 인스턴스에 대한 모든 외부 대상을 나열하거나 위의 뮤테이션에서 가져올 수 있습니다.
mutation {
  instanceExternalAuditEventDestinationUpdate(input: {
    id: "gitlab/AuditEvents::InstanceExternalAuditEventDestination/1",
    destinationUrl: "https://www.new-domain.com/webhook",
    name: "대상 이름"}) {
    errors
    instanceExternalAuditEventDestination {
      destinationUrl
      id
      name
      verificationToken
    }
  }
}
스트리밍 대상이 업데이트되었을 때:
- 반환된 
errors개체가 비어 있습니다. - API가 
200 OK로 응답합니다. 
인스턴스 관리자는 auditEventsStreamingInstanceHeadersUpdate 뮤테이션 유형을 사용하여 커스텀 HTTP 헤더를 업데이트할 수 있습니다. 커스텀 HTTP 헤더 ID는 인스턴스에 대한 모든 커스텀 HTTP 헤더를 나열하거나 위의 뮤테이션에서 가져올 수 있습니다.
mutation {
  auditEventsStreamingInstanceHeadersUpdate(input: { headerId: "gitlab/AuditEvents::Streaming::InstanceHeader/2", key: "new-key", value: "new-value", active: false }) {
    errors
    header {
      id
      key
      value
      active
    }
  }
}
반환된 errors 개체가 비어 있으면 헤더가 업데이트됩니다.
스트리밍 대상 삭제
전체 인스턴스의 스트리밍 대상을 삭제합니다.
마지막 대상이 성공적으로 삭제되면 인스턴스의 스트리밍이 비활성화됩니다.
필수 조건:
- 인스턴스에서의 관리자 액세스.
 
스트리밍 대상을 삭제하려면 instanceExternalAuditEventDestinationDestroy 뮤테이션 유형을 사용하세요. 대상 ID는 인스턴스에 대한 모든 스트리밍 대상을 나열하거나 위의 뮤테이션에서 가져올 수 있습니다.
mutation {
  instanceExternalAuditEventDestinationDestroy(input: { id: "gitlab/AuditEvents::InstanceExternalAuditEventDestination/1" }) {
    errors
  }
}
스트리밍 대상이 삭제되었을 때:
- 반환된 
errors개체가 비어 있습니다. - API가 
200 OK로 응답합니다. 
HTTP 헤더를 제거하려면 GraphQL auditEventsStreamingInstanceHeadersDestroy 뮤테이션을 사용하세요.
헤더 ID를 가져오려면 인스턴스에 대한 모든 커스텀 HTTP 헤더를 나열하십시오.
mutation {
  auditEventsStreamingInstanceHeadersDestroy(input: { headerId: "gitlab/AuditEvents::Streaming::InstanceHeader/<id>" }) {
    errors
  }
}
반환된 errors 개체가 비어 있으면 헤더가 삭제됩니다.
이벤트 유형 필터
- 이 이벤트 유형 필터 API는 GitLab 16.2에서 도입되었습니다.
 
이 기능이 인스턴스에 대해 활성화되면 API를 사용하여 사용자가 대상별로 스트리밍 감사 이벤트를 필터링할 수 있습니다. 필터를 사용하지 않고 기능을 활성화할 경우 대상은 모든 감사 이벤트를 수신합니다.
이벤트 유형 필터가 설정된 스트리밍 대상에는 filtered () 레이블이 있습니다.
API를 사용하여 이벤트 유형 필터 추가
필수 조건:
- 인스턴스에 대한 관리자 액세스해야 합니다.
 
auditEventsStreamingDestinationInstanceEventsAdd 뮤테이션을 사용하여 이벤트 유형 필터 디렉터리을 추가할 수 있습니다.
mutation {
    auditEventsStreamingDestinationInstanceEventsAdd(input: {
        destinationId: "gitlab/AuditEvents::InstanceExternalAuditEventDestination/1",
        eventTypeFilters: ["이벤트 유형 필터 디렉터리"]}){
        errors
        eventTypeFilters
    }
}
이벤트 유형 필터가 추가되었을 때:
- 반환된 
errors개체가 비어 있습니다. - API가 
200 OK로 응답합니다. 
API를 사용하여 이벤트 유형 필터 제거
필수 조건:
- 인스턴스에 대한 관리자 액세스해야 합니다.
 
auditEventsStreamingDestinationInstanceEventsRemove 뮤테이션을 사용하여 이벤트 유형 필터 디렉터리을 제거할 수 있습니다.
mutation {
    auditEventsStreamingDestinationInstanceEventsRemove(input: {
    destinationId: "gitlab/AuditEvents::InstanceExternalAuditEventDestination/1",
    eventTypeFilters: ["이벤트 유형 필터 디렉터리"]
  }){
    errors
  }
}
이벤트 유형 필터가 제거되었을 때:
- 반환된 
errors개체가 비어 있습니다. - API가 
200 OK로 응답합니다. 
Google Cloud Logging destinations
- GitLab 16.5에서 소개되었습니다.
 
전체 인스턴스에 대한 Google Cloud Logging 대상 관리.
Google Cloud Logging 스트리밍 감사 이벤트를 설정하기 전에 prerequisites를 충족해야 합니다.
새 Google Cloud Logging 대상 추가
인스턴스에 새 Google Cloud Logging 구성 대상 추가.
필수 조건:
- 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.
 - Google Cloud 프로젝트에 서비스 계정을 만들고 Google Cloud Logging을 활성화할 권한이 있어야 합니다.
 
스트리밍을 활성화하고 구성을 추가하려면 GraphQL API에서 instanceGoogleCloudLoggingConfigurationCreate 뮤테이션을 사용하세요.
mutation {
  instanceGoogleCloudLoggingConfigurationCreate(input: { googleProjectIdName: "내-google-프로젝트", clientEmail: "내-email@내-google-프로젝트.iam.gservice.account.com", privateKey: "YOUR_PRIVATE_KEY", logIdName: "audit-events", name: "대상-이름" } ) {
    errors
    googleCloudLoggingConfiguration {
      id
      googleProjectIdName
      logIdName
      clientEmail
      name
    }
    errors
  }
}
다음과 같은 경우 이벤트 스트리밍이 활성화됩니다:
- 반환된 
errors객체가 비어 있는 경우. - API가 
200 OK로 응답하는 경우. 
Google Cloud Logging 구성 디렉터리
인스턴스에 대한 모든 Google Cloud Logging 구성 대상을 나열하세요.
필수 조건:
- 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.
 
instanceGoogleCloudLoggingConfigurations 쿼리 유형을 사용하여 인스턴스에 대한 스트리밍 구성 디렉터리을 볼 수 있습니다.
query {
  instanceGoogleCloudLoggingConfigurations {
    nodes {
      id
      logIdName
      googleProjectIdName
      clientEmail
      name
    }
  }
}
결과 디렉터리이 비어 있는 경우, 인스턴스에 대한 감사 스트리밍이 활성화되어 있지 않습니다.
이 쿼리로 반환된 ID 값을 업데이트 및 삭제 뮤테이션에 사용해야 합니다.
Google Cloud Logging 구성 업데이트
인스턴스에 대한 Google Cloud Logging 구성 대상을 업데이트하세요.
필수 조건:
- 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.
 
인스턴스에 대한 스트리밍 구성을 업데이트하려면 instanceGoogleCloudLoggingConfigurationUpdate 뮤테이션 유형을 사용하세요. 구성 ID를 가져오려면 모든 외부 대상을 나열해야 합니다.
mutation {
  instanceGoogleCloudLoggingConfigurationUpdate(
    input: {id: "gid://gitlab/AuditEvents::Instance::GoogleCloudLoggingConfiguration/1", googleProjectIdName: "updated-google-id", clientEmail: "updated@my-google-project.iam.gservice.account.com", privateKey: "YOUR_PRIVATE_KEY", logIdName: "audit-events", name: "updated name"}
  ) {
    errors
    instanceGoogleCloudLoggingConfiguration {
      id
      logIdName
      googleProjectIdName
      clientEmail
      name
    }
  }
}
다음과 같은 경우 스트리밍 구성이 업데이트됩니다:
- 반환된 
errors객체가 비어 있는 경우. - API가 
200 OK로 응답하는 경우. 
Google Cloud Logging 구성 삭제
인스턴스에 대한 스트리밍 대상 삭제.
마지막 대상이 성공적으로 삭제되면 해당 인스턴스의 스트리밍이 비활성화됩니다.
필수 조건:
- 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.
 
스트리밍 구성을 삭제하려면 instanceGoogleCloudLoggingConfigurationDestroy 뮤테이션 유형을 사용하세요. 해당 인스턴스에 대한 모든 스트리밍 대상을 리스트에서 가져오세요.
mutation {
  instanceGoogleCloudLoggingConfigurationDestroy(input: { id: "gid://gitlab/AuditEvents::Instance::GoogleCloudLoggingConfiguration/1" }) {
    errors
  }
}
다음과 같은 경우 스트리밍 구성이 삭제됩니다:
- 반환된 
errors객체가 비어 있는 경우. - API가 
200 OK로 응답하는 경우. 
도움말