Intégrer Atlassian Confluence Server à Google SecOps

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

Prérequis

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

  • Le nom d'utilisateur et le mot de passe d'un compte dédié.
  • Le 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 un nom d'utilisateur et un 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 de configurer les autorisations du compte. Une fois créé, le nouveau jeton d'accès personnel correspondra 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 personnels.
  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 Est obligatoire Description
Racine de l'API Chaîne https://ip_address Vrai Spécifiez la racine de l'API du serveur Confluence auquel 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 accepte 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 accepte 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 accepte 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 savoir comment configurer une intégration dans Google SecOps, consultez Configurer des intégrations.

Vous pourrez apporter des modifications ultérieurement si nécessaire. Après avoir configuré une instance d'intégration, vous pouvez l'utiliser dans des playbooks. Pour en savoir plus sur la configuration et la prise en charge de plusieurs instances, consultez Prendre en charge plusieurs instances.

Actions

Pour en savoir plus sur les actions, consultez Répondre aux actions en attente depuis votre bureau et Exécuter une action manuelle dans votre demande.

Ping

Tester la connectivité

Paramètres

N/A

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 réussit (un fichier JSON est présent dans la réponse et la réponse du serveur est 200), is_success doit être défini sur True. Sinon, 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 :
    affiche "Successfully connected to the Atlassian Confluence Server instance with the provided connection parameters!" (Connexion à l'instance Atlassian Confluence Server établie avec les paramètres de connexion fournis).
  • 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 ni le nom d'utilisateur et le mot de passe, ni le PAT ne sont 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

Répertorie 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 Est obligatoire Description
Clé du filtre LDD Sélectionnez une option

Valeurs possibles de la 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 pour le LDD :
  • Non spécifié
  • Égal à
  • Contient
Faux Spécifiez la logique de filtre à 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 des 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 Spécifiez le nombre d'enregistrements à renvoyer.
Si rien n'est fourni, l'action renvoie 50 enregistrements.

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, 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 "No pages were found for the provided criteria in 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}". Motif : vous devez sélectionner un champ dans le paramètre Filter Key.

  • Si une valeur non valide est fournie pour "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" n'est pas valide : <valeur fournie>. Veuillez indiquer un nombre positif."

  • En cas d'erreur fatale (identifiants incorrects, absence de connexion au serveur, etc.) :
"Erreur lors de l'exécution de l'action "{action name}". Reason: {0}''.format(error.Stacktrace)

  • Si le nom d'utilisateur, le mot de passe et le jeton d'accès personnel ne sont pas fournis :
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 une page Atlassian Confluence Server par ID.

Paramètres

Nom du paramètre Type Valeur par défaut Est 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.

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, 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 du playbook :

  • En cas d'erreur fatale (identifiants incorrects, absence de connexion au serveur, etc.) :
"Error executing action "<Action name>". Reason: {0}''.format(error.Stacktrace)

  • Si le nom d'utilisateur, le mot de passe et le jeton d'accès personnel ne sont pas fournis :
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 Est 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.

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, 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 "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" n'est pas valide : <valeur fournie>. Veuillez indiquer un nombre positif."

  • En cas d'erreur fatale (identifiants incorrects, absence de connexion au serveur, etc.) :
"Erreur lors de l'exécution de l'action "{action name}". Reason: {0}''.format(error.Stacktrace)
  • Si le nom d'utilisateur, le mot de passe et le jeton d'accès personnel ne sont pas fournis :
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 commentaires d'une page

Obtenez les commentaires de la page Atlassian Confluence Server.

Paramètres

Nom du paramètre Type Valeur par défaut Est 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.

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, 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 "No page comments 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 "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" n'est pas valide : <valeur fournie>. Veuillez indiquer un nombre positif."

  • En cas d'erreur fatale (identifiants incorrects, absence de connexion au serveur, etc.) :
"Erreur lors de l'exécution de l'action "{action name}". Reason: {0}''.format(error.Stacktrace)

  • Si le nom d'utilisateur, le mot de passe et le jeton d'accès personnel ne sont pas fournis :
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.