Die gMSA-Strategie, die Microsoft für Container empfiehltHierUndHierfunktioniert sehr gut. Die Grundidee besteht darin, dass der Container-Host das gMSA-Passwort von einem Active Directory-Domänencontroller abruft und es dem Container gibt. Die Identitätskonfiguration wird in einer JSON Credential Spec-Datei gespeichert, die sich voraussichtlich am Speicherort C:\\ProgramData\\docker\\CredentialSpecs
auf dem Container-Host befindet. Diese Datei enthält Metadaten zum gMSA und wird letztendlich an die Docker Engine übergeben, die die Container ausführt. Nachfolgend finden Sie ein Beispiel dafür, wie dies über Docker Run funktioniert:
docker run --security-opt "credentialspec=file://myspec.json" --hostname myappname -it myimage powershell
Das Problem dabei ist, dass, wenn mehrere Teams dieselben Container-Hosts verwenden, wie Sie verhindern können, dass ein Team die Credential Spec eines anderen Teams verwendet und seine Container daher mit den Berechtigungen dieses Teams ausführt? Wenn der Host beispielsweise über die folgenden CredentialSpecs verfügt, könnte Team A die von Team C verwenden.
C:\\ProgramData\\docker\\CredentialSpecs\\TeamA.json
C:\\ProgramData\\docker\\CredentialSpecs\\TeamB.json
C:\\ProgramData\\docker\\CredentialSpecs\\TeamC.json
Antwort1
Obwohl ich diese Technologie weder gelesen noch verwendet habe, empfehle ich NTFS-Berechtigungen.
Entfernen Sie die Berechtigungen für die Dateien und wenden Sie die Leseberechtigung nur für die zulässige Gruppe oder den zulässigen Benutzer an.
Docker kann die Anmeldeinformationsdatei nicht lesen und kann daher nicht unter einem anderen/nicht zulässigen Benutzer ausgeführt werden.
Funktioniert nur, wenn Docker auch in verschiedenen Benutzerkontexten ausgeführt wird.