2026 DevOps Pipeline Güvenliği: DevSecOps En İyi Uygulamaları ve Mülakat Soruları

CI/CD pipeline güvenliği, DevSecOps pratikleri ve 2026 yılında en sık sorulan mülakat sorularına kapsamlı rehber.

2026 DevOps Pipeline Güvenliği: DevSecOps En İyi Uygulamaları ve Mülakat Soruları

DevOps pipeline güvenliği, büyük ölçekte yazılım dağıtan organizasyonlar için kritik bir farklılaştırıcı haline geldi. OWASP Top 10 CI/CD Security Risks modern pipeline'lardaki en tehlikeli güvenlik açıklarını tanımlar; yetersiz akış kontrolünden kompromize olmuş build bağımlılıklarına kadar. Bu rehber, 2026'da mülakatçıların adaylardan bilmesini beklediği temel DevSecOps pratiklerini kapsar.

Shift-Left Güvenlik

DevSecOps, yazılım teslim yaşam döngüsünün her aşamasına güvenlik kontrollerini entegre eder. Güvenliği üretim öncesi son bir kapı olarak ele almak yerine, shift-left pratikleri düzeltmelerin daha ucuz ve daha hızlı olduğu geliştirme aşamasında güvenlik açıklarını yakalar.

CI/CD Saldırı Yüzeyini Anlamak

Modern CI/CD pipeline'ları kaynak kod depoları, build runner'ları, artefakt registry'leri ve dağıtım hedeflerini kapsayan karmaşık bir saldırı yüzeyi sunar. Mart 2025'teki tj-actions/changed-files kompromizasyonu, yaygın kullanılan bir GitHub Action'a kötü amaçlı kod enjekte ederek 23.000'den fazla depodan secret sızdırdı. 2026'nın başlarındaki TanStack saldırısı, geçerli SLSA Build Level 3 provenance ile 170'ten fazla zehirli npm paketi yayınladı ve saldırganlar build sürecini kontrol ettiğinde kriptografik attestation'ların bile atlanabileceğini gösterdi.

Bu olaylar üç kritik kontrol noktasını vurgular:

  • Kaynak bütünlüğü: Branch koruma kuralları, imzalı commit'ler ve zorunlu kod incelemeleri yetkisiz değişikliklerin build pipeline'ına ulaşmasını önler
  • Build izolasyonu: Geçici runner'lar, minimal izinler ve artefakt doğrulaması kompromize olmuş bağımlılıkların etki alanını sınırlar
  • Secret hijyeni: Kısa ömürlü kimlik bilgileri, OIDC federasyonu ve secret taraması saldırganların aradığı statik token'ları ortadan kaldırır

Mülakatçılar sıklıkla adaylardan tipik bir dağıtım pipeline'ındaki güven sınırlarını izlemesini ister. Güçlü bir cevap, saldırganın kod enjekte edebileceği veya kimlik bilgilerini çalabileceği her aşamayı haritalandırır.

SAST ve SCA: Güvenlik Açıklarını Erken Yakalamak

Static Application Security Testing (SAST), programı çalıştırmadan kaynak kodu güvenlik açıkları açısından analiz eder. Software Composition Analysis (SCA), üçüncü parti bağımlılıklardaki bilinen güvenlik açıklarını tanımlar. Her pull request'te her ikisini de çalıştırmak, kod birleştirilmeden önce yaygın güvenlik sorunlarının çoğunu yakalar.

yaml
# .github/workflows/security.yml
name: Security Scan

on:
  pull_request:
    branches: [main]

jobs:
  sast:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write
    steps:
      - uses: actions/checkout@v4
      
      - name: Run CodeQL
        uses: github/codeql-action/analyze@v3
        with:
          languages: javascript,typescript
          queries: security-extended

  sca:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/trivy-action@0.28.0
        with:
          scan-type: fs
          scan-ref: .
          severity: HIGH,CRITICAL
          exit-code: 1

Yukarıdaki workflow SAST için CodeQL ve SCA için Trivy çalıştırır. Trivy üzerinde exit-code: 1 ayarı, yüksek veya kritik güvenlik açıkları göründüğünde build'i başarısız kılar. GitHub Advanced Security ve GitLab Ultimate, ilgili merge request workflow'larıyla entegre olan yerleşik SAST yetenekleri içerir.

OIDC Federasyonu ile Secret Yönetimi

CI/CD platformlarında saklanan uzun ömürlü kimlik bilgileri, pipeline kompromizasyonlarında en çok sömürülen saldırı vektörü olmaya devam ediyor. GitHub Actions OIDC, statik secret'ları çalışma zamanında bulut sağlayıcısı tarafından verilen kısa ömürlü token'larla değiştirir.

yaml
# .github/workflows/deploy.yml
name: Deploy to AWS

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write  # OIDC için gerekli
      contents: read
    steps:
      - uses: actions/checkout@v4
      
      - name: Configure AWS credentials via OIDC
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::123456789012:role/GitHubActionsRole
          aws-region: us-east-1
          # Hiçbir yerde AWS_ACCESS_KEY_ID veya AWS_SECRET_ACCESS_KEY saklanmıyor
      
      - name: Deploy to ECS
        run: aws ecs update-service --cluster prod --service api --force-new-deployment

AWS IAM rol güven politikası, hangi depoların ve branch'lerin rolü üstlenebileceğini kısıtlar:

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
        },
        "StringLike": {
          "token.actions.githubusercontent.com:sub": "repo:my-org/my-repo:ref:refs/heads/main"
        }
      }
    }
  ]
}

Koşul, kimlik bilgisi verilmesini belirli bir deponun main branch'i ile sınırlar. Azure ve GCP eşdeğer OIDC federasyon yetenekleri sunar. Var olması gereken secret'lar için HashiCorp Vault ve AWS Secrets Manager gibi bulut-native seçenekler merkezi rotasyon ve erişim günlüğü sağlar.

DevOps mülakatlarında başarılı olmaya hazır mısın?

İnteraktif simülatörler, flashcards ve teknik testlerle pratik yap.

Konteyner Güvenliği ve SBOM Oluşturma

Konteyner imajları, uygulama kodunun ötesinde bağımlılıklar getirir. Base imajlar, sistem paketleri ve build araçları potansiyel güvenlik açıkları taşır. Build süreci sırasında imajları taramak ve Software Bill of Materials (SBOM) oluşturmak, tüm bağımlılık zincirinde görünürlük sağlar.

yaml
# GitLab CI container security
container_scanning:
  stage: test
  image: registry.gitlab.com/gitlab-org/security-products/analyzers/container-scanning:7
  variables:
    CS_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    CS_DOCKERFILE_PATH: Dockerfile
  script:
    - /analyzer run
  artifacts:
    reports:
      container_scanning: gl-container-scanning-report.json
      cyclonedx: gl-sbom.cdx.json

CycloneDX formatındaki SBOM artefaktı, yeniden build olmadan yeni açıklanan güvenlik açıklarını kontrol etmek için downstream tüketicilere olanak tanır. SLSA gibi tedarik zinciri güvenlik framework'leri, temel kontrol olarak SBOM oluşturmayı gerektirir.

Staging'de Dinamik Uygulama Güvenlik Testi

DAST araçları, statik analizin tespit edemediği güvenlik açıkları için çalışan uygulamaları test eder; kimlik doğrulama kusurları, injection güvenlik açıkları ve güvenlik yanlış yapılandırmaları dahil. Production dağıtımından önce staging ortamına karşı DAST çalıştırmak, önceki kapıları atlatan sorunları yakalar.

yaml
# .gitlab-ci.yml
dast:
  stage: dast
  image: registry.gitlab.com/gitlab-org/security-products/analyzers/dast:5
  variables:
    DAST_WEBSITE: https://staging.example.com
    DAST_AUTH_URL: https://staging.example.com/login
    DAST_USERNAME: $DAST_USER
    DAST_PASSWORD: $DAST_PASSWORD
    DAST_AUTH_VERIFICATION_URL: https://staging.example.com/dashboard
  script:
    - /analyze
  artifacts:
    reports:
      dast: gl-dast-report.json
  rules:
    - if: $CI_COMMIT_BRANCH == "main"

OWASP ZAP, GitLab Ultimate olmayan ekipler için ücretsiz bir alternatif sağlar. Kimlik doğrulamalı taramalar, hassas işlemlerin genellikle bulunduğu giriş duvarlarının arkasındaki işlevselliği test eder. Kubernetes ortamları için API güvenlik testi, ingress yapılandırmalarını ve service mesh politikalarını doğrular.

Infrastructure as Code Güvenlik Taraması

Terraform, Kubernetes manifest'leri ve Helm chart'ları saldırganların hedef aldığı altyapıyı tanımlar. IaC taraması, bulut ortamlarına ulaşmadan önce yanlış yapılandırmaları yakalar.

yaml
# Checkov IaC scanning in GitHub Actions
iac-scan:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    
    - name: Run Checkov
      uses: bridgecrewio/checkov-action@v12
      with:
        directory: terraform/
        framework: terraform
        soft_fail: false
        output_format: sarif
        output_file_path: checkov.sarif
    
    - name: Upload SARIF
      uses: github/codeql-action/upload-sarif@v3
      with:
        sarif_file: checkov.sarif

Checkov, Terraform yapılandırmalarını CIS ve SOC2 dahil güvenlik benchmark'larına göre doğrular. SARIF çıktısı, birleşik güvenlik açığı takibi için GitHub Security sekmesiyle entegre olur. Ansible kullanan ekipler, aynı pipeline aşamasına güvenlik kurallarıyla ansible-lint ekleyebilir.

GitHub Actions Tedarik Zinciri Güçlendirme

Action'ları tam commit SHA'larına sabitlemek, maintainer'ların veya kompromize olmuş hesapların mevcut tag'lere kötü amaçlı sürümler force-push ettiği tag tabanlı saldırıları önler. Mayıs 2026'daki Megalodon kampanyası, altı saatlik bir pencerede binlerce depoya 5.700'den fazla kötü amaçlı commit gönderdi.

yaml
# Pin to commit SHA, not tag
steps:
  - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v4.2.2
  
  # Avoid mutable tags like @v4 or @latest
  # Bad: uses: actions/checkout@v4

Dependabot, yeni sürümler çıktığında SHA-pinlenmiş action'ları günceller. OWASP DevSecOps Guideline ek kontroller önerir:

  • permissions: blokları kullanarak workflow izinlerini gereken minimum ile sınırlama
  • pull_request_target tetikleyicilerini devre dışı bırakma veya işbirlikçilerinden etiketli PR'larla sınırlama
  • Organizasyon düzeyinde salt okunur varsayılanlarla GITHUB_TOKEN kullanma
  • Varsayılan branch'lerde zorunlu durum kontrolleri ve branch koruması etkinleştirme

Yaygın DevSecOps Mülakat Soruları

Mülakatçılar hem teknik derinliği hem de pratik deneyimi değerlendirir. Bu sorular DevOps güvenlik mülakatlarında sıkça görülür.

S: Secret'ların depoya commit edilmesini nasıl önlersiniz?

detect-secrets veya gitleaks gibi araçlarla pre-commit hook'ları, commit'ten önce staged değişiklikleri tarar. GitHub Enterprise veya GitLab'daki sunucu tarafı push kuralları, bilinen secret formatlarıyla eşleşen kalıplar içeren commit'leri engeller. Geliştiriciler yerel hook'ları atlayabildiğinden, secret taraması CI'da bir yedek olarak da çalışmalıdır.

S: SAST, DAST ve SCA arasındaki farkı açıklayın.

SAST, kaynak kodu çalıştırmadan analiz eder; SQL injection kalıpları ve hard-coded kimlik bilgileri gibi hataları bulur. SCA, paket sürümlerini CVE veritabanlarıyla eşleştirerek bağımlılıklardaki bilinen güvenlik açıklarını tanımlar. DAST, kötü amaçlı istekler göndererek ve yanıtları gözlemleyerek çalışan uygulamaları test eder. Olgun bir pipeline üçünü de çalıştırır: Her PR'da SAST ve SCA, production release'lerden önce staging'de DAST.

S: CI/CD'de en az yetki ilkesi nedir?

Build job'ları yalnızca belirli görevlerini tamamlamak için gereken izinlere sahip olmalıdır. Staging'e dağıtan bir job, production kimlik bilgilerine ihtiyaç duymaz. OIDC federasyonu, belirli depolar, branch'ler ve workflow job'larına kapsamlı kimlik bilgileri vererek bunu zorlar. OWASP CI/CD Top 10, yetersiz kimlik ve erişim yönetimini en büyük risk olarak listeler çünkü aşırı izinlere sahip kompromize olmuş job'lar saldırı yüzeyini dramatik şekilde genişletir.

S: Konteyner imajlarının bütünlüğünü nasıl doğrularsınız?

Content trust imzaları (Docker Content Trust, Sigstore cosign), imajların güvenilir pipeline'lar tarafından build edildiğinin kriptografik doğrulamasını sağlar. SBOM attestation'ları imajların içindeki bileşenleri belgeler. Kubernetes'teki admission controller'lar imzasız imajları veya bilinen kritik güvenlik açıklarına sahip imajları reddeder. Registry taraması, build zamanından sonra ortaya çıkan güvenlik açıklarını yakalar.

S: CI/CD üzerinde bir tedarik zinciri saldırısını ve nasıl önleneceğini açıklayın.

tj-actions/changed-files saldırısı, yaygın kullanılan bir GitHub Action'ı kompromize ederek saldırgan tarafından kontrol edilen endpoint'lere secret'ları sızdıran kod enjekte etti. Önleme tedbirleri şunları içerir: action'ları tag yerine commit SHA'larına sabitleme, Dependabot kullanarak sabitlenmiş sürümleri güncelleme, organizasyon düzeyinde politikalar aracılığıyla hangi action'ların çalışabileceğini kısıtlama ve beklenmedik ağ bağlantıları veya kimlik bilgisi erişimi için workflow çalıştırmalarını izleme.

Pratik yapmaya başla!

Mülakat simülatörleri ve teknik testlerle bilgini test et.

Teknik Mülakatlar için DevSecOps Yol Haritası Oluşturma

Güvenlik uygulaması hakkında yapısal düşünce sergileyen adaylar öne çıkar. Pratik bir DevSecOps dağıtımı, yüksek etkili, düşük çabalı kontrolleri önceliklendirir:

  • Secret taraması ve branch korumasını hemen etkinleştirme, çünkü her ikisi de ücretsiz ve en yaygın saldırı vektörlerini engeller
  • İlk sprint'te pull request kontrollerine SAST ve SCA ekleme, birleştirmeden önce güvenlik açıklarını yakalama
  • Statik kimlik bilgilerinden OIDC federasyonuna geçiş, CI/CD platformlarından en tehlikeli secret'ları ortadan kaldırma
  • İmaj build'lerinin bir parçası olarak konteyner taraması ve SBOM oluşturma uygulama
  • Terraform, Kubernetes ve bulut yapılandırması için IaC taraması dağıtma
  • Kimlik doğrulamalı veya hassas veri işleyen uygulamalar için DAST ekleme
  • Production Kubernetes kümeleri için Falco veya eşdeğeriyle runtime izleme oluşturma

Mülakatçılar, trade-off'ları kabul eden adayları değerli bulur. Güvenlik taraması pipeline gecikmesi ekler. Yanlış pozitifler alarm yorgunluğu yaratır. Olgun bir DevSecOps pratiği eşikleri ayarlar, telafi edici kontrollerle hesaplanmış riskleri kabul eder ve düzeltme için ortalama süreyi sürekli ölçer.

Pratik yapmaya başla!

Mülakat simülatörleri ve teknik testlerle bilgini test et.

Günün meydan okuması

DevOps kodundaki hatayı bulabilir misin?

Gerçek bir kod parçası, gizli bir hata, günde bir deneme. Denemek için hesap gerekmez.

Anthony Fillion-Maillet

Yazan:

Anthony Fillion-Maillet

SharpSkill kurucusu

10 yılı aşkın süredir fullstack geliştirici. SharpSkill’i yönetiyor ve burada yayımlanan her şeyden sorumlu.

8 Eylül 2026 tarihinde güncellendi

Paylaş

İlgili makaleler