Есть ли способ обойти интерактивные нотариальные запросы для имени пользователя и пароля DTR при инициализации репо DTR - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь заставить подпись изображений работать неинтерактивно через конвейер Jenkins.Версии:

Docker client: 17.06.2-ce
Docker engine: docker-ee-17.06.2.ee.19-3.el7.x86_64.rpm
Notary client: 0.4.3
  • Шаги, которым я следую (на подчиненном устройстве Jenkins): Создание новых каталогов:
~/image_signing
~/.notary
~/.docker/trust/private/root_keys
  • Копирование сертификата DTR CA в ~ /image_signing / dtr_ca.pem
  • Создайте ~ / .notary / config.json с URL DTR
{
                           "trust_dir" : "~/.docker/trust",
                           "remote_server": {
                           "url": "https://dtr.server.org.com"
                           }
                      }

• Загрузите предварительно созданный корневой ключ в ~ / .docker / trust /private / root_keys /

• Загрузите исполняемые файлы докера и клиента нотариуса в ~ / image_signing /

• Установите env:

export DOCKER_CONTENT_TRUST=1
export UCP_USER=”myucpuser”
export UCP_PASSWORD=”myucppassword”
export NOTARY_AUTH=`echo "${UCP_USER}:${UCP_PASSWORD}" | base64 -w 0`
export UCP_FQDN=ucp.server.org.com
export root_key=mypresetrootkey.key
export NOTARY_ROOT_PASSPHRASE="mysecretpassphrase"
export NOTARY_TARGETS_PASSPHRASE="mysecretpassphrase"
export NOTARY_SNAPSHOT_PASSPHRASE="mysecretpassphrase"
export NOTARY_ROOT_PASSPHRASE="mysecretpassphrase"
export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE="mysecretpassphrase"
export DTR_FQDN=dtr.server.org.com
  • Получите токен аутентификации UCP искачать клиентский пакет UCP
  • Распаковать пакет
  • Настроить среду с помощью источника env.sh
  • Вход в Docker - имя пользователя "$ UCP_USER" --password "$ UCP_PASSWORD"

  • Создание нового репо на DTR с помощью вызова API для https://$DTR_FQDN/api/v0/repositories/myorg

  • Инициализация репо с использованием моего пользовательского корневого ключа: нотариус --server https://dtr.server.org.com--trustDir ~ / .docker / trust --tlscacert ~ / image_signing / dtr_ca.pem \ init --publish --rootkey ~ / .docker / trust / private / root_keys / $ root_key \ dtr.server.org.com/ myorg/ $ гepo_name

На этом этапе инициализации репо мне дважды выдается запрос на ввод имени пользователя и пароля DTR с помощью нотариального бинарного файла.

DEBU[0000] Using the following trust directory: /home/xxxxx/.docker/trust
DEBU[0000] Trusting 2 certs
DEBU[0000] No yubikey found, using alternative key storage: no library found
DEBU[0000] key with same ID f52c64d6e3ce8c4bb66928e30138c08e44e1f8828e35465e993d2f8dfdde6221 and role root already exists
Root key found, using: f52c64d6e3ce8c4bb66928e30138c08e44e1f8828e35465e993d2f8dfdde6221
DEBU[0000] No yubikey found, using alternative key storage: no library found
DEBU[0000] generated ECDSA key with keyID: 44dee6cbd1af4b63a214dba4debb7ea039a27c812c4bf6fd764dc434b387af2f
DEBU[0000] generated new ecdsa key for role: targets and keyID: 44dee6cbd1af4b63a214dba4debb7ea039a27c812c4bf6fd764dc434b387af2f
DEBU[0000] generated ECDSA key with keyID: 672e5dc464708619c611c1477483712cdced88d84cce858b0ca4b61f33a4d69d
DEBU[0000] generated new ecdsa key for role: snapshot and keyID: 672e5dc464708619c611c1477483712cdced88d84cce858b0ca4b61f33a4d69d
Enter username:

Установив env, я мог бы обойти запросы на PASSPHRASES, но я не смог обойти запрос на ввод пароля пользователя DTR и пароля, который требуется при публикации изменений в DTR.Как я могу передать или предварительно установить их так, чтобы процесс был полностью автоматизирован?

Env:

export DOCKER_CONTENT_TRUST=1
export UCP_USER=”myucpuser”
export UCP_PASSWORD=”myucppassword”
export NOTARY_AUTH=`echo "${UCP_USER}:${UCP_PASSWORD}" | base64 -w 0`
export UCP_FQDN=ucp.server.org.com
export root_key=mypresetrootkey.key
export NOTARY_ROOT_PASSPHRASE="mysecretpassphrase"
export NOTARY_TARGETS_PASSPHRASE="mysecretpassphrase"
export NOTARY_SNAPSHOT_PASSPHRASE="mysecretpassphrase"
export NOTARY_ROOT_PASSPHRASE="mysecretpassphrase"
export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE="mysecretpassphrase"
export DTR_FQDN=dtr.server.org.com

notary --server https://dtr.server.org.com --trustDir ~/.docker/trust --tlscacert ~/image_signing/dtr_ca.pem \
                                 init --publish --rootkey ~/.docker/trust/private/root_keys/$root_key \
                                 dtr.server.org.com/ myorg/$repo_name

Я попытался передать аргументы через текстовый файл (full_notary_cmd

DEBU[0000] Using the following trust directory: /home/l117689/.docker/trust
DEBU[0000] Trusting 2 certs
DEBU[0000] No yubikey found, using alternative key storage: no library found
DEBU[0000] key with same ID f52c64d6e3ce8c4bb66928e30138c08e44e1f8828e35465e993d2f8dfdde6221 and role root already exists
Root key found, using: f52c64d6e3ce8c4bb66928e30138c08e44e1f8828e35465e993d2f8dfdde6221
DEBU[0000] No yubikey found, using alternative key storage: no library found
DEBU[0000] generated ECDSA key with keyID: 160875f5628f3880b51d763ed5d1d729855e49cbbaeef5f6b50c31d4b565d0a6
DEBU[0000] generated new ecdsa key for role: targets and keyID: 160875f5628f3880b51d763ed5d1d729855e49cbbaeef5f6b50c31d4b565d0a6
DEBU[0000] generated ECDSA key with keyID: 02c28ad8a7d22206c97a14d327ca19853201fc6a10530463b5f66f66a5b5ea91
DEBU[0000] generated new ecdsa key for role: snapshot and keyID: 02c28ad8a7d22206c97a14d327ca19853201fc6a10530463b5f66f66a5b5ea91

* fatal: you are not authorized to perform this operation: server returned 401.
...