Generare token per autenicarsi sulle API di GitHub

in DevOps,

Nell'ottica di ottimizzare sempre di più i processi, diventa naturale dover eseguire chiamate REST alle API di GitHub per automatizzare determinate operazioni. Tuttavia, non è sempre possibile utilizzare il token di GitHub (il GITHUB_TOKEN), perché questo ha effetto solo nel repository dove risiede il workflow. Infatti, può essere che dobbiamo andare a modificare dei flussi a livello di organizzazione, che vanno tra più repository e così via. In questo caso, sarebbe necessario utilizzare un PAT (Personal Access Token), ma questo ha, per l'appunto, l'identificativo dell'utente che l'ha generato. Sebbene in alcuni casi potrebbe non rappresentare un problema, se il token dovesse essere esposto, chi lo sfrutta potrà accedere a cose alla quale altrimenti non avrebbe avuto accesso e diventerebbe difficile fare la revoke del token in modo efficace.

Per questo motivo, possiamo utilizzare la libreria gh-token, che, genera appunto un token a partire da una GitHub App. Questa, infatti, funge da utenza di servizio. Il token generato da essa avrà una vita limitata allo scope del workflow, pertanto non potrà essere esfiltrato. Vediamo come installarlo:

steps:
- bash: gh extension install Link-/gh-token
  name: Install gh-token extension

- bash: |
    APP_TOKEN=$(gh token generate --base64_key <cert> --app_id <app-id> --install_jwt_cli --hostname 'api.github.com' | jq -r ".token")
    echo "APP_TOKEN=${APP_TOKEN}" >> $GITHUB_OUTPUT
  id: token
  name: Get token

Di fatto, il processo consiste nel richiedere alla CLI di GitHub l'installazione dell'estensione ad-hoc di gh-token, per poi generare il token data la GitHub App, creata in precedenza. Una volta ottenuto il token, lo esportiamo nella GITHUB_OUTPUT, così che possa essere utilizzata negli step successivi del workflow.

- name: Call authenticated API endpoint
  uses: actions/github-script@v6
  with:
    github-token: ${{ steps.token.outputs.APP_TOKEN }}
    script: |
      echo "Doing something with my token"

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi