Tilgangskontroll i Cerebrums REST-API

Hvordan gjøres autentisering og autorisasjon i Cerebrums REST-API?

1   Autentisering

1.1   Proxy

API-et forventer at alt som kontakter det direkte autentiserer seg. I vårt tilfelle vil Gravitee fungere som en proxy foran API-et. Gravitee må autentisere seg ved hjelp av basic authentication. Brukernavn og passord legges automatisk på alle requests som går via Gravitee.

Dette sørger for at all kommunikasjon mot API-et gå via Gravitee.

Når en gyldig API-nøkkel blir brukt mot Cerebrums endepunkt i Gravitee, sender Gravitee subscription ID-en som eier API-nøkkelen videre til Cerebrum i headeren X-Api-Subscription.

1.2   Subscription

Alle subscriptions på API-et i Gravitee må hvitlistes i Cerebrum, og kobles til en brukerkonto i Cerebrum for at auditloggen skal bli komplett.

Kommandoer for å administrere hvitlistede subscriptions er tilgjengelig i bofh for alle med superbrukerrettigheter:

bofh> help api
   api        - Display and modify API settings
    subscription_clear identifier
                       - remove api subscription for account
    subscription_info  identifier
                       - show info on a subscription identifier
    subscription_list  uname
                       - list api subscriptions for account
    subscription_set   identifier uname [description]
                       - set api subscription for account

En subscription ID er UUID-en som står øverst når man går inn på detaljsiden for en enkelt subscription. API-nøkkelen skal ikke være kjent for Cerebrum.

Et eksempel kan være at System Z skal skrive noe data til Cerebrum, og har fått en subscription i Gravitee. I tillegg har System Z en systembruker kalt systemz i Cerebrum fra før av. Hvitlistingen gjøres da slik:

api subscription_set fafafafa-fafa-fafa-fafa-fafafafafafa systemz "System Z-integrasjonen"

API-konsumenter som kun har lesetilgang på data assosieres med Cerebrum-brukeren cerebrum-readonly. Dette ansees forsvarlig fordi lesetilgang ikke vil medføre innslag i auditloggen. Hvilke data som hentes ut er identifiserbart både i Cerebrums egne logger og i Gravitees logger.

Konsumenter som krever skrivetilgang må derimot assosieres med en systemkonto i Cerebrum. Kontoen må ikke være en personlig brukerkonto, men må identifisere konsumenten slik at endringer gjort i Cerebrum kan spores tilbake til en konsument. Kontoen kan derimot deles over flere abonnementer for én og samme konsument.

1.3   Autorisasjon

Gravitee styrer all autorisasjon, ved at tilgjengelige HTTP-metoder og -endepunkter hvitlistes i plans.

Av jbr
Publisert 3. sep. 2020 14:39 - Sist endret 7. jan. 2021 15:35