Intégrer Atlassian Confluence Server à Google SecOps

Ce document explique comment intégrer Atlassian Confluence Server à Google Security Operations (Google SecOps).

Version de l'intégration : 3.0

Prérequis

Pour vous authentifier auprès de Confluence Server, choisissez l'une des options suivantes :

  • Nom d'utilisateur et mot de passe d'un compte dédié.
  • Jeton d'accès personnel (PAT).

Si les deux options d'authentification sont fournies pour l'intégration, le jeton d'accès personnel est prioritaire sur le nom d'utilisateur et le mot de passe.

L'authentification basée sur le nom d'utilisateur et le mot de passe nécessite la création d'un compte dédié qui sera utilisé pour l'intégration.
L'authentification basée sur le jeton d'accès nécessite la configuration des autorisations du compte. Une fois créé, le nouveau jeton d'accès personnel correspond au niveau d'autorisation actuel du compte.

Pour créer un jeton, procédez comme suit :

  1. Dans Confluence, accédez à Compte > Paramètres du compte > Jetons d'accès personnel.
  2. Sélectionnez Créer un jeton.
  3. Nommez le jeton que vous créez.
  4. (Facultatif) Pour plus de sécurité, vous pouvez configurer votre jeton pour qu'il expire automatiquement après un certain nombre de jours.
  5. Cliquez sur Créer.

Paramètres d'intégration

L'intégration nécessite les paramètres suivants :

Nom du paramètre Type Valeur par défaut Obligatoire Description
Racine de l'API Chaîne https://ip_address Vrai Spécifiez la racine de l'API Confluence Server à laquelle vous souhaitez vous connecter.
Nom d'utilisateur Chaîne N/A Faux Spécifiez un nom d'utilisateur à utiliser pour la connexion. L'intégration est compatible avec l'authentification par nom d'utilisateur et mot de passe, ou par jeton d'accès personnel.
Mot de passe Mot de passe N/A Faux Spécifiez un mot de passe à utiliser pour la connexion. L'intégration est compatible avec l'authentification par nom d'utilisateur et mot de passe, ou par jeton d'accès personnel.
Jeton d'accès personnel Mot de passe N/A Faux Spécifiez un jeton à utiliser pour la connexion. L'intégration est compatible avec l'authentification par nom d'utilisateur et mot de passe, ou par jeton d'accès personnel.
Vérifier le protocole SSL Case à cocher Case cochée Faux Si cette option est activée, le certificat configuré pour la racine de l'API est validé.

Pour obtenir des instructions sur la configuration d'une intégration dans Google SecOps, consultez Configurer des intégrations.

Vous pourrez apporter des modifications ultérieurement, si nécessaire. Une fois que vous avez configuré une instance d'intégration, vous pouvez l'utiliser dans des playbooks. Pour savoir comment configurer et prendre en charge plusieurs instances, consultez Prise en charge de plusieurs instances.

Actions

Pour en savoir plus sur les actions, consultez Répondre aux actions en attente depuis Votre bureau et Effectuer une action manuelle.

Ping

Tester la connectivité

Paramètres

N/A

Date d'exécution

L'action n'est pas en cours d'exécution sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False

Si l'action aboutit (une réponse JSON est renvoyée et la réponse du serveur est "200"), is_success doit être défini sur True. Dans le cas contraire, False.

Mur des cas
Type de résultat Valeur/Description Type (entité/général)
Message de sortie* L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
  • Si l'opération réussit :
    print "Successfully connected to the Atlassian Confluence Server instance with the provided connection parameters!"
  • Si le nom d'utilisateur, le mot de passe et le jeton d'accès personnel sont fournis :
    "Le nom d'utilisateur, le mot de passe et le jeton d'accès personnel sont fournis pour l'intégration. Le jeton d'accès personnel sera utilisé pour la connexion."

L'action doit échouer et arrêter l'exécution d'un playbook :
  • Si le nom d'utilisateur et le mot de passe, ainsi que le PAT ne sont pas fournis :
    print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"
  • En cas d'erreur critique, comme des identifiants incorrects ou une perte de connectivité :
    print "Failed to connect to the Atlassian Confluence Server instance! Error is {0}".format(exception.stacktrace)
Général

Répertorier les pages

Lister les pages disponibles dans l'instance Atlassian Confluence Server en fonction des critères fournis.

Paramètres

Nom du paramètre Type Valeur par défaut Obligatoire Description
Clé de filtre LDD Sélectionnez une option

Valeurs possibles LDD :
  • Titre
  • Nom de l'espace
  • État
Faux Spécifiez la clé à utiliser pour filtrer les pages.
Logique de filtrage LDD Non spécifié

Valeurs possibles LDD :
  • Non spécifié
  • Égal à
  • Contient
Faux Spécifiez la logique de filtrage à appliquer. La logique de filtrage fonctionne en fonction de la valeur fournie dans le paramètre Filter Key.
Valeur du filtre Chaîne N/A Faux Spécifiez la valeur à utiliser dans le filtre.
Si Equal est sélectionné, l'action tente de trouver la correspondance exacte parmi les résultats.
Si Contains est sélectionné, l'action tente de trouver les résultats contenant cette sous-chaîne.
Si aucune valeur n'est fournie pour ce paramètre, le filtre ne sera pas appliqué.
La logique de filtrage fonctionne en fonction de la valeur fournie dans le paramètre Filter Key.
Nombre maximal d'enregistrements à renvoyer Int 50 Faux Indiquez le nombre d'enregistrements à renvoyer.
Si aucune valeur n'est fournie, l'action renvoie 50 enregistrements.

Date d'exécution

L'action n'est pas en cours d'exécution sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False

Si l'action s'exécute correctement (aucune erreur n'est renvoyée et la réponse du serveur est 200 OK), is_success doit être défini sur True.

Résultat JSON
{
   "results": [
       {
           "id": "PAGE_ID",
           "type": "page",
           "status": "current",
           "title": "Tell people what you think in a comment (step 8 of 9)",
           "space": {
               "id": 131073,
               "key": "ds",
               "name": "Demonstration Space",
               "type": "global",
               "_links": {
                   "webui": "/display/ds",
                   "self": "http://192.0.2.45:8090/rest/api/space/ds"
               },
               "_expandable": {
                   "metadata": "",
                   "icon": "",
                   "description": "",
                   "retentionPolicy": "",
                   "homepage": "/rest/api/content/PAGE_ID"
               }
           },
           "extensions": {
               "position": 7
           },
           "_links": {
               "webui": "/pages/viewpage.action?pageId=PAGE_ID",
               "edit": "/pages/resumedraft.action?draftId=DRAFT_ID",
               "tinyui": "/x/AYAB",
               "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID"
           },
           "_expandable": {
               "container": "/rest/api/space/ds",
               "metadata": "",
               "operations": "",
               "children": "/rest/api/content/PAGE_ID/child",
               "restrictions": "/rest/api/content/PAGE_ID/restriction/byOperation",
               "history": "/rest/api/content/PAGE_ID/history",
               "ancestors": "",
               "body": "",
               "version": "",
               "descendants": "/rest/api/content/PAGE_ID/descendant"
           }
       },
       ...
   ],
   "start": 0,
   "limit": 5,
   "size": 5,
   "_links": {
       "self": "http://192.0.2.45:8090/rest/api/content?expand=space",
       "next": "/rest/api/content?expand=space&limit=5&start=5",
       "base": "http://192.0.2.45:8090",
       "context": ""
   }
}
Mur des cas
Type de résultat Valeur/Description Type (entité/général)
Message de sortie* L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

  • Si des données sont disponibles(is_success = true) :
print "Successfully found pages for the provided criteria in Atlassian Confluence Server".

  • Si les données ne sont pas disponibles (is_success=false)
print "Aucune page ne correspond aux critères fournis dans Atlassian Confluence Server"

  • Si "Valeur du filtre" est vide (is_success=true) :
Le filtre n'a pas été appliqué, car le paramètre "Valeur du filtre" est vide.

L'action doit échouer et arrêter l'exécution d'un playbook :

  • Si la clé de filtre est "Sélectionner" et que la logique de filtre est "Égal à" ou "Contient" :
Erreur lors de l'exécution de l'action "{action name}". Raison : vous devez sélectionner un champ dans le paramètre Filter Key.

  • Si une valeur non valide est fournie pour le nombre maximal d'enregistrements à renvoyer  :
Erreur lors de l'exécution de l'action "{action name}". Motif : "La valeur fournie pour "Nombre maximal d'enregistrements à renvoyer" est incorrecte : <valeur fournie>. Vous devez fournir un nombre positif."

  • Si une erreur fatale s'est produite (par exemple, identifiants incorrects, aucune connexion au serveur, etc.) :
"Erreur lors de l'exécution de l'action "{action name}". Raison : {0}''.format(error.Stacktrace)

  • Si vous ne fournissez pas de nom d'utilisateur ni de mot de passe, ni de jeton d'accès personnel :
print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"
Général
Tableau du mur des cas Nom : Pages Confluence disponibles
Colonnes :
  • ID
  • Titre
  • Espace
  • État
  • Création
Général

Obtenir une page par ID

Obtenez la page du serveur Atlassian Confluence par ID.

Paramètres

Nom du paramètre Type Valeur par défaut Obligatoire Description
ID de page Chaîne N/A Vrai Spécifiez l'ID de la page à renvoyer.
Développer CSV body.storage Faux Spécifiez le paramètre "expand" pour renvoyer des informations supplémentaires sur la page. Le paramètre accepte plusieurs valeurs sous forme de liste d'éléments séparés par une virgule.
Par défaut, le contenu de la page est récupéré avec body.storage.

Date d'exécution

L'action n'est pas en cours d'exécution sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False

Si l'action s'exécute correctement (la page est renvoyée et la réponse du serveur est 200 OK), is_success doit être défini sur True.

Résultat JSON
{
   "id": "PAGE_ID",
   "type": "page",
   "status": "current",
   "title": "title",
   "body": {
       "storage": {
           "value": "<p>test page</p><p>11</p><p>aa</p><p>aa</p><p>aa</p><p><br /></p><p><br /></p>",
           "representation": "storage",
           "_expandable": {
               "content": "/rest/api/content/PAGE_ID"
           }
       },
       "_expandable": {
           "editor": "",
           "view": "",
           "export_view": "",
           "styled_view": "",
           "anonymous_export_view": ""
       }
   },
   "extensions": {
       "position": "none"
   },
   "_links": {
       "webui": "/display/SIEM/111",
       "edit": "/pages/resumedraft.action?draftId=PAGE_ID&draftShareId=cf8b3a21-8e36-4a83-a696-51fcb4428d1c",
       "tinyui": "/x/TIAB",
       "collection": "/rest/api/content",
       "base": "http://192.0.2.45:8090",
       "context": "",
       "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID"
   },
   "_expandable": {
       "container": "/rest/api/space/SIEM",
       "metadata": "",
       "operations": "",
       "children": "/rest/api/content/PAGE_ID/child",
       "restrictions": "/rest/api/content/PAGE_ID/restriction/byOperation",
       "history": "/rest/api/content/PAGE_ID/history",
       "ancestors": "",
       "version": "",
       "descendants": "/rest/api/content/PAGE_ID/descendant",
       "space": "/rest/api/space/SIEM"
   }
}
Mur des cas
Type de résultat Valeur/Description Type (entité/général)
Message de sortie* L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

  • Si la page est trouvée (is_success = true) :
print "Successfully fetched page information with id: <id>"

  • Si les données ne sont pas disponibles (is_success=false) :
print "The following page id was not found in the Atlassian Confluence Server: <page id>"

L'action doit échouer et arrêter l'exécution d'un playbook :

  • Si une erreur fatale s'est produite (par exemple, identifiants incorrects, aucune connexion au serveur, etc.) :
"Error executing action "<Action name>". Reason: {0}''.format(error.Stacktrace)

  • Si vous ne fournissez pas de nom d'utilisateur ni de mot de passe, ni de jeton d'accès personnel :
print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"
Général

Obtenir les pages enfants

Obtenez les pages enfants de la page Atlassian Confluence Server.

Paramètres

Nom du paramètre Type Valeur par défaut Obligatoire Description
ID de page Chaîne N/A Vrai Spécifiez l'ID de la page à renvoyer.
Nombre maximal d'enregistrements à renvoyer Int 10 Vrai Spécifiez la limite de pages enfants à renvoyer.

Date d'exécution

L'action n'est pas en cours d'exécution sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False

Si l'action s'exécute correctement (la page est renvoyée et la réponse du serveur est 200 OK), is_success doit être défini sur True.

Résultat JSON
{
   "results": [
       {
           "id": "PAGE_ID",
           "type": "page",
           "status": "current",
           "title": "test child page!",
           "extensions": {
               "position": "none"
           },
           "_links": {
               "webui": "/pages/viewpage.action?pageId=PAGE_ID",
               "edit": "/pages/resumedraft.action?draftId=PAGE_ID&draftShareId=799fd068-5053-4889-9120-c1a3c970fdbd",
               "tinyui": "/x/T4AB",
               "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID"
           },
           "_expandable": {
               "container": "/rest/api/space/SIEM",
               "metadata": "",
               "operations": "",
               "children": "/rest/api/content/PAGE_ID/child",
               "restrictions": "/rest/api/content/PAGE_ID/restriction/byOperation",
               "history": "/rest/api/content/PAGE_ID/history",
               "ancestors": "",
               "body": "",
               "version": "",
               "descendants": "/rest/api/content/PAGE_ID/descendant",
               "space": "/rest/api/space/SIEM"
           }
       }
   ],
   "start": 0,
   "limit": 1,
   "size": 1,
   "_links": {
       "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID/child/page",
       "base": "http://192.0.2.45:8090",
       "context": ""
   }
}
Mur des cas
Type de résultat Valeur/Description Type (entité/général)
Message de sortie* L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

Si des données sont disponibles (is_success = true) :
print "Successfully found child pages for the provided Atlassian Confluence Server page id: <page_id>".

Si aucune donnée n'est disponible (is_success=false) :
print "No child pages were found for the provided Atlassian Confluence Server page id <page_id>"

L'action doit échouer et arrêter l'exécution d'un playbook :

  • Si une valeur non valide est fournie pour le nombre maximal d'enregistrements à renvoyer  :
Erreur lors de l'exécution de l'action "{action name}". Motif : "La valeur fournie pour "Nombre maximal d'enregistrements à renvoyer" est incorrecte : <valeur fournie>. Vous devez fournir un nombre positif."

  • Si une erreur fatale s'est produite (par exemple, identifiants incorrects, aucune connexion au serveur, etc.) :
"Erreur lors de l'exécution de l'action "{action name}". Raison : {0}''.format(error.Stacktrace)
  • Si vous ne fournissez pas de nom d'utilisateur ni de mot de passe, ni de jeton d'accès personnel :
print "Échec de la connexion au serveur Atlassian Confluence. Un nom d'utilisateur et un mot de passe, ou un jeton d'accès personnel sont nécessaires pour se connecter."
Général

Obtenir les commentaires sur une page

Obtenez les commentaires pour la page Atlassian Confluence Server.

Paramètres

Nom du paramètre Type Valeur par défaut Obligatoire Description
ID de page Chaîne N/A Vrai Spécifiez l'ID de la page à renvoyer.
Développer CSV body.storage Faux Spécifiez le paramètre "expand" pour renvoyer des informations supplémentaires sur la page. Le paramètre accepte plusieurs valeurs sous forme de liste d'éléments séparés par une virgule.
Par défaut, le contenu de la page est récupéré avec body.storage.
Nombre maximal d'enregistrements à renvoyer Int 10 Vrai Spécifiez la limite de pages enfants à renvoyer.

Date d'exécution

L'action n'est pas en cours d'exécution sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False

Si l'action s'exécute correctement (les commentaires sont renvoyés et la réponse du serveur est 200 OK), is_success doit être défini sur True.

Résultat JSON
{
   "results": [
       {
           "id": "ID",
           "type": "comment",
           "status": "current",
           "title": "Re: 111",
           "body": {
               "storage": {
                   "value": "<p>comment1</p>",
                   "representation": "storage",
                   "_expandable": {
                       "content": "/rest/api/content/ID"
                   }
               },
               "_expandable": {
                   "editor": "",
                   "view": "",
                   "export_view": "",
                   "styled_view": "",
                   "anonymous_export_view": ""
               }
           },
           "extensions": {
               "location": "footer",
               "_expandable": {
                   "resolution": ""
               }
           },
           "_links": {
               "webui": "/display/SIEM/111?focusedCommentId=98387#comment-ID",
               "self": "http://203.0.113.1:8090/rest/api/content/ID"
           },
           "_expandable": {
               "container": "/rest/api/content/ID",
               "metadata": "",
               "operations": "",
               "children": "/rest/api/content/ID/child",
               "restrictions": "/rest/api/content/ID/restriction/byOperation",
               "history": "/rest/api/content/ID/history",
               "ancestors": "",
               "version": "",
               "descendants": "/rest/api/content/ID/descendant",
               "space": "/rest/api/space/SIEM"
           }
       },
       ...
   ],
   "start": 0,
   "limit": 10,
   "size": 2,
   "_links": {
       "self": "http://203.0.113.1:8090/rest/api/content/ID/child/comment?expand=body.storage",
       "base": "http://203.0.113.1:8090",
       "context": ""
   }
}
Mur des cas
Type de résultat Valeur/Description Type (entité/général)
Message de sortie* L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

  • Si des données sont disponibles(is_success = true) :
print "Successfully fetched page comments for the provided Atlassian Confluence Server page id: <page_id>".

  • Si les données ne sont pas disponibles (is_success=false)
print "Aucun commentaire de page n'a été trouvé pour l'ID de page Atlassian Confluence Server <page_id> fourni"

L'action doit échouer et arrêter l'exécution d'un playbook :

  • Si une valeur non valide est fournie pour le nombre maximal d'enregistrements à renvoyer  :
Erreur lors de l'exécution de l'action "{action name}". Motif : "La valeur fournie pour "Nombre maximal d'enregistrements à renvoyer" est incorrecte : <valeur fournie>. Vous devez fournir un nombre positif."

  • Si une erreur fatale s'est produite (par exemple, identifiants incorrects, aucune connexion au serveur, etc.) :
"Erreur lors de l'exécution de l'action "{action name}". Raison : {0}''.format(error.Stacktrace)

  • Si vous ne fournissez pas de nom d'utilisateur ni de mot de passe, ni de jeton d'accès personnel :
print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"
Général

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.