SOPS Credential Audit Report
Generated: 2026-07-05
Method: scripts/bootstrap/validate-sops-env.ps1 -Env all
Purpose: D1 — inwentarz kluczy w SOPS, identyfikacja co wymaga human-action
Uruchom skrypt ponownie po każdej sesji rotacji aby odświeżyć.
Ten plik to snapshot — skrypt jest źródłem prawdy.
Legenda
Status Znaczenie ✅ FRESH Rotowany w tej sesji lub w ciągu ostatnich 7 dni ⚠️ STALE Ostatnio rotowany > 90 dni temu; priorytetyzuj ❌ BROKEN Znany błąd; nie działa w produkcji 🔴 HUMAN Brakuje; wymaga human-action (Tier 3) 🟡 AUTO Brakuje; można wygenerować automatycznie (Tier 1/2) ⏸ DEFERRED Celowo odłożony
monitoring.env.sops (vps-i1)
❌ Zepsute klucze — priorytet P0/P1
Klucz Problem Ticket Tier Akcja SUPABASE_SERVICE_KEYsb_secret format; PostgREST odrzuca #2790 3 Human: Supabase dashboard → Settings → API → nowy klucz SUPABASE_SERVICE_ROLE_KEYsb_secret format; PostgREST odrzuca #2790 3 Human: jak wyżej GH_TOKENWygasły PAT #2721 3 Human: github.com → Settings → Developer Settings → PAT
⏸ Odłożone
Klucz Powód Termin Tier DISCORD_BOT_TOKENDiscord API — stabilny, odłożony po 2026-07-10 2
✅ Świeże (rotowane tej sesji 2026-07-05)
Klucz Metoda SMTP_PASSWORDMailgun Admin API (rotate-now.ps1) discord_radieu_passwordPlaywright (rotate-now.ps1) P24_INFRA_WASABI_ACCESS_KEY + P24_INFRA_WASABI_SECRET_KEYWasabi IAM API WASABI_ACCESS_KEY + WASABI_SECRET_KEYWasabi IAM API
⚠️ Do weryfikacji — stare klucze
Klucz Ostatnie wzmianki Tier Akcja ATRAX_AUTH_STRINGRotation due ~2026-06-30 (issue #1569) 3 Human: Atrax portal ATRAX_PASSWORDPowiązany z ATRAX_AUTH_STRING 3 Human: Atrax portal ATRAX_CLIENT_SECRETBrak historii rotacji 3 Human: Atrax admin OVH_CONSUMER_KEY / SYS_CONSUMER_KEYBrak historii rotacji 2 Semi-auto: OVH OAuth flow IONOS_HOSTING_TOKEN_PREFIX / IONOS_HOSTING_TOKEN_ENCRYPTIONBrak historii rotacji 2 Semi-auto: IONOS API MAILGUN_API_KEYBrak historii rotacji 3 Human: app.mailgun.com MAILGUN_ADMIN_API_KEYBrak historii rotacji 3 Human: app.mailgun.com VERCEL_TOKEN / VERCEL_API_TOKEN / VERCEL_ADMIN_TOKENBrak historii rotacji 2 Human/semi-auto: Vercel dashboard OPENAI_ADMIN_KEYBrak historii rotacji 3 Human: OpenAI console TRACCAR_PASSWORDBrak historii rotacji 3 Human: Traccar web UI MYSQL_ROOT_PASSWORDBrak historii rotacji 3 Human: MySQL root na serwerze SUPABASE_WAP_ANON_KEYBrak historii rotacji 3 Human: Supabase dashboard (WAP project) SUPABASE_DB_PASSWORDBrak historii rotacji 3 Human: Supabase dashboard → Database SENTRY_AUTH_TOKEN#2620, rotacja grupowa 6/2026 — Playwright 2 Semi-auto: scripts/rotate/sentry-auth-token.js
🟡 Auto-generowalne (Tier 1) — nie rotowane od dawna
Klucz Metoda LOKI_BASIC_AUTH_PASSWORDscripts/rotate/generate-random.ps1 PROMETHEUS_BASIC_AUTH_PASSWORD + HASHscripts/rotate/generate-bcrypt.ps1 STATUS_BASIC_AUTH_PASSWORD + HASHscripts/rotate/generate-bcrypt.ps1 NEXCON_API_KEYdocs/playbooks/nexcon-api-key-rotation.md N8N_CLOUD_API_KEYdocs/playbooks/n8n/n8n-cloud-api-key-rotation.md CRON_SECRETscripts/rotate/generate-random.ps1 EXTERNAL_DB_SYM_KEYscripts/rotate/generate-random.ps1 GF_RENDERING_RENDERER_TOKENscripts/rotate/gf_rendering_renderer_token.sh CLOUDFLARE_TOKEN_ZINTEGROWANAcloudflare-credential-rotation.md CF_EDIT_ALL_ZONES_API_TOKENcloudflare-credential-rotation.md CF_WORKERS_API_TOKENcloudflare-credential-rotation.md CF_RADEKKONARSKI_DNS_TOKENcloudflare-credential-rotation.md WAP_OPENAI_KEY_MINIscripts/rotate/openai-key-rotation.ps1
n8n-bms4.env.sops (bms-4)
❌ Zepsute / wygasłe — P0/P1
Klucz Problem Tier Akcja GH_TOKENWygasły PAT 3 Human: jak w monitoring GITHUB_PAT_ALL_WRITESPrawdopodobnie wygasły 3 Human: github.com GITHUB_PAT_P24_INFRAPrawdopodobnie wygasły 3 Human: github.com SUPABASE_SERVICE_ROLE_KEYsb_secret format (jak #2790) 3 Human: Supabase dashboard LINKEDIN_ACCESS_TOKENLinkedIn tokeny wygasają po ~60 dniach 2 Semi-auto: refresh_token flow MONGODB_RS0_ADMIN_PASSWORDP0 — consider rotation (priorities.md) 3 Human: MongoDB rs0 admin
⚠️ Do weryfikacji
Klucz Tier Akcja ATRAX_PASSWORD / ATRAX_CLIENT_SECRET3 Human: Atrax portal (sync z monitoring) N8N_ENCRYPTION_KEY3 NIGDY nie rotować bez migracji credentials! REDIS_PASSWORD3 Human: Redis config + restart RABBITMQ_DEFAULT_PASS3 Human: container restart GOOGLE_CLIENT_SECRET3 Human: Google Cloud Console GITHUB_APP_PRIVATE_KEY_B643 Human: GitHub App settings BMS4_N8N_ADMIN_PASSWORD3 Human: n8n account settings
🟡 Auto-generowalne
Klucz Metoda TELEGRAM_BOT_TOKENBotFather /revoke TELEGRAM_P24_CLAUDE_BOT_API_KEYBotFather /revoke N8N_GPS_SYNC_SECRETgenerate-random.ps1 N8N_HU_SP_REPORT_SECRETgenerate-random.ps1 GITHUB_TRIGGER_SECRETgenerate-random.ps1 ANTHROPIC_API_KEYanthropic-key-rotation.ps1 BMS4_N8N_API_KEYn8n-bms4-api-key.ps1 MONGODB_RS0_PROMETHEUS_PASSWORDmongodb-credential-rotation.md
et-lager.env.sops (Vercel)
🔴 Masowo niekompletny — tylko 1 klucz z N wymaganych
Status Klucz ✅ PRESENT MONGODB_URI❓ UNKNOWN Wszystkie pozostałe — sprawdź et-lager repo .env.example
Akcja: uruchom po uzupełnieniu szablonu docs/sops-templates/et-lager.keys:
.\scripts\bootstrap\validate - sops - env.ps1 - Env et - lager
brandpilot.env.sops (Vercel)
❌ Zepsute
Klucz Problem Tier Akcja SUPABASE_SERVICE_ROLE_KEYsb_secret format 3 Human: Supabase dashboard
⚠️ Do weryfikacji
Klucz Tier Akcja LINKEDIN_CLIENT_SECRET3 Human: LinkedIn developer portal SUPABASE_MANAGEMENT_TOKEN3 Human: Supabase dashboard → Account → Access Tokens SUPABASE_DB_PASSWORD3 Human: Supabase dashboard
art-agency.env.sops
⚠️ Do weryfikacji
Klucz Tier Akcja supabase_Art_Agency_service_role_key3 Human: Supabase dashboard GOOGLE_ADS_DEVELOPER_TOKEN3 Human: Google Ads Manager GOOGLE_ADS_CLIENT_SECRET3 Human: Google Cloud Console GOOGLE_ADS_REFRESH_TOKEN2 Semi-auto: refresh_token endpoint
Priorytety human-action — skonsolidowana lista
Ustaw te $env:VALUE_* przed uruchomieniem new-sops-env.ps1:
P0 — krytyczne (blokują produkcję)
# Supabase Service Role Keys (monitoring + n8n-bms4 + brandpilot + et-op)
# Pobierz z: Supabase Dashboard > Settings > API > Service Role Key
$ env: VALUE_SUPABASE_SERVICE_KEY = "sb_secret_..."
$ env: VALUE_SUPABASE_SERVICE_ROLE_KEY = "sb_secret_..."
# GitHub PAT (monitoring + n8n-bms4)
# Utwórz na: github.com/settings/personal-access-tokens
# Scope: repo, workflow, packages:write
$ env: VALUE_GH_TOKEN = "ghp_..."
$ env: VALUE_GITHUB_PAT_ALL_WRITES = "ghp_..."
$ env: VALUE_GITHUB_PAT_P24_INFRA = "ghp_..."
P1 — ważne (degraded functions)
# Atrax (fleet system) — wszystkie env używają tych samych wartości
$ env: VALUE_ATRAX_PASSWORD = "..."
$ env: VALUE_ATRAX_AUTH_STRING = "..."
$ env: VALUE_ATRAX_CLIENT_SECRET = "..."
# MongoDB rs0 admin
$ env: VALUE_MONGODB_RS0_ADMIN_PASSWORD = "..."
# LinkedIn (n8n workflow)
$ env: VALUE_LINKEDIN_ACCESS_TOKEN = "..."
P2 — planowane (rotate soon)
# Vercel tokens
$ env: VALUE_VERCEL_TOKEN = "..."
$ env: VALUE_VERCEL_API_TOKEN = "..."
$ env: VALUE_VERCEL_ADMIN_TOKEN = "..."
# OpenAI Admin
$ env: VALUE_OPENAI_ADMIN_KEY = "sk-..."
# Mailgun API key (browser login)
$ env: VALUE_MAILGUN_API_KEY = "..."
$ env: VALUE_MAILGUN_ADMIN_API_KEY = "..."
# Supabase DB passwords
$ env: VALUE_SUPABASE_DB_PASSWORD = "..."
Dostępne klucze admin — co możemy zrotować autonomicznie TERAZ
Na podstawie kluczy obecnych w SOPS i wiedzy z tej sesji:
Admin key Dostępny Umożliwia rotation WASABI_ADMIN_ACCESS_KEY (administration.env.sops)✅ TAK Wszystkie Wasabi IAM keys (Tier 1) CF_GLOBAL_API_KEY (administration.env.sops)✅ TAK Wszystkie CF API tokens (Tier 1) MAILGUN_ADMIN_API_KEY (monitoring.env.sops)✅ TAK SMTP_PASSWORD (Tier 1 via API)OPENAI_ADMIN_KEY (monitoring.env.sops — do weryfikacji)⚠️ VERIFY WAP_OPENAI_KEY_MINI (Tier 1 via API)SUPABASE_ACCESS_TOKEN (monitoring.env.sops)⚠️ VERIFY Supabase Management API BMS4_N8N_API_KEY✅ TAK n8n credentials (Tier 1) Playwright browser ✅ TAK SENTRY_AUTH_TOKEN, discord_radieu_password, VERCEL_TOKENIONOS_API_TOKEN_* (monitoring.env.sops)⚠️ VERIFY IONOS API calls
Workflow — jak użyć tego audytu
# 1. Sprawdz aktualny stan
.\scripts\bootstrap\validate - sops - env.ps1 - Env all
# 2. Dla każdego srodowiska z brakujacymi kluczami:
# - Ustaw Tier 3 klucze recznie (patrz lista P0/P1/P2 powyzej)
# - Uruchom bootstrap dla brakujacych kluczy:
. \scripts\bootstrap\new-sops - env.ps1 - Env monitoring - OnlyMissing - TierFilter 1
. \scripts\bootstrap\new-sops - env.ps1 - Env monitoring - OnlyMissing - TierFilter 3
# 3. Po bootstrapie — weryfikacja
.\scripts\bootstrap\validate - sops - env.ps1 - Env monitoring
# 4. Git commit + PR + merge → secrets-sync auto-trigger
git add secrets\monitoring.env.sops
git commit - m "chore: bootstrap monitoring.env.sops — added N keys"