トップレベルグループの監査イベントストリーミングGraphQL API
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
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
}
}
}
}オプションで、GraphQL externalAuditEventDestinationCreateミューテーションを使用して、(デフォルトのGitLab生成の代わりに)独自の検証トークンを指定できます。検証トークンの長さは16〜24文字で、末尾の空白はトリミングされません。暗号論的にランダムで一意の値を設定する必要があります。例:
mutation {
externalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest", groupPath: "my-group", verificationToken: "unique-random-verification-token-here" } ) {
errors
externalAuditEventDestination {
id
name
destinationUrl
verificationToken
group {
name
}
}
}
}オプションで、GraphQL externalAuditEventDestinationCreateミューテーションを使用して、(デフォルトのGitLab生成の代わりに)独自のストリーミング先名を指定できます。名前の長さは72文字を超えてはならず、末尾の空白はトリミングされません。この値は、グループに対して一意のスコープである必要があります。例:
mutation {
externalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest", name: "destination-name-here", 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: "destination-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: "new-key", value: "new-value", active: false }) {
errors
header {
id
key
value
active
}
}
}グループオーナーは、GraphQL auditEventsStreamingHeadersDestroyミューテーションを使用してHTTPヘッダーを削除できます。グループのカスタムHTTPヘッダーをすべてリストすることで、ヘッダーIDを取得することができます。
mutation {
auditEventsStreamingHeadersDestroy(input: { headerId: "gid://gitlab/AuditEvents::Streaming::Header/1" }) {
errors
}
}返されたerrorsオブジェクトが空の場合、ヘッダーは削除されます。
ストリーミング先を削除する
トップレベルグループのストリーミング先を削除します。
最後のストリーミング先が正常に削除されると、グループのストリーミングは無効になります。
前提要件:
- トップレベルグループのオーナーロール。
グループのオーナーロールを持つユーザーは、externalAuditEventDestinationDestroyミューテーションタイプを使用して、ストリーミング先を削除できます。ストリーミング先IDは、グループのストリーミング先をすべてリストすることで取得することができます。
mutation {
externalAuditEventDestinationDestroy(input: { id: destination }) {
errors
}
}ストリーミング先が削除されるのは、次の場合です:
- 返された
errorsオブジェクトが空です。 - APIが
200 OKで応答します。
グループオーナーは、GraphQL auditEventsStreamingHeadersDestroyミューテーションを使用してHTTPヘッダーを削除できます。グループのカスタムHTTPヘッダーをすべてリストすることで、ヘッダーIDを取得することができます。
mutation {
auditEventsStreamingHeadersDestroy(input: { headerId: "gid://gitlab/AuditEvents::Streaming::Header/1" }) {
errors
}
}返されたerrorsオブジェクトが空の場合、ヘッダーは削除されます。
イベントタイプのフィルター
この機能がグループに対して有効になっている場合、APIを使用して、ユーザーがストリーミング先ごとに監査イベントをフィルタリングできるようにすることができます。機能がフィルターなしで有効になっている場合、送信先はすべての監査イベントを受信します。
イベントタイプのフィルターが設定されているストリーミング先には、フィルタリング済み ( ) ラベルが付きます。
APIを使用してイベントタイプのフィルターを追加する
前提要件:
- グループのオーナーロールを持っている必要があります。
auditEventsStreamingDestinationEventsAddクエリタイプを使用して、イベントタイプのフィルターのリストを追加できます:
mutation {
auditEventsStreamingDestinationEventsAdd(input: {
destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
eventTypeFilters: ["list of event type filters"]}){
errors
eventTypeFilters
}
}イベントタイプの種類のフィルターは、次の場合に追加されます:
- 返された
errorsオブジェクトが空です。 - APIが
200 OKで応答します。
APIを使用してイベントタイプのフィルターを削除する
前提要件:
- グループのオーナーロールを持っている必要があります。
auditEventsStreamingDestinationEventsRemoveミューテーションタイプを使用して、イベントタイプのフィルターのリストを削除できます:
mutation {
auditEventsStreamingDestinationEventsRemove(input: {
destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
eventTypeFilters: ["list of event type filters"]
}){
errors
}
}イベントタイプのフィルターが削除されるのは、次の場合です:
- 返された
errorsオブジェクトが空です。 - APIが
200 OKで応答します。
ネームスペースフィルター
ネームスペースフィルターをグループに適用すると、ユーザーは、グループの特定のサブグループまたはプロジェクトのストリーミング先ごとにストリーミングされた監査イベントをフィルタリングできます。それ以外の場合、ストリーミング先はすべての監査イベントを受信します。
ネームスペースフィルターが設定されているストリーミング先には、フィルタリング済み ( ) ラベルが付きます。
APIを使用してネームスペースフィルターを追加する
前提要件:
- グループのオーナーロールを持っている必要があります。
auditEventsStreamingHttpNamespaceFiltersAddミューテーションタイプを使用して、サブグループとプロジェクトの両方に対してネームスペースフィルターを追加できます。
ネームスペースフィルターは、次の条件に該当する場合に追加されます:
- APIが空の
errorsオブジェクトを返す場合。 - APIが
200 OKで応答します。
サブグループのミューテーション
mutation auditEventsStreamingHttpNamespaceFiltersAdd {
auditEventsStreamingHttpNamespaceFiltersAdd(input: {
destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
groupPath: "path/to/subgroup"
}) {
errors
namespaceFilter {
id
namespace {
id
name
fullName
}
}
}
}プロジェクトのミューテーション
mutation auditEventsStreamingHttpNamespaceFiltersAdd {
auditEventsStreamingHttpNamespaceFiltersAdd(input: {
destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
projectPath: "path/to/project"
}) {
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の送信先
トップレベルグループのGoogle Cloud Loggingストリーミング先を管理します。
Google Cloud Logging監査イベントのストリーミングを設定する前に、前提条件を満たす必要があります。
新しいGoogle Cloud Loggingの送信先を追加
トップレベルグループに新しいGoogle Cloud Logging設定のストリーミング先を追加します。
前提要件:
- トップレベルグループのオーナーロール。
- サービスアカウントを作成し、Google Cloud Loggingを有効にするために必要な権限を持つGoogle Cloudプロジェクト。
ストリーミングを有効にして設定を追加するには、GraphQL APIでgoogleCloudLoggingConfigurationCreateミューテーションを使用します。
mutation {
googleCloudLoggingConfigurationCreate(input: { groupPath: "my-group", 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で応答します。
Google Cloud Logging設定を一覧表示する
トップレベルグループのすべてのGoogle Cloud Logging設定のストリーミング先をリストします。
前提要件:
- トップレベルグループのオーナーロール。
googleCloudLoggingConfigurationsクエリタイプを使用して、トップレベルグループの監査イベントストリーミングの設定のリストを表示できます。
query {
group(fullPath: "my-group") {
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: "my-google-project", clientEmail: "my-email@my-google-project.iam.gservice.account.com", privateKey: "YOUR_PRIVATE_KEY", logIdName: "audit-events", name: "updated-destination-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で応答します。