doc-locale/fr-fr/api/graphql/audit_event_streaming_groups.md
{{< details >}}
{{< /details >}}
{{< history >}}
streaming_audit_event_headers. Désactivé par défaut.streaming_audit_event_headers a été supprimé.ff_external_audit_events est activé par défaut dans GitLab 16.2.ff_external_audit_events de l'API a été supprimé dans GitLab 16.4.{{< /history >}}
Gérez les destinations de diffusion d'événements d'audit pour les groupes principaux à l'aide d'une API GraphQL.
Gérez les destinations de diffusion HTTP pour les groupes principaux.
Ajoutez une nouvelle destination de diffusion aux groupes principaux.
[!warning] Les destinations de diffusion reçoivent l'ensemble des données d'événements d'audit, qui peuvent inclure des informations sensibles. Assurez-vous de faire confiance à la destination de diffusion.
Prérequis :
Pour activer la diffusion et ajouter une destination à un groupe principal, utilisez la mutation externalAuditEventDestinationCreate.
mutation {
externalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest", groupPath: "my-group" } ) {
errors
externalAuditEventDestination {
id
name
destinationUrl
verificationToken
group {
name
}
}
}
}
Vous pouvez éventuellement spécifier votre propre jeton de vérification (au lieu de celui généré par défaut par GitLab) à l'aide de la mutation GraphQL externalAuditEventDestinationCreate. La longueur du jeton de vérification doit être comprise entre 16 et 24 caractères et les espaces en fin de chaîne ne sont pas supprimés. Vous devez définir une valeur aléatoire et unique cryptographiquement. Par exemple :
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
}
}
}
}
Vous pouvez éventuellement spécifier votre propre nom de destination (au lieu de celui généré par défaut par GitLab) à l'aide de la mutation GraphQL externalAuditEventDestinationCreate. La longueur du nom ne doit pas dépasser 72 caractères et les espaces en fin de chaîne ne sont pas supprimés. Cette valeur doit être unique dans la portée d'un groupe. Par exemple :
mutation {
externalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest", name: "destination-name-here", groupPath: "my-group" }) {
errors
externalAuditEventDestination {
id
name
destinationUrl
verificationToken
group {
name
}
}
}
}
La diffusion d'événements est activée si :
errors renvoyé est vide.200 OK.Vous pouvez ajouter un en-tête HTTP à l'aide de la mutation GraphQL auditEventsStreamingHeadersCreate. Vous pouvez récupérer l'ID de destination en listant toutes les destinations de diffusion pour le groupe ou à partir de la mutation ci-dessus.
mutation {
auditEventsStreamingHeadersCreate(input: {
destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
key: "foo",
value: "bar",
active: false
}) {
errors
header {
id
key
value
active
}
}
}
L'en-tête est créé si l'objet errors renvoyé est vide.
Listez les destinations de diffusion pour un groupe principal.
Prérequis :
Vous pouvez afficher la liste des destinations de diffusion pour un groupe principal à l'aide du type de requête 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
}
}
}
}
}
}
Si la liste résultante est vide, la diffusion d'audit n'est pas activée pour ce groupe.
Mettez à jour les destinations de diffusion pour un groupe principal.
Prérequis :
Pour mettre à jour les destinations de diffusion pour un groupe, utilisez le type de mutation externalAuditEventDestinationUpdate. Vous pouvez récupérer l'ID des destinations en listant toutes les destinations de diffusion pour le groupe.
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
}
}
}
}
La destination de diffusion est mise à jour si :
errors renvoyé est vide.200 OK.Les utilisateurs ayant le rôle de propriétaire pour un groupe peuvent mettre à jour les en-têtes HTTP personnalisés des destinations de diffusion à l'aide du type de mutation auditEventsStreamingHeadersUpdate. Vous pouvez récupérer l'ID des en-têtes HTTP personnalisés en listant tous les en-têtes HTTP personnalisés pour le groupe.
mutation {
auditEventsStreamingHeadersUpdate(input: { headerId: "gid://gitlab/AuditEvents::Streaming::Header/2", key: "new-key", value: "new-value", active: false }) {
errors
header {
id
key
value
active
}
}
}
Les propriétaires de groupe peuvent supprimer un en-tête HTTP à l'aide de la mutation GraphQL auditEventsStreamingHeadersDestroy. Vous pouvez récupérer l'ID de l'en-tête en listant tous les en-têtes HTTP personnalisés pour le groupe.
mutation {
auditEventsStreamingHeadersDestroy(input: { headerId: "gid://gitlab/AuditEvents::Streaming::Header/1" }) {
errors
}
}
L'en-tête est supprimé si l'objet errors renvoyé est vide.
Supprimez les destinations de diffusion pour un groupe principal.
Lorsque la dernière destination est supprimée avec succès, la diffusion est désactivée pour le groupe.
Prérequis :
Les utilisateurs ayant le rôle de propriétaire pour un groupe peuvent supprimer les destinations de diffusion à l'aide du type de mutation externalAuditEventDestinationDestroy. Vous pouvez récupérer l'ID des destinations en listant toutes les destinations de diffusion pour le groupe.
mutation {
externalAuditEventDestinationDestroy(input: { id: destination }) {
errors
}
}
La destination de diffusion est supprimée si :
errors renvoyé est vide.200 OK.Les propriétaires de groupe peuvent supprimer un en-tête HTTP à l'aide de la mutation GraphQL auditEventsStreamingHeadersDestroy. Vous pouvez récupérer l'ID de l'en-tête en listant tous les en-têtes HTTP personnalisés pour le groupe.
mutation {
auditEventsStreamingHeadersDestroy(input: { headerId: "gid://gitlab/AuditEvents::Streaming::Header/1" }) {
errors
}
}
L'en-tête est supprimé si l'objet errors renvoyé est vide.
{{< history >}}
{{< /history >}}
Lorsque cette fonctionnalité est activée pour un groupe, vous pouvez utiliser une API pour permettre aux utilisateurs de filtrer les événements d'audit diffusés par destination. Si la fonctionnalité est activée sans filtres, la destination reçoit tous les événements d'audit.
Une destination de diffusion dont un filtre de type d'événement est défini porte un label filtré ({{< icon name="filter" >}}).
Prérequis :
Vous pouvez ajouter une liste de filtres de types d'événements à l'aide du type de requête auditEventsStreamingDestinationEventsAdd :
mutation {
auditEventsStreamingDestinationEventsAdd(input: {
destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
eventTypeFilters: ["list of event type filters"]}){
errors
eventTypeFilters
}
}
Les filtres de types d'événements sont ajoutés si :
errors renvoyé est vide.200 OK.Prérequis :
Vous pouvez supprimer une liste de filtres de types d'événements à l'aide du type de mutation auditEventsStreamingDestinationEventsRemove :
mutation {
auditEventsStreamingDestinationEventsRemove(input: {
destinationId: "gid://gitlab/AuditEvents::ExternalAuditEventDestination/1",
eventTypeFilters: ["list of event type filters"]
}){
errors
}
}
Les filtres de types d'événements sont supprimés si :
errors renvoyé est vide.200 OK.{{< history >}}
{{< /history >}}
Lorsque vous appliquez un filtre d'espace de nommage à un groupe, les utilisateurs peuvent filtrer les événements d'audit diffusés par destination pour un sous-groupe ou un projet spécifique du groupe. Sinon, la destination reçoit tous les événements d'audit.
Une destination de diffusion dont un filtre d'espace de nommage est défini porte un label filtré ({{< icon name="filter" >}}).
Prérequis :
Vous pouvez ajouter un filtre d'espace de nommage à l'aide du type de mutation auditEventsStreamingHttpNamespaceFiltersAdd pour les sous-groupes et les projets.
Le filtre d'espace de nommage est ajouté si :
errors vide.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
}
}
}
}
Prérequis :
Vous pouvez supprimer un filtre d'espace de nommage à l'aide du type de mutation auditEventsStreamingHttpNamespaceFiltersDelete :
mutation auditEventsStreamingHttpNamespaceFiltersDelete {
auditEventsStreamingHttpNamespaceFiltersDelete(input: {
namespaceFilterId: "gid://gitlab/AuditEvents::Streaming::HTTP::NamespaceFilter/5"
}) {
errors
}
}
Le filtre d'espace de nommage est supprimé si :
errors renvoyé est vide.200 OK.{{< history >}}
{{< /history >}}
Gérez les destinations Google Cloud Logging pour les groupes principaux.
Avant de configurer la diffusion d'événements d'audit Google Cloud Logging, vous devez satisfaire les prérequis.
Ajoutez une nouvelle destination de configuration Google Cloud Logging à un groupe principal.
Prérequis :
Pour activer la diffusion et ajouter une configuration, utilisez la mutation googleCloudLoggingConfigurationCreate dans l'API GraphQL.
mutation {
googleCloudLoggingConfigurationCreate(input: { groupPath: "my-group", googleProjectIdName: "my-google-project", clientEmail: "[email protected]", privateKey: "YOUR_PRIVATE_KEY", logIdName: "audit-events", name: "destination-name" } ) {
errors
googleCloudLoggingConfiguration {
id
googleProjectIdName
logIdName
clientEmail
name
}
errors
}
}
La diffusion d'événements est activée si :
errors renvoyé est vide.200 OK.Listez toutes les destinations de configuration Google Cloud Logging pour un groupe principal.
Prérequis :
Vous pouvez afficher la liste des configurations de diffusion pour un groupe principal à l'aide du type de requête googleCloudLoggingConfigurations.
query {
group(fullPath: "my-group") {
id
googleCloudLoggingConfigurations {
nodes {
id
logIdName
googleProjectIdName
clientEmail
name
}
}
}
}
Si la liste résultante est vide, la diffusion d'audit n'est pas activée pour le groupe.
Vous avez besoin des valeurs d'ID renvoyées par cette requête pour les mutations de mise à jour et de suppression.
Mettez à jour les destinations de configuration Google Cloud Logging pour un groupe principal.
Prérequis :
Pour mettre à jour la configuration de diffusion pour un groupe principal, utilisez le type de mutation googleCloudLoggingConfigurationUpdate. Vous pouvez récupérer l'ID de configuration en listant toutes les destinations externes.
mutation {
googleCloudLoggingConfigurationUpdate(
input: {id: "gid://gitlab/AuditEvents::GoogleCloudLoggingConfiguration/1", googleProjectIdName: "my-google-project", clientEmail: "[email protected]", privateKey: "YOUR_PRIVATE_KEY", logIdName: "audit-events", name: "updated-destination-name" }
) {
errors
googleCloudLoggingConfiguration {
id
logIdName
googleProjectIdName
clientEmail
name
}
}
}
La configuration de diffusion est mise à jour si :
errors renvoyé est vide.200 OK.Supprimez les destinations de diffusion pour un groupe principal.
Lorsque la dernière destination est supprimée avec succès, la diffusion est désactivée pour le groupe.
Prérequis :
Les utilisateurs ayant le rôle de propriétaire pour un groupe peuvent supprimer les configurations de diffusion à l'aide du type de mutation googleCloudLoggingConfigurationDestroy. Vous pouvez récupérer l'ID des configurations en listant toutes les destinations de diffusion pour le groupe.
mutation {
googleCloudLoggingConfigurationDestroy(input: { id: "gid://gitlab/AuditEvents::GoogleCloudLoggingConfiguration/1" }) {
errors
}
}
La configuration de diffusion est supprimée si :
errors renvoyé est vide.200 OK.