Considerare il seguente scenario.
- Il sistema ha un insieme di titolari di aziende (ovvero utenti del sistema)
- Ogni proprietario di attività commerciale è associato a un gruppo di clienti
- Gli imprenditori accedono al sistema per gestire i propri clienti.
I proprietari delle attività selezioneranno prima un singolo cliente e da lì in avanti la sua sessione sarà associata a quel cliente selezionato .
Ho un set di microservizi, ognuno richiede un Customer-ID
per l'elaborazione. cioè.
- Microservizio A espone
GET /resource-a/{customer-id}
- Microservice B espone
POST /resource-b/{customer-id}
- ecc.
Il Customer-Id
è considerato un'informazione sensibile, quindi è in forma crittografata.
Tuttavia è ancora vulnerabile a escalation di privilegi . Ad esempio, un imprenditore può condividere per errore l'ID cliente crittografato tramite segnalibri, ecc. in modo che il proprietario di un'attività commerciale possa accedere ai dettagli dei clienti che non sono associati a lui. (non esattamente privilege-escalation?)
- Voglio evitare l'autorizzazione lato server dell'ID cliente rispetto al titolare dell'attività perché è noto che è un'operazione lenta e il 90% delle API dovrà ripetere questa procedura di autorizzazione
- Tutti i microservizi sono privi di stato, quindi non è possibile crittografare
Customer-Id
con l'ID di sessione come chiave (poiché nessun microservizio / sessione di stato) - Inoltre, non penso che sia una buona idea fare questa autorizzazione al gateway poiché non è destinato a svolgere tale logica di business.
Come posso evitare l'escalation dei privilegi in questa situazione?