Spring Vault
Práve som oznámil nový kurz Learn Spring Security vrátane úplného materiálu zameraného na nový zásobník OAuth2 vo Spring Security 5:
>> SKONTROLUJTE KURZ1. Prehľad
HashiCorp's Vault je nástroj na ukladanie a zabezpečovanie tajomstiev. Vault všeobecne rieši bezpečnostný problém vývoja softvéru, ako spravovať tajomstvá. Ak sa o nej chcete dozvedieť viac, prečítajte si náš článok tu.
Spring Vault poskytuje jarné abstrakcie do HashiCorp’s Vault.
V tomto výučbe si ukážeme príklad toho, ako ukladať a načítať tajomstvá z úložiska.
2. Maven závislosti
Na začiatok sa pozrime na závislosti, ktoré musíme začať pri práci s Spring Vault:
org.springframework.vault spring-vault-core 2.1.1.RELEASE
Najnovšia verzia servera pružinová klenba-jadro nájdete na Maven Central.
3. Konfigurácia úložiska
Poďme si teraz prejsť kroky potrebné na konfiguráciu aplikácie Vault.
3.1. Vytvorenie a VaultTemplate
Aby sme zabezpečili svoje tajomstvá, budeme musieť vytvoriť inštanciu a VaultTemplate pre ktoré potrebujeme VaultEndpoint a TokenAuthentication prípady:
VaultTemplate vaultTemplate = nový VaultTemplate (nový VaultEndpoint (), nový TokenAuthentication ("00000000-0000-0000-0000-000000000000"));
3.2. Vytvorenie a VaultEndpoint
Existuje niekoľko spôsobov, ako vytvoriť inštanciu VaultEndpoint. Poďme sa pozrieť na niektoré z nich.
Prvým z nich je jednoduché vytvorenie inštancie pomocou predvoleného konštruktora, ktorý vytvorí predvolený koncový bod smerujúci na // localhost: 8200:
Koncový bod VaultEndpoint = nový VaultEndpoint ();
Ďalším spôsobom je vytvorenie a VaultEndpoint zadaním hostiteľa a portu aplikácie Vault:
VaultEndpoint endpoint = VaultEndpoint.create ("hostiteľ", port);
A nakoniec ho môžeme vytvoriť aj z adresy URL úložiska:
VaultEndpoint endpoint = VaultEndpoint.from (nový URI ("vault uri"));
Tu si treba všimnúť niekoľko vecí - Vault bude nakonfigurovaný s koreňovým tokenom z 00000000-0000-0000-0000-000000000000 na spustenie tejto aplikácie.
V našom príklade sme použili TokenAuthentication, ale sú podporované aj iné autentifikačné metódy.
4. Konfigurácia fazule Vault pomocou pružiny
S jarom môžeme Vault nakonfigurovať niekoľkými spôsobmi. Jedným z nich je predĺženie AbstractVaultConfiguration, a druhá je pomocou EnvironmentVaultConfiguration ktorá využíva vlastnosti prostredia Spring.
Teraz si prejdeme obe cesty.
4.1. Použitím AbstractVaultConfiguration
Vytvorme triedu, ktorá sa rozširuje AbstractVaultConfiguration, nakonfigurovať Spring Vault:
@Configuration verejná trieda VaultConfig rozširuje AbstractVaultConfiguration {@Override public ClientAuthentication clientAuthentication () {return new TokenAuthentication ("00000000-0000-0000-0000-000000000000"); } @Override public VaultEndpoint vaultEndpoint () {return VaultEndpoint.create ("host", 8020); }}
Tento prístup je podobný tomu, čo sme videli v predchádzajúcej časti. Rozdiel je v tom, že na konfiguráciu fazule Vault sme rozšírením abstraktnej triedy použili program Spring Vault AbstractVaultConfiguration.
Musíme len poskytnúť implementáciu, aby sme ju mohli nakonfigurovať VaultEndpoint a ClientAuthentication.
4.2. Použitím EnvironmentVaultConfiguration
Môžeme tiež nakonfigurovať Spring Vault pomocou EnviromentVaultConfiguration:
@Configuration @PropertySource (hodnota = {"vault-config.properties"}) @Import (hodnota = EnvironmentVaultConfiguration.class) verejná trieda VaultEnvironmentConfig {}
EnvironmentVaultConfiguration využíva jar PropertySource nakonfigurovať fazuľa Vault. Potrebujeme len dodať súbor vlastností s niektorými prijateľnými položkami.
Viac informácií o všetkých preddefinovaných vlastnostiach nájdete v oficiálnej dokumentácii.
Na konfiguráciu úložiska potrebujeme aspoň niekoľko vlastností:
vault.uri = // localhost: 8200 vault.token = 00000000-0000-0000-0000-00000000000000
5. Zabezpečenie tajomstiev
Vytvoríme jednoduchý Poverovacie listiny trieda, ktorá sa mapuje na používateľské meno a heslo:
public class Credentials {private String username; súkromné reťazcové heslo; // štandardné konštruktory, getre, setre}
Teraz sa pozrime, ako môžeme zabezpečiť svoje Poverovacie listiny objekt pomocou Šablóna úložiska:
Poverovacie údaje poverenia = nové poverenia („používateľské meno“, „heslo“); vaultTemplate.write ("tajný / myapp", poverenia);
Po dokončení týchto riadkov sú naše tajomstvá uložené.
Ďalej uvidíme, ako k nim získať prístup.
6. Prístup k tajomstvám
K zabezpečeným tajomstvám môžeme získať prístup pomocou čítať() metóda v VaultTemplate, ktorý vracia VaultResponseSupport ako odpoveď:
VaultResponseSupport response = vaultTemplate .read ("secret / myapp", Credentials.class); Reťazec username = response.getData (). GetUsername (); Reťazec heslo = response.getData (). GetPassword ();
Naše tajné hodnoty sú teraz pripravené.
7. Záver
V tomto článku sme sa dozvedeli o základoch Spring Vault s príkladom, ktorý ukazuje, ako Vault funguje v typických scenároch.
Tu uvedený zdrojový kód nájdete ako obvykle na GitHub.
Bezpečnostné dno