{"id":34172,"date":"2025-11-12T07:01:10","date_gmt":"2025-11-12T04:01:10","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/"},"modified":"2025-11-12T07:01:10","modified_gmt":"2025-11-12T04:01:10","slug":"kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/","title":{"rendered":"Kubernetes ve Vault Entegrasyonu: G\u00fcvenli Secret Y\u00f6netimi"},"content":{"rendered":"<p>\nKubernetes ortamlar\u0131n\u0131zda hassas bilgileri (API anahtarlar\u0131, veritaban\u0131 \u015fifreleri) nas\u0131l g\u00fcvenle y\u00f6netece\u011finizi mi merak ediyorsunuz? \u0130\u015fte tam da bu noktada devreye giren Vault entegrasyonu ile secret y\u00f6netimini otomatize edebilir, g\u00fcvenlik duru\u015funuzu \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir ve uyumluluk endi\u015felerinizi giderebilirsiniz. Modern bulut yerel uygulamalar i\u00e7in olmazsa olmaz bir pratik olan bu entegrasyon, geli\u015ftirme s\u00fcre\u00e7lerinizi h\u0131zland\u0131r\u0131rken veri ihlallerine kar\u015f\u0131 g\u00fc\u00e7l\u00fc bir kalkan olu\u015fturur.\n<\/p>\n<p>\nG\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen dijital d\u00fcnyas\u0131nda, uygulamalar\u0131m\u0131z s\u00fcrekli olarak hassas verilere ihtiya\u00e7 duyuyor. Veritaban\u0131 kimlik bilgileri, API anahtarlar\u0131, \u015fifreleme anahtarlar\u0131 ve \u00fc\u00e7\u00fcnc\u00fc taraf servis eri\u015fim token&#8217;lar\u0131 gibi s\u0131rlar, bir uygulaman\u0131n sorunsuz \u00e7al\u0131\u015fmas\u0131 i\u00e7in adeta can damar\u0131 niteli\u011finde. Ancak bu s\u0131rlar\u0131 g\u00fcvenli bir \u015fekilde depolamak, da\u011f\u0131tmak ve y\u00f6netmek, \u00f6zellikle mikroservis mimarileri ve konteynerize edilmi\u015f ortamlar, yani Kubernetes gibi platformlar s\u00f6z konusu oldu\u011funda, karma\u015f\u0131k bir hal alabiliyor. Peki, Kubernetes&#8217;te secret y\u00f6netimi neden bu kadar kritik bir \u00f6neme sahip? Bu soru, g\u00fcn\u00fcm\u00fcz\u00fcn siber g\u00fcvenlik tehditleri ve uyumluluk gereksinimleri d\u00fc\u015f\u00fcn\u00fcld\u00fc\u011f\u00fcnde, cevab\u0131 hayati derecede \u00f6nemli olan bir sorudur.\n<\/p>\n<p>\nGeleneksel y\u00f6ntemlerle secret&#8217;lar\u0131 y\u00f6netmek, ne yaz\u0131k ki ciddi g\u00fcvenlik risklerini beraberinde getiriyor. Uygulama kodunun i\u00e7ine g\u00f6m\u00fcl\u00fc (hardcoded) \u015fifreler, versiyon kontrol sistemlerine yanl\u0131\u015fl\u0131kla commit edilen hassas bilgiler veya basit metin dosyalar\u0131nda saklanan kimlik bilgileri, adeta bir zaman ayarl\u0131 bomba gibidir. Bu t\u00fcr uygulamalar, k\u00f6t\u00fc niyetli sald\u0131rganlar i\u00e7in kolay hedefler haline gelir ve \u015firketler i\u00e7in b\u00fcy\u00fck maliyetli veri ihlallerine yol a\u00e7abilir. \u00d6rne\u011fin, bir geli\u015ftiricinin yanl\u0131\u015fl\u0131kla bir API anahtar\u0131n\u0131 GitHub&#8217;a y\u00fcklemesi, sadece dakikalar i\u00e7inde botlar taraf\u0131ndan tespit edilip k\u00f6t\u00fcye kullan\u0131labilir. Bu t\u00fcr bir senaryo, sadece finansal kay\u0131plara de\u011fil, ayn\u0131 zamanda \u015firket itibar\u0131n\u0131n zedelenmesine ve m\u00fc\u015fteri g\u00fcveninin sars\u0131lmas\u0131na da neden olabilir. \u0130\u015fte bu noktada, merkezi ve g\u00fcvenli bir secret y\u00f6netim \u00e7\u00f6z\u00fcm\u00fcne olan ihtiya\u00e7 a\u00e7\u0131k\u00e7a ortaya \u00e7\u0131kar.\n<\/p>\n<p>\nKubernetes, kendi i\u00e7erisinde &#8220;Secrets&#8221; ad\u0131nda bir kaynak sunsa da, bu resource&#8217;lar asl\u0131nda sadece base64 ile kodlanm\u0131\u015f verilerdir; yani \u015fifrelenmi\u015f de\u011fildirler ve k\u00fcmeye eri\u015fimi olan herkes taraf\u0131ndan kolayca okunabilirler. Bu durum, \u00f6zellikle \u00e7oklu kirac\u0131l\u0131 (multi-tenant) ortamlarda veya s\u0131k\u0131 g\u00fcvenlik politikalar\u0131na sahip sekt\u00f6rlerde kabul edilemez bir risktir. Hassas verilerin g\u00fcvenli bir \u015fekilde saklanmas\u0131 ve yaln\u0131zca yetkili uygulamalar veya kullan\u0131c\u0131lar taraf\u0131ndan eri\u015filebilir olmas\u0131, modern DevSecOps prensiplerinin temelini olu\u015fturur. Bu nedenle, Kubernetes&#8217;in yerle\u015fik secret y\u00f6netim yeteneklerini a\u015fan, g\u00fc\u00e7l\u00fc bir harici \u00e7\u00f6z\u00fcm aray\u0131\u015f\u0131na girilir. \u0130\u015fte HashiCorp Vault, tam da bu ihtiyaca cevap vermek \u00fczere tasarlanm\u0131\u015f, sekt\u00f6r lideri bir secret y\u00f6netim platformudur. G\u00fcvenli depolama, dinamik secret \u00fcretimi, veri \u015fifreleme ve detayl\u0131 eri\u015fim kontrol\u00fc gibi \u00f6zellikleriyle Vault, Kubernetes ortamlar\u0131nda kar\u015f\u0131la\u015f\u0131lan secret y\u00f6netim zorluklar\u0131na kapsaml\u0131 bir \u00e7\u00f6z\u00fcm sunar. Bu entegrasyon sayesinde, uygulamalar\u0131n\u0131z\u0131n ihtiya\u00e7 duydu\u011fu t\u00fcm s\u0131rlara g\u00fcvenli, otomatik ve izlenebilir bir \u015fekilde eri\u015fim sa\u011flan\u0131rken, geli\u015ftiriciler de g\u00fcvenlik endi\u015feleri ta\u015f\u0131madan i\u015flerine odaklanabilirler.\n<\/p>\n<h2>Temel Kavramlara H\u0131zl\u0131 Bir Bak\u0131\u015f: Kubernetes ve HashiCorp Vault Nedir?<\/h2>\n<p>\nKubernetes ve HashiCorp Vault, modern bulut yerel altyap\u0131lar\u0131n\u0131n iki temel dire\u011fidir. Bu iki teknolojiyi etkili bir \u015fekilde bir araya getirmek i\u00e7in \u00f6ncelikle her birinin ne anlama geldi\u011fini ve hangi problemleri \u00e7\u00f6zd\u00fc\u011f\u00fcn\u00fc anlamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu b\u00f6l\u00fcmde, konuya yabanc\u0131 olan okuyucular\u0131m\u0131z i\u00e7in bu kritik kavramlara h\u0131zl\u0131ca g\u00f6z ataca\u011f\u0131z ve neden bir araya gelmeleri gerekti\u011fini a\u00e7\u0131klayaca\u011f\u0131z.\n<\/p>\n<h3>Kubernetes Nedir ve Secret&#8217;lar\u0131 Nas\u0131l Saklar?<\/h3>\n<p>\nKubernetes, konteynerize edilmi\u015f uygulamalar\u0131 otomatik olarak da\u011f\u0131tmak, \u00f6l\u00e7eklendirmek ve y\u00f6netmek i\u00e7in geli\u015ftirilmi\u015f a\u00e7\u0131k kaynakl\u0131 bir platformdur. Google taraf\u0131ndan geli\u015ftirilen ve \u015fu anda Cloud Native Computing Foundation (CNCF) taraf\u0131ndan s\u00fcrd\u00fcr\u00fclen Kubernetes, Docker gibi konteyner teknolojileriyle birlikte \u00e7al\u0131\u015farak uygulamalar\u0131n\u0131z\u0131 herhangi bir bulut ortam\u0131nda veya kendi veri merkezinizde tutarl\u0131 bir \u015fekilde \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flar. Bir mikroservis mimarisi d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcn\u00fczde, her bir servisin ba\u011f\u0131ms\u0131z konteynerler i\u00e7inde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve Kubernetes&#8217;in bu konteynerlerin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc y\u00f6netti\u011fini hayal edebilirsiniz.\n<\/p>\n<p>\nUygulamalar\u0131n\u0131z\u0131n sorunsuz \u00e7al\u0131\u015fabilmesi i\u00e7in genellikle veritaban\u0131 \u015fifreleri, API anahtarlar\u0131 veya TLS sertifikalar\u0131 gibi hassas bilgilere ihtiya\u00e7 duyarlar. Kubernetes, bu t\u00fcr hassas bilgileri depolamak i\u00e7in &#8220;Secrets&#8221; ad\u0131 verilen \u00f6zel bir kaynak sa\u011flar. Bir Kubernetes Secret nesnesi, temel olarak anahtar-de\u011fer \u00e7iftlerinden olu\u015fan bir harita gibidir. Ancak burada kritik bir nokta var: Kubernetes Secrets&#8217;lar varsay\u0131lan olarak \u015fifreli de\u011fildir. \u0130\u00e7lerindeki veriler sadece base64 ile kodlanm\u0131\u015f (encoded) haldedir. Bu, bir dosyay\u0131 s\u0131k\u0131\u015ft\u0131rmak veya okunabilirli\u011fini zorla\u015ft\u0131rmak gibidir; veriyi gizlemez, sadece do\u011frudan okumas\u0131n\u0131 biraz engeller. Yani, Kubernetes k\u00fcmesine eri\u015fimi olan herhangi bir yetkili ki\u015fi, bu secret&#8217;lar\u0131 kolayca \u00e7\u00f6zebilir ve i\u00e7eri\u011fini g\u00f6rebilir.\n<\/p>\n<p>\nBu durum, g\u00fcvenlik a\u00e7\u0131s\u0131ndan ciddi bir zafiyet olu\u015fturur. \u00d6rne\u011fin, bir geli\u015ftiricinin yanl\u0131\u015fl\u0131kla cluster&#8217;a geni\u015f yetkilerle eri\u015fim sa\u011flamas\u0131 veya bir k\u00f6t\u00fc niyetli akt\u00f6r\u00fcn k\u00fcme i\u00e7ine s\u0131zmas\u0131 durumunda, t\u00fcm secret&#8217;lar tehlike alt\u0131na girebilir. Ayr\u0131ca, bu secret&#8217;lar\u0131n versiyon kontrol sistemlerinde (Git gibi) saklanmas\u0131, g\u00fcvenlik risklerini daha da art\u0131r\u0131r. Bu y\u00fczden, Kubernetes&#8217;in yerle\u015fik Secret mekanizmas\u0131, \u00f6zellikle \u00fcretim ortamlar\u0131 ve s\u0131k\u0131 g\u00fcvenlik gereksinimleri olan uygulamalar i\u00e7in tek ba\u015f\u0131na yeterli de\u011fildir. Daha g\u00fc\u00e7l\u00fc bir \u015fifreleme, dinamik secret \u00fcretimi ve daha granular eri\u015fim kontrol\u00fc sa\u011flayan harici bir \u00e7\u00f6z\u00fcm zorunlu hale gelir. \u0130\u015fte bu noktada, HashiCorp Vault devreye giriyor.\n<\/p>\n<h3>HashiCorp Vault: Merkezi Secret Y\u00f6netiminin G\u00fcc\u00fc<\/h3>\n<p>\nHashiCorp Vault, hassas verilere g\u00fcvenli bir \u015fekilde eri\u015fimi y\u00f6netmek i\u00e7in tasarlanm\u0131\u015f bir &#8220;secret y\u00f6netim&#8221; arac\u0131d\u0131r. Yaln\u0131zca secret&#8217;lar\u0131 depolamakla kalmaz, ayn\u0131 zamanda dinamik olarak secret&#8217;lar olu\u015fturabilir, veri \u015fifreleme hizmetleri sunabilir ve kimlik tabanl\u0131 eri\u015fim kontrol\u00fc sa\u011flayabilir. Vault&#8217;un temel amac\u0131, hassas verilerin depolanma, eri\u015fim ve denetim s\u00fcre\u00e7lerini merkezile\u015ftirerek g\u00fcvenlik duru\u015funu g\u00fc\u00e7lendirmektir.\n<\/p>\n<p>\nVault&#8217;un \u00f6ne \u00e7\u0131kan baz\u0131 temel \u00f6zellikleri \u015funlard\u0131r:\n<\/p>\n<ul>\n<li><strong>G\u00fcvenli Secret Depolama:<\/strong> Veritaban\u0131 kimlik bilgileri, API anahtarlar\u0131 gibi statik secret&#8217;lar\u0131 \u015fifreli bir \u015fekilde depolar. Verilere yaln\u0131zca yetkili kullan\u0131c\u0131lar veya makineler eri\u015febilir.<\/li>\n<li><strong>Dinamik Secret&#8217;lar:<\/strong> \u0130htiya\u00e7 duyuldu\u011funda ge\u00e7ici secret&#8217;lar (\u00f6rn. 5 dakikal\u0131k veritaban\u0131 eri\u015fim \u015fifresi, belirli bir AWS IAM rol\u00fc) olu\u015fturabilir. Bu secret&#8217;lar kullan\u0131ld\u0131ktan sonra otomatik olarak sona erer veya iptal edilir, bu da sald\u0131r\u0131 y\u00fczeyini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r.<\/li>\n<li><strong>Veri \u015eifreleme Hizmetleri:<\/strong> Uygulamalar\u0131n hassas verileri \u015fifrelemesi ve \u015fifresini \u00e7\u00f6zmesi i\u00e7in bir API sunar, b\u00f6ylece uygulaman\u0131n kendisinin \u015fifreleme anahtarlar\u0131n\u0131 y\u00f6netmesine gerek kalmaz.<\/li>\n<li><strong>Kimlik ve Eri\u015fim Y\u00f6netimi:<\/strong> \u00c7e\u015fitli kimlik do\u011frulama y\u00f6ntemlerini destekler (Kullan\u0131c\u0131 ad\u0131\/\u015fifre, LDAP, GitHub, AWS IAM, Kubernetes Service Account tokenlar\u0131 vb.) ve ayr\u0131nt\u0131l\u0131 yetkilendirme politikalar\u0131 (ACL&#8217;ler) ile kimin hangi secret&#8217;lara ne kadar s\u00fcreyle eri\u015febilece\u011fini kontrol eder.<\/li>\n<li><strong>Denetim Yetene\u011fi:<\/strong> Vault \u00fczerinden yap\u0131lan t\u00fcm i\u015flemleri denetler ve loglar, bu da uyumluluk gereksinimleri i\u00e7in hayati \u00f6nem ta\u015f\u0131r.<\/li>\n<\/ul>\n<p>\nKubernetes ba\u011flam\u0131nda Vault, \u00f6zellikle &#8220;Kubernetes Auth method&#8221; \u00f6zelli\u011fi ile parlar. Bu y\u00f6ntem sayesinde, Kubernetes k\u00fcmesindeki bir Pod (yani uygulaman\u0131z), kendi Service Account token&#8217;\u0131n\u0131 kullanarak Vault&#8217;a kimlik do\u011frulamas\u0131 yapabilir. Vault, bu token&#8217;\u0131 do\u011frulad\u0131ktan sonra, Pod&#8217;a \u00f6nceden tan\u0131mlanm\u0131\u015f politikalara g\u00f6re belirli secret&#8217;lara eri\u015fim izni verir. Bu mekanizma, uygulamalar\u0131n secret&#8217;lara do\u011frudan ve g\u00fcvenli bir \u015fekilde eri\u015fmesini sa\u011flarken, hi\u00e7bir hassas bilginin kodda veya Kubernetes Secret&#8217;lar\u0131nda statik olarak tutulmas\u0131na gerek kalmaz. B\u00f6ylece, hem geli\u015ftirme s\u00fcre\u00e7leri basitle\u015fir hem de g\u00fcvenlik standard\u0131 en \u00fcst seviyeye \u00e7\u0131kar\u0131lm\u0131\u015f olur. Vault, modern altyap\u0131larda secret y\u00f6netiminin getirdi\u011fi t\u00fcm zorluklar\u0131 ortadan kald\u0131ran g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcmd\u00fcr.\n<\/p>\n<h2>Kubernetes ve Vault Entegrasyonu Nas\u0131l \u00c7al\u0131\u015f\u0131r? Mimarisine Derinlemesine Bak\u0131\u015f<\/h2>\n<p>\nKubernetes ve Vault aras\u0131ndaki entegrasyon, uygulamalar\u0131n\u0131z\u0131n hassas bilgilere g\u00fcvenli, otomatik ve dinamik bir \u015fekilde eri\u015fmesini sa\u011flayan g\u00fc\u00e7l\u00fc bir mimariye dayan\u0131r. Bu entegrasyonun kalbinde, Vault&#8217;un kimlik do\u011frulama yetenekleri ve Kubernetes&#8217;in pod ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimi yatar. \u015eimdi bu mimarinin nas\u0131l i\u015fledi\u011fine ve bile\u015fenlerinin ne gibi roller \u00fcstlendi\u011fine daha yak\u0131ndan bakal\u0131m.\n<\/p>\n<p>\nEntegrasyonun temel amac\u0131, Kubernetes&#8217;te \u00e7al\u0131\u015fan bir uygulaman\u0131n, herhangi bir secret&#8217;\u0131 kendi YAML tan\u0131m\u0131nda veya kodunda a\u00e7\u0131k\u00e7a belirtmeden, Vault&#8217;tan g\u00fcvenli bir \u015fekilde alabilmesidir. Bu s\u00fcre\u00e7 genellikle a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 ve bile\u015fenleri i\u00e7erir:\n<\/p>\n<ol>\n<li><strong>Vault Kubernetes Auth Method:<\/strong> Vault, Kubernetes Service Account token&#8217;lar\u0131n\u0131 kullanarak kimlik do\u011frulamay\u0131 destekler. Bu yetenek etkinle\u015ftirildi\u011finde, Vault, Kubernetes API sunucusu ile ileti\u015fim kurarak kendisine sunulan bir Service Account token&#8217;\u0131n\u0131n ge\u00e7erlili\u011fini do\u011frulayabilir. Bu do\u011frulama sonras\u0131nda, Vault bir kimlik do\u011frulama iste\u011finde bulunan Pod&#8217;a ge\u00e7ici bir Vault token&#8217;\u0131 verir.<\/li>\n<li><strong>Vault Politikalar\u0131 ve Roller:<\/strong> Vault&#8217;ta, belirli secret yollar\u0131na eri\u015fimi tan\u0131mlayan politikalar olu\u015fturulur. Bu politikalar daha sonra Kubernetes Service Account&#8217;lar\u0131na e\u015flenen rollere atan\u0131r. \u00d6rne\u011fin, bir &#8220;veritaban\u0131-uygulamas\u0131&#8221; Service Account&#8217;\u0131, yaln\u0131zca &#8220;secret\/data\/prod\/db&#8221; yolundaki secret&#8217;lara okuma eri\u015fimine sahip bir role atanabilir.<\/li>\n<li><strong>Uygulama Pod&#8217;u ve Service Account:<\/strong> Kubernetes&#8217;teki her Pod, varsay\u0131lan olarak veya a\u00e7\u0131k\u00e7a atanm\u0131\u015f bir Service Account ile ili\u015fkilendirilir. Bu Service Account, Pod&#8217;un k\u00fcme i\u00e7indeki kaynaklara (\u00f6rn. API) eri\u015fmek i\u00e7in kulland\u0131\u011f\u0131 bir kimlik belirtecidir. Entegrasyon s\u00fcrecinde, bu Service Account token&#8217;\u0131 Vault ile kimlik do\u011frulama i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><strong>Vault Agent ve Sidecar Deseni:<\/strong> Genellikle, bir Kubernetes Pod&#8217;unun do\u011frudan Vault API&#8217;sini \u00e7a\u011f\u0131rmas\u0131 yerine, Vault Agent ad\u0131 verilen bir yard\u0131mc\u0131 bile\u015fen kullan\u0131l\u0131r. Bu ajan, Pod&#8217;un i\u00e7inde bir &#8220;sidecar&#8221; konteyneri olarak \u00e7al\u0131\u015f\u0131r. Sidecar deseni, uygulaman\u0131z\u0131n ana konteynerinin yan\u0131na, onunla birlikte \u00e7al\u0131\u015fan ek bir konteyner yerle\u015ftirmeyi ifade eder. Vault Agent Sidecar&#8217;\u0131n g\u00f6revi \u015funlar\u0131 i\u00e7erir:\n<ul>\n<li>Pod&#8217;un Service Account token&#8217;\u0131n\u0131 kullanarak Vault&#8217;a kimlik do\u011frulamas\u0131 yapmak ve bir Vault token&#8217;\u0131 almak.<\/li>\n<li>Bu Vault token&#8217;\u0131n\u0131 kullanarak Vault&#8217;tan istenen secret&#8217;lar\u0131 \u00e7ekmek.<\/li>\n<li>\u00c7ekilen secret&#8217;lar\u0131, uygulaman\u0131n kolayca okuyabilece\u011fi bir formatta (\u00f6rn. dosya sistemi \u00fczerinde) bir payla\u015f\u0131ml\u0131 birime (volume) yazmak.<\/li>\n<li>Secret&#8217;lar\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc y\u00f6netmek (yeniden getirme, yenileme vb.).<\/li>\n<\/ul>\n<\/li>\n<li><strong>Vault Agent Injector (Opsiyonel ama \u00d6nerilen):<\/strong> Vault Agent&#8217;\u0131 manuel olarak her Pod tan\u0131m\u0131na eklemek yerine, HashiCorp Vault Agent Injector ad\u0131 verilen bir &#8220;mutating webhook&#8221; Kubernetes k\u00fcmesinde da\u011f\u0131t\u0131labilir. Bu webhook, yeni Pod olu\u015fturma isteklerini keser, belirli anotasyonlara sahip Pod&#8217;lar\u0131 tespit eder ve otomatik olarak Vault Agent sidecar konteynerini ve ilgili birimleri Pod tan\u0131m\u0131na enjekte eder. Bu, geli\u015ftiricilerin Vault entegrasyonu hakk\u0131nda \u00e7ok fazla bilgi sahibi olmas\u0131na gerek kalmadan secret&#8217;lar\u0131 kullanabilmesini sa\u011flar, operasyonel y\u00fck\u00fc azalt\u0131r ve tutarl\u0131l\u0131\u011f\u0131 art\u0131r\u0131r.<\/li>\n<\/ol>\n<p>\n\u00d6zetle, bir Kubernetes Pod&#8217;u bir secret&#8217;a ihtiya\u00e7 duydu\u011funda, \u00f6nce kendi Service Account token&#8217;\u0131n\u0131 kullanarak Vault&#8217;a kimlik do\u011frulamas\u0131 yapar. Vault, bu token&#8217;\u0131 do\u011frular ve Pod&#8217;a ge\u00e7ici bir Vault token&#8217;\u0131 verir. Ard\u0131ndan, Pod i\u00e7indeki Vault Agent sidecar, bu Vault token&#8217;\u0131n\u0131 kullanarak Vault&#8217;tan istenen secret&#8217;lar\u0131 \u00e7eker ve bunlar\u0131 Pod&#8217;un dosya sistemine yazar. Uygulama, bu secret&#8217;lara sanki yerel bir dosyadan okuyormu\u015f gibi eri\u015febilir. Bu mimari, secret&#8217;lar\u0131n asla diskte kal\u0131c\u0131 olarak depolanmamas\u0131n\u0131, \u015fifresiz olarak a\u011fda dola\u015fmamas\u0131n\u0131 ve yaln\u0131zca ihtiya\u00e7 duyuldu\u011funda, gerekti\u011fi kadar s\u00fcreyle eri\u015filebilir olmas\u0131n\u0131 sa\u011flar. Bu sayede, g\u00fcvenlik, esneklik ve denetlenebilirlik a\u00e7\u0131s\u0131ndan \u00f6nemli avantajlar elde edilir. Bir veritaban\u0131 \u015fifresinin art\u0131k kodda sabitlenmedi\u011fi, bunun yerine her uygulama ba\u015flat\u0131ld\u0131\u011f\u0131nda Vault&#8217;tan dinamik olarak \u00e7ekildi\u011fi bir senaryoyu d\u00fc\u015f\u00fcn\u00fcn. Bu, sadece g\u00fcvenli\u011fi art\u0131rmakla kalmaz, ayn\u0131 zamanda operasyonel esnekli\u011fi de maksimuma \u00e7\u0131kar\u0131r.\n<\/p>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: Vault Agent Injector kullanarak, uygulamalar\u0131n\u0131z\u0131n secret eri\u015fimini merkezi olarak y\u00f6netebilir ve geli\u015ftiricilerin her uygulama i\u00e7in \u00f6zel yap\u0131land\u0131rmalar yapma ihtiyac\u0131n\u0131 ortadan kald\u0131rabilirsiniz. Bu sayede g\u00fcvenlik politikalar\u0131n\u0131n tutarl\u0131 bir \u015fekilde uygulanmas\u0131n\u0131 garantilersiniz.\n<\/div>\n<h2>Ad\u0131m Ad\u0131m Entegrasyon: Kubernetes Ortam\u0131nda Vault Secret&#8217;lar\u0131n\u0131 Nas\u0131l Kullan\u0131r\u0131z?<\/h2>\n<p>\nKubernetes ve Vault entegrasyonu, hassas verilerinizi koruman\u0131n ve y\u00f6netmenin modern ve g\u00fcvenli bir yolunu sunar. Bu b\u00f6l\u00fcmde, bu entegrasyonu ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131m\u0131z\u0131 ve bir Kubernetes uygulamas\u0131n\u0131n Vault&#8217;tan secret&#8217;lar\u0131 nas\u0131l \u00e7ekece\u011fini g\u00f6sterece\u011fiz. Ama\u00e7, okuyucunun konuyu s\u0131f\u0131rdan anlayabilmesi ve kendi ortam\u0131nda uygulayabilmesi i\u00e7in gerekli t\u00fcm bilgileri sa\u011flamakt\u0131r. Bu pratik k\u0131s\u0131m, komut sat\u0131r\u0131 \u00f6rnekleri ve YAML tan\u0131mlamalar\u0131 ile desteklenecektir.\n<\/p>\n<h3>Vault&#8217;u Kurmak ve Yap\u0131land\u0131rmak<\/h3>\n<p>\nVault&#8217;u Kubernetes k\u00fcmenize entegre etmeden \u00f6nce, \u00f6ncelikle bir Vault sunucusuna ihtiyac\u0131n\u0131z var. \u00dcretim ortamlar\u0131 i\u00e7in Vault&#8217;u y\u00fcksek eri\u015filebilirlikli (HA) bir modda kurman\u0131z \u00f6nerilir. Ancak bu \u00f6rnekte, h\u0131zl\u0131 bir ba\u015flang\u0131\u00e7 i\u00e7in genellikle Helm Chart kullan\u0131larak basit bir Vault da\u011f\u0131t\u0131m\u0131 varsayaca\u011f\u0131z. Minikube veya Kind gibi yerel bir Kubernetes ortam\u0131nda da bu ad\u0131mlar\u0131 takip edebilirsiniz.\n<\/p>\n<ol>\n<li><strong>Vault Helm Chart Ekleme:<\/strong>\n<pre><code class=\"language-bash\">\nhelm repo add hashicorp https:\/\/helm.releases.hashicorp.com\nhelm repo update\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Vault'u Da\u011f\u0131tma (Geli\u015ftirme Modu):<\/strong>\n<p>Geli\u015ftirme ortam\u0131 i\u00e7in basit bir kurulum yapabiliriz. \u00dcretim i\u00e7in kal\u0131c\u0131 depolama ve HA ayarlar\u0131n\u0131 i\u00e7eren daha karma\u015f\u0131k bir yap\u0131land\u0131rma gereklidir.<\/p>\n<pre><code class=\"language-bash\">\nhelm install vault hashicorp\/vault --set server.dev.enabled=true --set server.dev.devRootToken=\"myroot\"\n        <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, \"myroot\" root token'\u0131 ile bir geli\u015ftirme Vault sunucusu kurar. \u00dcretimde asla sabit bir root token kullanmay\u0131n.<\/p>\n<\/li>\n<li><strong>Vault UI'ye Eri\u015fim ve Ortam Ayarlar\u0131:<\/strong>\n<p>Vault pod'unun haz\u0131r olmas\u0131n\u0131 bekledikten sonra, Vault UI'ye eri\u015fmek i\u00e7in port forwarding yapabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">\nkubectl port-forward svc\/vault 8200:8200\n        <\/pre>\n<p><\/code><\/p>\n<p>Taray\u0131c\u0131n\u0131zda <code>http:\/\/localhost:8200<\/code> adresine giderek Vault UI'ye ula\u015fabilirsiniz. Root token'\u0131n\u0131z \"myroot\" ile giri\u015f yap\u0131n.<\/p>\n<p>Terminalde Vault CLI'y\u0131 kullanmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\nexport VAULT_ADDR='http:\/\/127.0.0.1:8200'\nexport VAULT_TOKEN='myroot'\nvault status\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Kubernetes Kimlik Do\u011frulama Y\u00f6ntemini Etkinle\u015ftirme:<\/strong>\n<p>Vault'un Kubernetes Service Account'lar\u0131n\u0131 tan\u0131mas\u0131n\u0131 sa\u011flamak i\u00e7in Kubernetes auth method'u etkinle\u015ftirmemiz gerekir.<\/p>\n<pre><code class=\"language-bash\">\nvault auth enable kubernetes\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Vault'u Kubernetes K\u00fcmenizle Konfig\u00fcre Etme:<\/strong>\n<p>Vault'a Kubernetes API sunucusunun adresini ve di\u011fer do\u011frulama parametrelerini bildirmemiz gerekiyor.<\/p>\n<pre><code class=\"language-bash\">\nKUBERNETES_HOST=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}')\nKUBERNETES_CA_CERT=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 -d)\nTOKEN_REVIEW_JWT=$(kubectl get secret $(kubectl get sa default -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 -d)\n\nvault write auth\/kubernetes\/config \\\n    kubernetes_host=\"$KUBERNETES_HOST\" \\\n    kubernetes_ca_cert=\"$KUBERNETES_CA_CERT\" \\\n    token_reviewer_jwt=\"$TOKEN_REVIEW_JWT\"\n        <\/pre>\n<p><\/code><\/p>\n<p>Bu komutlar, Vault'un Kubernetes API'sini tan\u0131mas\u0131n\u0131 sa\u011flar. <code>token_reviewer_jwt<\/code>, Vault'un Service Account token'lar\u0131n\u0131 do\u011frulamas\u0131n\u0131 sa\u011flayan bir anahtard\u0131r.<\/p>\n<\/li>\n<li><strong>Bir Secret Engine Etkinle\u015ftirme ve Secret Yazma:<\/strong>\n<p>Kullanaca\u011f\u0131m\u0131z secret'lar\u0131 depolamak i\u00e7in bir KV (Key-Value) secret engine etkinle\u015ftirelim ve \u00f6rnek bir secret yazal\u0131m.<\/p>\n<pre><code class=\"language-bash\">\nvault secrets enable -path=kv kv-v2\nvault kv put kv\/data\/my-app\/config username=\"admin\" password=\"supersecretpassword\"\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Vault Politikas\u0131 Olu\u015fturma:<\/strong>\n<p>Uygulamam\u0131z\u0131n hangi secret'lara eri\u015febilece\u011fini tan\u0131mlayan bir politika olu\u015ftural\u0131m. <code>my-app-policy.hcl<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-hcl\">\n# my-app-policy.hcl\npath \"kv\/data\/my-app\/config\" {\n  capabilities = [\"read\"]\n}\n        <\/pre>\n<p><\/code><\/p>\n<p>\u015eimdi bu politikay\u0131 Vault'a yazal\u0131m:<\/p>\n<pre><code class=\"language-bash\">\nvault policy write my-app-policy my-app-policy.hcl\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Vault Role'\u00fc Olu\u015fturma:<\/strong>\n<p>Kubernetes Service Account'\u0131 ile Vault politikalar\u0131n\u0131 ili\u015fkilendiren bir rol olu\u015fturmam\u0131z gerekiyor. Bu rol, hangi Service Account'\u0131n (ve dolay\u0131s\u0131yla hangi Pod'un) hangi politikay\u0131 alaca\u011f\u0131n\u0131 belirtir.<\/p>\n<pre><code class=\"language-bash\">\nvault write auth\/kubernetes\/role\/my-app-role \\\n    bound_service_account_names=\"my-app-sa\" \\\n    bound_service_account_namespaces=\"default\" \\\n    policies=\"my-app-policy\" \\\n    ttl=\"1h\"\n        <\/pre>\n<p><\/code><\/p>\n<p>Burada <code>my-app-sa<\/code> adl\u0131 Service Account'\u0131n <code>default<\/code> namespace'inde, <code>my-app-policy<\/code> politikas\u0131yla Vault'a kimlik do\u011frulayabilece\u011fini belirtiyoruz. Token'\u0131n ya\u015fam s\u00fcresi 1 saat olarak ayarland\u0131.<\/p>\n<\/li>\n<\/ol>\n<h3>Kubernetes Uygulamalar\u0131n\u0131z\u0131 Vault ile Entegre Etmek<\/h3>\n<p>\nArt\u0131k Vault yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131na g\u00f6re, bir Kubernetes uygulamas\u0131n\u0131n bu secret'lar\u0131 nas\u0131l kullanaca\u011f\u0131n\u0131 g\u00f6sterelim. Burada, Vault Agent Injector'\u0131 kullanaca\u011f\u0131z. Bu, uygulamalar\u0131n\u0131z\u0131 Vault'a entegre etmenin en kolay ve \u00f6nerilen yoludur, \u00e7\u00fcnk\u00fc Pod'unuza bir Vault Agent sidecar'\u0131 ve gerekli anotasyonlar\u0131 otomatik olarak ekler.\n<\/p>\n<ol>\n<li><strong>Vault Agent Injector'\u0131 Da\u011f\u0131tma:<\/strong>\n<p>Vault Agent Injector, Pod yaratma isteklerini dinleyen ve gerekli sidecar'\u0131 enjekte eden bir Kubernetes mutating admission webhook'udur. Bunu Helm ile kurabiliriz:<\/p>\n<pre><code class=\"language-bash\">\nhelm install vault-agent-injector hashicorp\/vault-agent-injector\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Uygulama Service Account'\u0131n\u0131 Olu\u015fturma:<\/strong>\n<p>Daha \u00f6nce Vault rol\u00fcnde belirtti\u011fimiz Service Account'\u0131 Kubernetes'te olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-yaml\">\n# my-app-sa.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: my-app-sa\n  namespace: default\n---\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: my-app-deployment\n  labels:\n    app: my-app\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: my-app\n  template:\n    metadata:\n      labels:\n        app: my-app\n      annotations:\n        # Vault Agent Injector i\u00e7in anotasyonlar\n        vault.hashicorp.com\/agent-inject: \"true\"\n        vault.hashicorp.com\/role: \"my-app-role\" # Vault'ta tan\u0131mlad\u0131\u011f\u0131m\u0131z rol\n        vault.hashicorp.com\/agent-inject-secret-config: \"kv\/data\/my-app\/config\"\n        vault.hashicorp.com\/agent-inject-template-config: |\n          {{- with secret \"kv\/data\/my-app\/config\" -}}\n          DATABASE_USERNAME={{ .Data.data.username }}\n          DATABASE_PASSWORD={{ .Data.data.password }}\n          {{- end -}}\n    spec:\n      serviceAccountName: my-app-sa # Olu\u015fturdu\u011fumuz Service Account'\u0131 ata\n      containers:\n      - name: my-app-container\n        image: busybox:1.36.1 # \u00d6rnek olarak busybox kullan\u0131yoruz\n        command: [\"sh\", \"-c\", \"sleep 30 && cat \/vault\/secrets\/config && sleep 3600\"]\n        # Vault Agent'\u0131n secret'lar\u0131 yazaca\u011f\u0131 birime ba\u011flan\u0131yoruz\n        volumeMounts:\n        - name: vault-secrets-volume\n          mountPath: \/vault\/secrets\n      volumes:\n      - name: vault-secrets-volume\n        emptyDir: {}\n        <\/pre>\n<p><\/code><\/p>\n<p>Bu YAML dosyas\u0131, <code>my-app-sa<\/code> adl\u0131 bir Service Account olu\u015fturur ve bu Service Account'\u0131 kullanan bir Deployment tan\u0131mlar. Deployment'\u0131n <code>template.metadata.annotations<\/code> k\u0131sm\u0131na dikkat edin:<\/p>\n<ul>\n<li><code>vault.hashicorp.com\/agent-inject: \"true\"<\/code>: Vault Agent Injector'a bu Pod'a bir sidecar enjekte etmesi gerekti\u011fini s\u00f6yler.<\/li>\n<li><code>vault.hashicorp.com\/role: \"my-app-role\"<\/code>: Pod'un Vault'a kimlik do\u011frulamas\u0131 yaparken kullanaca\u011f\u0131 Vault rol\u00fcn\u00fc belirtir.<\/li>\n<li><code>vault.hashicorp.com\/agent-inject-secret-config: \"kv\/data\/my-app\/config\"<\/code>: Vault Agent'\u0131n hangi secret yolunu \u00e7ekece\u011fini belirtir.<\/li>\n<li><code>vault.hashicorp.com\/agent-inject-template-config<\/code>: Bu, secret'\u0131n nas\u0131l bi\u00e7imlendirilece\u011fini belirten bir Go template'idir. Vault'tan \u00e7ekilen <code>username<\/code> ve <code>password<\/code> de\u011ferlerini <code>DATABASE_USERNAME<\/code> ve <code>DATABASE_PASSWORD<\/code> ortam de\u011fi\u015fkenleri olarak bir dosyaya yazar. Bu dosya, Pod i\u00e7indeki <code>\/vault\/secrets\/config<\/code> yoluna ba\u011flan\u0131r.<\/li>\n<\/ul>\n<p>\u015eimdi bu YAML'\u0131 uygulayal\u0131m:<\/p>\n<pre><code class=\"language-bash\">\nkubectl apply -f my-app-sa.yaml\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Secret'lara Eri\u015fimi Do\u011frulama:<\/strong>\n<p>Pod'unuz \u00e7al\u0131\u015fmaya ba\u015flad\u0131ktan sonra, loglar\u0131na bakarak secret'lar\u0131n ba\u015far\u0131yla \u00e7ekildi\u011fini g\u00f6rebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">\nkubectl logs my-app-deployment-<POD_ID> -c my-app-container\n        <\/pre>\n<p><\/code><\/p>\n<p>\u00c7\u0131kt\u0131da <code>DATABASE_USERNAME=admin<\/code> ve <code>DATABASE_PASSWORD=supersecretpassword<\/code> gibi de\u011ferleri g\u00f6rmelisiniz. Bu, uygulaman\u0131z\u0131n secret'lara g\u00fcvenli bir \u015fekilde eri\u015fti\u011fi anlam\u0131na gelir. Uygulama i\u00e7erisinde bu secret'lar\u0131 <code>\/vault\/secrets\/config<\/code> dosyas\u0131ndan okuyarak kullanabilir.<br \/>\n        Bu ad\u0131mlarla, Kubernetes uygulamalar\u0131n\u0131z\u0131 Vault ile entegre etmi\u015f ve secret'lara g\u00fcvenli, merkezi ve dinamik bir \u015fekilde eri\u015fmelerini sa\u011flam\u0131\u015f olursunuz. Bu y\u00f6ntem, hassas verilerin y\u00f6netimi i\u00e7in hem g\u00fcvenli\u011fi art\u0131r\u0131r hem de operasyonel karma\u015f\u0131kl\u0131\u011f\u0131 azalt\u0131r.\n        <\/p>\n<\/li>\n<\/ol>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131 ve \u0130leri D\u00fczey Uygulamalar: Dinamik Secret'lar ve Daha Fazlas\u0131<\/h2>\n<p>\nVault ve Kubernetes entegrasyonu, sadece statik secret'lar\u0131 g\u00fcvenli bir \u015fekilde depolaman\u0131n \u00f6tesine ge\u00e7erek, ger\u00e7ek d\u00fcnya senaryolar\u0131nda b\u00fcy\u00fck fark yaratabilecek ileri d\u00fczey yetenekler sunar. \u00d6zellikle dinamik secret'lar ve \u00e7oklu ortam y\u00f6netimi, bu entegrasyonun g\u00fcc\u00fcn\u00fc en iyi \u015fekilde ortaya koyan \u00f6zelliklerdir. Bu b\u00f6l\u00fcmde, bu ileri d\u00fczey kavramlar\u0131 inceleyecek ve karma\u015f\u0131k altyap\u0131larda nas\u0131l de\u011fer katt\u0131klar\u0131n\u0131 g\u00f6sterece\u011fiz.\n<\/p>\n<h3>Dinamik Secret'larla G\u00fcvenli\u011fi En \u00dcst D\u00fczeye \u00c7\u0131karmak<\/h3>\n<p>\nDinamik secret'lar, Vault'un sundu\u011fu en etkileyici \u00f6zelliklerden biridir ve geleneksel secret y\u00f6netimi anlay\u0131\u015f\u0131n\u0131 k\u00f6kten de\u011fi\u015ftirir. Geleneksel y\u00f6ntemlerde, bir veritaban\u0131 kullan\u0131c\u0131s\u0131 ve \u015fifresi olu\u015fturulur ve bu secret, uygulaman\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fc boyunca statik olarak kal\u0131r. Ancak, dinamik secret'lar ile Vault, bir uygulamaya veya kullan\u0131c\u0131ya yaln\u0131zca ihtiya\u00e7 duyuldu\u011funda, belirli bir s\u00fcre i\u00e7in ge\u00e7erli olan, ge\u00e7ici kimlik bilgileri olu\u015fturabilir. Bu ge\u00e7ici kimlik bilgileri, tan\u0131mlanm\u0131\u015f s\u00fcre sonunda otomatik olarak sona erer veya iptal edilir.\n<\/p>\n<p>\nPeki, bu ne anlama geliyor? \u015eunu d\u00fc\u015f\u00fcn\u00fcn: Bir mikroservis, bir PostgreSQL veritaban\u0131na ba\u011flanmak zorunda. Dinamik secret'lar sayesinde Vault, bu mikroservis veritaban\u0131na ba\u011flanmak istedi\u011finde, o an i\u00e7in yeni bir veritaban\u0131 kullan\u0131c\u0131s\u0131 ve \u015fifresi olu\u015fturur. Uygulama bu kimlik bilgilerini kullanarak i\u015fini bitirir ve ard\u0131ndan bu kimlik bilgileri otomatik olarak Vault taraf\u0131ndan iptal edilir veya sona erer. Bu yakla\u015f\u0131m\u0131n sundu\u011fu avantajlar \u015funlard\u0131r:\n<\/p>\n<ul>\n<li><strong>Azalt\u0131lm\u0131\u015f Sald\u0131r\u0131 Y\u00fczeyi:<\/strong> Bir sald\u0131rgan\u0131n eline ge\u00e7se bile, ge\u00e7ici bir secret'\u0131n kullan\u0131m s\u00fcresi s\u0131n\u0131rl\u0131 oldu\u011fu i\u00e7in potansiyel zarar minimaldir. Statik secret'lar gibi s\u00fcrekli ge\u00e7erli olmazlar.<\/li>\n<li><strong>Otomatik Rotasyon:<\/strong> Secret'lar\u0131n manuel olarak periyodik rotasyonu karma\u015f\u0131k ve hataya a\u00e7\u0131k bir s\u00fcre\u00e7tir. Dinamik secret'lar ise bu rotasyonu tamamen otomatikle\u015ftirir. Her yeni eri\u015fim iste\u011finde yeni bir secret \u00fcretilmesi, asl\u0131nda s\u00fcrekli bir rotasyon d\u00f6ng\u00fcs\u00fc yarat\u0131r.<\/li>\n<li><strong>Azalt\u0131lm\u0131\u015f Operasyonel Y\u00fck:<\/strong> Geli\u015ftiricilerin veya operasyon ekiplerinin secret'lar\u0131 manuel olarak olu\u015fturup y\u00f6netmesine, da\u011f\u0131tmas\u0131na veya rotasyona sokmas\u0131na gerek kalmaz. Vault t\u00fcm bu s\u00fcre\u00e7leri otomatikle\u015ftirir.<\/li>\n<li><strong>Daha \u0130yi Denetim ve \u0130zlenebilirlik:<\/strong> Her dinamik secret talebi ve kullan\u0131m\u0131 Vault taraf\u0131ndan denetlenir ve loglan\u0131r, bu da kimin ne zaman hangi secret'a eri\u015fti\u011fi konusunda detayl\u0131 bir izlenebilirlik sa\u011flar.<\/li>\n<\/ul>\n<p>\n<strong>\u00d6rnek: PostgreSQL Dinamik Secret'lar\u0131<\/strong><br \/>\nVault, PostgreSQL, MySQL, MSSQL gibi bir\u00e7ok veritaban\u0131 i\u00e7in dinamik secret motorlar\u0131 sunar. \u00d6rne\u011fin, bir PostgreSQL dinamik secret motorunu etkinle\u015ftirip yap\u0131land\u0131rarak, uygulamalar\u0131n\u0131z\u0131n ge\u00e7ici veritaban\u0131 kimlik bilgilerine eri\u015fmesini sa\u011flayabilirsiniz.\n<\/p>\n<pre><code class=\"language-bash\">\n# PostgreSQL secret engine'\u0131 etkinle\u015ftir\nvault secrets enable database\n\n# Veritaban\u0131 ba\u011flant\u0131s\u0131 yap\u0131land\u0131rma\nvault write database\/config\/postgresql \\\n    plugin_name=postgresql-database-plugin \\\n    allowed_roles=\"my-app-db-role\" \\\n    connection_url=\"postgresql:\/\/{{username}}:{{password}}@localhost:5432\/mydb?sslmode=disable\" \\\n    username=\"root\" \\\n    password=\"root_password\"\n\n# Bir veritaban\u0131 rol\u00fc olu\u015fturma\nvault write database\/roles\/my-app-db-role \\\n    db_name=\"postgresql\" \\\n    creation_statements='CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD \"{{password}}\" VALID UNTIL ''{{expiration}}''; GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";' \\\n    default_ttl=\"1h\" \\\n    max_ttl=\"24h\"\n<\/pre>\n<p><\/code><\/p>\n<p>\nBu yap\u0131land\u0131rma ile, bir Kubernetes Pod'u <code>database\/creds\/my-app-db-role<\/code> yoluna eri\u015fim istedi\u011finde, Vault dinamik olarak yeni bir PostgreSQL kullan\u0131c\u0131s\u0131 olu\u015fturur, bu kullan\u0131c\u0131ya <code>SELECT<\/code> yetkisi verir ve Pod'a bu kimlik bilgilerini sunar. Kimlik bilgileri 1 saat sonra ge\u00e7ersiz hale gelir. Bu durum, \u00f6zellikle compliance (uyumluluk) gereksinimlerinin y\u00fcksek oldu\u011fu finans veya sa\u011fl\u0131k gibi sekt\u00f6rlerde b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r.\n<\/p>\n<h3>\u00c7oklu Ortamlar ve \u00c7oklu Tak\u0131mlar \u0130\u00e7in Vault Y\u00f6netimi<\/h3>\n<p>\nB\u00fcy\u00fck \u00f6l\u00e7ekli kurulu\u015flarda, genellikle birden fazla geli\u015ftirme, test ve \u00fcretim ortam\u0131 bulunur. Ayr\u0131ca, farkl\u0131 uygulamalar veya tak\u0131mlar farkl\u0131 secret'lara ve eri\u015fim politikalar\u0131na ihtiya\u00e7 duyar. Vault, bu karma\u015f\u0131k senaryolar\u0131 y\u00f6netmek i\u00e7in g\u00fc\u00e7l\u00fc yetenekler sunar:\n<\/p>\n<ul>\n<li><strong>Ortama \u00d6zel Secret Yollar\u0131:<\/strong> Vault'ta secret'lar\u0131 hiyerar\u015fik yollarda organize edebilirsiniz (\u00f6rn. <code>secret\/data\/dev\/app-a\/db<\/code>, <code>secret\/data\/prod\/app-b\/api<\/code>). Bu sayede, her ortam ve uygulama i\u00e7in ayr\u0131 secret'lar tutulabilir ve bu secret'lara eri\u015fim ayr\u0131nt\u0131l\u0131 politikalarla kontrol edilebilir.<\/li>\n<li><strong>Namespace'ler (Vault Enterprise):<\/strong> Vault Enterprise s\u00fcr\u00fcm\u00fc, dahili \"namespace\" \u00f6zelli\u011fi sunar. Bu, Vault i\u00e7inde ba\u011f\u0131ms\u0131z, izole edilmi\u015f sanal Vault ortamlar\u0131 olu\u015fturman\u0131z\u0131 sa\u011flar. Her tak\u0131m veya departman kendi namespace'ine sahip olabilir, bu da yetki ayr\u0131m\u0131n\u0131 (separation of duties) ve y\u00f6netimi kolayla\u015ft\u0131r\u0131r. Her namespace'in kendi kimlik do\u011frulama y\u00f6ntemleri, secret motorlar\u0131 ve politikalar\u0131 olabilir.<\/li>\n<li><strong>Granular Eri\u015fim Kontrol\u00fc:<\/strong> Vault politikalar\u0131 (ACL'ler), belirli bir kullan\u0131c\u0131ya veya Service Account'a hangi secret yoluna, hangi yeteneklerle (okuma, yazma, g\u00fcncelleme, silme) eri\u015febilece\u011fini tan\u0131mlaman\u0131za olanak tan\u0131r. Bu, \"en az ayr\u0131cal\u0131k\" prensibinin (least privilege) uygulanmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<\/ul>\n<p>\nBir finans \u015firketinde farkl\u0131 departmanlar\u0131n (\u00f6rn. muhasebe, risk y\u00f6netimi, ticaret) farkl\u0131 veritabanlar\u0131na ve API'lere eri\u015fmesi gereken bir senaryo hayal edin. Her departman kendi uygulamalar\u0131n\u0131 Kubernetes \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131yor ve her uygulaman\u0131n kendi secret'lar\u0131 var. Vault'un politikalar\u0131 ve namespace'leri sayesinde, her departman\u0131n sadece kendi uygulamalar\u0131n\u0131n ihtiya\u00e7 duydu\u011fu secret'lara eri\u015fmesini sa\u011flayabilir, b\u00f6ylece yanl\u0131\u015fl\u0131kla veya k\u00f6t\u00fc niyetli eri\u015fim riskini en aza indirebilirsiniz. Bu, sadece g\u00fcvenli\u011fi art\u0131rmakla kalmaz, ayn\u0131 zamanda audit ve compliance s\u00fcre\u00e7lerini de basitle\u015ftirir. Vault, bu t\u00fcr karma\u015f\u0131k ortamlar\u0131n secret y\u00f6netimi ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamak i\u00e7in \u00f6l\u00e7eklenebilir ve esnek bir temel sunar.\n<\/p>\n<h2>Performans ve G\u00fcvenlik \u0130pu\u00e7lar\u0131: Entegrasyonunuzu Optimize Edin<\/h2>\n<p>\nKubernetes ve Vault entegrasyonu, g\u00fc\u00e7l\u00fc bir g\u00fcvenlik \u00e7er\u00e7evesi sunsa da, bu entegrasyonu optimize etmek ve en iyi uygulamalar\u0131 takip etmek, hem performans hem de g\u00fcvenlik a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. \u0130\u015fte entegrasyonunuzu bir \u00fcst seviyeye ta\u015f\u0131yacak baz\u0131 ipu\u00e7lar\u0131 ve p\u00fcf noktalar\u0131:\n<\/p>\n<ol>\n<li><strong>En Az Ayr\u0131cal\u0131k Prensibini (Least Privilege) Uygulay\u0131n:<\/strong>\n<p>Vault politikalar\u0131n\u0131 olu\u015ftururken, uygulamalar\u0131n yaln\u0131zca ger\u00e7ekten ihtiya\u00e7 duyduklar\u0131 secret'lara ve yollara eri\u015fim izni oldu\u011fundan emin olun. Gereksiz yetkiler, potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 art\u0131r\u0131r. \u00d6rne\u011fin, bir uygulaman\u0131n sadece \"okuma\" yetkisine ihtiyac\u0131 varsa, \"yazma\" veya \"silme\" yetkilerini vermeyin. Bu, bir g\u00fcvenlik ihlali durumunda etki alan\u0131n\u0131 s\u0131n\u0131rlayacakt\u0131r.<\/p>\n<\/li>\n<li><strong>Vault High Availability (HA) Yap\u0131land\u0131rmas\u0131:<\/strong>\n<p>\u00dcretim ortamlar\u0131nda Vault'u y\u00fcksek eri\u015filebilirlikli (HA) modda da\u011f\u0131tmak, servis kesintilerini \u00f6nlemek i\u00e7in hayati \u00f6neme sahiptir. Birincil Vault sunucusunun \u00e7\u00f6kmesi durumunda, ikincil sunucular devreye girerek uygulamalar\u0131n secret'lara eri\u015fmeye devam etmesini sa\u011flar. Bu, genellikle raft storage veya kons\u00fcl gibi bir depolama arka ucu kullan\u0131larak sa\u011flan\u0131r.<\/p>\n<\/li>\n<li><strong>TLS Kullan\u0131m\u0131n\u0131 Zorunlu K\u0131l\u0131n:<\/strong>\n<p>Vault ve Kubernetes aras\u0131ndaki t\u00fcm ileti\u015fimde ve uygulama ile Vault Agent aras\u0131ndaki ileti\u015fimde TLS (Transport Layer Security) kullanmay\u0131 zorunlu k\u0131l\u0131n. Bu, verilerin a\u011f \u00fczerinde \u015fifreli bir \u015fekilde iletilmesini sa\u011flar ve \"man-in-the-middle\" sald\u0131r\u0131lar\u0131n\u0131 \u00f6nler. Kendi CA'n\u0131z veya Let's Encrypt gibi hizmetlerle sertifika y\u00f6netimi yapabilirsiniz.<\/p>\n<\/li>\n<li><strong>Secret Cache'leme ve Yenileme (Renewals):<\/strong>\n<p>Vault Agent, secret'lar\u0131 belirli bir TTL (Time-To-Live) ile \u00e7eker ve yerel olarak \u00f6nbelle\u011fe al\u0131r. Bu, her secret ihtiyac\u0131 i\u00e7in Vault'a yap\u0131lan API \u00e7a\u011fr\u0131lar\u0131n\u0131n say\u0131s\u0131n\u0131 azalt\u0131r, performans\u0131 art\u0131r\u0131r ve Vault sunucusu \u00fczerindeki y\u00fck\u00fc azalt\u0131r. Ayn\u0131 zamanda, Vault Agent'\u0131n otomatik olarak secret'lar\u0131 yeniledi\u011finden veya s\u00fcresi doldu\u011funda tekrar \u00e7ekti\u011finden emin olun. Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f TTL'ler veya yenileme s\u00fcre\u00e7leri, uygulamalar\u0131n secret'lara eri\u015fememesine neden olabilir.<\/p>\n<div class=\"expert-tip\">\n          Uzman \u0130pucu: Dinamik secret'lar\u0131n TTL de\u011ferlerini, uygulaman\u0131z\u0131n secret'\u0131 ne s\u0131kl\u0131kta kullanaca\u011f\u0131n\u0131 ve potansiyel g\u00fcvenlik riskini dengeleyecek \u015fekilde dikkatlice belirleyin. \u00c7ok k\u0131sa TTL'ler Vault'u a\u015f\u0131r\u0131 y\u00fckleyebilir, \u00e7ok uzun TTL'ler ise g\u00fcvenlik riskini art\u0131r\u0131r.\n        <\/div>\n<\/li>\n<li><strong>Denetim Loglar\u0131n\u0131 (Audit Logs) \u0130zleyin:<\/strong>\n<p>Vault, yap\u0131lan her i\u015flemi ayr\u0131nt\u0131l\u0131 denetim loglar\u0131na kaydeder. Bu loglar\u0131 merkezi bir log toplama sistemine (\u00f6rn. ELK Stack, Splunk) g\u00f6ndererek s\u00fcrekli izleyin. Olas\u0131 g\u00fcvenlik ihlallerini veya anormal eri\u015fim modellerini tespit etmek i\u00e7in alarm mekanizmalar\u0131 kurun. Denetim loglar\u0131, uyumluluk gereksinimleri i\u00e7in de vazge\u00e7ilmezdir.<\/p>\n<\/li>\n<li><strong>Kubernetes Service Account Token G\u00fcvenli\u011fini Sa\u011flay\u0131n:<\/strong>\n<p>Vault'un Kubernetes auth method'u, Service Account token'lar\u0131n\u0131 kullan\u0131r. Bu token'lar\u0131n g\u00fcvenli\u011fini sa\u011flamak \u00f6nemlidir. Kubernetes API'sine eri\u015fimi k\u0131s\u0131tlay\u0131n, Service Account'lara gereksiz yetkiler vermeyin ve token'lar\u0131n ya\u015fam s\u00fcresini (bound service account token expiration) m\u00fcmk\u00fcn oldu\u011funca k\u0131sa tutun.<\/p>\n<\/li>\n<li><strong>Vault Limitlerini ve Kaynak Kullan\u0131m\u0131n\u0131 \u0130zleyin:<\/strong>\n<p>Vault sunucular\u0131n\u0131n CPU, bellek ve disk I\/O gibi kaynak kullan\u0131mlar\u0131n\u0131 s\u00fcrekli izleyin. \u00d6zellikle yo\u011fun API trafi\u011fi olan ortamlarda Vault'un performans darbo\u011fazlar\u0131 ya\u015famamas\u0131 i\u00e7in yeterli kayna\u011fa sahip oldu\u011fundan emin olun. Gerekirse Vault'u yatay olarak \u00f6l\u00e7eklendirin.<\/p>\n<\/li>\n<li><strong>Konteyner ve Sistem G\u00fcvenli\u011fi:<\/strong>\n<p>Vault ve Vault Agent'\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 konteyner imajlar\u0131n\u0131 d\u00fczenli olarak g\u00fcncelleyin ve zafiyet taramas\u0131ndan ge\u00e7irin. Temel i\u015fletim sistemi ve Kubernetes k\u00fcmesinin kendisinin g\u00fcvenli\u011fini sa\u011flamak da genel g\u00fcvenlik duru\u015funuz i\u00e7in kritiktir.<\/p>\n<\/li>\n<\/ol>\n<p>\nBu ipu\u00e7lar\u0131n\u0131 uygulayarak, Kubernetes ve Vault entegrasyonunuzun sadece g\u00fcvenli de\u011fil, ayn\u0131 zamanda kararl\u0131, performansl\u0131 ve y\u00f6netilebilir oldu\u011fundan emin olabilirsiniz. G\u00fcvenlik, s\u00fcrekli bir s\u00fcre\u00e7tir ve bu t\u00fcr en iyi uygulamalar\u0131n benimsenmesi, altyap\u0131n\u0131z\u0131n dayan\u0131kl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r.\n<\/p>\n<h2>Sonu\u00e7: Gelece\u011fin G\u00fcvenli Secret Y\u00f6netimi \u015eimdi Ba\u015fl\u0131yor<\/h2>\n<p>\nKubernetes ve HashiCorp Vault entegrasyonu, modern bulut yerel uygulamalar i\u00e7in secret y\u00f6netimini bamba\u015fka bir boyuta ta\u015f\u0131yor. Geleneksel y\u00f6ntemlerin aksine, bu yakla\u015f\u0131m hassas verilerinizi hem g\u00fcvende tutar hem de operasyonel s\u00fcre\u00e7lerinizi otomatikle\u015ftirerek geli\u015ftirici verimlili\u011fini art\u0131r\u0131r. Art\u0131k uygulamalar\u0131n\u0131z\u0131n veritaban\u0131 \u015fifreleri, API anahtarlar\u0131 veya di\u011fer kritik kimlik bilgileri i\u00e7in endi\u015felenmenize gerek yok; Vault, bunlar\u0131 sizin i\u00e7in g\u00fcvenle y\u00f6netir ve Kubernetes ortam\u0131n\u0131zla sorunsuz bir \u015fekilde entegre olur. Statik secret'lar\u0131n risklerini geride b\u0131rakarak dinamik, k\u0131sa \u00f6m\u00fcrl\u00fc secret'lara ge\u00e7i\u015f yapmak, siber g\u00fcvenlik d\u00fcnyas\u0131ndaki sald\u0131r\u0131 y\u00fczeyinizi \u00f6nemli \u00f6l\u00e7\u00fcde daralt\u0131r. Bu entegrasyon, yaln\u0131zca bir g\u00fcvenlik \u00e7\u00f6z\u00fcm\u00fc olmaktan \u00f6te, DevSecOps k\u00fclt\u00fcr\u00fcn\u00fcn temel ta\u015flar\u0131ndan biri haline gelerek, g\u00fcvenlik endi\u015felerini geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fcn ayr\u0131lmaz bir par\u00e7as\u0131 yapar. G\u00fcvenli, \u00f6l\u00e7eklenebilir ve denetlenebilir bir secret y\u00f6netimi aray\u0131\u015f\u0131ndaysan\u0131z, Kubernetes ve Vault entegrasyonu, yol haritan\u0131z\u0131n en ba\u015f\u0131nda yer almal\u0131d\u0131r. Gelece\u011fin g\u00fcvenli secret y\u00f6netimi \u015fimdi ba\u015fl\u0131yor ve bu k\u0131lavuz, size bu yolda \u00f6nemli bir ba\u015flang\u0131\u00e7 noktas\u0131 sunuyor.\n<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<ol>\n<li>\n<h3>Kubernetes Secrets neden tek ba\u015f\u0131na yeterli de\u011fil?<\/h3>\n<p>Kubernetes Secrets, verileri sadece Base64 ile kodlar, \u015fifrelemez. Bu, k\u00fcme i\u00e7inde yetkili eri\u015fimi olan herkesin bu secret'lar\u0131 kolayca \u00e7\u00f6zebilece\u011fi anlam\u0131na gelir. Hassas veriler i\u00e7in daha g\u00fc\u00e7l\u00fc \u015fifreleme, dinamik olu\u015fturma ve ayr\u0131nt\u0131l\u0131 eri\u015fim kontrol\u00fc sunmad\u0131\u011f\u0131 i\u00e7in \u00f6zellikle \u00fcretim ortamlar\u0131nda yetersiz kal\u0131r.<\/p>\n<\/li>\n<li>\n<h3>HashiCorp Vault nedir ve Kubernetes ile neden entegre edilmelidir?<\/h3>\n<p>HashiCorp Vault, hassas verilere g\u00fcvenli eri\u015fimi y\u00f6netmek i\u00e7in tasarlanm\u0131\u015f merkezi bir secret y\u00f6netim arac\u0131d\u0131r. Kubernetes ile entegre edildi\u011finde, uygulamalar\u0131n statik secret'lar\u0131 YAML dosyalar\u0131na g\u00f6mmek yerine, Vault'tan dinamik olarak, g\u00fcvenli ve ge\u00e7ici kimlik bilgileri almas\u0131n\u0131 sa\u011flar. Bu, g\u00fcvenlik risklerini azalt\u0131r, secret rotasyonunu otomatikle\u015ftirir ve uyumluluk standartlar\u0131n\u0131 kar\u015f\u0131lar.<\/p>\n<\/li>\n<li>\n<h3>Vault Agent Injector ne i\u015fe yarar?<\/h3>\n<p>Vault Agent Injector, Kubernetes k\u00fcmesinde bir \"mutating webhook\" olarak \u00e7al\u0131\u015f\u0131r. Belirli anotasyonlara sahip Pod'lar\u0131 tespit eder ve otomatik olarak Pod tan\u0131m\u0131na bir Vault Agent sidecar konteyneri ekler. Bu sayede, geli\u015ftiricilerin Vault entegrasyonunu manuel olarak her Pod'a eklemesine gerek kalmaz, bu da s\u00fcre\u00e7leri basitle\u015ftirir ve tutarl\u0131l\u0131\u011f\u0131 art\u0131r\u0131r.<\/p>\n<\/li>\n<li>\n<h3>Dinamik secret'lar ne anlama gelir ve avantajlar\u0131 nelerdir?<\/h3>\n<p>Dinamik secret'lar, Vault'un ihtiya\u00e7 duyuldu\u011funda ge\u00e7ici, k\u0131sa \u00f6m\u00fcrl\u00fc kimlik bilgileri (\u00f6rn. veritaban\u0131 \u015fifreleri) olu\u015fturmas\u0131n\u0131 sa\u011flar. Bu secret'lar, kullan\u0131ld\u0131ktan sonra otomatik olarak iptal edilir veya sona erer. Avantajlar\u0131 aras\u0131nda azalt\u0131lm\u0131\u015f sald\u0131r\u0131 y\u00fczeyi, otomatik secret rotasyonu, azalt\u0131lm\u0131\u015f operasyonel y\u00fck ve daha iyi denetim yetene\u011fi bulunur.<\/p>\n<\/li>\n<li>\n<h3>Entegrasyon sonras\u0131 performans veya \u00f6l\u00e7eklenebilirlik sorunlar\u0131 ya\u015fan\u0131r m\u0131?<\/h3>\n<p>Do\u011fru yap\u0131land\u0131rma ve en iyi uygulamalar takip edildi\u011finde (\u00f6rn. Vault HA kurulumu, uygun TTL de\u011ferleri, Vault Agent \u00f6nbelleklemesi), entegrasyon hem performansl\u0131 hem de \u00f6l\u00e7eklenebilir olabilir. Performans darbo\u011fazlar\u0131n\u0131 \u00f6nlemek i\u00e7in Vault sunucusunun ve Vault Agent'\u0131n kaynak kullan\u0131m\u0131n\u0131 izlemek ve gerekirse \u00f6l\u00e7eklendirmek \u00f6nemlidir.<\/p>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"Kubernetes ortamlar\u0131n\u0131zda hassas bilgileri (API anahtarlar\u0131, veritaban\u0131 \u015fifreleri) nas\u0131l g\u00fcvenle y\u00f6netece\u011finizi mi merak ediyorsunuz? \u0130\u015fte tam da bu&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1491],"tags":[],"class_list":{"0":"post-34172","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-kubernetes","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kubernetes ve Vault Entegrasyonu: G\u00fcvenli Secret Y\u00f6netimi<\/title>\n<meta name=\"description\" content=\"Kubernetes ortamlar\u0131n\u0131zda hassas bilgileri (API anahtarlar\u0131, veritaban\u0131 \u015fifreleri) nas\u0131l g\u00fcvenle y\u00f6netece\u011finizi mi merak ediyorsunuz? \u0130\u015fte tam da bu noktada devreye giren Vault entegrasyonu ile secret y\u00f6netimini otomatize edebilir, g\u00fcvenlik duru\u015funuzu \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir ve uyumluluk endi\u015felerinizi giderebilirsiniz. Modern bulut yerel uygulamalar i\u00e7in olmazsa olmaz bir pratik olan bu entegrasyon, geli\u015ftirme s\u00fcre\u00e7lerinizi h\u0131zland\u0131r\u0131rken veri ihlallerine kar\u015f\u0131 g\u00fc\u00e7l\u00fc bir kalkan olu\u015fturur.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes ve Vault Entegrasyonu: G\u00fcvenli Secret Y\u00f6netimi\" \/>\n<meta property=\"og:description\" content=\"Kubernetes ortamlar\u0131n\u0131zda hassas bilgileri (API anahtarlar\u0131, veritaban\u0131 \u015fifreleri) nas\u0131l g\u00fcvenle y\u00f6netece\u011finizi mi merak ediyorsunuz? \u0130\u015fte tam da bu noktada devreye giren Vault entegrasyonu ile secret y\u00f6netimini otomatize edebilir, g\u00fcvenlik duru\u015funuzu \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir ve uyumluluk endi\u015felerinizi giderebilirsiniz. Modern bulut yerel uygulamalar i\u00e7in olmazsa olmaz bir pratik olan bu entegrasyon, geli\u015ftirme s\u00fcre\u00e7lerinizi h\u0131zland\u0131r\u0131rken veri ihlallerine kar\u015f\u0131 g\u00fc\u00e7l\u00fc bir kalkan olu\u015fturur.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-12T04:01:10+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"27 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Kubernetes ve Vault Entegrasyonu: G\u00fcvenli Secret Y\u00f6netimi\",\"datePublished\":\"2025-11-12T04:01:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/\"},\"wordCount\":5171,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Kubernetes\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/\",\"name\":\"Kubernetes ve Vault Entegrasyonu: G\u00fcvenli Secret Y\u00f6netimi\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-12T04:01:10+00:00\",\"description\":\"Kubernetes ortamlar\u0131n\u0131zda hassas bilgileri (API anahtarlar\u0131, veritaban\u0131 \u015fifreleri) nas\u0131l g\u00fcvenle y\u00f6netece\u011finizi mi merak ediyorsunuz? \u0130\u015fte tam da bu noktada devreye giren Vault entegrasyonu ile secret y\u00f6netimini otomatize edebilir, g\u00fcvenlik duru\u015funuzu \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir ve uyumluluk endi\u015felerinizi giderebilirsiniz. Modern bulut yerel uygulamalar i\u00e7in olmazsa olmaz bir pratik olan bu entegrasyon, geli\u015ftirme s\u00fcre\u00e7lerinizi h\u0131zland\u0131r\u0131rken veri ihlallerine kar\u015f\u0131 g\u00fc\u00e7l\u00fc bir kalkan olu\u015fturur.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes ve Vault Entegrasyonu: G\u00fcvenli Secret Y\u00f6netimi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kubernetes ve Vault Entegrasyonu: G\u00fcvenli Secret Y\u00f6netimi","description":"Kubernetes ortamlar\u0131n\u0131zda hassas bilgileri (API anahtarlar\u0131, veritaban\u0131 \u015fifreleri) nas\u0131l g\u00fcvenle y\u00f6netece\u011finizi mi merak ediyorsunuz? \u0130\u015fte tam da bu noktada devreye giren Vault entegrasyonu ile secret y\u00f6netimini otomatize edebilir, g\u00fcvenlik duru\u015funuzu \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir ve uyumluluk endi\u015felerinizi giderebilirsiniz. Modern bulut yerel uygulamalar i\u00e7in olmazsa olmaz bir pratik olan bu entegrasyon, geli\u015ftirme s\u00fcre\u00e7lerinizi h\u0131zland\u0131r\u0131rken veri ihlallerine kar\u015f\u0131 g\u00fc\u00e7l\u00fc bir kalkan olu\u015fturur.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/","og_locale":"tr_TR","og_type":"article","og_title":"Kubernetes ve Vault Entegrasyonu: G\u00fcvenli Secret Y\u00f6netimi","og_description":"Kubernetes ortamlar\u0131n\u0131zda hassas bilgileri (API anahtarlar\u0131, veritaban\u0131 \u015fifreleri) nas\u0131l g\u00fcvenle y\u00f6netece\u011finizi mi merak ediyorsunuz? \u0130\u015fte tam da bu noktada devreye giren Vault entegrasyonu ile secret y\u00f6netimini otomatize edebilir, g\u00fcvenlik duru\u015funuzu \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir ve uyumluluk endi\u015felerinizi giderebilirsiniz. Modern bulut yerel uygulamalar i\u00e7in olmazsa olmaz bir pratik olan bu entegrasyon, geli\u015ftirme s\u00fcre\u00e7lerinizi h\u0131zland\u0131r\u0131rken veri ihlallerine kar\u015f\u0131 g\u00fc\u00e7l\u00fc bir kalkan olu\u015fturur.","og_url":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-12T04:01:10+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"27 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Kubernetes ve Vault Entegrasyonu: G\u00fcvenli Secret Y\u00f6netimi","datePublished":"2025-11-12T04:01:10+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/"},"wordCount":5171,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Kubernetes"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/","url":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/","name":"Kubernetes ve Vault Entegrasyonu: G\u00fcvenli Secret Y\u00f6netimi","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-12T04:01:10+00:00","description":"Kubernetes ortamlar\u0131n\u0131zda hassas bilgileri (API anahtarlar\u0131, veritaban\u0131 \u015fifreleri) nas\u0131l g\u00fcvenle y\u00f6netece\u011finizi mi merak ediyorsunuz? \u0130\u015fte tam da bu noktada devreye giren Vault entegrasyonu ile secret y\u00f6netimini otomatize edebilir, g\u00fcvenlik duru\u015funuzu \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir ve uyumluluk endi\u015felerinizi giderebilirsiniz. Modern bulut yerel uygulamalar i\u00e7in olmazsa olmaz bir pratik olan bu entegrasyon, geli\u015ftirme s\u00fcre\u00e7lerinizi h\u0131zland\u0131r\u0131rken veri ihlallerine kar\u015f\u0131 g\u00fc\u00e7l\u00fc bir kalkan olu\u015fturur.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ve-vault-entegrasyonu-guvenli-secret-yonetimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes ve Vault Entegrasyonu: G\u00fcvenli Secret Y\u00f6netimi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34172"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34172\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34172"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}