Azure DevOps PAT — rotacija, auth putevi i anti-leak pravila
Azure DevOps PAT — rotacija, auth putevi i anti-leak pravila
Zadnja rotacija: 2026-07-17 (MC #103838) · Org: dev.azure.com/alai-holding · SSOT za PAT: Bitwarden item "Azure DevOps PAT - alai-holding" (776a5d5e)
Kanali koji RADE
- PAT preko REST-a:
curl -u ":$PAT" https://dev.azure.com/alai-holding/_apis/projects?api-version=7.1→ 200. - PAT preko git-a (header-auth, NIKAD u URL/config):
B64=$(printf ':%s' "$PAT" | base64)
GIT_TERMINAL_PROMPT=0 git -c credential.helper= \
-c http.extraHeader="Authorization: Basic $B64" \
push https://[email protected]/alai-holding/Bilko/_git/Bilko <branch>:<branch>
Bez credential.helper= disable i dummy usera (x@) git ide u keychain/prompt uprkos extraHeaderu.
Kanali koji NE RADE (testirano 2026-07-17, ne pokušavaj ponovo)
- SP alai-cli-deployer (default az profil): ARM token validan, ali SP nije član azdo org-a → git vraća zavaravajuće "PAT expired". Fix = org admin doda SP u org.
- AAD user Bearer ([email protected]): azdo 403 "Identity has not been materialized" dok se taj identitet prvi put ne prijavi u org kroz browser. Org pristup u browseru ide preko drugog (radnog) naloga.
- azdo SSH: nijedan ključ registrovan.
- FORGE "system az login": STALE referenca — FORGE nema az profil; ado-agent-bilko koristi vlastiti OAuth RSA.
Rotacija (runbook)
- Simptom: git push / azdo-merge-pr.sh / PR REST → 401. Prvo provjeri PAT expiry REST-om (
curl -u ":$PAT" .../_apis/projects→ "has expired"). - CEO kreira novi PAT u browser UI (User settings → Personal access tokens; scope Code R/W + Build, 90 dana).
- Verifikuj ŽIVO: projects REST 200 + PR REST 200 +
git ls-remotemain. - Upiši u BW item 776a5d5e (SSOT). NE u fajlove, NE u .git/config.
- Skeniraj leak:
git config remote.azdo.urlu Bilko + svim bilko-wt-* worktree-ovima — URL mora biti čisthttps://dev.azure.com/alai-holding/Bilko/_git/Bilko.
Anti-leak pravila
- PAT se NIKAD ne embeduje u remote URL (
https://[email protected]/...) — to je bio incident #103838 (PAT u 6 .git/config fajlova, plaintext ugit remote -vlogovima). - Skripte čitaju PAT iz BW-a u runtime varijablu; header-auth pattern iznad.
Evidence: ~/system/evidence/103838/pat-rotation-evidence-2026-07-17.md · Memo: technical_azdo_git_auth_paths_sp_not_in_org_2026-07-17.md
No comments to display
No comments to display