Integrar o Atlassian Confluence Server ao Google SecOps

Este documento descreve como integrar o Atlassian Confluence Server ao Google Security Operations (Google SecOps).

Versão da integração: 3.0

Pré-requisitos

Para autenticar no Confluence Server, escolha uma das seguintes opções:

  • O nome de usuário e a senha de uma conta dedicada.
  • O token de acesso pessoal (PAT, na sigla em inglês).

Se as duas opções de autenticação forem fornecidas para a integração, o PAT terá prioridade sobre o nome de usuário e a senha.

A autenticação baseada em nome de usuário e senha exige a criação de uma conta dedicada que será usada para a integração.
A autenticação baseada no token de acesso exige a configuração de permissões da conta. Quando criado, o novo PAT vai corresponder ao nível de permissão atual da conta.

Para criar um token, siga estas etapas:

  1. No Confluence, acesse Conta > Configurações da conta > Tokens de acesso pessoal.
  2. Selecione Criar token.
  3. Dê um nome ao token que você está criando.
  4. (Opcional) Para mais segurança, configure o token para expirar automaticamente após um número definido de dias.
  5. Clique em Criar.

Parâmetros de integração

A integração requer os seguintes parâmetros:

Nome do parâmetro Tipo Valor padrão É obrigatório Descrição
Raiz da API String https://ip_address Verdadeiro Especifique a raiz da API do servidor do Confluence a que se conectar.
Nome de usuário String N/A Falso Especifique um nome de usuário para usar na conexão. A integração é compatível com a autenticação por nome de usuário e senha ou por token de acesso pessoal.
Senha Senha N/A Falso Especifique uma senha para usar na conexão. A integração é compatível com a autenticação por nome de usuário e senha ou por token de acesso pessoal.
Token de acesso pessoal Senha N/A Falso Especifique um token para usar na conexão. A integração é compatível com a autenticação por nome de usuário e senha ou por token de acesso pessoal.
Verificar SSL Caixa de seleção Caixa de seleção marcada Falso Se ativado, o certificado configurado para a raiz da API será validado.

Para instruções sobre como configurar uma integração no Google SecOps, consulte Configurar integrações.

É possível fazer mudanças mais tarde, se necessário. Depois de configurar uma instância de integração, você pode usá-la em playbooks. Para mais informações sobre como configurar e oferecer suporte a várias instâncias, consulte Suporte a várias instâncias.

Ações

Para mais informações sobre ações, consulte Responder a ações pendentes da sua mesa de trabalho e Realizar uma ação manual.

Ping

Testar a conectividade.

Parâmetros

N/A

Data de execução

A ação não está sendo executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script Opções de valor Exemplo
is_success Verdadeiro/Falso is_success:False

Se a ação for bem-sucedida (há um JSON na resposta e a resposta do servidor é 200), is_success será definido como True. Caso contrário, False.

Painel de casos
Tipo de resultado Valor/descrição Tipo (entidade/geral)
Mensagem de saída* A ação não pode falhar nem interromper a execução de um playbook:
  • Se a conexão for bem-sucedida:
    print "Successfully connected to the Atlassian Confluence Server instance with the provided connection parameters!"
  • Se o nome de usuário, a senha e o PAT forem fornecidos:
    "O nome de usuário, a senha e o token de acesso pessoal são fornecidos para a integração. O token de acesso pessoal será usado para se conectar com"

A ação precisa falhar e interromper a execução de um playbook:
  • Se o nome de usuário e a senha e o PAT não forem fornecidos:
    print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"
  • Se for um erro crítico, como credenciais incorretas ou perda de conectividade:
    print "Failed to connect to the Atlassian Confluence Server instance! O erro é {0}".format(exception.stacktrace)
Geral

Listar páginas

Liste as páginas disponíveis na instância do Atlassian Confluence Server com base nos critérios fornecidos.

Parâmetros

Nome do parâmetro Tipo Valor padrão É obrigatório Descrição
Chave de filtro DDL Selecionar um

Valores possíveis da DDL:
  • Título
  • Nome do espaço
  • Status
Falso Especifique a chave que precisa ser usada para filtrar páginas.
Lógica de filtro DDL Não especificado

Valores possíveis de DDL:
  • Não especificado
  • Igual
  • Contém
Falso Especifique qual lógica de filtro deve ser aplicada. A lógica de filtragem está funcionando com base no valor fornecido no parâmetro Filter Key.
Valor do filtro String N/A Falso Especifique o valor que será usado no filtro.
Se Equal estiver selecionado, a ação vai tentar encontrar a correspondência exata entre os resultados.
Se Contains estiver selecionado, a ação vai tentar encontrar resultados que contenham essa substring.
Se nada for fornecido nesse parâmetro, o filtro não será aplicado.
A lógica de filtragem funciona com base no valor fornecido no parâmetro Filter Key.
Número máximo de registros a serem retornados Int 50 Falso Especifique quantos registros retornar.
Se nada for fornecido, a ação vai retornar 50 registros.

Data de execução

A ação não está sendo executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script Opções de valor Exemplo
is_success Verdadeiro/Falso is_success:False

Se a ação for executada sem erros e a resposta do servidor for 200 OK, is_success será definido como True.

Resultado 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": ""
   }
}
Painel de casos
Tipo de resultado Valor/descrição Tipo (entidade/geral)
Mensagem de saída* A ação não pode falhar nem interromper a execução de um playbook:

  • Se os dados estiverem disponíveis(is_success = true):
print "Successfully found pages for the provided criteria in Atlassian Confluence Server".

  • Se os dados não estiverem disponíveis (is_success=false)
print "Nenhuma página foi encontrada para os critérios fornecidos no Atlassian Confluence Server"

  • Se "Valor do filtro" estiver vazio (is_success=true):
O filtro não foi aplicado porque o parâmetro "Valor do filtro" está vazio.

A ação deve falhar e interromper uma execução do playbook:

  • Se a chave do filtro for "Select One" e a lógica do filtro for "Equal" ou "Contains":
Erro ao executar a ação "{action name}". Motivo: é necessário selecionar um campo no parâmetro Filter Key.

  • Se um valor inválido for fornecido para "Número máximo de registros a serem retornados":
Erro ao executar a ação "{action name}". Motivo: "Um valor inválido foi fornecido para "Número máximo de registros a serem retornados": <valor fornecido>. Forneça um número positivo".

  • Se o erro for fatal, como credenciais incorretas, sem conexão com o servidor, outro:
"Erro ao executar a ação "{action name}". Motivo: {0}''.format(error.Stacktrace)

  • Se nem o nome de usuário e a senha nem o PAT forem fornecidos:
print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"
Geral
Tabela do painel de casos Nome:Páginas do Confluence disponíveis
Colunas:
  • ID
  • Título
  • Espaço
  • Status
  • Criado
Geral

Receber página por ID

Recebe a página do Atlassian Confluence Server por ID.

Parâmetros

Nome do parâmetro Tipo Valor padrão É obrigatório Descrição
ID da página String N/A Verdadeiro Especifique o ID da página a ser retornada.
Abrir CSV body.storage Falso Especifique o parâmetro "expand" para retornar mais informações sobre a página. O parâmetro aceita vários valores como uma lista separada por vírgulas.
Por padrão, o conteúdo da página é buscado com body.storage.

Data de execução

A ação não está sendo executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script Opções de valor Exemplo
is_success Verdadeiro/Falso is_success:False

Se a ação for executada corretamente (a página é retornada, a resposta do servidor é 200 OK), is_success será definido como True.

Resultado 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"
   }
}
Painel de casos
Tipo de resultado Valor/descrição Tipo (entidade/geral)
Mensagem de saída* A ação não pode falhar nem interromper a execução de um playbook:

  • Se a página for encontrada (is_success = true):
print "Successfully fetched page information with id: <id>"

  • Se os dados não estiverem disponíveis (is_success=false):
print "O ID de página a seguir não foi encontrado no Atlassian Confluence Server: <page id>"

A ação vai falhar e interromper a execução de um playbook:

  • Se o erro for fatal, como credenciais incorretas, sem conexão com o servidor, outro:
"Error executing action "<Action name>". Reason: {0}''.format(error.Stacktrace)

  • Se o nome de usuário + senha e o PAT não forem fornecidos:
print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"
Geral

Receber páginas secundárias

Recebe páginas secundárias da página do Atlassian Confluence Server.

Parâmetros

Nome do parâmetro Tipo Valor padrão É obrigatório Descrição
ID da página String N/A Verdadeiro Especifique o ID da página a ser retornada.
Número máximo de registros a serem retornados Int 10 Verdadeiro Especifique o limite de páginas secundárias a serem retornadas.

Data de execução

A ação não está sendo executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script Opções de valor Exemplo
is_success Verdadeiro/Falso is_success:False

Se a ação for executada corretamente (a página é retornada, a resposta do servidor é 200 OK), is_success será definido como True.

Resultado 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": ""
   }
}
Painel de casos
Tipo de resultado Valor/descrição Tipo (entidade/geral)
Mensagem de saída* A ação não pode falhar nem interromper a execução de um playbook:

se os dados estiverem disponíveis (is_success = true):
print "Successfully found child pages for the provided Atlassian Confluence Server page id: <page_id>".

Se os dados não estiverem disponíveis (is_success=false)
print "No child pages were found for the provided Atlassian Confluence Server page id <page_id>"

A ação precisa falhar e interromper a execução de um playbook:

  • Se um valor inválido for fornecido para "Número máximo de registros a serem retornados":
Erro ao executar a ação "{action name}". Motivo: "Um valor inválido foi fornecido para "Número máximo de registros a serem retornados": <valor fornecido>. Forneça um número positivo".

  • Se o erro for fatal, como credenciais incorretas, sem conexão com o servidor, outro:
"Erro ao executar a ação "{action name}". Motivo: {0}''.format(error.Stacktrace)
  • Se o nome de usuário + senha e o PAT não forem fornecidos:
print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"
Geral

Receber comentários da página

Recebe comentários da página do Atlassian Confluence Server.

Parâmetros

Nome do parâmetro Tipo Valor padrão É obrigatório Descrição
ID da página String N/A Verdadeiro Especifique o ID da página a ser retornada.
Abrir CSV body.storage Falso Especifique o parâmetro "expand" para retornar mais informações sobre a página. O parâmetro aceita vários valores como uma lista separada por vírgulas.
Por padrão, o conteúdo da página é buscado com body.storage.
Número máximo de registros a serem retornados Int 10 Verdadeiro Especifique o limite de páginas secundárias a serem retornadas.

Data de execução

A ação não está sendo executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script Opções de valor Exemplo
is_success Verdadeiro/Falso is_success:False

Se a ação for executada corretamente (os comentários forem retornados e a resposta do servidor for 200 OK), is_success será definido como True.

Resultado 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": ""
   }
}
Painel de casos
Tipo de resultado Valor/descrição Tipo (entidade/geral)
Mensagem de saída* A ação não pode falhar nem interromper a execução de um playbook:

  • Se os dados estiverem disponíveis(is_success = true):
print "Successfully fetched page comments for the provided Atlassian Confluence Server page id: <page_id>".

  • Se os dados não estiverem disponíveis (is_success=false)
print "Nenhum comentário de página foi encontrado para o ID da página do Atlassian Confluence Server <page_id>"

A ação precisa falhar e interromper a execução de um playbook:

  • Se um valor inválido for fornecido para "Número máximo de registros a serem retornados":
Erro ao executar a ação "{action name}". Motivo: "Um valor inválido foi fornecido para "Número máximo de registros a serem retornados": <valor fornecido>. Forneça um número positivo".

  • Se o erro for fatal, como credenciais incorretas, sem conexão com o servidor, outro:
"Erro ao executar a ação "{action name}". Motivo: {0}''.format(error.Stacktrace)

  • Se o nome de usuário + senha e o PAT não forem fornecidos:
print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"
Geral

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.