0Pricing
Cloud & IT Cert Prep · Ders

Güvenli Gizli Bilgi Yönetimi ve Ortam Değişkenleri

Gizli bilgi yöneticilerini (Vault, AWS Secrets Manager) ve çalışma zamanında ortam değişkeni eklemeyi kullanarak kaynak kodunda sabit kodlanmış gizli bilgiler bulundurmaktan kaçının.

Güvenli Gizli Bilgi Yönetimi ve Ortam Değişkenleri, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

Sabit Kodlanmış Secret Sorunu

Sabit kodlanmış Secret'lar — doğrudan kaynak koduna gömülmüş API anahtarları, veritabanı parolaları, TLS özel anahtarları ve OAuth belirteçleri — en yaygın ve önlenebilir güvenlik açıklarından biridir. Kaynak kodundaki Secret'lar, silindikten sonra bile sürüm denetimi geçmişinde açığa çıkar, depoya erişimi olan tüm geliştiriciler tarafından görülebilir ve depolar accidentally herkese açık hâle getirildiğinde sıkça sızdırılır. GitGuardian ve truffleHog gibi araçlar, GitHub gibi platformlarda sızdırılmış Secret'ları sürekli tarar.

# DANGEROUS: hardcoded secret in source code
# db_password = 'P@ssw0rd#2026'
# api_key = 'sk-live-abc123xyz789'
# aws_secret = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'

# These secrets are now:
# - In git history (even if later deleted)
# - Visible to all repo contributors
# - Potentially in CI/CD logs
# - Often leaked when repos go public accidentally

Ortam Değişkenleri: Daha İyi, Ancak Yeterli Değil

Ortam değişkenleri, Secret'ları çalışma zamanında ana işletim sistemi veya kapsayıcı orkestratörü üzerinden enjekte ederek kaynak kodundan çıkarır. application, sabit kodlanmış bir değer yerine os.environ['DB_PASSWORD'] okur. Bu, sabit kodlamadan daha iyidir; ancak ortam değişkenlerinin zayıf yönleri vardır: işlem listelerinde görünürler, alt işlemlere aktarılırlar, genellikle çökme dökümlerinde ve hata ayıklama günlüklerinde yer alırlar ve elle Rotation gerektirirler. Geliştirme için uygundurlar, ancak production Secret yönetimi için tek başlarına yeterli değildirler.

# Environment variable pattern:
# In .env file (NEVER commit to git):
# DB_PASSWORD=P@ssw0rd#2026
# API_KEY=sk-live-abc123xyz789

# In .gitignore:
# .env
# *.env
# .env.*

# In application code:
# db_password = os.environ.get('DB_PASSWORD')
# api_key = os.environ.get('API_KEY')

# Risk: env vars visible in 'ps aux' output,
# inherited by child processes, appear in /proc/<pid>/environ

Özel Amaçlı Secret Yöneticileri

Secret yöneticileri, Secret'ları depolamak, döndürmek ve bunlara erişimi denetlemek için özel olarak tasarlanmış sistemlerdir. Önde gelen çözümler arasında HashiCorp Vault (açık kaynak ve kurumsal), AWS Secrets Manager, Azure Key Vault ve Google Cloud Secret Manager bulunur. application'lar çalışma zamanında Secret yöneticisinde kimlik doğrulaması yapar, Secret'ı alır ve kullanır — Secret'lar hiçbir zaman diskte veya ortam değişkenlerinde depolanmaz. Tüm erişimler günlüğe kaydedilir; böylece hangi Secret'a kimin, ne zaman eriştiği denetlenebilir.

# HashiCorp Vault secret retrieval (conceptual):
# Application authenticates to Vault using:
#   - AWS IAM role (in cloud environments)
#   - Kubernetes service account token
#   - AppRole credentials

# After authentication, retrieve secret:
# vault kv get -field=password secret/prod/database

# In application (Python SDK):
# client = hvac.Client(url='https://vault.company.com')
# client.auth.aws.iam_login(role='prod-app')
# secret = client.secrets.kv.read_secret('prod/database')
# db_password = secret['data']['password']

Otomatik Secret Rotation

Secret yöneticilerinin ortam değişkenlerine göre temel bir avantajı otomatik Rotation özelliğidir. AWS Secrets Manager, application'ın yeniden dağıtılmasını gerektirmeden RDS veritabanı parolalarını bir zamanlamaya göre (ör. her 30 günde bir) otomatik olarak döndürebilir. Secret yöneticisi veritabanındaki parolayı günceller ve depolanan Secret'ı aynı anda günceller. Her bağlantıda Secret alan application'lar yeni kimlik bilgisini otomatik olarak alır. Bu, hiç döndürülmeyen 'kalıcı' hizmet hesabı parolalarının yaygın kullanımını ortadan kaldırır.

# AWS Secrets Manager rotation configuration:
# Secret:         prod/app-database-credentials
# Rotation:       enabled
# Frequency:      every 30 days
# Lambda function: SecretsManager-MyRDSRotation

# Rotation process:
# 1. Lambda creates new DB password
# 2. Updates secret in Secrets Manager
# 3. Updates password on RDS instance
# 4. Tests new credentials work
# 5. Deprecates old credentials
# Application: always calls GetSecretValue at runtime -> gets fresh value

The .gitignore Savunması

Kaynak koduna işlenmiş gizli bilgilenlere karşı ilk savunma hattı, gizli bilgiler içerebilecek tüm dosyaları dışlayan ve düzgün şekilde bakımı yapılan bir .gitignore dosyasıdır. Ancak .gitignore yalnızca gelecekteki commit'leri önler; daha önce commit edilmiş gizli bilgiler git geçmişinde kalır. Gizli bilgiler yanlışlıkla commit edilirse hemen ele geçirilmiş kabul edilmelidir: gizli bilgiyi döndürün, ardından isteğe bağlı olarak geçmişi yeniden yazmak için git filter-repo gibi araçları kullanın (uyumluluk için gereklidir, ancak tek başına yeterli değildir; çünkü gizli bilgi daha önce çıkarılmış olabilir).

# Recommended .gitignore entries for secret files:
# .env
# .env.*
# *.pem
# *.key
# *.p12
# *.pfx
# credentials.json
# service_account*.json
# secrets.yaml
# config/secrets.yml
# terraform.tfvars  (may contain cloud credentials)
# .aws/credentials

# Pre-commit hook to scan for secrets before commit:
# pre-commit install
# hook: detect-secrets / gitleaks / truffleHog

Kod Olarak Altyapı Gizli Bilgileri

Kod Olarak Altyapı (IaC) dosyaları (Terraform, CloudFormation, Kubernetes manifestoları) sıklıkla gizli bilgiler içerir: veritabanı bağlantı dizeleri, ortam değişkeni bildirimlerindeki API anahtarları ve TLS sertifikaları. Bu dosyalar genellikle sürüm denetimine commit edilir ve gizli bilgilerin açığa çıkması riskini oluşturur. Çözümler arasında Vault dinamik gizli bilgileri (Vault, her Terraform çalıştırması için özel olarak kısa ömürlü bir kimlik bilgisi üretir), Kubernetes Secrets (etcd'de saklanır ve bekleme sırasında şifrelenmelidir) ve çalışma zamanında bir gizli bilgi yöneticisinden Kubernetes'e senkronizasyon yapan external-secrets-operator bulunur.

Gizli Bilgilerde En Az Ayrıcalık İlkesi

Her uygulama veya hizmet yalnızca özellikle ihtiyaç duyduğu gizli bilgilere erişmelidir; bu, en az ayrıcalık ilkesinin gizli bilgilere uygulanmasıdır. Bir web uygulamasının veritabanı parolasına ihtiyacı vardır, ancak CA özel anahtarına ihtiyacı yoktur. Bir raporlama işinin salt okunur veritabanı kimlik bilgilerine ihtiyacı vardır; yazma erişimine değil. Gizli bilgi yöneticileri bunu, hangi kimliklerin (IAM rolleri, hizmet hesapları, AppRoles) hangi gizli bilgileri okuyabileceğini belirleyen erişim politikaları aracılığıyla uygular; tüm erişimler denetim amacıyla kaydedilir.

# Vault policy: web application can read DB password only
# policy name: web-app-policy
# path 'secret/prod/database' {
#   capabilities = ['read']
# }
# path 'secret/prod/tls-certs/*' {
#   capabilities = []  # DENY - app does not need TLS keys
# }

# This policy is assigned to the web app's AppRole.
# The reporting service gets a separate policy with
# only 'secret/prod/reporting-db-readonly' access.

Dinamik Gizli Bilgiler

Dinamik gizli bilgiler belirli bir talep sahibi için isteğe bağlı olarak üretilir ve otomatik olarak sona erer. Vault, 1 saat geçerli olan ve bunu isteyen belirli hizmetle ilişkilendirilen geçici bir veritabanı kimlik bilgisi üretebilir. Süresi dolduktan sonra kimlik bilgisi veritabanı tarafından otomatik olarak iptal edilir. Bu yaklaşım, çalınabilecek uzun ömürlü statik kimlik bilgilerinin bulunmaması anlamına gelir; bir saldırgan dinamik bir kimlik bilgisini ele geçirse bile bu bilgi kısa sürede geçersiz olur ve denetim günlüklerinde talepte bulunan kimliğe bağlıdır.

# Vault dynamic secrets: temporary DB credentials
# Application calls Vault to get a DB credential:
# vault read database/creds/web-app-role
#
# Vault response:
# username: v-web-app-x7k2m-1234567890  (unique, temporary)
# password: A1b2C3d4E5f6G7h8            (randomly generated)
# lease_duration: 1h                     (auto-expires)
#
# After 1 hour, Vault instructs DB to revoke this user.
# No static password ever exists for the attacker to steal.

CI/CD İşlem Hatlarında Gizli Bilgiler

CI/CD işlem hatları sıklıkla gizli bilgilere ihtiyaç duyar: dağıtım için bulut sağlayıcısı kimlik bilgileri, Docker kayıt defteri belirteçleri ve imzalama anahtarları. Gizli bilgileri işlem hattı betiklerinde veya yapılandırma dosyalarında asla saklamayın. Bunun yerine işlem hattı platformunun yerleşik gizli bilgi deposunu (GitHub Actions Secrets, GitLab CI Variables, Jenkins Credentials Store) kullanın veya çalışma zamanında makine kimliği aracılığıyla merkezi bir kasadan gizli bilgileri alın. Derleme çıktısında yanlışlıkla açığa çıkmalarını önlemek için gizli değişkenleri günlüklerde maskeli olarak işaretleyin.

# GitHub Actions: using secrets in pipeline
# secrets.yml in GitHub Settings -> Secrets (encrypted storage)
# Secret: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY

# In .github/workflows/deploy.yml:
# env:
#   AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
#   AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

# Best practice: use OIDC federation instead
# GitHub -> AWS trust relationship via OIDC token
# -> No static AWS keys needed at all

Gizli Bilgi Erişiminin Denetlenmesi

Gizli bilgi yöneticileri, her gizli bilgi erişimi olayı için kapsamlı denetim günlükleri sağlar: hangi kimliğin hangi gizli bilgiye, hangi IP'den, ne zaman eriştiği ve erişimin başarılı mı yoksa reddedilmiş mi olduğu. Bu günlükler uyumluluk (SOC 2, PCI-DSS) ve olay müdahalesi için kritik öneme sahiptir. Bir kimlik bilgisinin ele geçirildiğinden şüphelenildiğinde denetim günlükleri, hangi sistemlerin bu bilgiye ne zaman eriştiğini ortaya çıkarır; böylece etkilenmiş olabilecek sistemlerin hızla belirlenmesini ve sınırlama kararlarının alınmasını sağlar.

Gizli Bilgileri Önlemek için Pre-Commit Kancaları

Pre-commit kancaları, her git commit'i tamamlanmadan önce otomatik olarak çalışan ve gizli bilgilerin sürüm denetimi geçmişine girmeden önce algılanmasını sağlayan betiklerdir. detect-secrets (Yelp), GitLeaks ve git-secrets (AWS) gibi araçlar pre-commit kancaları olarak bütünleşir ve hazırlama alanındaki dosyaları API anahtarları, bağlantı dizeleri, özel anahtarlar ve JWT belirteçleriyle eşleşen örüntüler açısından tarar. Bir gizli bilgi algılanırsa commit reddedilir ve geliştiriciden kimlik bilgisini kaldırması istenir. pre-commit çatısı, ekipler arasında kanca yapılandırmalarını eklemeyi ve paylaşmayı kolaylaştırır.

# Installing detect-secrets as pre-commit hook:
# 1. Install: pip install detect-secrets
# 2. Create baseline: detect-secrets scan > .secrets.baseline
# 3. Add to .pre-commit-config.yaml:
#    repos:
#      - repo: https://github.com/Yelp/detect-secrets
#        rev: v1.4.0
#        hooks:
#          - id: detect-secrets
#            args: ['--baseline', '.secrets.baseline']
# 4. Install hooks: pre-commit install

# Now every commit attempt is scanned:
# git commit -m 'add config'
# -> detect-secrets runs
# -> if AWS key pattern found: COMMIT BLOCKED
# -> developer must remove secret and use secrets manager

Hızlı Kontrol

Bu dersteki CompTIA Security+ (SY0-701) kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: kaynak koddaki sabit kodlanmış gizli bilgiler ortadan kaldırılmalı ve Vault veya AWS Secrets Manager gibi gizli bilgi yöneticileriyle değiştirilmelidir; otomatik döndürme, saldırganların ilk ele geçirmeden sonra kötüye kullanabileceği uzun ömürlü kimlik bilgilerini ortadan kaldırır; ayrıca dinamik gizli bilgiler ve en az ayrıcalık erişim politikaları, açığa çıkan herhangi bir gizli bilginin değerini en aza indirir. Sırada dependency security ve yazılım bileşimi analizini inceleyeceğiz.

Sıkça Sorulan Sorular

“Güvenli Gizli Bilgi Yönetimi ve Ortam Değişkenleri” dersi ücretsiz mi?

Evet — “Güvenli Gizli Bilgi Yönetimi ve Ortam Değişkenleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

“Güvenli Gizli Bilgi Yönetimi ve Ortam Değişkenleri” dersinde ne öğreneceğim?

Gizli bilgi yöneticilerini (Vault, AWS Secrets Manager) ve çalışma zamanında ortam değişkeni eklemeyi kullanarak kaynak kodunda sabit kodlanmış gizli bilgiler bulundurmaktan kaçının. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Güvenli Gizli Bilgi Yönetimi ve Ortam Değişkenleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Girdi Doğrulama ve Çıktı Kodlama
  2. Güvenli Gizli Bilgi Yönetimi ve Ortam Değişkenleri
  3. Bağımlılık Güvenliği ve Yazılım Bileşimi Analizi
  4. DevSecOps: Güvenliği İşlem Hatlarına Sola Kaydırma
← Cloud & IT Cert Prep Sayfasına Dön