# Token Hook Bridge

## Requisitos

Linux Control Center = 2.10.X ou superior

## Ovewview

O *Hook Bridge* do LCC é uma funcionalidade que permite a execução automatizada de Ações em redes específicas por meio de requisições Web. Cada requisição contém um **Token** de autorização que define qual Ações será executada e em qual rede (CIDR). Essas ações são pré-configuradas no momento da criação do Token, garantindo que apenas *Ações* autorizadas sejam executadas.

O *Hook Bridge* também é utilizado para facilitar integrações com o Linux Control Center. Servindo como um ponto de acesso, esta funcionalidade permite que o usuário execute ações pré configuradas no LCC sem necessáriamente estar logado na Console mas ainda assim garantindo alta rastreabilidade do fluxo e múltiplas opções de acompanhamento da execução.

1. Veja o fluxo de funcionamento do **Hook Bridge** com *Propagation Action* do BeyondTrust Password Safe.

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-5c2d7596a161de92ae0e2c67c126f7b688006cb9%2Foverview_hook_bridge.jpg?alt=media)

## Objetivo

O objetivo deste documento é prover o passo a passo e demonstrar a utilização da funcionalidade **Hook Bridge** do Linux Control Center.

## Token do Hook Bridge

1. Acesse a tela **Hook Bridge** no menu lateral esquerdo.

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-3968c8016f628e8c4d5852d59959ee777555774f%2Fhook-bridge-dashboard.png?alt=media)
2. Clique em **Create**.

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-76758e438d7d1253808c0f8c97e23d41eae61423%2Fbotao_create.png?alt=media)
3. Preencha o campo **Name**.

   **Name**: Nome para identificar o *Hook Bridge*.<br>
4. Escolha o **CIDR** cadastrado na base de dados do LCC.

   **CIDRs**: Define qual faixa de endereço IP (CIDR) o Token terá acesso para executar as *Ações*.<br>

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-09b9097b41e4e4ae64731d38a998c7f0aa8ce652%2Fbotao_escolher_cidr.png?alt=media)
5. Também é possível criar uma nova **CIDR**, para isso, clique no sinal **+**

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-371cf561013e2e4a872acb3adaf92dde7ccc6315%2Fbotao_criar_cidr.png?alt=media)
6. Preencha os campos necessários, sendo;

   **Name:** Nome para identificar a *CIDR.*\
   **CIDR:** Insira a faixa de endereço IP seguido da máscara da rede. Ex: 192.168.0.0/24<br>
7. Clique em **Save**.

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-52784e00583f928306fa33296d53f811938e4741%2Fbotao_save_cidr.png?alt=media)
8. Defina a *Ação* no campo **Action**

   **Action**: Define qual *Ação* o *Token* terá permissão para executar.<br>

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-e10fe9a5013af35277db22831c30ca460b13070b%2Fcampo_action.png?alt=media)
9. Escolha o método de login do *Token* no campo *Login Type*.

   **Login Type**: Define o tipo de autenticação do *Token*, se será o *Request Credential* ou o *System Configuration*.<br>

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-b41205d8124a33c5c3edcb5f99675528cc5169c5%2Fcampo_login_type.png?alt=media)

* Diferença entre Login Type *System Configuration* e *Request Credential*.

{% hint style="info" %}
Ao selecionar **Request Credentials** como tipo de login, a requisição deve **obrigatoriamente** conter o usuário e senha com permissão de acesso ao Host de destino, juntamente com o *Token*, servindo como dupla autenticação.

Com a opção **System Configuration**, o usuário pode executar a Ação configurada apenas com o *Token* como autenticação.
{% endhint %}

1. Verifique se os campos foram preenchidos corretamente e clique em **Save**.

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-64f3160e718c82d961f72fe7d3f8a7629b7272d3%2Fbotao_save_hook_bridge.png?alt=media)

## Parâmetros de Requisição

* O *Token* serve para limitar qual *Ação* será executada e para realizar autenticação, mas não define em qual *Host* a Ação será executada. Para isso definir o Host, o LCC disponibiliza alguns parâmetros que permitem configurar a requisição conforme a necessidade.

{% hint style="info" %}
A URL da requisição deve conter Host e/ou Hostname para definir em qual Host a Ação será executada. Quando enviado apenas um deles, a busca será feita pelo parâmetro informado.

Se ambos os parâmetros forem informados, a busca será realizada usando os dois. Isso significa que, se o *Hostname* não estiver associado ao parâmetro *Host* fornecido, o match não será feito, e a requisição retornará um erro informando o ocorrido.
{% endhint %}

### Login Type *Request Configuration*

* Veja como montar uma requisição com Login Type *Request Configuration*. **Observação: Sempre utilize o sinal & para unir cada um dos argumentos.**

*Argumentos do Login Type Request Configuration:*

* **token:** Token que foi gerado na Console do LCC.<br>
* **username:** Usuário utilizado para fazer login no Host.<br>
* **password:** Senha utilizada para fazer login no Host.<br>
* **host:** Endereço IPV4 do host em que a Ação será executada.<br>
* **hostname:** Hostname do host em que a Ação será executada.<br>

1. A requisição precisa iniciar com o **Endereço IP** ou o **Hostname** do Linux Control Center
   * https\://**ip\_ou\_hostname\_do\_lcc**/
2. Em seguida, insira o endpoint da API */api/v2/hook\_bridge/request/action/*
   * <https://ip\\_ou\\_hostname\\_do\\_lcc/**api/v2/hook\\_bridge/request/action/>\*\*
3. Após colocar o endpoint, coloque o **ID** do Hook Bridge com o sinal **?** logo em seguida. O ID está disponível no campo *ID* do Hook Bridge.

   * <https://ip\\_ou\\_hostname\\_do\\_lcc/api/v2/hook\\_bridge/request/action/**1>?\*\*

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-4023ee9051accedc02607eb44086d05e1f445196%2Fcampo_id.png?alt=media)
4. Defina o endereço IP no parâmetro **host=** e/ou o **hostname=** do Host em que a ação será executada.
   * <https://ip\\_ou\\_hostname\\_do\\_lcc/api/v2/hook\\_bridge/request/action/1?**host=10.15.88.4>\*\*
   * <https://ip\\_ou\\_hostname\\_do\\_lcc/api/v2/hook\\_bridge/request/action/1?**hostname=lcc-ubuntu-22>\*\*
5. Defina os argumentos de autenticação **\&username=** e o **\&password=** que serão responsáveis por realizar o login no servidor em que as açõe serão executadas.
   * <https://ip-ou-hostname-do-lcc/api/v2/hook-bridge/request/action/1?host=10.15.88.&#x34;**\\&username=USUARIO\\_HOOKBRIDGE\\&password=SENHA\\_HOOKBDRIGE>\*\*
6. Defina o *Token* da requisição com o parâmetro **\&token=**

* O Campo *Token* é obtido no campo **Token** na tela do Hook Bridge.

  ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-4595e15bde27501f57b7ee870625a0f4545b6be9%2Fcampo_token.png?alt=media)

  * <https://ip-ou-hostname-do-lcc/api/v2/hook-bridge/request/action/1?host=10.15.88.4\\&username=USUARIO\\_HOOKBRIDGE\\&password=SENHA\\_HOOKBDRIG&#x45;**\\&token=YfNa1UKBlMV7nLpa>\*\*

1. Veja o exemplo de uma requisição *Request Configuration* completa com o utilitário **curl**:
   * Terminal Windows: **curl.exe -k "<https://ip-ou-hostname-do-lcc/api/v2/hook-bridge/request/action/1?host=10.15.88.4\\&username=USUARIO\\_HOOKBRIDGE\\&password=SENHA\\_HOOKBDRIGE\\&token=YfNa1UKBlMV7nLpa>"**
   * Terminal Linux: **curl -k "<https://ip-ou-hostname-do-lcc/api/v2/hook-bridge/request/action/1?host=10.15.88.4\\&username=USUARIO\\_HOOKBRIDGE\\&password=SENHA\\_HOOKBDRIGE\\&token=YfNa1UKBlMV7nLpa>"**

### Login Type *System Configuration*

* Veja como montar uma requisição com Login Type *System Configuration*. **Observação: sempre utilize o sinal & para unir cada um dos argumentos.**
* *Argumentos Login Type System Configuration:*
* **token:** Token que foi gerado na Console do LCC.<br>
* **host:** Endereço IPV4 do host em que a Ação será executada.<br>
* **hostname:** Hostname do host em que a Ação será executada.<br>

> Veja que a única diferença é que o Login Type *System Configuration* não precisa dos argumentos *username e password*

1. A requisição precisa iniciar com o **Endereço IP** ou o **Hostname** do Linux Control Center
   * https\://**ip\_ou\_hostname\_do\_lcc**/
2. Em seguida, insira o endpoint da API */api/v2/hook\_bridge/request/action/*
   * <https://ip\\_ou\\_hostname\\_do\\_lcc/**api/v2/hook\\_bridge/request/action/>\*\*
3. Após colocar o endpoint, coloque o valor do **ID** do Hook Bridge com o sinal **?** logo em seguida. O ID está disponível no campo *ID* do Hook Bridge.

   * <https://ip\\_ou\\_hostname\\_do\\_lcc/api/v2/hook\\_bridge/request/action/**1>?\*\*

   ![](https://gitlab.com/7dev-doc/linux-control-center/-/blob/main/pt-br/images/hook-bridge/execute-hook-bridge)
4. Defina o endereço IP no parâmetro **host=** e/ou o **hostname=** do Host em que a ação será executada.
   * <https://ip\\_ou\\_hostname\\_do\\_lcc/api/v2/hook\\_bridge/request/action/1?**host=10.15.88.4>\*\*
   * <https://ip\\_ou\\_hostname\\_do\\_lcc/api/v2/hook\\_bridge/request/action/1?**hostname=lcc-ubuntu-22>\*\*

* Veja um exemplo de utilização dos dois argumentos simultaneamente;
  * <https://ip\\_ou\\_hostname\\_do\\_lcc/api/v2/hook\\_bridge/request/action/1?**host=10.15.88.4\\&hostname=lcc-ubuntu-22>\*\*

1. Defina o *Token* da requisição com o parâmetro **\&token=**
   * <https://ip-ou-hostname-do-lcc/api/v2/hook-bridge/request/action/1?host=10.15.88.&#x34;**\\&token=YfNa1UKBlMV7nLpa>\*\*
2. Veja o exemplo de uma requisição *System Configuration* completa com o utilitário **CURL**:
   * Terminal Windows: **curl.exe -k "<https://ip-ou-hostname-do-lcc/api/v2/hook-bridge/request/action/1?host=10.15.88.4\\&token=YfNa1UKBlMV7nLpa>"**
   * Terminal Linux: **curl -k "<https://ip-ou-hostname-do-lcc/api/v2/hook-bridge/request/action/1?host=10.15.88.4\\&token=YfNa1UKBlMV7nLpa>"**

### Ação *Custom Script* com o Login Type *Script Configuration*

{% hint style="info" %}
Ao selecionar a opção *Script Configuration*, o login será efetuado na máquina de acordo com as configurações registradas na aba *Credential* do *Script*, não sendo necessário informar o parâmetro Username ou Password como arg da requisição. Também é possível utilizar o *Login Type* Request Credential.

Esta Ação permite utilizar apenas 1 script para cada *Token*, sendo possível altera-lo sempre que necessário.
{% endhint %}

1. Clique em **Action** e escolha a opção **Custom Script**.

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-8b863cd9b5a5a57beb5561cae7e224354e4fd4f5%2Faction_custom_script.png?alt=media)
2. Clique em **Login Type** e escolha a opção **Script Configuration**

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-5a9de286a627f5686935b37a8979cf97066072b7%2Flogin_type_script.png?alt=media)
3. Clique em **Script** e defina qual script será executado pelo *Token*

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-23d8f31c3d0ca25b1d1e38502a602884fc47f622%2Fscript_winrm.png?alt=media)
4. Clique em **Save**

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-7f036e8b41290b2f19d0ec3694463fe18b439ad8%2Fbotao_save_custom_script.png?alt=media)

* *Argumentos Login Type Script Configuration:*
* **token:** Token que foi gerado na Console do LCC.<br>
* **host:** Endereço IPV4 do host em que a Ação será executada.<br>
* **hostname:** Hostname do host em que a Ação será executada.<br>

## Logs de Requisições

### Hook Bridge Request

1. Acesse a tela Hook Brigde

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-3968c8016f628e8c4d5852d59959ee777555774f%2Fhook-bridge-dashboard.png?alt=media)
2. Clique no Hook Bridge desejado.

   ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-d2d59b06842f9f75cf70a4165e1f1fe6976c088a%2Fbotao_hook_requests.png?alt=media)
3. Nesta página é possível ver todo o histórico de execuções para o Hook Bridge selecionado.

* Host: em que a requisição foi executada.<br>
* Status: Resultado da requisição.<br>
* Data e Hora de Criação e ultima Atualização.<br>
* Logs: Informações detalhadas do resultado da requisição.<br>

  ![](https://3122590582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FytotrgCSM7abU2RFWBCP%2Fuploads%2Fgit-blob-a2de228eb6b615feb7ba711a59ad6487c01ee4fd%2Fhook-bridge-request-6.png?alt=media)

O campo **STATUS** conta com um identificador para cada etapa do processo como:

* Solicitado
* Em fila
* Executando
* Sucesso
* Erro
* Sem licença
* Cancelado
