인스턴스를 위한 감사 이벤트 스트리밍 GraphQL API

Tier: Ultimate Offering: Self-managed, GitLab Dedicated

GraphQL API를 사용하여 인스턴스의 감사 이벤트 스트리밍 대상을 관리하세요.

HTTP 대화형

전체 인스턴스에 대한 HTTP 스트리밍 대상을 관리합니다.

새로운 HTTP 대상 추가

인스턴스에 새로운 HTTP 스트리밍 대상을 추가합니다.

Prerequisites:

  • 인스턴스에 대한 관리자 권한.

스트리밍을 활성화하고 대상을 추가하려면 GraphQL API의
instanceExternalAuditEventDestinationCreate 변이를 사용하세요.

mutation {  
  instanceExternalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest"}) {  
    errors  
    instanceExternalAuditEventDestination {  
      destinationUrl  
      id  
      name  
      verificationToken  
    }  
  }  
}  

이벤트 스트리밍이 활성화되면:

  • 반환된 errors 객체가 비어 있습니다.
  • API가 200 OK로 응답합니다.

원하는 경우 기본 GitLab에서 생성한 이름 대신 자신만의 대상 이름을 지정할 수 있습니다.
GraphQL instanceExternalAuditEventDestinationCreate
변이를 사용할 수 있습니다. 이름 길이는 72자를 초과할 수 없으며 후행 공백은 잘리지 않습니다. 이 값은 고유해야 합니다. 예를 들어:

mutation {  
  instanceExternalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest", name: "destination-name-here"}) {  
    errors  
    instanceExternalAuditEventDestination {  
      destinationUrl  
      id  
      name  
      verificationToken  
    }  
  }  
}  

인스턴스 관리자는 GraphQL auditEventsStreamingInstanceHeadersCreate 변이를 사용하여 HTTP 헤더를 추가할 수 있습니다. 대상 ID는 스트리밍 대상 모두 나열하기에서 검색하거나 위의 변이에서 가져올 수 있습니다.

mutation {  
  auditEventsStreamingInstanceHeadersCreate(input:  
    {  
      destinationId: "gid://gitlab/AuditEvents::InstanceExternalAuditEventDestination/42",  
      key: "foo",  
      value: "bar",  
      active: true  
    }) {  
    errors  
    header {  
      id  
      key  
      value  
      active  
    }  
  }  
}  

반환된 errors 객체가 비어 있으면 헤더가 생성됩니다.

스트리밍 대상 목록

인스턴스에 대한 모든 HTTP 스트리밍 대상을 나열합니다.

Prerequisites:

  • 인스턴스에 대한 관리자 권한.

인스턴스의 스트리밍 대상을 보려면 instanceExternalAuditEventDestinations 쿼리 유형을 사용하세요.

query {  
  instanceExternalAuditEventDestinations {  
    nodes {  
      id  
      name  
      destinationUrl  
      verificationToken  
      headers {  
        nodes {  
          id  
          key  
          value  
          active  
        }  
      }  
      eventTypeFilters  
    }  
  }  
}  

결과 목록이 비어 있으면 인스턴스에 대해 감사 스트리밍이 활성화되지 않은 것입니다.

업데이트 및 삭제 변이를 위해 이 쿼리에서 반환된 ID 값이 필요합니다.

스트리밍 목적지 업데이트

인스턴스에 대한 HTTP 스트리밍 목적지를 업데이트합니다.

필수 조건:

  • 인스턴스에 대한 관리자 액세스.

인스턴스의 스트리밍 목적지를 업데이트하려면 instanceExternalAuditEventDestinationUpdate 뮤테이션 타입을 사용하세요. 목적지 ID는 모든 외부 목적지 목록을 조회하여 가져올 수 있습니다.

mutation {
  instanceExternalAuditEventDestinationUpdate(input: {
    id: "gid://gitlab/AuditEvents::InstanceExternalAuditEventDestination/1",
    destinationUrl: "https://www.new-domain.com/webhook",
    name: "destination-name"}) {
    errors
    instanceExternalAuditEventDestination {
      destinationUrl
      id
      name
      verificationToken
    }
  }
}

스트리밍 목적지는 다음과 경우에 업데이트됩니다:

  • 반환된 errors 객체가 비어 있습니다.
  • API 응답이 200 OK입니다.

인스턴스 관리자는 auditEventsStreamingInstanceHeadersUpdate 뮤테이션 타입을 사용하여 스트리밍 목적지의 사용자 정의 HTTP 헤더를 업데이트할 수 있습니다. 사용자 정의 HTTP 헤더 ID는 모든 사용자 정의 HTTP 헤더 목록을 조회하여 가져올 수 있습니다.

mutation {
  auditEventsStreamingInstanceHeadersUpdate(input: { headerId: "gid://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: "gid://gitlab/AuditEvents::InstanceExternalAuditEventDestination/1" }) {
    errors
  }
}

스트리밍 목적지는 다음과 경우에 삭제됩니다:

  • 반환된 errors 객체가 비어 있습니다.
  • API 응답이 200 OK입니다.

HTTP 헤더를 제거하려면 GraphQL auditEventsStreamingInstanceHeadersDestroy 뮤테이션을 사용하세요. 헤더 ID를 가져오려면, 모든 사용자 정의 HTTP 헤더 목록을 조회하세요.

mutation {
  auditEventsStreamingInstanceHeadersDestroy(input: { headerId: "gid://gitlab/AuditEvents::Streaming::InstanceHeader/<id>" }) {
    errors
  }
}

헤더는 반환된 errors 객체가 비어 있을 경우 삭제됩니다.

이벤트 유형 필터

이 기능이 인스턴스에 대해 활성화되면, 사용자가 목적지별로 스트리밍된 감사 이벤트를 필터링할 수 있도록 API를 사용할 수 있습니다.

기능이 필터 없이 활성화된 경우, 목적지는 모든 감사 이벤트를 수신합니다.

이벤트 유형 필터가 설정된 스트리밍 목적지는 filtered ( ) 레이블을 갖습니다.

API를 사용하여 이벤트 유형 필터 추가

필수 조건:

  • 인스턴스에 대한 관리자 액세스가 있어야 합니다.

다음과 같이 auditEventsStreamingDestinationInstanceEventsAdd 뮤테이션을 사용하여 이벤트 유형 필터 목록을 추가할 수 있습니다:

mutation {
    auditEventsStreamingDestinationInstanceEventsAdd(input: {
        destinationId: "gid://gitlab/AuditEvents::InstanceExternalAuditEventDestination/1",
        eventTypeFilters: ["list of event type filters"]}){
        errors
        eventTypeFilters
    }
}

이벤트 유형 필터는 다음과 경우에 추가됩니다:

  • 반환된 errors 객체가 비어 있습니다.
  • API 응답이 200 OK입니다.

이벤트 종류 필터 제거를 위한 API 사용

전제 조건:

  • 인스턴스에 대한 관리자 접근 권한이 있어야 합니다.

auditEventsStreamingDestinationInstanceEventsRemove 뮤테이션을 사용하여 이벤트 종류 필터 목록을 제거할 수 있습니다:

mutation {
    auditEventsStreamingDestinationInstanceEventsRemove(input: {
    destinationId: "gid://gitlab/AuditEvents::InstanceExternalAuditEventDestination/1",
    eventTypeFilters: ["이벤트 종류 필터 목록"]
  }){
    errors
  }
}

이벤트 종류 필터는 다음 조건이 충족될 경우 제거됩니다:

  • 반환된 errors 객체가 비어 있습니다.
  • API가 200 OK로 응답합니다.

구글 클라우드 로깅 대상

전체 인스턴스에 대한 구글 클라우드 로깅 대상을 관리합니다.

구글 클라우드 로깅 스트리밍 감사 이벤트를 설정하기 전에 전제 조건을 충족해야 합니다.

새로운 구글 클라우드 로깅 대상 추가

인스턴스에 새로운 구글 클라우드 로깅 구성 대상을 추가합니다.

전제 조건:

  • 인스턴스에 대한 관리자 접근 권한이 있습니다.
  • 서비스 계정을 생성하고 구글 클라우드 로깅을 활성화하는 데 필요한 권한이 있는 구글 클라우드 프로젝트가 있습니다.

스트리밍을 활성화하고 구성을 추가하려면 GraphQL API에서 instanceGoogleCloudLoggingConfigurationCreate 뮤테이션을 사용하세요.

mutation {
  instanceGoogleCloudLoggingConfigurationCreate(input: { googleProjectIdName: "my-google-project", clientEmail: "my-email@my-google-project.iam.gservice.account.com", privateKey: "YOUR_PRIVATE_KEY", logIdName: "audit-events", name: "destination-name" } ) {
    errors
    googleCloudLoggingConfiguration {
      id
      googleProjectIdName
      logIdName
      clientEmail
      name
    }
    errors
  }
}

이벤트 스트리밍이 활성화되면:

  • 반환된 errors 객체가 비어 있습니다.
  • API가 200 OK로 응답합니다.

구글 클라우드 로깅 구성 목록

인스턴스에 대한 모든 구글 클라우드 로깅 구성 대상의 목록을 나열합니다.

전제 조건:

  • 인스턴스에 대한 관리자 접근 권한이 있습니다.

instanceGoogleCloudLoggingConfigurations 쿼리 타입을 사용하여 인스턴스에 대한 스트리밍 구성 목록을 볼 수 있습니다.

query {
  instanceGoogleCloudLoggingConfigurations {
    nodes {
      id
      logIdName
      googleProjectIdName
      clientEmail
      name
    }
  }
}

결과 목록이 비어 있는 경우, 인스턴스에 대해 감사 스트리밍이 활성화되지 않았습니다.

이 쿼리에서 반환된 ID 값을 업데이트 및 삭제 뮤테이션에 사용해야 합니다.

구글 클라우드 로깅 구성 업데이트

인스턴스에 대한 구글 클라우드 로깅 구성 대상을 업데이트합니다.

전제 조건:

  • 인스턴스에 대한 관리자 접근 권한이 있습니다.

인스턴스에 대한 스트리밍 구성을 업데이트하려면 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 뮤테이션 타입을 사용합니다. 인스턴스에 대한 모든 스트리밍 대상을 나열하여 구성 ID를 가져올 수 있습니다.

mutation {
  instanceGoogleCloudLoggingConfigurationDestroy(input: { id: "gid://gitlab/AuditEvents::Instance::GoogleCloudLoggingConfiguration/1" }) {
    errors
  }
}

스트리밍 구성은 다음 경우에 삭제됩니다:

  • 반환된 errors 객체가 비어 있습니다.
  • API 응답이 200 OK입니다.