Je fais des recherches sur des systèmes multi-locataires et des micro-services et je suis un peu confus par cela.
Si chaque micro-service a sa propre base de données et met en œuvre le soutien de la multi-location de son API - quel service est responsable de la distion du micro-service dans quelle carte de compte de compte à quels clients?
Y a-t-il une seule source de vérité pour les identifiants de compte? Comment cette information est-elle propagée à tous les différents micro-services si un nouveau client est ajouté?
Au départ, je pensais que les micro-services ne doivent peut-être pas en être conscients du tout, ils acceptent simplement un identifiant de compte et stockent les données sans prendre soin de ce qu'on venait le client. Mais comment évitez-vous la question des identifiants de compte en double/incorrect/mis à jour envoyé à ces services? Cela ne semble-t-il pas comme un grand risque de sécurité et de réglementation?
Ce n'est pas un problème dans une seule conception de base de données, car l'identifiant de compte est contraint dans toutes les tables qui le font référence et est plus facile à gérer.
Mais comment évitez-vous la question des identifiants de compte en double/incorrect/mis à jour envoyé à ces services?
Je pense que la préoccupation que vous collaborez concerne ce que l'on appelle un référence d'objet direct insécurité . Vous seriez exposé à cette vulnérabilité si le client est capable d'envoyer n'importe quel identifiant de compte souhaité et que le service ne l'authentifie pas.
Il y a deux solutions:
Authentifier l'identifiant. En d'autres termes, validez l'ID dans le contexte d'authentification du client. Vous auriez besoin de le faire avec chaque transaction.
N'exposez pas l'ID sur Internet. Au lieu de cela, récupérez l'ID lorsque l'utilisateur l'authentifie et le stocke en session ou dans un cookie crypté (par exemple dans le cadre d'un jeton d'authentification crypté ou signé). Si le jeton est crypté ou signé, le client ne doit pas être capable de le changer.