인스턴스용 감사 이벤트 스트리밍 GraphQL API

상세 정보: Tier: Ultimate Offering: Self-Managed, GitLab Dedicated

GraphQL API를 사용하여 인스턴스용 감사 이벤트 스트리밍 대상을 관리합니다.

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로 응답하는 경우 이벤트 스트리밍이 활성화됩니다.

기본 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 스트리밍 대상 나열합니다.

필수 조건: - 인스턴스의 관리자 액세스.

인스턴스의 스트리밍 대상 목록을 보려면 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는 GitLab 16.2에서 도입되었습니다.

이 기능이 인스턴스에서 활성화되면 API를 사용하여 사용자가 스트리밍된 감사 이벤트를 대상별로 필터링할 수 있습니다. 필터가 없이 기능이 활성화된 경우 대상은 모든 감사 이벤트를 수신합니다.

이벤트 유형 필터가 설정된 스트리밍 대상은 라벨이 지정된 필터링됨 라벨을 가지고 있습니다.

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

전제 조건:

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

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

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

이벤트 유형 필터가 추가되었을 때:

  • 반환된 errors 객체가 비어 있는 경우
  • API가 200 OK로 응답한 경우

API를 사용하여 이벤트 유형 필터 제거하기

전제 조건:

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

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

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

이벤트 유형 필터가 제거되었을 때:

  • 반환된 errors 객체가 비어 있는 경우
  • API가 200 OK로 응답한 경우

Google Cloud Logging 대상

  • GitLab 16.5에서 도입되었습니다.

인스턴스 전체에 대한 Google Cloud Logging 대상을 관리합니다.

Google Cloud Logging 스트리밍 감사 이벤트를 설정하기 전에 필수 사항을 충족해야 합니다.

새 Google Cloud Logging 대상 추가

인스턴스에 새 Google Cloud Logging 구성 대상을 추가합니다.

전제 조건:

  • 인스턴스에 대한 관리자 액세스해야 합니다.
  • Google Cloud 프로젝트에 서비스 계정을 생성하고 Google Cloud Logging을 활성화할 필요한 권한이 있어야 합니다.

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

mutation {
  instanceGoogleCloudLoggingConfigurationCreate(input: { googleProjectIdName: "내-google-프로젝트", clientEmail: "내-이메일@내-google-프로젝트.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 구성 대상을 나열합니다.

전제 조건:

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

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: "업데이트된-google-id", clientEmail: "업데이트된@my-google-project.iam.gservice.account.com", privateKey: "개인 키", logIdName: "감사 이벤트", 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로 응답한 경우