Настройка аутентификации LDAP для HashiCorp Vault в образе контейнера Docker

Вопрос или проблема

Я совсем новичок в Vault. Я пытаюсь добавить аутентификацию LDAP в config.hcl, но не могу понять, как это сделать. Я хочу, чтобы LDAP был предварительно настроен при запуске контейнера Docker, чтобы мне не приходилось входить и вручную настраивать его через веб-интерфейс каждый раз при запуске контейнера Docker.

Например, я хотел бы, чтобы следующее эквивалентное действие выполнялось при запуске контейнера Docker:

# Включить аутентификацию LDAP
vault auth enable ldap

# Настроить аутентификацию LDAP
vault write auth/ldap/config \
    url="ldaps://ldap.example.com" \
    binddn="cn=read-only-admin,dc=example,dc=com" \
    bindpass="вашпароль" \
    userattr="uid" \
    userdn="ou=People,dc=example,dc=com" \
    groupdn="ou=Groups,dc=example,dc=com" \
    groupfilter="(&(objectClass=posixGroup)(memberUid={{.Username}}))" \
    groupattr="cn"

Ответ или решение

Для настройки аутентификации LDAP в HashiCorp Vault в Docker-контейнере с предварительной конфигурацией, вам необходимо будет использовать config.hcl файл и прописать необходимые команды в сценарии инициализации. Ниже приведены шаги, которые помогут вам выполнить эту задачу:

Шаги для настройки аутентификации LDAP в контейнере Docker Vault

  1. Создайте файл конфигурации (config.hcl) для Vault. Этот файл будет использоваться для настройки Vault, в том числе для включения аутентификации LDAP. Пример содержимого файла:

    storage "file" {
     path = "/vault/file"
    }
    
    listener "tcp" {
     address     = "0.0.0.0:8200"
     tls_disable = 1
    }
    
    disable_mlock = true
    
    ui = true
  2. Создайте скрипт инициализации (например, init.sh). Этот сценарий будет запускаться при старте контейнера и будет включать аутентификацию LDAP и настраивать её.

    #!/bin/sh
    
    # Запуск сервиса Vault
    vault server -config=/vault/config/config.hcl &
    
    # Ожидание, пока Vault запустится
    sleep 5
    
    # Инициализация Vault (сначала не забудьте проверить, был ли он уже инициализирован)
    if ! vault status | grep -q "Initialized: true"; then
       vault operator init -key-shares=1 -key-threshold=1 > /vault/file/init_output.txt
       cat /vault/file/init_output.txt | grep 'Unseal Key 1:' | awk '{print $NF}' > /vault/file/unseal_key.txt
       VAULT_UNSEAL_KEY=$(cat /vault/file/unseal_key.txt)
       vault operator unseal $VAULT_UNSEAL_KEY
       vault login $(cat /vault/file/init_output.txt | grep 'Initial Root Token:' | awk '{print $NF}')
    fi
    
    # Включение аутентификации LDAP
    vault auth enable ldap
    
    # Настройка аутентификации LDAP
    vault write auth/ldap/config \
       url="ldaps://ldap.example.com" \
       binddn="cn=read-only-admin,dc=example,dc=com" \
       bindpass="yourpassword" \
       userattr="uid" \
       userdn="ou=People,dc=example,dc=com" \
       groupdn="ou=Groups,dc=example,dc=com" \
       groupfilter="(&(&(objectClass=posixGroup)(memberUid={{.Username}})))" \
       groupattr="cn"
    
    # Ожидание поступления сигналов
    wait

    Не забудьте сделать ваш скрипт исполняемым:

    chmod +x init.sh
  3. Создайте Dockerfile для сборки контейнера. Ваш Dockerfile будет выглядеть примерно так:

    FROM hashicorp/vault:latest
    
    # Копируем файл конфигурации и скрипт инициализации в контейнер
    COPY config.hcl /vault/config/config.hcl
    COPY init.sh /vault/init.sh
    
    # Устанавливаем права на выполнение
    RUN chmod +x /vault/init.sh
    
    # Указываем команду, которая будет выполняться при старте контейнера
    CMD ["/vault/init.sh"]
  4. Соберите образ Docker:

    docker build -t vault-with-ldap .
  5. Запустите контейнер:

    docker run -d --name vault-container -e 'VAULT_DEV_ROOT_TOKEN_ID=myroot' -p 8200:8200 vault-with-ldap

Теперь ваш Vault будет автоматически настраиваться с аутентификацией LDAP каждый раз, когда вы запускаете контейнер. Вы сможете избежать ручной настройки через веб-интерфейс, так как конфигурация будет загружена автоматически из скрипта на этапе инициализации.

Оцените материал
Добавить комментарий

Капча загружается...