GitHub Personal Access Token (PAT) — autenticazione sicura su GitHub
Introduzione
Il GitHub Personal Access Token (PAT), ovvero “token di accesso personale”, è un metodo moderno per autenticarsi in sicurezza sulla piattaforma GitHub.
Da agosto 2021 GitHub non supporta più l’uso delle password per le operazioni Git tramite HTTPS. Ciò significa che qualsiasi operazione che prima richiedeva una password ora richiede un token. Il PAT permette di:
- accedere in sicurezza ai repository;
- lavorare con le API di GitHub;
- automatizzare processi in script, CI/CD e altri strumenti senza rischiare la compromissione dell’account.
In breve: il PAT è una “chiave” che fornisce accesso limitato, può essere facilmente revocata e ha una data di scadenza.
Perché usare un PAT
L’obiettivo principale del PAT è garantire la sicurezza del lavoro su GitHub, mantenendo la comodità.
Funzioni principali:
- Sicurezza
Una password concede l’accesso completo all’account. In caso di fuga di dati, tutto è a rischio. Il token può essere limitato per permessi e durata. - Automazione
Script, CI/CD, bot e altri strumenti possono usare il PAT invece di inserire manualmente nome utente e password. - Controllo degli accessi
È possibile creare più token con permessi diversi per compiti differenti. Se un token viene compromesso, può essere revocato senza influire sugli altri.
Tipi di token
GitHub offre due tipi di token:
- Classic (classico)
- L’accesso è definito tramite scopes (es.
repo,workflow). - Concede diritti su tutti i repository dell’utente.
- Facile da usare ma meno flessibile.
- L’accesso è definito tramite scopes (es.
- Fine-grained (dettagliato)
- Permette di limitare l’accesso a repository specifici.
- Si possono assegnare permessi precisi, es. “solo lettura delle issues”.
- Le organizzazioni possono richiedere l’approvazione per questi token.
💡 Suggerimento: usare i token fine-grained quando sicurezza e limitazione degli accessi sono importanti; classic per compatibilità con strumenti più vecchi.
Come creare un PAT
Passo 1: Vai alle impostazioni
- Apri GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic).
Passo 2: Crea un nuovo token
- Clicca su Generate new token (classic).
- Dai un nome al token (Note), ad esempio
CI-tokenoGit-PC. - Imposta la scadenza — consigliati 90 giorni o 1 anno.
- Seleziona i permessi necessari (Scopes) — minimo per Git:
repo, per Actions:workflow. - Genera il token e salvalo immediatamente — sarà visibile solo una volta.
Utilizzo del PAT
1. Git tramite HTTPS
git clone https://github.com/username/repo.git
# Username: il tuo GitHub username
# Password: token generato
Per non inserire il token ogni volta, è possibile memorizzarlo nella cache:
git config --global credential.helper manager # Windows/Mac
git config --global credential.helper 'cache --timeout=3600' # Linux
2. Lavorare con l’API GitHub
$token = Get-Secret -Name GitHubToken # recupero sicuro del token
$headers = @{ Authorization = "token $token" }
$repos = Invoke-RestMethod -Uri "https://api.github.com/user/repos" -Headers $headers
$repos | ForEach-Object { $_.name }
Creare una issue:
$body = @{
title = "Nuovo task di test"
body = "Descrizione del task"
} | ConvertTo-Json
Invoke-RestMethod -Uri "https://api.github.com/repos/username/repo/issues" `
-Method Post `
-Headers $headers `
-Body $body
3. CI/CD e script
$token = Get-Secret -Name GitHubToken
git config --global user.name "CI Bot"
git config --global user.email "ci@example.com"
git add .
git commit -m "Aggiornamento automatico"
git push "https://$token@github.com/username/repo.git" main
💡 Suggerimento: usare un token separato con permessi minimi per CI/CD.
4. IDE e sviluppo locale
- In Visual Studio Code e altri IDE è possibile usare il PAT al posto della password per lavorare con repository privati e pull request.
- Creare token separati per diverse macchine o IDE per limitare l’impatto di eventuali fughe di dati.
5. Gestione e sicurezza
- Conservare i token in password manager o SecretStore.
- Creare token separati per compiti diversi.
- Controllare regolarmente e cancellare token non utilizzati.
- Impostare sempre una scadenza (non usare “No expiration”).
- Pianificare la rotazione dei token per CI/CD e script automatizzati.
6. Alternativa: GitHub CLI
gh auth login
La CLI aprirà il browser, eseguirà l’autenticazione, creerà e salverà il token localmente. Questo evita la creazione manuale del PAT e semplifica la gestione delle chiavi.