Actions Secrets ve OIDC
Actions Secrets & OIDC
Bu derste neler öğreneceksin
- GitHub Actions secret kapsamlarını (repo, org, enterprise) açıklamak
- OIDC ile cloud provider kimlik doğrulamasının avantajlarını anlamak
- Environments ve deployment protection rules'u bilmek
GitHub Actions workflow’larının dış servislere kimlik doğrulaması iki yolla yapılır: encrypted secrets veya OIDC. GH-100, her iki yaklaşımı ve enterprise yönetimini kapsar.
Actions Secret Kapsamları
| Kapsam | Tanımlandığı Yer | Erişim |
|---|---|---|
| Repository secret | Repo → Settings → Secrets | Yalnızca o repo |
| Organization secret | Org → Settings → Secrets | Seçilen repolar |
| Enterprise secret | Enterprise → Secrets | Tüm org’lar (yakında GA) |
Secret’lar şifreli saklanır ve workflow log’larında otomatik maskelenir (***). Ancak bir secret başka bir değişkene atanırsa maskeleme çalışmayabilir.
Secret Erişim Kısıtlama
Organization secret’larının hangi repo’lara erişeceği kısıtlanabilir:
Organization → Settings → Secrets and variables → Actions
→ Bir secret seç → Repository access:
- All repositories
- Private repositories
- Selected repositories
OIDC ile Secretsiz Kimlik Doğrulama
OIDC (OpenID Connect) kullanarak workflow, AWS/Azure/GCP’ye long-lived credential saklamadan erişebilir:
permissions:
id-token: write # OIDC token almak için zorunlu
contents: read
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123456789012:role/github-actions-role
aws-region: us-east-1
Cloud provider, token’ı GitHub’a doğrulatır ve geçici credential verir. Secret saklamak gerekmez.
Environments ve Deployment Protection
Production ortamı için extra koruma:
Repository → Settings → Environments → New environment
→ "production"
→ Required reviewers: {approval listesi}
→ Wait timer: 5 minutes
→ Deployment branches: main only
Workflow’da:
jobs:
deploy:
environment: production # Bu satır koruma kurallarını tetikler
runs-on: ubuntu-latest
GITHUB_TOKEN İzinleri
Her workflow otomatik olarak GITHUB_TOKEN alır. Varsayılan izinler:
- Read: contents, metadata, packages, statuses
- Write: (ayara bağlı)
Minimum gerekli izinler:
permissions:
contents: read
pull-requests: write