Spring Vault

Zabezpečenie Najlepšie

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 KURZ

1. 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

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 KURZ

$config[zx-auto] not found$config[zx-overlay] not found