Spring Vault
Jeg kunngjorde nettopp det nye Learn Spring Security-kurset, inkludert hele materialet med fokus på den nye OAuth2-stakken i Spring Security 5:
>> KONTROLLER KURSET1. 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