Не удается подключиться к Hashicorp Vault в контейнере Docker с ошибкой сертификата AWS-x509 - PullRequest
0 голосов
/ 09 января 2019

У меня есть контейнер Docker, который содержит службу, которая должна подключаться к Vault для получения секретов для запуска службы. Мой контейнер работает под управлением Linux CentOS

В моем скрипте entrypoint.sh, который выполняется в моем контейнере Docker, я пытаюсь получить секреты Vault с помощью CLI Vault, а затем выполнить аутентификацию с использованием аутентификации AWS.

Соответствующий код из Dockerfile:

# Set environment variables
ENV VAULT_URL=https://releases.hashicorp.com/vault/1.0.1/vault_1.0.1_linux_amd64.zip
ENV VAULT_ADDR=MY_VAULT_ADDR_REMOVED

# Install Vault CLI for managing secrets
RUN yum install unzip -y
RUN curl -fSL "$VAULT_URL" -o /bin/vault.zip
RUN unzip /bin/vault.zip -d /bin
ENTRYPOINT ["sh", "-c", "./entrypoint.sh"]

Соответствующий код из entrypoint.sh

# Login with Vault and get secrets

vault login -namespace $VAULT_NAMESPACE -method=aws role=my_role aws_access_key_id=$AWS_ACCESS_KEY_ID aws_secret_access_key=$AWS_SECRET_ACCESS_KEY aws_security_token=$AWS_SECURITY_TOKEN
vault read -namespace $VAULT_NAMESPACE some_kv

Примечание: $ AWS_ACCESS_KEY_ID, $ AWS_SECRET_ACCESS_KEY и $ AWS_SECURITY_TOKEN передаются во время выполнения как переменные среды в контейнер Docker.

Когда я запускаю команду:

vault login -namespace $VAULT_NAMESPACE -method=aws role=my_role aws_access_key_id=$AWS_ACCESS_KEY_ID aws_secret_access_key=$AWS_SECRET_ACCESS_KEY aws_security_token=$AWS_SECURITY_TOKEN

Я получаю следующую ошибку

Error authenticating: Put https://VAULT_URL/v1/auth/aws/login: x509: certificate signed by unknown authority

Я подтвердил, что могу успешно выполнить тот же вызов vault login с моего локального компьютера с учетными данными AWS.

Мне ясно, что это проблема с сертификатом, но я не уверен, какие шаги мне нужно предпринять, чтобы решить ее.

Вещи, которые я пробовал:

Обновлен Dockerfile следующим образом: vault-cert.cer - это файл, который я скачал из браузера с помощью мастера экспорта сертификатов

# Certificates
COPY src/vault-cert.cer $WSO2IS_HOME/vault-cert.cer
RUN yum install ca-certificates
RUN update-ca-trust force-enable
RUN cp vault-cert.cer /etc/pki/ca-trust/source/anchors
RUN update-ca-trust extract

Я надеялся, что добавление файла .cer в файловую систему позволит контейнеру Docker доверять URL-адресу, с которым я аутентифицируюсь.

1 Ответ

0 голосов
/ 11 января 2019

Эта команда решила мою проблему:

# Configure Trust for Vault Certificate RUN openssl s_client -connect $VAULT_HOST:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/pki/tls/certs/ca-bundle.crt

...