İçeriğe Atla
Mustafa Erbay
Teknoloji · 12 dk okuma · görüntülenme Read in English

Secret Rotation: Güvenliği Artırmanın Pratik Yolları

Sistemlerdeki sırları düzenli olarak döndürmek kritik bir güvenlik adımıdır. Kendi deneyimlerimden yola çıkarak secret rotation stratejilerini ve pratik…

100%

Statik sırların (API anahtarları, veritabanı şifreleri, sertifikalar) sistemlerimde ne kadar risk oluşturduğunu defalarca gördüm. Birkaç yıl önce, bir müşteri projesinde, üretim ortamında unutulmuş eski bir servis hesabının API anahtarı yüzünden ciddi bir güvenlik açığı yaşadık. Sırrı döndürmek yerine sadece devre dışı bırakmakla yetinmiştik, ancak eski anahtarın bir başka sistemde hâlâ aktif olduğunu sonradan fark ettik. Bu olay, secret rotation’ın sadece bir “iyi uygulama” değil, aynı zamanda temel bir güvenlik ihtiyacı olduğunu bana net bir şekilde gösterdi.

Bu yazıda, secret rotation’ın neden bu kadar önemli olduğunu, farklı rotation stratejilerini ve kendi sistemlerimde uyguladığım pratik yöntemleri anlatacağım. Amacım, sır yönetimi süreçlerimi daha sağlam hale getirmek için karşılaştığım zorlukları ve bulduğum çözümleri paylaşmak.

Neden Secret Rotation Kritik Bir Güvenlik Adımıdır?

Herhangi bir statik sır, sistemde ne kadar uzun süre değişmeden kalırsa, ele geçirilme veya kötüye kullanılma riski o kadar artar. Bir sızma durumunda, saldırganın ilk hedefi genellikle bu tür statik kimlik bilgileridir. Eğer bu sırlar düzenli olarak yenilenmezse, bir kez ele geçirilen bir anahtar sonsuza kadar geçerli kalabilir ve sürekli bir arka kapı oluşturabilir.

Benim deneyimimde, özellikle eski sistemlerde veya hızlı geliştirme yapılan projelerde sırların ne kadar kolay gözden kaçtığını gördüm. Eskiden kullanılan bir entegrasyon için tanımlanmış, yıllardır hiç değişmemiş ve yetkileri geniş bir veritabanı kullanıcısı, bir güvenlik denetiminde büyük bir risk olarak işaretlenebilir. Bu tür durumlar, düzenli rotation’ın ne kadar hayati olduğunu gösteriyor.

Ayrıca, insan hatası da önemli bir faktör. Bir geliştirici, yanlışlıkla bir sırrı kod repozitoryosuna commit edebilir veya bir log dosyasında açık bırakabilir. Eğer bu sır, bir rotation politikasına tabi ise, bu tür bir hata bile belirli bir süre sonra etkisiz hale gelecektir. Kendi bir yan ürünümün backend’ini geliştirirken, yanlışlıkla bir S3 bucket anahtarını test loglarına yazdığımı hatırlıyorum. Neyse ki, bu anahtarın kısa bir rotation periyodu vardı ve olaydan kısa süre sonra otomatik olarak yenilendi. Bu, olası bir açığın etkisini sınırlamış oldu.

Secret Rotation Stratejileri ve Yaklaşımlar

Secret rotation’ı uygulamanın birkaç farklı yolu var ve her birinin kendi avantajları ve dezavantajları bulunuyor. Genelde, manuelden tam otomasyona doğru bir spektrumda yer alırlar.

1. Manuel Rotation

En basit yöntemdir. Belirli aralıklarla (örneğin ayda bir), bir yönetici veya geliştirici sırrı manuel olarak değiştirir ve ilgili tüm sistemlerde günceller. Bu yaklaşım, az sayıda sırrı olan küçük sistemler için uygulanabilir olabilir. Ancak, insan hatasına açık, zaman alıcı ve tutarsız olmaya meyillidir.

Kendi küçük yan ürünlerimden birinde, başlangıçta bu yöntemi denedim. Her ay takvimime “DB şifresi ve API anahtarları değiştir” notu düşüyordum. Ancak, yoğun bir dönemde atladığımı ve sonra kendime kızdığımı hatırlıyorum. Ölçek büyüdükçe veya sır sayısı arttıkça bu yöntem sürdürülemez hale geliyor. Özellikle bir veritabanı sunucusunda çok sayıda uygulamanın kullandığı bir sırrı değiştirmek, ciddi bir mesaiye dönüşebiliyordu.

2. Yarı Otomatik Rotation

Bu stratejide, sırrın oluşturulması veya değiştirilmesi otomatikleştirilir, ancak dağıtımı veya uygulamaların güncellenmesi manuel müdahale gerektirebilir. Örneğin, bir script yeni bir sır üretebilir, ancak sistem yöneticisi bu sırrı ilgili yapılandırma dosyalarına kopyalar ve servisleri yeniden başlatır.

Tipik bir örnek: güvenlik ekibi belirli sertifikaları otomatik olarak oluşturup bir depoya atar, ancak bu sertifikaları kullanan Nginx sunucularına dağıtım ve servisin yeniden başlatılması operasyon ekibinin sorumluluğunda kalır. Bu, manuelden daha iyi olsa da, yine de bir koordinasyon ve insan faktörü riski taşıyor. Kendi sunucumdaki Let’s Encrypt sertifikalarının yenilenmesi için kullandığım certbot aracının deploy-hook özelliğiyle benzer bir durum yaşadım: certbot sertifikayı yeniliyordu ama Nginx’i yeniden başlatmayı unutursam, eski sertifika aktif kalıyordu. Bu yüzden systemd unit’ime ExecReload komutunu ekleyerek bu süreci otomatik hale getirdim.

3. Tam Otomatik Rotation

Bu, ideal yaklaşımdır. Sırrın oluşturulması, dağıtımı, ilgili uygulamaların veya servislerin güncellenmesi ve hatta eski sırların temizlenmesi tamamen otomatikleştirilmiştir. Bu genellikle bir Secret Management Tool (SMT) veya özel otomasyon komut dosyaları ve CI/CD süreçleri ile başarılır.

Kullandığım bir üretim ERP’sinde, veritabanı şifreleri, API anahtarları ve servis token’ları, HashiCorp Vault gibi bir SMT ile yönetiliyordu. Uygulamalar, başlatıldıklarında veya belirli aralıklarla bu Vault’tan güncel sırları çekiyordu. Bu sayede, bir sırrı döndürdüğümüzde, tüm bağımlı sistemler otomatik olarak yeni sırrı alabiliyordu. Bu, operasyonel yükü önemli ölçüde azaltırken, güvenlik duruşunu da güçlendiriyor. CI/CD süreçlerinde güvenlik entegrasyonu konusunda daha fazla detaya girmiştim.

Veritabanı Kimlik Bilgileri ve Rotation

Veritabanları, genellikle sistemlerin en hassas sırlarını barındırır. Bu yüzden veritabanı kimlik bilgilerinin düzenli olarak döndürülmesi, en öncelikli konulardan biridir. Özellikle PostgreSQL ile çalıştığım projelerde bu konuda edindiğim tecrübeler var.

PostgreSQL’de bir kullanıcının şifresini değiştirmek ALTER USER komutuyla oldukça basittir:

ALTER USER myapp_user WITH PASSWORD 'new_strong_password';

Ancak asıl zorluk, bu değişikliği canlı sistemde kesinti yaşatmadan uygulamaktır. Benim bir üretim ERP’sinde uyguladığım strateji şuydu:

  1. Yeni Kullanıcı Oluşturma (Opsiyonel ama Güvenli): İhtiyaç durumunda, aynı yetkilere sahip yeni bir kullanıcı oluşturmak, roll-back senaryolarında bir güvenlik ağı sağlar.
  2. Uygulama Katmanında Geçiş: Uygulamaların veritabanı bağlantı havuzlarını (connection pool) yönetme şekli kritik. Birçok modern connection pool (örneğin Java’da HikariCP, Python’da asyncpg ile yazılmış özel havuzlar), şifre değişikliklerini dinamik olarak algılayabilir veya reload komutuyla yeni kimlik bilgilerini yükleyebilir. Eğer bu özellik yoksa, uygulamaları sırayla yeniden başlatmak gerekebilir.
  3. İki Aşamalı Rotation: Bazı durumlarda, eski ve yeni şifrenin bir süre aynı anda geçerli olmasını sağlayan bir geçiş stratejisi uyguladım. Örneğin, önce yeni bir şifre tanımlanır, ardından uygulamalar yeni şifreye geçirilir. Tüm uygulamalar geçişi tamamladığında, eski şifre devre dışı bırakılır. Bu, özellikle büyük ve karmaşık dağıtımlarda kesintiyi en aza indirmek için faydalıdır.
  4. pg_hba.conf Yönetimi: Kimlik doğrulama yöntemleri pg_hba.conf dosyasında tanımlıdır. Eğer burada IP tabanlı kısıtlamalar veya farklı kimlik doğrulama mekanizmaları kullanılıyorsa, rotation planına bu değişiklikleri de dahil etmek gerekir.

Bir keresinde, kendi geliştirdiğim bir görev yönetim uygulamasının backend’i için PostgreSQL şifresini döndürürken, bağlantı havuzunun yeni şifreyi otomatik olarak almadığını fark ettim. Uygulamayı yeniden başlattığımda her şey düzeldi ama bu kısa kesinti bile beni daha dikkatli olmaya itti. Bu durum, her bileşenin secret rotation’a nasıl tepki verdiğini anlamanın önemini gösteriyor. Özellikle systemd servisleri için ExecReload veya ExecStartPost gibi komutları kullanarak sırları yeniden yüklemeyi otomatikleştirdim. PostgreSQL performans ayarları ve WAL bloat sorunları yazımda da veritabanı yönetiminin inceliklerine değinmiştim.

API Anahtarları ve Servis Token’ları

Uygulamalar arası iletişimde kullanılan API anahtarları ve servis token’ları da düzenli rotation gerektiren önemli sır kategorileridir. Özellikle dışarıya açık API’ler veya üçüncü taraf servislerle entegrasyonlar için kullanılan anahtarlar, saldırı yüzeyini genişlettiği için daha sık döndürülmelidir.

JWT ve OAuth2 Token’ları

Modern uygulamalarda sıkça kullanılan JWT (JSON Web Tokens) ve OAuth2 token’ları için rotation stratejileri biraz farklıdır. JWT’lerin ömrü genellikle kısadır (dakikalar veya saatler). Asıl önemli olan, bu token’ları imzalamak için kullanılan anahtarların (HMAC secret veya RSA private key) düzenli olarak döndürülmesidir.

Bir üretim sisteminde, kullanıcı oturumları için kullanılan JWT’lerin imzalama anahtarlarını düzenli aralıklarla döndürdüm. Bu, anahtarın ele geçirilmesi durumunda bile, kısa bir süre içinde geçerliliğini yitireceği anlamına geliyordu. Bu süreci, anahtar yönetim sistemimde otomatik olarak yapacak şekilde ayarladım. Yeni bir anahtar oluşturulduğunda, uygulama servisleri bunu dinamik olarak yüklüyordu. Bu, systemd unit’lerindeki ExecReload komutunun yeni anahtarı SIGTERM sinyali göndermeden yüklemesini sağlayarak kesintisiz bir geçiş sağladı.

Üçüncü Taraf API Anahtarları

Birçok uygulama, Stripe, Twilio veya benzeri üçüncü taraf servislerin API’lerini kullanır. Bu API anahtarlarının rotation’ı, servis sağlayıcının sunduğu imkanlara bağlıdır. Genellikle, servis sağlayıcının yönetim panelinden yeni bir anahtar oluşturulur ve eski anahtar devre dışı bırakılır.

Kendi Android spam engelleyici uygulamamın backend’inde, bir SMS gateway servisi ile entegreydim. Bu servisin API anahtarını düzenli aralıklarla döndürmem gerekiyordu. Bu süreci, bir otomasyon script’i ile yönettim:

  1. Servis sağlayıcının API’si üzerinden yeni bir anahtar oluştur.
  2. Eski anahtarın geçerliliğini kontrol et.
  3. Uygulamanın yapılandırma dosyasına yeni anahtarı ekle.
  4. Uygulama servislerini yeniden başlat veya yapılandırmayı yeniden yükle.
  5. Eski anahtarı devre dışı bırak.

Bu süreç, manuel olarak yapıldığında unutulmaya çok açık olduğu için otomatikleştirmek kritikti. Bir keresinde, bu otomasyonu kurmayı unuttuğum için anahtarın süresi dolmuştu ve SMS gönderimleri bir süre durmuştu. Bu durum, otomasyonun sadece kolaylık değil, aynı zamanda güvenilirlik açısından da ne kadar önemli olduğunu gösterdi.

Otomasyon Araçları ve Süreçler

Secret rotation’ın başarılı bir şekilde uygulanabilmesi için otomasyon olmazsa olmazdır. Manuel işlemler hem hata riski taşır hem de ölçeklenmez. Kendi sistemlerimde ve müşteri projelerinde kullandığım bazı otomasyon yaklaşımları şunlar:

Secret Management Tools (SMT)

HashiCorp Vault, AWS Secrets Manager, Azure Key Vault gibi SMT’ler, sırların merkezi olarak yönetilmesi, dinamik olarak oluşturulması ve rotation’ının otomatize edilmesi için ideal çözümler sunar. Bu araçlar, uygulamaların sırlara erişimini denetlemeyi ve loglamayı da kolaylaştırır.

Çok sayıda servisin sırlarını HashiCorp Vault üzerinden yönettiğimiz bir projede, Vault veritabanı kimlik bilgilerini ve API anahtarlarını belirli TTL (Time-To-Live) süreleri ile otomatik olarak oluşturup döndürebiliyordu. Uygulamalar, Vault client kütüphanelerini kullanarak veya envconsul gibi araçlarla bu sırları alıyordu. Bu sayede, bir sırrı döndürdüğümüzde, Vault otomatik olarak yeni bir sır oluşturuyor ve uygulamalar bu sırrı kısa sürede çekerek kesintisiz bir geçiş sağlıyordu. Bu tür bir yapılandırma, özellikle microservice mimarilerinde çok sayıda servisin olduğu durumlarda operasyonel yükü inanılmaz derecede azaltıyor.

CI/CD Entegrasyonu

CI/CD pipeline’ları, secret rotation süreçlerini otomatikleştirmek için güçlü bir platform sunar. Yeni bir sır oluşturma, yapılandırma dosyalarını güncelleme ve servisleri yeniden başlatma adımları, CI/CD iş akışına entegre edilebilir.

Kendi bir yan ürünümün deploy sürecinde, GitLab CI kullanıyorum. Burada, yeni bir API anahtarı oluşturulduğunda, bu anahtarın production ortamına deploy edilen env dosyasına otomatik olarak eklenmesini sağlayan bir step var.

# .gitlab-ci.yml dosyasından bir kesit
deploy_production:
  stage: deploy
  script:
    - export NEW_API_KEY=$(generate_new_api_key_script) # Özel script ile yeni anahtar üret
    - sed -i "s/^API_KEY=.*$/API_KEY=${NEW_API_KEY}/g" .env.production
    - ssh user@prod-server "sudo systemctl reload myapp-backend.service"
  only:
    - master

Bu örnekte, generate_new_api_key_script benim özel, harici bir anahtar yönetim sisteminden veya doğrudan servisin API’sinden yeni bir anahtar üreten bir script’i temsil ediyor. Bu yaklaşım, deploy anında en güncel sırların kullanılmasını garanti altına alıyor. güvenilir CI/CD pipeline’ları oluşturma yazımda bu konuya daha detaylı değinebilirim.

Özel Komut Dosyaları ve systemd Timer’ları

Daha küçük ölçekli sistemlerde veya spesifik ihtiyaçlar için, kendi yazdığım shell script’leri veya Python betikleri ile systemd timer’larını kullanarak otomasyon yapıyorum. Örneğin, bir Nginx reverse proxy için kullanılan TLS sertifikalarını yenilemek ve Nginx’i yeniden yüklemek için bir systemd timer’ı kullanıyorum.

# /etc/systemd/system/nginx-cert-rotate.service
[Unit]
Description=Nginx Certificate Rotation Script

[Service]
Type=oneshot
ExecStart=/usr/local/bin/rotate_nginx_certs.sh
User=root

# /etc/systemd/system/nginx-cert-rotate.timer
[Unit]
Description=Run Nginx Certificate Rotation Daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

/usr/local/bin/rotate_nginx_certs.sh script’i, sertifikaları yeniliyor ve ardından sudo systemctl reload nginx komutuyla Nginx’i yeniden yükleyerek yeni sertifikaların devreye girmesini sağlıyor. Bu, özellikle bare-metal sunucularda veya container orkestrasyonu kullanmadığım durumlarda çok işime yarıyor.

Secret Rotation’ın Getirdiği Zorluklar ve Çözümleri

Secret rotation, güvenlik açısından büyük faydalar sağlasa da, beraberinde bazı operasyonel zorlukları da getirir. Bu zorlukları önceden bilmek ve çözüm stratejileri geliştirmek, kesintisiz bir geçiş için kritik öneme sahiptir.

1. Kesinti ve Downtime Riski

Yanlış yapılan bir rotation, uygulamaların sırra erişememesine ve dolayısıyla kesintiye neden olabilir. Özellikle büyük sistemlerde, tüm bileşenlerin aynı anda güncellenmesi zorlu bir görevdir.

Çözüm:

  • Aşamalı Geçiş (Blue/Green veya Canary Deployments): Yeni sırlarla yapılandırılmış yeni servis örneklerini devreye alıp trafiği yavaş yavaş yönlendirmek.
  • İki Aşamalı Sır Politikası: Belirli bir süre boyunca hem eski hem de yeni sırrın geçerli olmasını sağlamak. Bu, uygulamaların kademeli olarak yeni sırra geçiş yapmasına olanak tanır. Örneğin, bir veritabanı kullanıcısı için iki farklı şifre tanımlamak veya bir API anahtarı için “eskisini kabul etmeye devam et” politikası uygulamak.
  • Connection Pool Reload: Uygulamaların bağlantı havuzlarının sırları dinamik olarak yeniden yükleyebildiğinden emin olmak. Eğer bu mümkün değilse, uygulamanın yumuşak bir yeniden başlatma (graceful restart) ile yeni sırları almasını sağlamak.

Yeni şifrenin deployment pipeline’ına eklenmesini atlamak gibi tek bir eksik adım bile, servisin ayağa kalkıp veritabanına bağlanamamasına ve kesintiye yol açabilir. Bu yüzden otomasyonun her adımını titizlikle test etmek kritik.

2. Bağımlılık Yönetimi

Bir sırrın birden fazla uygulama veya servis tarafından kullanıldığı durumlarda, tüm bağımlı sistemlerin tespit edilmesi ve güncellenmesi zor olabilir. Eski, unutulmuş bir servis veya cron job, rotation sonrası sorun yaratabilir.

Çözüm:

  • Merkezi Sır Yönetimi (SMT): Tüm sırları tek bir yerde yönetmek, bağımlılıkları izlemeyi kolaylaştırır.
  • Sır Haritalaması: Hangi sırrın hangi uygulama veya servis tarafından kullanıldığını belgelemek ve düzenli olarak gözden geçirmek.
  • Erişim Kontrolü ve Denetim: SMT’ler genellikle sır erişimlerini loglar. Bu logları analiz ederek hangi servislerin hangi sırlara ne zaman eriştiğini görebiliriz.

Bir üretim projesinde, yıllar önce kurulmuş, test ortamında çalışan ama prod veritabanına bağlanan bir reporting script’inin varlığını rotation sırasında fark ettik. Bu script, yeni şifreyi almadığı için raporlama işini durdurmuştu. Bu tür “hayalet” bağımlılıklar, ancak düzenli denetim ve envanter çıkarma ile tespit edilebilir.

3. Hata Ayıklama ve Gözlemlenebilirlik (Observability)

Rotation sırasında veya sonrasında ortaya çıkan sorunları hızlıca tespit etmek ve gidermek için yeterli loglama ve izleme mekanizmalarına sahip olmak gerekir.

Çözüm:

  • Detaylı Loglama: Sır döndürme işlemlerini ve ilgili servislerin sır erişim hatalarını detaylıca loglamak. Hata mesajlarının net ve anlaşılır olması.
  • Metrikler ve Uyarılar: Sır erişim hataları, bağlantı hataları veya servis kesintileri için proaktif metrikler toplamak ve uyarılar ayarlamak.
  • Audit Logları: Kimin ne zaman hangi sırrı döndürdüğünü veya eriştiğini gösteren audit loglarını tutmak.

Kendi sistemimde, Redis şifresini döndürdüğümde, bazı servislerin eski şifreyle Redis’e bağlanmaya çalıştığını ve ERR invalid password hatası aldığını gördüm. journald loglarını inceleyerek bu hatayı hızlıca tespit ettim ve ilgili servisi yeniden başlattım. Bu tür durumlarda, logların ve metriklerin ne kadar hızlı yanıt verdiğini görmek, sorun giderme süresini önemli ölçüde kısaltır.

Sonuç

Secret rotation, modern sistem güvenliğinin temel taşlarından biridir. Manuel yaklaşımlardan tam otomasyona geçiş, sadece operasyonel verimliliği artırmakla kalmaz, aynı zamanda güvenlik duruşunu da ciddi şekilde güçlendirir. Kendi saha tecrübemde, bu konuyu hafife almanın bedelini ödeyen çok sayıda proje ve sistem gördüm.

Unutmayın, bir sırrın ele geçirilmesi kaçınılmaz olabilir, ancak o sırrın ömrünü kısaltarak olası zararı en aza indirebiliriz. Otomasyon, detaylı izleme ve iyi tanımlanmış süreçler, secret rotation’ı korkulan bir görev olmaktan çıkarıp rutin bir güvenlik pratiği haline getirmenin anahtarlarıdır. Benim tercihim, mümkün olan her yerde tam otomasyonu hedeflemek ve insan faktörünü süreçten mümkün olduğunca çıkarmaktır. Her zaman “olur o kadar” demeden önce, bir şeylerin ters gitme ihtimaline karşı hazırlıklı olmak, uzun vadede çok daha az baş ağrısı demektir.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

Sıkça Sorulanlar

Bu makale ile ilgili okurların sorduğu yaygın sorular.

Secret rotation'ı sistemlerimde nasıl uygulamaya başlayabilirim?
Benim deneyimimde, secret rotation'ı uygulamaya başlamak için ilk adım, sistemdeki tüm statik sırları tespit etmekti. Ardından, bu sırları düzenli olarak döndürmek için bir plan oluşturdum ve bu planı tüm takım üyeleriyle paylaştım. Ayrıca, otomasyon araçlarını kullanarak sırları düzenli olarak yenilemeyi hedefledim. Bu şekilde, secret rotation'ı sistemlerimin bir parçası haline getirdim ve güvenliğimi artırdım.
Secret rotation'ın avantajları ve dezavantajları nelerdir?
Benim deneyimimde, secret rotation'ın en büyük avantajı, sistemlerimi siber tehditlere karşı daha güvenli hale getirmesidir. Ancak, secret rotation'ın dezavantajı, ek bir iş yükü oluşturmasıdır. Özellikle büyük sistemlerde, tüm sırları düzenli olarak döndürmek zaman alabilir. Ancak, benim deneyimimde, bu ek iş yükünün güvenlik avantajlarından daha ağır bastığını gördüm.
Secret rotation'da hata yaparsam ne yapmalıyım?
Benim deneyimimde, secret rotation'da hata yapmak mümkün olabilir. Eğer bir hata yaparsam, ilk adımım, hatayı tespit etmek ve nedenini anlamaktır. Ardından, hatayı düzeltmek için gereken adımları alırım. Ayrıca, hatalarımı belgeleyerek, gelecekte aynı hataları yapmamak için bir plan oluştururum. Bu şekilde, secret rotation'ı güvenli ve etkili bir şekilde uygulayabilirim.
Secret rotation'ın genel kanıya göre gerçekten gerekli mi?
Benim deneyimimde, secret rotation'ın gerçekten gerekli olduğu konusunda herhangi bir şüphe yok. Genel kanı, secret rotation'ın bir iyi uygulama olduğunu desteklemektedir. Ancak, benim deneyimimde, secret rotation'ın sadece bir iyi uygulama değil, aynı zamanda temel bir güvenlik ihtiyacı olduğunu gördüm. Sistemlerimi siber tehditlere karşı korumak için secret rotation'ı düzenli olarak uygulamak, benim için temel bir öncelik haline geldi.
ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

✉️ Ücretsiz · Spam yok · İstediğin an çık

Yeni yazılardan haberdar olun

Yeni içerikler ve teknik notlar e-postanıza gelsin.

  • 📌
    Haftanın en iyisi Sadece okumaya değer tek yazı
  • 🔧
    Alet çantası Bu hafta kullandığım araçlar
  • 🧠
    Perde arkası Blog'a girmeyen notlar

Spam yapmıyoruz. İstediğiniz zaman ayrılabilirsiniz. · Sadece Umami (self-hosted, Google yok) ile takip.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar