Стратегия gMSA, которую Microsoft рекомендует для контейнеровздесьиздесьработает очень хорошо. Общая идея заключается в том, что хост контейнера извлекает пароль gMSA из контроллера домена Active Directory и передает его контейнеру. Конфигурация удостоверения хранится в файле JSON Credential Spec, который, как ожидается, будет находиться в месте C:\\ProgramData\\docker\\CredentialSpecs
на хосте контейнера. Этот файл содержит метаданные о gMSA и в конечном итоге передается в Docker Engine, который запускает контейнеры. Ниже приведен пример выполнения этого с помощью docker run:
docker run --security-opt "credentialspec=file://myspec.json" --hostname myappname -it myimage powershell
Проблема в том, что если несколько команд используют одни и те же хосты контейнеров, как можно защититься от того, чтобы одна команда не использовала Credential Spec другой команды и, таким образом, не запускала свои контейнеры с разрешениями этой команды? Например, если хост имеет CredentialSpecs ниже, команда A может использовать команды C.
C:\\ProgramData\\docker\\CredentialSpecs\\TeamA.json
C:\\ProgramData\\docker\\CredentialSpecs\\TeamB.json
C:\\ProgramData\\docker\\CredentialSpecs\\TeamC.json
решение1
Даже если я не читал и не использовал эту технологию, я предлагаю разрешения NTFS.
Удалите разрешения на файлы и примените разрешение на чтение только для разрешенной группы или пользователя.
Docker не может прочитать файл учетных данных и, таким образом, не может работать под другим/неразрешенным пользователем.
Работает только если docker также работает под другими пользовательскими контекстами.