{"id":33846,"date":"2026-05-11T05:00:00","date_gmt":"2026-05-11T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=33846"},"modified":"2026-05-08T14:53:17","modified_gmt":"2026-05-08T12:53:17","slug":"hashicorp-vault-jako-centralny-punkt-rotacji-kluczy-i-certyfikatow","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/hashicorp-vault-jako-centralny-punkt-rotacji-kluczy-i-certyfikatow\/","title":{"rendered":"Hashicorp Vault jako centralny punkt rotacji kluczy i certyfikat\u00f3w"},"content":{"rendered":"\n<p>Przechowywanie kluczy, token\u00f3w, hase\u0142, certyfikat\u00f3w czy innych sekret\u00f3w dla dost\u0119pu do wielu r\u00f3\u017cnych zasob\u00f3w utrzymywanych przez firmy i organizacje to w praktyce problem, je\u015bli sekrety zosta\u0142y udost\u0119pnione \u201ebyle komu i na zawsze\u201d. Co gorsze, w wielu firmach sekrety mog\u0105 by\u0107 przechowywane w postaci zwyk\u0142ego tekstu, rozsiane po plikach konfiguracyjnych i narz\u0119dziach do zarz\u0105dzania konfiguracj\u0105 lub serwerach automatyzuj\u0105cych.<\/p>\n\n\n\n<p>Temat ten sp\u0119dza sen z powiek wielu in\u017cynierom i bezpieczeniakom. Konieczna jest scentralizowana forma przechowywania i zarz\u0105dzania sekretami, aby zapobiec ich wyciekom oraz naruszeniom bezpiecze\u0144stwa organizacji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Problem statycznych po\u015bwiadcze\u0144 tzw. \u201eSecrets Sprawl\u201d<\/strong><\/h2>\n\n\n\n<p>Mo\u017cna wymieni\u0107 wiele antywzorc\u00f3w w kulturze DevOps albo wskaza\u0107 niedostatecznie zabezpieczone jej elementy, niezgodne z bran\u017cowymi czy technicznymi standardami. W\u015br\u00f3d najcz\u0119stszych s\u0105 statyczne po\u015bwiadczenia (Secret Sprawl) w kodzie lub plikach konfiguracyjnych.<\/p>\n\n\n\n<p>Dane w plikach <em>.env<\/em>, <em>pom.xml<\/em> czy <em>config.json<\/em> cz\u0119sto zawieraj\u0105 has\u0142a lub klucze API zapisane jawnym tekstem. Z kolei w playbookach Ansible wra\u017cliwe dane mog\u0105 zosta\u0107 ujawnione w logach. Wyst\u0119powa\u0107 mo\u017ce tak\u017ce problem duplikacji sekret\u00f3w, gdy programi\u015bci umieszczaj\u0105 te same has\u0142a, klucze API lub tokeny w wielu playbookach.<\/p>\n\n\n\n<p>Inny antywz\u00f3r to z\u0142e przechowywanie sekret\u00f3w w obrazach kontenerowych. Wystarczy, \u017ce in\u017cynier u\u017cyje instrukcji <em>COPY . .<\/em> w pliku konfiguracyjnym Dockerfile, a to spowoduje skopiowanie ca\u0142ej zawarto\u015bci folderu. Je\u017celi w tym folderze znajdowa\u0142 si\u0119 plik <em>.env<\/em> z sekretami, to zostanie on skopiowany do obrazu Dockera i stanie si\u0119 dost\u0119pny dla ka\u017cdego, kto pobierze ten obraz.<\/p>\n\n\n\n<p>Bezpiecze\u0144stwo nale\u017cy zachowa\u0107 r\u00f3wnie\u017c podczas tworzenia infrastruktury jako kodu, czyli Infrastructure as Code (IaC), kt\u00f3ry bez kontroli sekret\u00f3w jest nara\u017cony na wycieki danych. Cz\u0119sto zdarza si\u0119 umieszczanie danych uwierzytelniaj\u0105cych w szablonach Terraforma (pliki <em>terraform.tfvars<\/em>).<\/p>\n\n\n\n<p>Grzechem jest tak\u017ce z\u0142e zarz\u0105dzanie procesami CI\/CD i ich logami. Has\u0142a wpisane bezpo\u015brednio w konfiguracji Jenkinsa czy GitLab CI, b\u0142\u0119dy w pipelineach (np. \u201econnection refused\u201d z pe\u0142nym stringiem po\u0142\u0105czeniowym) lub logi zawieraj\u0105ce sekrety (np. przez polecenie <em>printf \u201c%s\u201d \u201c$aws_secret_key\u201d | od -An -tx1<\/em>) to cz\u0119ste przyczyny incydent\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Wygasaj\u0105ce certyfikaty<\/strong><\/h3>\n\n\n\n<p>Kolejnym problemem manualnego zarz\u0105dzania sekretami s\u0105 wygasaj\u0105ce certyfikaty TLS\/SSL. Administrator musi pilnowa\u0107 terminu wa\u017cno\u015bci certyfikatu oraz unika\u0107 jego przekroczenia. W przeciwnym razie grozi to powa\u017cnymi konsekwencjami w postaci Certificate Outages. Jest to klasyk dla administrator\u00f3w: dopuszczono do wyga\u015bni\u0119cia certyfikatu, poniewa\u017c kto\u015b, kto nim zarz\u0105dza\u0142, jest aktualnie na urlopie.<\/p>\n\n\n\n<p>Zazwyczaj certyfikaty generowane s\u0105 na lokalnej maszynie administratora. Nast\u0119pnie s\u0105 one przenoszone do dysku zbiorczego projektu, na Slacka lub mail zespo\u0142u albo, co gorsza, do repozytorium Git jako tymczasowe rozwi\u0105zanie, kt\u00f3re <em>de facto<\/em> zostaje na sta\u0142e. To generuje wiele rozproszonych kopii certyfikatu i utrat\u0119 kontroli nad nimi. Wystarczy jeden wyciek z laptopa pracownika, aby nast\u0105pi\u0142y niepo\u017c\u0105dane konsekwencje. Brak centralnego narz\u0119dzia do zarz\u0105dzania certyfikatami generuje koszty biznesowe, a infrastruktura jest tak silna jak jej najs\u0142absze ogniwo.<\/p>\n\n\n\n<p>Ostatni\u0105 kwesti\u0105 opisywanego problemu Secret Sprawl jest trudno\u015b\u0107 z audytowaniem, zw\u0142aszcza rozproszonej infrastruktury, czyli wyszukania, kto i kiedy u\u017cywa\u0142 has\u0142a, na przyk\u0142ad dost\u0119pu do bazy danych. W \u015brodowisku deweloperskim na pewno us\u0142yszy si\u0119 odpowied\u017a: \u201eto nie ja\u201d albo \u201enie wiem\u201d. W modelu architektury rozproszonej brak centralnego punktu logowania generuje przechowywanie kluczy w wielu wspomnianych wy\u017cej miejscach.<\/p>\n\n\n\n<p>Ryzyka audytowalno\u015bci takiego modelu mog\u0105 generowa\u0107 tak zwane martwe punkty (Visibility Gaps), w kt\u00f3rych narz\u0119dzia lub us\u0142ugi nie posiadaj\u0105 dostatecznych mo\u017cliwo\u015bci monitorowania oraz szczeg\u00f3\u0142owych log\u00f3w audytowych. Ten brak widoczno\u015bci utrudnia wykrycie wyciek\u00f3w i uniemo\u017cliwia b\u0142yskawiczn\u0105 reakcj\u0119 na incydenty. Uniemo\u017cliwiaj\u0105 one organizacjom wy\u015bledzenie, jacy u\u017cytkownicy i w jakim czasie uzyskali dost\u0119p do konkretnych zasob\u00f3w.<\/p>\n\n\n\n<p>Brak sp\u00f3jnego zarz\u0105dzania sekretami stanowi zagro\u017cenie dla integralno\u015bci architektury. Rozproszone po architekturze statyczne po\u015bwiadczenia tworz\u0105 tzw. powierzchni\u0119 ataku (Attack Surface) \u2013 im wi\u0119cej miejsc, takich jak serwery, bazy danych czy aplikacje, gdzie sekrety s\u0105 przechowywane, tym wi\u0119ksze ryzyko wycieku danych.<\/p>\n\n\n\n<p>Fragmentacja danych uwierzytelniaj\u0105cych w r\u00f3\u017cnych miejscach utrudnia te\u017c audyt i spe\u0142nianie wymog\u00f3w regulacyjnych oraz standard\u00f3w. W \u015brodowiskach chmurowych opartych na mikrous\u0142ugach, gdzie zasoby s\u0105 dynamicznie tworzone i usuwane, model Static Secrets staje si\u0119 szczeg\u00f3lnie nieefektywny oraz niebezpieczny. Odpowiednie skonfigurowanie \u015brodowiska stanowi podstaw\u0119 operacyjn\u0105 kontrolowania architektury.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Dynamic Secrets jako rozwi\u0105zanie problemu<\/strong><\/h2>\n\n\n\n<p>Statyczne po\u015bwiadczenia to przestarza\u0142y model, kt\u00f3ry nie sprawdza si\u0119 w dynamicznych \u015brodowiskach DevOps. Przej\u015bcie na dynamiczne po\u015bwiadczenia (Dynamic Secrets) znacz\u0105co podnosi bezpiecze\u0144stwo infrastruktury rozproszonej. Idealnym narz\u0119dziem jest <strong>HashiCorp Vault<\/strong>, dzi\u0119ki kt\u00f3remu organizacje zyskuj\u0105 kontrol\u0119, automatyzacj\u0119 i zgodno\u015b\u0107 z najlepszymi praktykami bezpiecze\u0144stwa oraz standardami.<\/p>\n\n\n\n<p>Model Dynamic Secrets polega na generowaniu unikalnych, kr\u00f3tkotrwa\u0142ych sekret\u00f3w na \u017c\u0105danie i centralnym zarz\u0105dzaniu nimi.<\/p>\n\n\n\n<p>Vault spe\u0142nia te standardy, a jego <strong>kluczowymi zaletami s\u0105<\/strong>:<\/p>\n\n\n\n<ol style=\"list-style-type:lower-alpha\" class=\"wp-block-list\">\n<li>Kr\u00f3tki czas wa\u017cno\u015bci (Time-To-Live), w kt\u00f3rym sekrety wygasaj\u0105 po kilku minutach lub godzinach. To minimalizuje ryzyko w przypadku wycieku sekret\u00f3w. Nawet je\u015bli atakuj\u0105cy zdob\u0119dzie has\u0142o, b\u0119dzie ono bezu\u017cyteczne po okre\u015blonym czasie.<\/li>\n\n\n\n<li>Unikalno\u015b\u0107. Ka\u017cdy sekret jest przypisany do konkretnego zasobu, co zapobiega efektowi domina. Je\u015bli jeden element zostanie skompromitowany, reszta element\u00f3w pozostaje nienaruszona.<\/li>\n\n\n\n<li>Automatyzacja i rotacja. Vault automatycznie generuje, odnawia i uniewa\u017cnia sekrety, eliminuj\u0105c potrzeb\u0119 r\u0119cznej interwencji i zmniejszaj\u0105c ryzyko b\u0142\u0119d\u00f3w.<\/li>\n\n\n\n<li>Compliance. Centralne zarz\u0105dzanie sekretami umo\u017cliwia ich \u015bledzenie oraz sprawdzenie, kto i kiedy uzyska\u0142 dost\u0119p do sekretu. To kluczowe dla spe\u0142nienia wymog\u00f3w audytowych i szybkiego reagowania na incydenty.<\/li>\n<\/ol>\n\n\n\n<p>Dynamiczne zarz\u0105dzanie sekretami przynosi tak\u017ce korzy\u015bci dla zarz\u0105dzania certyfikatami. Automatyzacja oraz cz\u0119sta zmiana drastycznie ograniczaj\u0105 zakres szk\u00f3d (Blast Radius). Zamiast certyfikat\u00f3w na rok, administrator wystawia certyfikat na kr\u00f3tki i bezpieczny okres. To sprawia, \u017ce skomplikowane mechanizmy sprawdzania czy certyfikat zosta\u0142 odnowiony staj\u0105 si\u0119 zb\u0119dne.<\/p>\n\n\n\n<p>Tymczasowe po\u015bwiadczenia dost\u0119powe, generowane tylko na konkretne \u017c\u0105danie i w spos\u00f3b zautomatyzowany, znacz\u0105co ponosz\u0105 bezpiecze\u0144stwo architektury. Dynamiczne sekrety minimalizuj\u0105 skutki wycieku danych, ograniczaj\u0105c \u201eokno ataku\u201d dla potencjalnych haker\u00f3w. Nawet je\u015bli cyberprzest\u0119pca zdo\u0142a przechwyci\u0107 klucz, b\u0119dzie m\u00f3g\u0142 on go wykorzysta\u0107 tylko przez kr\u00f3tk\u0105 chwil\u0119, zgodnie z ustawionym Time-To-Live (TTL). Vault zosta\u0142 w\u0142a\u015bnie zaprojektowany do sprostowania tym wymaganiom.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Vault jako Single Source of Truth w architekturze Zero-Trust<\/strong><\/h2>\n\n\n\n<p>Single Source of Truth to koncept centralnego miejsca przechowywania aktualnych informacji, eliminuj\u0105cy rozproszenie danych w r\u00f3\u017cnych miejscach. Jest to jedna z g\u0142\u00f3wnych funkcjonalno\u015bci platformy Vault zak\u0142adaj\u0105ca, \u017ce dane s\u0105 przechowywane, zarz\u0105dzane i aktualizowane wy\u0142\u0105cznie w jednym i centralnym miejscu. Z kolei architektura Zero-Trust zak\u0142ada weryfikacj\u0119 ka\u017cdego \u017c\u0105dania dost\u0119pu wy\u0142\u0105cznie na podstawie to\u017csamo\u015bci, kontekstu i polityk. Vault jako Single Source of Truth w modelu Zero-Trust rozwi\u0105zuje problem rozproszonych sekret\u00f3w i stanowi centralny punkt decyzyjny przydzielaj\u0105cy dost\u0119p okre\u015blonym us\u0142ugom.<\/p>\n\n\n\n<p>W przestarza\u0142ym podej\u015bciu, o kt\u00f3rym by\u0142a mowa wy\u017cej, klucze API, has\u0142a i certyfikaty s\u0105 przechowywane w r\u00f3\u017cnych miejscach, co prowadzi do chaosu. Vault eliminuje ten problem, przechowuj\u0105c dost\u0119py bezpo\u015brednio w swoich silnikach sekret\u00f3w takich jak Key-Value (KV), Public Key Infrastructure (PKI) czy bazy danych. Aplikacje konsumuj\u0105 te sekrety przez API, CLI lub agenta Vault zainstalowanego w \u015brodowisku aplikacji.<\/p>\n\n\n\n<p>Mechanizm dzia\u0142ania Vaulta w modelu Zero-Trust jest oparty na bezpiecze\u0144stwie. Vault dzia\u0142a jako pojedyncze \u017ar\u00f3d\u0142o prawdy. Nie jest on jak\u0105\u015b baz\u0105 danych na has\u0142a, a silnikiem to\u017csamo\u015bci. Vault bazuje punkt zaufania na to\u017csamo\u015bci kryptograficznej, a nie, jak w dawniej stosowanym modelu, na zaufaniu do adres\u00f3w IP lub fizycznej lokalizacji serwera.<\/p>\n\n\n\n<p>Pierwszym etapem architektury Zero-Trust jest weryfikacja dost\u0119pu klienta, kt\u00f3ry kieruje \u017c\u0105danie do serwera Vaulta. Vault oferuje mechanizmy dostosowane do specyfiki innych \u015brodowisk, takich jak zewn\u0119trzni dostawcy to\u017csamo\u015bci \u2013 OIDC, LDAP, chmury publiczne czy \u015brodowisko Kubernetesa. Klient musi najpierw przedstawi\u0107 dow\u00f3d to\u017csamo\u015bci, kt\u00f3ry Vault weryfikuje, zanim wyda kr\u00f3tkotrwa\u0142y token lub dynamiczne dane dost\u0119pu.<\/p>\n\n\n\n<p>Ostatnim elementem architektury Zero-Trust jest kontrola dost\u0119pu. Samo posiadanie tokenu nie gwarantuje dost\u0119pu do danych. Vault stosuje polityki HCL, kt\u00f3re definiuj\u0105 okre\u015blone uprawnienia podmiotu prosz\u0105cego o dost\u0119p. Uprawnienia te mog\u0105 dotyczy\u0107 tego, czy dana aplikacja lub u\u017cytkownik ma prawo odczyta\u0107, zapisa\u0107 lub usun\u0105\u0107 okre\u015blony sekret w silniku Vaulta. Kiedy aplikacja wysy\u0142a \u017c\u0105danie dost\u0119pu do po\u015bwiadczenia dla innej aplikacji, Vault dynamicznie ewaluuje polityki przypisane do jej tokenu i na tej podstawie udziela dost\u0119pu lub go odrzuca.<\/p>\n\n\n\n<p>Vault umo\u017cliwia egzekwowanie bezpiecze\u0144stwa poprzez mechanizmy kontroli dost\u0119pu i kompleksowy audyt. Jest to zgodne z g\u0142\u00f3wn\u0105 maksym\u0105 Zero Trust: \u201eNigdy nie ufaj, zawsze weryfikuj&#8221;. Polityka Vaulta wymusza weryfikacj\u0119 to\u017csamo\u015bci u\u017cytkownik\u00f3w i us\u0142ug, okre\u015blaj\u0105c dost\u0119p do zasobu oraz mo\u017cliwo\u015b\u0107 wykonania okre\u015blonych akcji. Rozwi\u0105zanie to dzia\u0142a sp\u00f3jnie w nowoczesnych \u015brodowiskach, takich jak klastry Kubernetesa czy pipeline\u2019y CI\/CD. Ponadto Vault wymusza, aby ka\u017cdy dost\u0119p by\u0142 uwierzytelniony, autoryzowany i szyfrowany, eliminuj\u0105c domniemane zaufanie wewn\u0105trz sieci.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Rotacja sekret\u00f3w w Vault jako jeden z g\u0142\u00f3wnych cykli \u017cycia<\/strong><\/h2>\n\n\n\n<p>Vault to platforma, kt\u00f3ra zawiera wiele wtyczek. Jednym z kluczowych komponent\u00f3w jest silnik sekret\u00f3w (Secrets Engine). Silnik ten oferuje zaawansowane mo\u017cliwo\u015bci zarz\u0105dzania sekretami, w tym rotacj\u0119 sekret\u00f3w \u201ena \u017c\u0105danie\u201d. Pozosta\u0142e funkcje to ich:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>generowanie,<\/li>\n\n\n\n<li>szyfrowanie,<\/li>\n\n\n\n<li>u\u017cywanie i dystrybucja ,<\/li>\n\n\n\n<li>wycofywanie.<\/li>\n<\/ul>\n\n\n\n<p>Dzi\u0119ki prawid\u0142owo zaimplementowanej polityce oraz silnikowi rotacji sekret\u00f3w Vault zapewnia bezpieczny i kontrolowany dost\u0119p do danych i sekret\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Rodzaje Secrets Engine w Vault<\/strong><\/h2>\n\n\n\n<p>Wyr\u00f3\u017cnia si\u0119 nast\u0119puj\u0105ce rodzaje Secrets Engine w Vault z wbudowanym mechanizmem rotacji sekret\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Key\/value (KV) to podstawowy silnik s\u0142u\u017c\u0105cy do przechowywania dowolnych statycznych sekret\u00f3w w formie par klucz-warto\u015b\u0107 (key\/value) we wskazanej lokalizacji fizycznej. Jednak w wersji drugiej (v2) tej wtyczki ob\u0142ugiwane jest wersjonowanie, co pozwala na zapisywanie nowych wersji warto\u015bci klucza dla tej samej nazwy sekretu. W tym przypadku rotacja polega na wygenerowaniu i zapisaniu nowej wersji sekretu dok\u0142adnie pod t\u0105 sam\u0105 \u015bcie\u017ck\u0105.<\/li>\n\n\n\n<li>Wtyczki chmurowe (np. AWS, Azure, GCP) generuj\u0105 na \u017c\u0105danie kr\u00f3tkoterminowe, dynamiczne klucze dost\u0119pu oraz role niezb\u0119dne do operowania w \u015brodowiskach chmurowych.<\/li>\n\n\n\n<li>Wtyczki bazodanowe wydaj\u0105 tymczasowe i automatycznie wygasaj\u0105ce po\u015bwiadczenia dost\u0119pu do system\u00f3w baz danych.<\/li>\n<\/ul>\n\n\n\n<p>Rotacja sekret\u00f3w \u201ena \u017c\u0105danie\u201d to proces, w kt\u00f3rym Vault tworzy tymczasowe dane uwierzytelniaj\u0105ce dok\u0142adnie w momencie, gdy aplikacja lub u\u017cytkownik o nie poprosi. Jest to tak zwany dost\u0119p Just-in-Time. Dodatkowo zwi\u0119ksza ona bezpiecze\u0144stwo, wygaszaj\u0105c stare sekrety w tym samym momencie. Wtyczka AWS jest przyk\u0142adem funkcjonalno\u015bci generowania tymczasowych po\u015bwiadcze\u0144 z serwisem Identity &amp; Access Manager (IAM).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Konfigurowanie rotacji kluczy w chmurze AWS<\/strong><\/h3>\n\n\n\n<p>Poni\u017cej przedstawiony zosta\u0142 standardowy spos\u00f3b skonfigurowania rotacji kluczy w chmurze AWS, w kt\u00f3rym nale\u017cy:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Aktywowa\u0107 silnik AWS za pomoc\u0105 polecenia <em>vault secrets enable aws<\/em>.<\/li>\n\n\n\n<li>Skonfigurowa\u0107 uprawnienia dla Vaulta, dostarczaj\u0105c mu po\u015bwiadcze\u0144 u\u017cytkownika z AWS IAM. Poni\u017csze polecenie <em>vault write aws\/config\/root<\/em> tworzy nowe klucze dost\u0119pu poprzez przekazanie access_key i secret_key.<\/li>\n\n\n\n<li>Stworzy\u0107 role w Vaulcie poleceniem <em>vault write aws\/roles\/my-app-role<\/em>, kt\u00f3ra umo\u017cliwi tworzenie tymczasowego u\u017cytkownika w AWS IAM z okre\u015bleniem uprawnie\u0144, do jakich dany u\u017cytkownik b\u0119dzie mia\u0142 dost\u0119p, np. do us\u0142ugi S3 Bucket.<\/li>\n\n\n\n<li>Skonfigurowa\u0107 automatyczn\u0105 rotacj\u0119 klucza, kt\u00f3rego Vault u\u017cywa\u0107 b\u0119dzie do pracy z AWS poleceniem <em>vault write -f aws\/config\/rotate-root<\/em>. Po wykonaniu tego polecenia stary klucz administracyjny w chmurze nie jest automatycznie usuwany. Nale\u017cy go usun\u0105\u0107 r\u0119cznie w panelu AWS. Jednak od tego momentu system Vault b\u0119dzie u\u017cywa\u0142 wy\u0142\u0105cznie nowo wygenerowanego klucza.<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image1-1.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33847&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:675,&quot;targetHeight&quot;:462,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"675\" height=\"462\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image1-1.png\" alt=\"kod\" class=\"wp-image-33847\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image1-1.png 675w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image1-1-300x205.png 300w\" sizes=\"(max-width: 675px) 100vw, 675px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Automatyzacja zarz\u0105dzania certyfikatami TLS w Kubernetesie<\/strong><\/h2>\n\n\n\n<p>Zarz\u0105dzanie certyfikatami TLS w \u015brodowisku Kubernetesa opiera si\u0119 na procesach manualnych. Administratorzy musz\u0105 samodzielnie generowa\u0107 klucze i certyfikaty, a nast\u0119pnie dystrybuowa\u0107 je po odpowiednich systemach i aplikacjach. Kubernetes nie ma wbudowanych mechanizm\u00f3w automatycznej rotacji certyfikat\u00f3w. To generuje powa\u017cne ryzyko awarii, braku dost\u0119pu do aplikacji, a nawet luki w jej bezpiecze\u0144stwie oraz stabilno\u015bci. Dodatkowo taka praktyka wymusza na administratorze prowadzenie w\u0142asnego rejestru w oparciu o arkusz i kalendarz w celu monitorowania dat wyga\u015bni\u0119cia ka\u017cdego certyfikatu.<\/p>\n\n\n\n<p>Idealnym rozwi\u0105zaniem jest zastosowanie platformy Vault. Automatyzuje ona zarz\u0105dzanie certyfikatami. Stanowi fundament nowoczesnego bezpiecze\u0144stwa opartego na to\u017csamo\u015bci maszyn.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Silnik Public Key Infrastructure (PKI)<\/strong><\/h2>\n\n\n\n<p>Vault oferuje silnik Public Key Infrastructure (PKI), kt\u00f3ry zapewnia integracj\u0119 z infrastruktur\u0105 klucza publicznego. Mechanizm PKI umo\u017cliwia dynamiczne generowanie i rotacj\u0119 certyfikat\u00f3w X.509. Silnik sekret\u00f3w PKI dzia\u0142a jako wewn\u0119trzny urz\u0105d certyfikacji (CA). Wydaje i zarz\u0105dza certyfikatami, umo\u017cliwiaj\u0105c aplikacjom i systemom bezpieczne uwierzytelnianie si\u0119 oraz nawi\u0105zywanie szyfrowanej komunikacji. Dzi\u0119ki temu Vault dynamicznie generuje i wydaje certyfikaty TLS dla poszczeg\u00f3lnych us\u0142ug, a aplikacje i mikroserwisy zyskuj\u0105 mo\u017cliwo\u015b\u0107 natychmiastowego, bezpiecznego uwierzytelniania si\u0119 i nawi\u0105zywania wzajemnej komunikacji.<\/p>\n\n\n\n<p>Mechanizm PKI w po\u0142\u0105czeniu z cert-managerem tworzy kompleksowe rozwi\u0105zanie do automatyzacji cyklu \u017cycia certyfikat\u00f3w, eliminuj\u0105c przestoje i ludzkie b\u0142\u0119dy. Cert-manager to natywny kontroler dla Kubernetesa s\u0142u\u017c\u0105cy do automatyzacji zarz\u0105dzania certyfikatami X.509. Vault, przy wsp\u00f3\u0142pracy z cert-managerem, sprawia, \u017ce rotacja certyfikat\u00f3w dzieje si\u0119 w tle. Unika si\u0119 potencjalnych awarii spowodowanych przegapieniem daty wa\u017cno\u015bci SSL. Zapewnia to ci\u0105g\u0142\u0105 i automatyczn\u0105 rotacj\u0119 certyfikat\u00f3w bez ingerencji administratora. Dodatkowo model ten gwarantuje niezwykle wysoki poziom bezpiecze\u0144stwa, poniewa\u017c \u017cadne certyfikaty nigdy nie s\u0105 zapisywane na sta\u0142e na dyskach czy w kontenerach z aplikacjami.<\/p>\n\n\n\n<p>Przyk\u0142adem w tej cz\u0119\u015bci pracy b\u0119dzie konfiguracja wewn\u0119trznego urz\u0119du certyfikacji i zintegrowanie go z Kubernetesem przy u\u017cyciu dw\u00f3ch silnik\u00f3w Vaulta \u2013 PKI oraz Kubernetes Auth. Z kolei cert-manager odpowiada\u0107 b\u0119dzie za generowanie klucza prywatnego w Kubernetesie, tworzenie \u017c\u0105dania podpisania certyfikatu (CSR, Certificate Signing Request) i wysy\u0142anie \u017c\u0105dania do Vaulta.<\/p>\n\n\n\n<p>Konfiguracj\u0119 t\u0119 podzieli\u0142em na trzy fazy i przedstawiam j\u0105 w nast\u0119puj\u0105cych krokach.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Faza I: Konfiguracja Vaulta<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>W\u0142\u0105czenie i konfiguracja sinika PKI w Vault. Aktywuje ona obs\u0142ug\u0119 certyfikat\u00f3w oraz ustawia maksymalny czas \u017cycia certyfikat\u00f3w na oko\u0142o miesi\u0105c.<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image2-1.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33849&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:679,&quot;targetHeight&quot;:79,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"679\" height=\"79\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image2-1.png\" alt=\"kod\" class=\"wp-image-33849\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image2-1.png 679w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image2-1-300x35.png 300w\" sizes=\"(max-width: 679px) 100vw, 679px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Wygenerowanie g\u0142\u00f3wnego certyfikatu (Root CA). Vault musi posiada\u0107 sw\u00f3j g\u0142\u00f3wny certyfikat do podpisywania innych certyfikat\u00f3w.<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image3.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33851&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:783,&quot;targetHeight&quot;:96,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"783\" height=\"96\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image3.png\" alt=\"kod\" class=\"wp-image-33851\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image3.png 783w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image3-300x37.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image3-768x94.png 768w\" sizes=\"(max-width: 783px) 100vw, 783px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image4.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33853&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:821,&quot;targetHeight&quot;:190,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"821\" height=\"190\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image4.png\" alt=\"kod\" class=\"wp-image-33853\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image4.png 821w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image4-300x69.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image4-768x178.png 768w\" sizes=\"(max-width: 821px) 100vw, 821px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Konfiguracja adres\u00f3w URL, pod kt\u00f3rymi inne us\u0142ugi b\u0119d\u0105 sprawdza\u0107 wystawc\u0119 i list\u0119 odwo\u0142anych certyfikat\u00f3w (Certificate Revocation List).<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image5.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33855&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:691,&quot;targetHeight&quot;:195,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"691\" height=\"195\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image5.png\" alt=\"kod\" class=\"wp-image-33855\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image5.png 691w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image5-300x85.png 300w\" sizes=\"(max-width: 691px) 100vw, 691px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Zdefiniowanie roli dla wystawiania certyfikat\u00f3w. To pozwala Vaultowi na wygenerowanie certyfikat\u00f3w na podstawie r\u00f3l. Poni\u017csza rola pozwala na wystawienie certyfikat\u00f3w dla okre\u015blonych domen (<em>allowed_domains<\/em>), kt\u00f3re s\u0105 wewn\u0105trz Kubernetesa.<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image6.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33857&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:701,&quot;targetHeight&quot;:441,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"701\" height=\"441\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image6.png\" alt=\"kod\" class=\"wp-image-33857\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image6.png 701w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image6-300x189.png 300w\" sizes=\"(max-width: 701px) 100vw, 701px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>Powy\u017csze ostrze\u017cenie (warning) mo\u017cna zignorowa\u0107.<\/p>\n\n\n\n<p>Co do zasady Vault \u015bledzi wszystkie sekrety, tworz\u0105c dla nich tzw. dzier\u017cawy w swojej wewn\u0119trznej bazie danych. Jednak w \u015brodowisku Kubernetesa, gdzie Pody cz\u0119sto wymieniaj\u0105 si\u0119 wieloma certyfikatami, w\u0142\u0105czenie <em>generate_lease=true<\/em> sprawia, \u017ce Vault zapisuje w swojej g\u0142\u00f3wnej bazie danych informacje o ka\u017cdym wydanym certyfikacie. To mo\u017ce powodowa\u0107 zb\u0119dne zu\u017cycie pami\u0119ci i dysku. A ogromna liczba wydawanych i uniewa\u017cnianych certyfikat\u00f3w mo\u017ce doprowadzi\u0107 do zaprzestania dzia\u0142ania Vaulta. Cert-manager rozwi\u0105zuje ten problem o czym w dalszej cz\u0119\u015bci pracy.<\/p>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Ustawienie logowania z metod\u0105 Kubernetes Auth. Skonfigurowany zostaje adres API Kubernetesa dla Vaulta w celu weryfikacji token\u00f3w logowania.<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image7.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33859&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:614,&quot;targetHeight&quot;:95,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"614\" height=\"95\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image7.png\" alt=\"kod\" class=\"wp-image-33859\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image7.png 614w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image7-300x46.png 300w\" sizes=\"(max-width: 614px) 100vw, 614px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li>Utworzenie zestawu uprawnie\u0144 w Vault w celu podpisywania nowych certyfikat\u00f3w przy u\u017cyciu wcze\u015bniej utworzonej roli \u201ek8s-pods-role\u201d. W tym momencie cert-manager b\u0119dzie wysy\u0142a\u0107 do Vaulta \u017c\u0105dania podpisania certyfikatu (CSR).<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Obraz1.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33862&quot;,&quot;imgStyles&quot;:&quot;object-fit:cover&quot;,&quot;targetWidth&quot;:419,&quot;targetHeight&quot;:91,&quot;scaleAttr&quot;:&quot;cover&quot;,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"419\" height=\"91\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/Obraz1.png\" alt=\"kod\" class=\"wp-image-33862\" style=\"object-fit:cover\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/Obraz1.png 419w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/Obraz1-300x65.png 300w\" sizes=\"(max-width: 419px) 100vw, 419px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\">\n<li>Utworzenie roli w Vault, kt\u00f3ra autoryzowa\u0107 b\u0119dzie logowanie si\u0119 ServiceAccount o nazwie \u201eissuer-sa\u201d.<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image9.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33864&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:703,&quot;targetHeight&quot;:196,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"703\" height=\"196\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image9.png\" alt=\"kod\" class=\"wp-image-33864\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image9.png 703w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image9-300x84.png 300w\" sizes=\"(max-width: 703px) 100vw, 703px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Faza II: Instalacja cert-manager w Kubernetesie<\/strong><\/h3>\n\n\n\n<ol start=\"8\" class=\"wp-block-list\">\n<li>Dodanie repozytorium Helma do cert-managera i zainstalowanie go w namespace \u201ecert-manager\u201d. Narz\u0119dzie to zajmie si\u0119 zarz\u0105dzaniem cyklem \u017cycia certyfikat\u00f3w w klastrze Kubernetesa. Flaga <em>&#8211;set installCRDs=true<\/em> jest krytyczna; instaluje ona w\u0142asne typy zasob\u00f3w jak Issuer i Certificate.<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image10.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33866&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:688,&quot;targetHeight&quot;:308,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: koc&quot;,&quot;alt&quot;:&quot;koc&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"688\" height=\"308\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image10.png\" alt=\"koc\" class=\"wp-image-33866\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image10.png 688w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image10-300x134.png 300w\" sizes=\"(max-width: 688px) 100vw, 688px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: koc\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image11-1.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33870&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:941,&quot;targetHeight&quot;:268,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"941\" height=\"268\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image11-1.png\" alt=\"kod\" class=\"wp-image-33870\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image11-1.png 941w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image11-1-300x85.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image11-1-768x219.png 768w\" sizes=\"(max-width: 941px) 100vw, 941px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Faza III: Konfiguracja Kubernetesa<\/strong><\/h3>\n\n\n\n<ol start=\"9\" class=\"wp-block-list\">\n<li>Utworzenie konta ServiceAccount, kt\u00f3re umo\u017cliwi Vaultowi dost\u0119p do Kubernetesa. W tym celu nale\u017cy wykona\u0107 polecenie <em>kubectl create serviceaccount issuer-sa -n cert-manager.<\/em><\/li>\n\n\n\n<li>Utworzenie tokenu z niesko\u0144czonym czasem \u017cycia dla konta us\u0142ugi \u201eissuer-sa\u201d. Cert-manager b\u0119dzie u\u017cywa\u0107 go jako has\u0142a do logowania si\u0119 do Vaulta.<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image12.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33872&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:521,&quot;targetHeight&quot;:210,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"521\" height=\"210\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image12.png\" alt=\"kod\" class=\"wp-image-33872\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image12.png 521w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image12-300x121.png 300w\" sizes=\"(max-width: 521px) 100vw, 521px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<ol start=\"11\" class=\"wp-block-list\">\n<li>Skonfigurowanie ClusterIssuer w celu ustanowienia dostawcy certyfikat\u00f3w dla cert-managera. Nale\u017cy wykona\u0107 polecenie <em>kubectl apply -f cluster-issuer.yaml<\/em> z zawartymi poni\u017cej danymi:<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image13.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33874&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:524,&quot;targetHeight&quot;:290,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"524\" height=\"290\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image13.png\" alt=\"kod\" class=\"wp-image-33874\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image13.png 524w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image13-300x166.png 300w\" sizes=\"(max-width: 524px) 100vw, 524px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>W celu zweryfikowania poprawno\u015bci konfiguracji certyfikat\u00f3w nale\u017cy wykona\u0107 polecenie <em>kubectl get clusterissuer vault-issuer<\/em>. Status powinien pokazywa\u0107 READY = True. Je\u015bli tak jest, integracja zako\u0144czy\u0142a si\u0119 sukcesem.<\/p>\n\n\n\n<p>Dodatkowo mo\u017cna wykona\u0107 kolejny test polegaj\u0105cy na wykonaniu zam\u00f3wienia na nowy certyfikat, kt\u00f3re cert-manager zrealizuje w Vaulcie. W tym celu nale\u017cy utworzy\u0107 plik yaml z poni\u017csz\u0105 tre\u015bci\u0105 oraz go wykona\u0107.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image14.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33876&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:892,&quot;targetHeight&quot;:508,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"892\" height=\"508\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image14.png\" alt=\"kod\" class=\"wp-image-33876\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image14.png 892w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image14-300x171.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image14-768x437.png 768w\" sizes=\"(max-width: 892px) 100vw, 892px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>Po wykonaniu pliku, cert-manager natychmiast generuje klucz prywatny, wysy\u0142a CSR do Vaulta, odbiera podpisany certyfikat i zapisuje go w Kubernetesie. W celu jego weryfikacji nale\u017cy wykona\u0107 polecenie <em>kubectl get certificate test-app-tls<\/em>.<\/p>\n\n\n\n<p>Powinien wy\u015bwietli\u0107 trzy warto\u015bci:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>tls.key (klucz prywatny aplikacji),<\/li>\n\n\n\n<li>tls.crt (podpisany certyfikat publiczny przez Vaulta),<\/li>\n\n\n\n<li>ca.crt (certyfikat Root CA z Vaulta, u\u017cyteczny do weryfikacji).<\/li>\n<\/ul>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/image15.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-33878&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:708,&quot;targetHeight&quot;:439,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: kod&quot;,&quot;alt&quot;:&quot;kod&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"708\" height=\"439\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image15.png\" alt=\"kod\" class=\"wp-image-33878\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image15.png 708w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/image15-300x186.png 300w\" sizes=\"(max-width: 708px) 100vw, 708px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: kod\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Natywne uwierzytelnianie<\/strong><\/h3>\n\n\n\n<p>Integracja narz\u0119dzi cert-manager i HashiCorp Vault w Kubernetesie opiera si\u0119 na natywnym uwierzytelnianiu maszyn, wykorzystuj\u0105cym dedykowan\u0105 metod\u0119 uwierzytelniania Kubernetes (Kubernetes Auth). To eliminuje zapisywanie hase\u0142 statycznie. Natywne uwierzytelnianie sprawia, \u017ce aplikacja lub kontener udowodnia kim jest, nie korzystaj\u0105c przy tym z zaszytych w kodzie hase\u0142.<\/p>\n\n\n\n<p>Pody dzia\u0142aj\u0105ce na Kubernetesie nie korzystaj\u0105 z \u017cadnych wpisanych na sta\u0142e statycznych sekret\u00f3w, aby poprosi\u0107 o nowy certyfikat. Zamiast tego uwierzytelniaj\u0105 si\u0119 one za pomoc\u0105 swoich natywnych token\u00f3w przy u\u017cyciu kont us\u0142ug (ServiceAccount). Platforma Vault wsp\u00f3\u0142pracuje z serwerem API Kubernetesa w celu weryfikacji takiego tokena i upewnieniu si\u0119, \u017ce dany Pod faktycznie jest tym, za kogo si\u0119 podaje.<\/p>\n\n\n\n<p>Mechanizm weryfikacji Vaulta z Kubernetesem charakteryzuje si\u0119 \u015bcis\u0142\u0105 integracj\u0105 pomi\u0119dzy systemem zarz\u0105dzania sekretami a g\u0142\u00f3wnym centrum dowodzenia klastra (Control plane). Proces weryfikacji zaczyna si\u0119 od \u017c\u0105dania dost\u0119pu od Poda i zawartej w niej aplikacji, kt\u00f3ra potrzebuje wygenerowa\u0107 certyfikat TLS. Wysy\u0142a ona \u017c\u0105danie do platformy Vault, legitymuj\u0105c si\u0119 wy\u0142\u0105cznie swoim tokenem konta us\u0142ugi. Nast\u0119pnie dokonuje si\u0119 proces weryfikacji. Vault nie ufa temu \u017c\u0105daniu w ciemno. Zamiast tego nawi\u0105zuje bezpo\u015brednie po\u0142\u0105czenie z Kubernetesem w celu zweryfikowania wa\u017cno\u015bci przedstawionego tokena oraz potwierdzenia to\u017csamo\u015bci Poda, kt\u00f3ry go wys\u0142a\u0142. Na ko\u0144cu nadaje si\u0119 dost\u0119p do Vaulta.<\/p>\n\n\n\n<p>Po pomy\u015blnym zweryfikowaniu to\u017csamo\u015bci przez serwer API, Vault upewnia si\u0119, \u017ce dany Pod jest autoryzowany do dost\u0119pu do \u017c\u0105danych zasob\u00f3w. Wtedy wydaje on odpowiedni, kr\u00f3tko \u017cyj\u0105cy token z przypisanymi politykami bezpiecze\u0144stwa, eliminuj\u0105c ryzyko nieuprawnionego dost\u0119pu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Integracja Vault z Terraform<\/strong><\/h2>\n\n\n\n<p>Budowanie infrastruktury jako kodu (IaC) jest standardem w kulturze DevOps. Terraform to powszechne stosowane narz\u0119dzie s\u0142u\u017c\u0105ce do wdra\u017cania i zarz\u0105dzania infrastruktur\u0105 IT. Integracja z zewn\u0119trznymi us\u0142ugami wymusza posiadanie sekret\u00f3w i prawid\u0142owego zarz\u0105dzania po\u015bwiadczeniami.<\/p>\n\n\n\n<p>Statyczne umieszczanie sekret\u00f3w w plikach konfiguracyjnych lub zmiennej lokalnej do zarz\u0105dzania infrastruktur\u0105 w chmurze publicznej jest przestarza\u0142ym i niew\u0142a\u015bciwym modelem stosowanym w \u015brodowiskach produkcyjnych. Vault eliminuje ryzyko wycieku sekret\u00f3w i utraty kontroli nad nimi poprzez rozbudowane mechanizmy zarz\u0105dzaj\u0105ce sekretami.<\/p>\n\n\n\n<p>Zgodnie z koncepcj\u0105 Single Source of Truth, Terraform pobiera po\u015bwiadczenia z Vaulta w czasie rzeczywistym, czyli dopiero podczas wykonywania takich polece\u0144 jak <em>terraform plan<\/em> czy <em>terraform apply<\/em>. W tym momencie Vault generuje tymczasowe po\u015bwiadczenia i przekazuje je do Terraforma. U\u017cywaj\u0105c oficjalnego dostawcy Vaulta, \u017cadne dane wra\u017cliwe nie trafiaj\u0105 do kodu infrastruktury, plik\u00f3w stanu (<em>.terraform.tfstate<\/em>) ani do katalog\u00f3w konfiguracyjnych (<em>.terraform\/providers\/<\/em>). W efekcie kod jest czysty, a \u017ar\u00f3d\u0142em prawdy o dost\u0119pie i to\u017csamo\u015bci pozostaje tylko Vault.<\/p>\n\n\n\n<p>Ponadto mo\u017cna u\u017cywa\u0107 Terraforma do samego zarz\u0105dzania konfiguracj\u0105 Vaulta. Podej\u015bcie Infrastructure as Code jest zalecane i stanowi jeden z fundament\u00f3w nowoczesnego bezpiecze\u0144stwa. Dzi\u0119ki temu mo\u017cna w spos\u00f3b deklaratywny definiowa\u0107 i wdra\u017ca\u0107 zmiany w Vaulcie, takie jak metody uwierzytelniania czy polityki dost\u0119pu. Wszystkie zmiany w politykach Vaulta s\u0105 wersjonowane w repozytorium. Jest to zgodne z regu\u0142\u0105 Policy-as-Code i u\u0142atwia audytowanie, kto, kiedy i jakie modyfikacje wprowadzi\u0142. Ponadto IaC stanowi wsparcie dla Zero-Trust poprzez konfigurowanie systemu w zautomatyzowany i powtarzalny proces.<\/p>\n\n\n\n<p>Zarz\u0105dzanie Vaultem przy u\u017cyciu Terraforma ma tak\u017ce swoje ograniczenia. Terraforma nie u\u017cywa si\u0119 do codziennej operacyjnej pracy na sekretach, a nawet do tworzenia infrastruktury Vaulta. Powodem takiego podej\u015bcia jest to, \u017ce ka\u017cdy sekret by\u0142by zapisany w konfiguracji Terraforma i umieszczony w plikach <em>.tfstate<\/em>. Ka\u017cda osoba maj\u0105ca dost\u0119p mog\u0142aby z \u0142atwo\u015bci\u0105 je odczyta\u0107. Administratorzy Vaulta powinni wype\u0142nia\u0107 sekretami Vaulta nie z poziomu implementacji kodu \u017ar\u00f3d\u0142owego, a przy u\u017cyciu CLI lub API.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Vault jako narz\u0119dzie do zapewniania sp\u00f3jno\u015bci ze regulacjami i standardami bezpiecze\u0144stwa<\/strong><\/h2>\n\n\n\n<p>Wymogi wielu standard\u00f3w bezpiecze\u0144stwa i regulacji prawnych przek\u0142adaj\u0105 si\u0119 na praktyczne zastosowanie i konkretne funkcje, kt\u00f3re udost\u0119pnia Vault, zw\u0142aszcza w kontek\u015bcie rotacji sekret\u00f3w i ich ograniczonego czasu \u017cycia.<\/p>\n\n\n\n<p>Organizacje z bran\u017cy finansowej, kt\u00f3re przetwarzaj\u0105 dane kart p\u0142atniczych, zobowi\u0105zane s\u0105 do ich przestrzegania. Standard PCI-DSS (Payment Card Industry Data Security Standard) szczeg\u00f3\u0142owo okre\u015bla sposoby zarz\u0105dzania sekretami i Vault spe\u0142nia compliance dla nich. Jednym z wymog\u00f3w prawnych jest niestosowanie domy\u015blnych hase\u0142 dostarczanych przez dostawc\u00f3w na rzecz stosowania wymuszonej rotacji kluczy i certyfikat\u00f3w.<\/p>\n\n\n\n<p>Jak opisa\u0142em wcze\u015bniej, zarz\u0105dzanie certyfikatami w \u015brodowisku Kubernetesa i mechanizm wydawania kr\u00f3tkotrawa\u0142ych certyfikat\u00f3w sprawiaj\u0105, \u017ce okno potencjalnego ataku z u\u017cyciem skompromitowanego klucza prywatnego spada niemal do zera. Spe\u0142nia to rygorystyczne wymogi ochrony danych \u201ew locie\u201d. Z kolei silnik AWS w systemie Vault odpowiada za dynamiczn\u0105 rotacj\u0119 kluczy dost\u0119pu. U\u017cywane s\u0105 one przez zespo\u0142y deweloperskie i mikrosewisy, co gwarantuje cz\u0119st\u0105 i w pe\u0142ni zaautomatyzowan\u0105 wymian\u0119 sekret\u00f3w.<\/p>\n\n\n\n<p>Vault spe\u0142nia wymogi weryfikowalno\u015bci i rozliczalno\u015bci operacji p\u0142atniczych, kt\u00f3re tak\u017ce s\u0105 wymagane przez standard PCI DSS. Ka\u017cda firma zobowi\u0105zana jest do udowodnienia, kto, kiedy i do jakich wra\u017cliwych danych mia\u0142 dost\u0119p, a tak\u017ce dysponowania szczeg\u00f3\u0142owym dziennikiem zdarze\u0144. Vault realizuje ten wym\u00f3g dzi\u0119ki urz\u0105dzeniom audytowym Audit Devices. Rejestruj\u0105 one ka\u017cde zapytanie, operacj\u0119 kryptograficzn\u0105 czy wydanie sekretu, tworz\u0105c scentralizowany \u015blad audytowy gotowy do integracji z systemami monitoringu (np. SIEM) lub dowolnego narz\u0119dzia agreguj\u0105cego logi w celu wysy\u0142ania alert\u00f3w w czasie rzeczywistym i przeprowadzania audyt\u00f3w zgodno\u015bci.<\/p>\n\n\n\n<p>Ponadto wytyczne instytutu NIST (National Institute of Standards and Technology) w publikacji 800-57 okre\u015blaj\u0105 rekomendacje dotycz\u0105ce zarz\u0105dzania kluczami kryptograficznymi, a tak\u017ce narzucaj\u0105 ramy zarz\u0105dzania cyklem \u017cycia kluczy i definiuj\u0105 maksymalny czas ich u\u017cywania. Ka\u017cda firma, kt\u00f3ra chce wsp\u00f3\u0142pracowa\u0107 z administracj\u0105 Stan\u00f3w Zjednoczonych, musi spe\u0142nia\u0107 te kryteria. Vault realizuje te wymagania poprzez wykorzystanie dynamicznych sekret\u00f3w oraz automatyzacj\u0119, generuj\u0105c po\u015bwiadczenia \u201ew locie\u201d i nadaj\u0105c im kr\u00f3tki TTL.<\/p>\n\n\n<div class=\"nsw-o-blogersii-banner\">\n            <picture>\n            <source srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/04\/Blog-ITO-Desktop.jpg\" media=\"(min-width: 992px)\" >\n            <source srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/04\/Blog-ITO-Mob_.jpg\" media=\"(min-width: 300px)\" >            <img decoding=\"async\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/04\/Blog-ITO-Desktop.jpg\" alt=\"\"  class=\"\"  >\n        <\/picture>\n        <div class=\"cnt\">\n                    <div class=\"nsw-m-title-block -h3 -invert  -has-title-margin-bottom-0 -has-title-font-weight-bold\">\n                                <h2 class=\"nsw-m-title-block__title\">IT Infrastructure<\/h2>\n                <\/div>\n                            <p class=\"has-nsw-p-4-font-size has-invert-color\">\n                Przejmiemy opiek\u0119 24\/7 nad ca\u0142\u0105 infrastruktur\u0105 IT w Twojej firmie, zapewniaj\u0105c bezpiecze\u0144stwo, wydajno\u015b\u0107 i brak przestoj\u00f3w.\n            <\/p>\n                            <a  href=\"https:\/\/sii.pl\/oferta\/it-infrastructure\/\" class=\"nsw-a-button -ghost -banner-button\"   >\n        <span>Oferta IT Infrastructure<\/span>\n    <\/a>\n            <\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>HashiCorp Vault eliminuje zjawisko niebezpiecznego rozproszenia Secrets Sprawl w infrastrukturze, pe\u0142ni\u0105c rol\u0119 scentralizowanego Single Source of Truth w architekturze Zero-Trust. Zamiast polega\u0107 na d\u0142ugoterminowych has\u0142ach podatnych na wyciek, system ten opiera si\u0119 na dynamicznych po\u015bwiadczeniach dostarczanych innym us\u0142ugom, takim jak chmury publiczne, systemy bazodanowe albo aplikacje na Kubernetesie. Co istotne, sekrety generowane s\u0105 w momencie ich wnioskowania przez u\u017cytkownika lub aplikacje na z g\u00f3ry ustalony kr\u00f3tki czas \u017cycia. To automatyzuje rotacj\u0119 sekret\u00f3w i minimalizuje ryzyko nadu\u017cy\u0107 lub niebezpiecze\u0144stw ze strony haker\u00f3w.<\/p>\n\n\n\n<p>Szyfrowanie i rotacja to dwa filary bezpiecze\u0144stwa sekret\u00f3w, ale rotacja jest kluczowa dla ochrony przed skutkami wycieku. W po\u0142\u0105czeniu z narz\u0119dziami takimi jak Vault i Terraform strategia \u201eRotation-First\u201d zapewnia kompleksow\u0105 ochron\u0119, elastyczno\u015b\u0107 i zgodno\u015b\u0107 z najlepszymi praktykami. W nowoczesnych organizacjach rotacja powinna by\u0107 priorytetem \u2013 nie tylko szyfrowanie.<\/p>\n\n\n\n<p>Zintegrowanie Vaulta z Terraformem dostarcza dodatkowe korzy\u015bci zarz\u0105dzania krytyczn\u0105 infrastruktur\u0105. Zapewnia ona audytowalno\u015b\u0107 i kontrol\u0119 nad kodem. Vault izoluje ca\u0142kowicie sekrety i certyfikaty od kodu \u017ar\u00f3d\u0142owego i plik\u00f3w konfiguracyjnych dla innych us\u0142ug oraz aplikacji. Ponadto zapewnia ochron\u0119 przed d\u0142ugotrwa\u0142ym u\u017cyciem skompromitowanych po\u015bwiadcze\u0144. Nawet je\u015bli klucz lub token zostanie przechwycony przez phishing lub niedopatrzenie DevOpsa, to szyfrowanie nie pomo\u017ce. Atakuj\u0105cy mo\u017ce u\u017cywa\u0107 sekretu w niesko\u0144czono\u015b\u0107. Z tego wzgl\u0119du rotacja natychmiast uniewa\u017cnia skradzione dane, ograniczaj\u0105c okno podatno\u015bci do minimum.<\/p>\n\n\n\n<p>Vault gwarantuje zgodno\u015b\u0107 ze standardami bezpiecze\u0144stwa, takimi jak PCI DSS czy NIST, dzi\u0119ki scentralizowanemu zarz\u0105dzaniu po\u015bwiadczeniami oraz automatyzacji proces\u00f3w kryptograficznych w oparciu o architektur\u0119 Zero-Trust. Platforma ta dynamicznie generuje i rotuje kr\u00f3tkotrwa\u0142e sekrety, co spe\u0142nia surowe wymogi standardu PCI DSS 4.0 i drastycznie minimalizuje ryzyko wycieku danych. Ponadto Vault precyzyjnie rejestruje ka\u017cd\u0105 akcj\u0119 w cyklu \u017cycia sekretu, dostarczaj\u0105c szczeg\u00f3\u0142owe dzienniki audytowe niezb\u0119dne do udowodnienia bezwzgl\u0119dnej kontroli nad dost\u0119pem.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;33846&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;2&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;0\\\/5&quot;,&quot;size&quot;:&quot;30&quot;,&quot;title&quot;:&quot;Hashicorp Vault jako centralny punkt rotacji kluczy i certyfikat\u00f3w&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/5&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 24px;\">\n            <span class=\"kksr-muted\"><\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Przechowywanie kluczy, token\u00f3w, hase\u0142, certyfikat\u00f3w czy innych sekret\u00f3w dla dost\u0119pu do wielu r\u00f3\u017cnych zasob\u00f3w utrzymywanych przez firmy i organizacje to &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/hashicorp-vault-jako-centralny-punkt-rotacji-kluczy-i-certyfikatow\/\">Continued<\/a><\/p>\n","protected":false},"author":790,"featured_media":33881,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[1546,851,154,972,1092],"class_list":["post-33846","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-przeglad-narzedzi","tag-cybersecurity","tag-devops","tag-infrastructure-as-code","tag-ito"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/05\/code-1.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/33846"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/790"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=33846"}],"version-history":[{"count":3,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/33846\/revisions"}],"predecessor-version":[{"id":33886,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/33846\/revisions\/33886"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/33881"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=33846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=33846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=33846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}