2017-05-15 14 views
0

Es in Docker Dokumentation geschrieben, dass:Unix-Sockets vs TCP-Sockets in Docker

Aus diesem Grunde ist der REST-API-Endpunkt (verwendet von der Docker CLI mit der Docker-Daemon kommunizieren) geändert in Docker 0,5 .2 und jetzt verwendet einen UNIX-Socket anstelle eines an 127.0.0.1 gebundenen TCP-Sockets (das Letzteres ist anfällig für Cross-Site-Request-Forgery-Angriffe, wenn Sie Docker direkt auf Ihrem lokalen Rechner außerhalb einer VM ausführen). Sie können dann traditionelle UNIX-Berechtigungsprüfungen verwenden, um den Zugriff auf den Control-Socket zu beschränken.

Ich verstehe nicht, was ist der Unterschied zwischen Unix-Sockets und TCP-Sockets. Besonders , was die Bedrohung hier beschrieben:

letztere anfällig sein für Cross-Site-Request-Forgery-Attacken, wenn Sie passieren Docker direkt auf dem lokalen Computer ausführen können, außerhalb einer VM)

? Warum ist das Ausführen in VM wichtig?

Antwort

0

Ein Cross-Site Request Forgery-Angriff passiert, wenn eine Website oder Web-App Sie (oder den Webbrowser, wegen eines Fehlers) in Targeting, in diesem Fall 127.0.0.1, trickst. Wenn Sie Container auf Ihrem eigenen Computer ausführen, wird die Kommunikation zwischen dem Docker-Client und dem Server am besten von Unix-Domain-Sockets bedient. Wenn Sie jedoch im Swarm-Modus mit mehreren Hosts arbeiten, müssen Sie Docker für die Sicherheit und Authentifizierung über TCP und TLS einrichten.

Es gibt nichts "Wichtiges" über das Ausführen von Docker auf einer virtuellen Maschine in diesem Zusammenhang. Es wird nur auf bestimmten Betriebssystemen benötigt, auf denen Docker (oder die Bilder, z. B. bei Windows-Images auf einem Linux-Host) nicht nativ ausgeführt werden können. Es war die einzige Möglichkeit, Docker unter Windows und MacOS X zu starten.

Verwandte Themen