Microsoft Entra ID
Microsoft Entra ID er identitetstilbyderen Kartverket bruker internt for sine ansatte. Velger du Microsoft Entra ID som identitetstilbyder for din applikasjon, sÄ er det fordi du Þnsker Ä tilby tjenesten din for internt ansatte i Kartverket.
En klientregistrering i Microsoft Entra ID kalles for en app-registration. For Ă„ opprette en app-registration har du to muligheter:
- Bruke Kubernetes-ressursen
AzureAdApplication. Denne ressurstypen er tilgjengelig via Kubernetes-operatoren Azurerator, utviklet av NAV sitt plattformteam (NAIS). - Bruke Kubernetes-ressursen
SecurityConfig, som er en Kartverket-tilpasset abstraksjon pÄ toppen av Azurerator. Les mer omSecurityConfigi dokumentasjonen for Accesserator. Denne vil opprette enAzureAdApplication-ressurs under panseret. Dersom du uansett
En vil typisk velge Ă„ bruke SecurityConfig fremfor AzureAdApplication dersom en uansett skal bruke fĂžrstnevnte til
annen funksjonalitet, som Token Exchange, token-uthenting eller validering med Texas, OPA eller annet.
đč AzureAdApplicationâ
Azurerator introduserer CRD-en AzureAdApplication, som hÄndterer opprettelse og vedlikehold av app-registrations i Microsoft Entra ID.
App-registrations opprettet med Azurerator vil fÄ navn basert pÄ hvor de er plassert i et Kubernetes-cluster, i.e. cluster:namespace:name.
Etter Ă„ ha fullfĂžrt opprettelsen, vil Azurerator opprette en Kubernetes-hemmelighet (Secret) i samme namespace med hemmeligheter som kan brukes av applikasjoner til tilgangsstyring, som for eksempel client_id, client_secret, private_key_jwt, diverse URL-er og lignende.
Azurerator hÄndterer rullering av hemmeligheter for deg!
Hemmeligheten som Azurerator oppretter vil ha to sett med client_id og private_key_jwt: ett aktivt og ett neste.
NÄr det aktive settet nÊrmer seg utlÞp, vil Azurerator automatisk generere et nytt sett og oppdatere app-registreringen i Entra ID.
spec (object, required) â Spesifikasjon til AzureAdApplication
allowAllUsers (bool, required) â Bestemmer om alle brukere i tenanten som Azurerator er konfigurert mot skal fĂ„ tilgang.
claims (object, optional) â Definerer konfigurasjon av claims som inkluderes i tokenene som returneres til Entra ID applikasjonen.
groups ([]object, optional) â En liste over Entra ID gruppe ID-er som skal inkluderes i groups-claimet i tokenene utstedt av Entra ID. Dette tildeler ogsĂ„ grupper til app-registreringen brukt for tilgangskontroll. Kun direkte medlemmer av gruppene fĂ„r tilgang.
id (string, required) â Objekt-ID-en (OID) til en Entra ID-gruppe.
replyUrls ([]object, required) â URL-er som applikasjonen godtar som svaradresser etter autentisering.
url (string, required) â En godkjent svaradresse (reply URL) for applikasjonen.
logoutUrl (string, optional) â URL-en brukere blir omdirigert til nĂ„r de logger ut av applikasjonen..
preAuthorizedApplications ([]object, optional) â Definerer andre app-registreringer som er forhĂ„ndsautorisert til Ă„ fĂ„ tilgang til denne applikasjonen. Her refereres det til tilsvarende AzureAdApplication.
application (string, required) â Navnet pĂ„ den forhĂ„ndsgodkjente applikasjonen.
namespace (string, required) â Namespacet hvor den forhĂ„ndsgodkjente applikasjonen befinner seg.
cluster (string, required) â Clusteret hvor den forhĂ„ndsgodkjente applikasjonen befinner seg.
permissions (object, optional) â Spesifiserer hvilke claims den forhĂ„ndsautoriserte applikasjonen har.
scopes ([]string, optional) â Liste med egendefinerte tilgangs-scopes tildelt til den forhĂ„ndsautoriserte appliaksjonen.
roles ([]string, optional) â Liste med egendefinerte tilgangs-roller tildelt til den forhĂ„ndsautoriserte appliaksjonen.
secretName (string, required) â Navnet pĂ„ den resulterende Secret-ressursen som vil bli opprettet.
secretKeyPrefix (string, optional) â Et valgfritt brukerdefinert prefiks som brukes pĂ„ nĂžklene i den genererte hemmeligheten, og erstatter standardprefikset (AZURE).
secretProtected (bool, optional) â Angir om hemmeligheten skal tilbaketrekkes selv nĂ„r den ikke er i bruk.
singlePageApplication (bool, optional) â Angir om denne Entra ID-applikasjonen skal registreres som en single-page-application for bruk i klient-side-applikasjoner uten tilgang til hemmeligheter.
FĂžlgende eksempel oppretter app-registreringen atgcp1-sandbox:tilgangsstyring-main:test-app.
Den gir kun tilgang til direkte medlemmer av gruppene med objekt-ID 4bdc77ce-2a99-406c-a07e-88a1eba82dd9 eller 1262b1c5-d2db-44ad-96e3-ed8637e6b996.
Den forhÄndsautoriserer ogsÄ app-registration med navn atgcp1-dev:other-namespace:other-app.
NÄr registrering er fullfÞrt vil Azurerator opprette Kubernetes-hemmeligheten entraid-secret i namespacet tilgangsstyring-main.
Hvis denne klientregistreringen skal brukes sammen med Ztoperator for Ä beskytte din applikasjon og eventuelt logge inn brukere, sÄ er det et par felt som mÄ konfigureres riktig.
spec.replyUrlsmÄ samsvare medspec.ingressesi din Skiperator-Applicationogspec.autoLogin.redirectPathi din Ztoperator-AuthPolicy.spec.logoutUrlmÄ matchespec.ingressesi din Skiperator-Application.spec.secretNamemÄ matchespec.oAuthCredentialsi Ztoperator-AuthPolicy.spec.singlePageApplicationmÄ vÊre satt tilfalseettersom Ztoperator ikke gjennomfÞrer innloggingsflyten i en offentlig klient.
apiVersion: nais.io/v1
kind: AzureAdApplication
metadata:
name: test-app
namespace: tilgangsstyring-main
spec:
allowAllUsers: false
claims:
groups:
- id: 4bdc77ce-2a99-406c-a07e-88a1eba82dd9
- id: 1262b1c5-d2db-44ad-96e3-ed8637e6b996
replyUrls:
- url: https://test-app.atgcp1-sandbox.kartverket-intern.cloud/oauth2/callback
logoutUrl: https://test-app.atgcp1-sandbox.kartverket-intern.cloud/
preAuthorizedApplications:
- application: other-app
namespace: other-namespace
cluster: atgcp1-dev
secretName: entraid-secret
secretKeyPrefix: CUSTOM_PREFIX
secretProtected: true
singlePageApplication: false
apiVersion: v1
kind: Secret
metadata:
name: entraid-secret
namespace: tilgangsstyring-main
data:
AZURE_APP_CERTIFICATE_KEY_ID: ++++++++
AZURE_APP_CLIENT_ID: ++++++++
AZURE_APP_CLIENT_SECRET: ++++++++
AZURE_APP_JWK: ++++++++
AZURE_APP_JWKS: ++++++++
AZURE_APP_NEXT_CERTIFICATE_KEY_ID: ++++++++
AZURE_APP_NEXT_CLIENT_SECRET: ++++++++
AZURE_APP_NEXT_JWK: ++++++++
AZURE_APP_NEXT_PASSWORD_KEY_ID: ++++++++
AZURE_APP_PASSWORD_KEY_ID: ++++++++
AZURE_APP_PRE_AUTHORIZED_APPS: ++++++++
AZURE_APP_TENANT_ID: ++++++++
AZURE_APP_WELL_KNOWN_URL: ++++++++
AZURE_OPENID_CONFIG_ISSUER: ++++++++
AZURE_OPENID_CONFIG_JWKS_URI: ++++++++
AZURE_OPENID_CONFIG_TOKEN_ENDPOINT: ++++++++
type: Opaque