-1

Ich habe zwei Microservices, zB A und B. Der Microservice B hat den Rest Enpoint, der nur vom Microservice A erreichbar sein muss. Wie kann ich den Zugriff zwischen Microservices einschränken? Was ist die Best Practice, wenn überhaupt möglich?Sicherheit zwischen Microservices

Ich benutze Federwolke Sicherheit (oauth2, jwt).

+0

Ich würde empfehlen, nicht erlaubt Microservices bei allen synchronen Kommunikation zu verwenden (Verwendung Messaging und pub/sub statt). –

+0

Ich glaube nicht, dass diese Frage etwas mit Synchronität zu tun hat? Synchrone Aufrufe sind auch in Mikro-Diensten wie zB – ExoticChimp

Antwort

0

Dies ist ein Netzwerkproblem. Beschränken Sie einfach den Zugriff auf Micro Service B auf Netzwerkebene. Dies kann leicht gemacht werden, wenn Sie zum Beispiel Docker verwenden. Sie würden den entsprechenden Port für Micro-Service B nicht öffentlich verfügbar machen, sondern ihn in einem bestimmten Netzwerk verfügbar machen und dann Micro-Service diesem Netzwerk beitreten.

Sie könnten öffentliche/private Schlüssel verwenden, wenn Sie zusätzliche Sicherheit hinzufügen möchten. Alternativ wäre es einfacher, ein JWT für Anwendung A zu generieren und es in Mikroservice B zu validieren. Wenn Sie jedoch weitere Mikroservices hinzufügen, hat dies einen höheren Verwaltungsaufwand.

Alternativ sollten Sie eine API Blick in Gateway, das den Zugang API umgehen kann für Sie

+0

absolut möglich. Ist das in etwas wie Kubernetes/Swarm möglich? (Ich plane, diese zum Aufbau meiner Architektur zu verwenden) Zum Beispiel, wenn ich einen Dienst 'A' auf nur beschränken möchte Zugang zu den Diensten 'C' und' E' und nicht 'B' und' D', ist es möglich, so etwas zu tun? –

+0

Ich denke, das würde automatisch mein internes Netzwerk sichern, oder? Und da ich alles hinter einem API-Gateway verbirgt, wird die externe Sicherheit automatisch behandelt –

0

Haben Sie einen anderen Microservice, der nicht so sehr für ein geschäftliches Problem verantwortlich ist, sondern für ein nicht funktionierendes Geschäftsproblem: Sicherheit.

Dieser Microservice ist logisch (da alle Microservices logischerweise für ein Geschäftsproblem verantwortlich sein sollten) und wird nicht eigenständig bereitgestellt, sondern mit anderen Microservices bereitgestellt. Erstellen Sie dann eine ordnungsgemäße API, von der beide Microservice A und B Kenntnis haben und die ausgeführt werden muss, bevor Sie alle Aufrufe annehmen oder Aufrufe ausführen.

Wo andere Microservices Teil einer geschäftsbezogenen Grenze sein sollten (beschränkter Kontext, wenn Sie so wollen), befindet sich der Sicherheits-Microservice innerhalb der Grenze einer nicht-funktionalen Anforderung. Du könntest das IT/Ops oder Devops oder so nennen.