У меня есть контейнер 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-адресу, с которым я аутентифицируюсь.