Spring Vault

Sikkerhetstopp

Jeg kunngjorde nettopp det nye Learn Spring Security-kurset, inkludert hele materialet med fokus på den nye OAuth2-stakken i Spring Security 5:

>> KONTROLLER KURSET

1. Oversikt

HashiCorps hvelv er et verktøy for å lagre og sikre hemmeligheter. Vault løser generelt sikkerhetsproblemet for programvareutvikling av hvordan du administrerer hemmeligheter. For å lære mer om det, sjekk ut artikkelen vår her.

Spring Vault gir vårabstraksjoner til HashiCorp’s Vault.

I denne opplæringen går vi over et eksempel på hvordan du lagrer og henter hemmeligheter fra hvelvet.

2. Maven-avhengigheter

Til å begynne med, la oss ta en titt på avhengighetene vi trenger for å begynne å jobbe med Spring Vault:

  org.springframework.vault spring-vault-core 2.1.1.RELEASE 

Den siste versjonen av vår-hvelv-kjerne kan du finne på Maven Central.

3. Konfigurere Arkiv

La oss nå gå gjennom trinnene som trengs for å konfigurere Arkiv.

3.1. Opprette en VaultTemplate

For å sikre hemmelighetene våre, må vi sette i gang en VaultTemplate som vi trenger VaultEndpoint og TokenAuthentication forekomster:

VaultTemplate vaultTemplate = ny VaultTemplate (nytt VaultEndpoint (), ny TokenAuthentication ("00000000-0000-0000-0000-000000000000"));

3.2. Opprette en VaultEndpoint

Det er noen måter å sette i gang VaultEndpoint. La oss ta en titt på noen av dem.

Den første er å bare instantiere den ved hjelp av en standardkonstruktør, som vil opprette et standard endepunkt som peker på // lokal vert: 8200:

VaultEndpoint endpoint = nytt VaultEndpoint ();

En annen måte er å lage en VaultEndpoint ved å spesifisere Vault's vert og port:

VaultEndpoint endpoint = VaultEndpoint.create ("vert", port);

Og til slutt kan vi også lage den fra Vault URL:

VaultEndpoint endpoint = VaultEndpoint.from (nytt URI ("hvelv uri"));

Det er noen få ting å merke seg her - Vault vil bli konfigurert med et rot-token av 00000000-0000-0000-0000-000000000000 for å kjøre dette programmet.

I vårt eksempel har vi brukt TokenAuthentication, men det er også andre autentiseringsmetoder som støttes.

4. Konfigurere hvelvbønner ved hjelp av våren

Med Spring kan vi konfigurere Vault på et par måter. Den ene er ved å utvide AbstraktVaultConfiguration, og den andre er ved å bruke EnvironmentVaultConfiguration som benytter vårens miljøegenskaper.

Vi går nå over begge veier.

4.1. Ved hjelp av AbstractVaultConfiguration

La oss lage en klasse som strekker seg AbstraktVaultConfiguration, for å konfigurere Spring Vault:

@Configuration public class VaultConfig utvider AbstractVaultConfiguration {@Override public ClientAuthentication clientAuthentication () {return new TokenAuthentication ("00000000-0000-0000-0000-000000000000"); } @Override public VaultEndpoint vaultEndpoint () {return VaultEndpoint.create ("host", 8020); }}

Denne tilnærmingen ligner på det vi har sett i forrige avsnitt. Det som er annerledes er at vi har brukt Spring Vault til å konfigurere Vault-bønner ved å utvide abstraktklassen AbstractVaultConfiguration.

Vi må bare gi implementeringen for å konfigurere VaultEndpoint og ClientAuthentication.

4.2. Ved hjelp av EnvironmentVaultConfiguration

Vi kan også konfigurere Spring Vault ved hjelp av EnviromentVaultConfiguration:

@Configuration @PropertySource (verdi = {"vault-config.properties"}) @Import (verdi = EnvironmentVaultConfiguration.class) offentlig klasse VaultEnvironmentConfig {}

EnvironmentVaultConfiguration bruker Spring's PropertySource for å konfigurere Vault-bønner. Vi trenger bare å gi eiendomsfilen noen akseptable oppføringer.

Mer informasjon om alle de forhåndsdefinerte egenskapene finner du i den offisielle dokumentasjonen.

For å konfigurere Vault trenger vi minst et par egenskaper:

vault.uri = // localhost: 8200 vault.token = 00000000-0000-0000-0000-000000000000

5. Sikre hemmeligheter

Vi lager en enkel Legitimasjonserklæring klasse som tilordnes til brukernavn og passord:

Legitimasjonsinformasjon for offentlig klasse {private String-brukernavn; privat strengpassord; // standard konstruktører, getters, setters}

La oss nå se hvordan vi kan sikre våre Legitimasjonserklæring objektet ved hjelp av VaultTemplate:

Legitimasjonsopplysninger = nye Legitimasjonsopplysninger ("brukernavn", "passord"); vaultTemplate.write ("hemmelig / myapp", legitimasjon);

Når disse linjene er fullført, lagres hemmelighetene våre nå.

Deretter ser vi hvordan du får tilgang til dem.

6. Få tilgang til hemmeligheter

Vi kan få tilgang til de sikrede hemmelighetene ved hjelp av lese() metode i VaultTemplate, som returnerer VaultResponseSupport som svar:

VaultResponseSupport response = vaultTemplate .read ("secret / myapp", Credentials.class); Streng brukernavn = respons.getData (). GetUsername (); Strengpassord = respons.getData (). GetPassword ();

Våre hemmelige verdier er nå klare.

7. Konklusjon

I denne artikkelen har vi lært om det grunnleggende i Spring Vault med et eksempel som viser hvordan Vault fungerer i typiske scenarier.

Som vanlig kan kildekoden som presenteres her, bli funnet på GitHub.

Sikkerhetsbunn

Jeg kunngjorde nettopp det nye Learn Spring Security-kurset, inkludert hele materialet med fokus på den nye OAuth2-stakken i Spring Security 5:

>> KONTROLLER KURSET

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