You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Leverancen består af et Docker image som er baseret på Keycloak (https://www.keycloak.org/) version 26.4.0. I dette
standard Keycloak Docker image er der installeret extensions som udvider funktionaliteten for at understøtte EHMI
pilotprojektet. Ud over nedenstående dokumentation henvises til dokumentationen af standard Keycloak på 
https://www.keycloak.org/

Logning af certifikatstatus

NSP Keycloak indeholder en extension som kører et job til at logge certifikatstatus med konfigurerbare intervaller. 
Der bør etableres overvågning af loggen for at identificere evt. spærring eller snarligt udløb af disse certifikater.
Formatet på disse logs beskrives nedenfor.

Logger klasse er ```dk.nsp.security.keycloak.jobservice.keycloakcertificateinfo.LogkeycloakCertificateInfoScheduledTask```
Teksten som logges er et json dokument med følgende struktur:

{
  "realmName":"ehmi",
  "realmId":"ehmi",
  "kid":"YIX49ytybvWgXKkZBxHuFGMe6n_rEpRBfaRjrnds-00",
  "subject":"C=DK, OID.2.5.4.97=NTRDK-96024140, O=Testorganisation nr. 96024140, SERIALNUMBER=UI:DK-O:G:541c45fb-46cf-49aa-8cfc-a7cc702678d8, CN=NSP Keycloak Test 1",
  "issuer":"C=DK, O=Den Danske Stat, OU=Test - cti, CN=Den Danske Stat OCES udstedende-CA 1",
  "notBefore":"2025-10-29T17:36:04Z",
  "notAfter":"2028-10-28T17:36:03Z",
  "daysToExpiry":"919",
  "revocationStatus":"VALID"
}


Når dayToExpiry er mindre en f.eks. 30 bør der udløses en alarm/ notifikation.
Nar revocationStatus er forskellig fra VALID bør der udløses en alarm.

Konfiguration af NSP OpenID Connect (OIDC) Keycloak server med NSP plugins

Dette projekt indeholder Terraform konfigurationsfiler til at konfigurer Keycloak installationerne i EHMI projektet.

Struktur

├── README.md
└── terraform
    └── configuration
        ├── modules
        ├── localhost
        └── test1


modules

Denne folder indeholder konfigurationer (i form af Terraform moduler) som bruges generelt for installationer på alle 
miljøer.

localhost

Denne folder indeholder konfiguration af en lokal installation som man f.eks. afvikler på en udvikler maskine. OBS: State
er eksplicit git ignored for denne folder. 

test1

Denne folder indeholder konfiguration af NSP test1 miljøet. OBS: State er ikke git ignored for denne folder. Det betyder
at enhver vedligholdelse af Keycloak på test1 skal koordineres således at der ikke kan opstå merge konflikter i Terraform
state (~ major headache)

Keycloak Terraform provider

Der benyttes i øjeblikke en fork af terraform som skal hentes fra dette repo : https://github.com/Flintholm/terraform-provider-keycloak

Formålet med denne fork er at understøtte brugen af `key_use` som er en forudsætning for at installere Java Keystores.

Når den er clonet, kan en lokal version bygges med `make build`. Se README.md i provideren (#development) for detaljer.
Resultatet er en binær version af Keycloak Terraform provideren.

For at denne bruges af Terraform (istedet for den officielle keycloak/keycloak provider) skal der laves en fil `~/.terraformrc` med
følgende indhold:

provider_installation {
  dev_overrides {
   "keycloak/keycloak" = "/Users/pfs/projects/terraform-provider-keycloak"
  }

  # Install all other providers directly from their origin provider registry as normal.
  # If this is omittet, terraform will only use the dev_overrides block.
  direct {}
}

Stien til provideren rettes selvfølgelig til så den passer til den folder hvor du har bygget provideren.

Hvordan opdateres Keycloak konfiguration via Terraform ?

Dette er en kort vejledning i hvordan Terraform bruges til at konfigurer NSP Keycloak installationer.

Forudsætninger

  • Terraform er installeret
  • Fork'et Terraform Keycloak provider er bygget og konfigureret som beskrevet ovenfor

Localhost

Ved konfiguration af localhost ligger al Terraform state lokalt. I det følgende antages det at der kører en lokal installation af NSP Keycloak via docker compose i ```localhost``` folderen i selve Keycloak projektet.

Først skal der oprettes en client i Keycloak som Terraform bruger til at kalde Keycloak.

I folderen "terraform" køres følgende kommando

./create_tf_client.sh https://keycloak.local/auth admin Test1234 terraform Test1234

Skift til folderen "terraform/configuration/localhost" og kør kommandoerne

terraform init
terraforn apply

Bemærk, at der oprettes en række filer og foldere med bla. Terraform state. Disse er vigtige for at vedligeholde den
lokale Keycloak installation. Det er ligeledes vigtig at slette alt hvis du starter med en ny Keycloak database. Dvs.

rm -rf .terraform
rm -rf .terraform.lock.hcl
rm -rf terraform.tfstate
rm -rf terraform.tfstate.backup

NSP Test1

Princippet er præcist det samme som ved localhost ovenfor. Dog er der den væsentlige forskel at Terraform state er 
checket ind i dette git repo. State skal altid repræsentere hvad der er konfigureret i Test1. Dvs. processen for at 
lave opdateringer i f.eks. Test1 skal være

  1. Pull nyeste version af state fra git repo
  2. Sikre at INGEN andre laver opdateringer
  3. Lav opdateringer via Terraform (som dermed opdatere state i dette repo)
  4. Push state til git

Alternativet til denne manuelle process for at sikre Terraform state ikke kommer ud af sync, er at benytte en anden 
storage mekanisme til state. F.eks. understøtter Terraform S3 kompatibel storage af state, hvor Terraform skriver
locks for at undgå at state kommer ud af sync.

  • No labels