Modül 6 · Modül 6 — Domain 6: GitHub Actions Automation & Policies · ⏱ 10-15 dakika

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ı

KapsamTanımlandığı YerErişim
Repository secretRepo → Settings → SecretsYalnızca o repo
Organization secretOrg → Settings → SecretsSeçilen repolar
Enterprise secretEnterprise → SecretsTü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