인스턴스를 위한 감사 이벤트 스트리밍 GraphQL API
- GitLab 16.0에서 도입됨
ff_external_audit_events
라는 플래그와 함께. 기본값은 비활성화됨.- 인스턴스 수준 스트리밍 대상으로의 사용자 지정 HTTP 헤더를 위한 API가 GitLab 16.1에서 도입됨
ff_external_audit_events
라는 플래그와 함께. 기본값은 비활성화됨.- GitLab 16.2에서 기본값으로 활성화된 Feature flag
ff_external_audit_events
.- 사용자 지정 대상 이름 API 지원이 GitLab 16.2에서 도입됨.
- 인스턴스 스트리밍 대상으로 일반적으로 사용 가능하게 됨 GitLab 16.4에서. Feature flag
ff_external_audit_events
제거됨.
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는 GitLab 16.2에서 도입되었습니다.
이 기능이 인스턴스에 대해 활성화되면, 사용자가 목적지별로 스트리밍된 감사 이벤트를 필터링할 수 있도록 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
로 응답합니다.
구글 클라우드 로깅 대상
- GitLab 16.5에 도입됨.
전체 인스턴스에 대한 구글 클라우드 로깅 대상을 관리합니다.
구글 클라우드 로깅 스트리밍 감사 이벤트를 설정하기 전에 전제 조건을 충족해야 합니다.
새로운 구글 클라우드 로깅 대상 추가
인스턴스에 새로운 구글 클라우드 로깅 구성 대상을 추가합니다.
전제 조건:
- 인스턴스에 대한 관리자 접근 권한이 있습니다.
- 서비스 계정을 생성하고 구글 클라우드 로깅을 활성화하는 데 필요한 권한이 있는 구글 클라우드 프로젝트가 있습니다.
스트리밍을 활성화하고 구성을 추가하려면 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
입니다.