Использование интерфейса командной строки OpenBao

Обзор

OpenBao имеет два интерфейса командной строки (CLI): OpenBao Web CLI, доступный в веб-интерфейсе, и локальную утилиту bao, которая является оберткой вокруг HTTP API, идентичного HashiCorp Vault. Веб-версия сильно ограничена в количестве поддерживаемых операций.

Для локальной утилиты шаблон команды выглядит следующим образом:

$ bao <command> [<options>] [<path>] [<args>]

где:

  • <command> — команда из списка команд OpenBao.

  • <options> — флаги для указания дополнительных параметров.

  • <path> — путь к ресурсу, необходимый для некоторых операций.

  • <args> — API-аргументы, необходимые для некоторых операций.

Для получения информации о команде и ее параметрах вызовите ее с флагом -h:

$ bao <command> -h

CLI-утилита OpenBao может считывать определенную информацию из переменных окружения, чтобы вам не приходилось явно указывать эти параметры каждый раз при исполнении команд. Если для некоторого параметра существует переменная среды, но при вызове команды значение этого параметра явно указывается флагом, то будет использовано значение флага. Доступные для чтения переменные среды вы можете увидеть в документации OpenBao.

Работа с CLI OpenBao

  1. Первым опциональным шагом является создание переменной окружения VAULT_ADDR, указывающей на хост с OpenBao. По умолчанию OpenBao отправляет запросы на адрес https://127.0.0.1:8200, что не всегда работает корректно. Данный шаг можно пропустить, но тогда потребуется указывать параметр -address при каждом исполнении команды.

  2. Для выполнения действий на сервере необходимо аутентифицироваться. По умолчанию методом аутентификации является token — OpenBao запросит специальный токен доступа, если не указать его явно. Можно выбрать подходящий метод аутентификации с помощью флага -method. Например, аутентификация методом userpass выглядит следующим образом:

    $ bao login -method=userpass username=test_user

    После выполнения команды выше OpenBao попросит ввести пароль пользователя. При успешной аутентификации токен доступа закешируется и будет использован для подписи дальнейших запросов, и будет выведено следующее сообщение:

    Success! You are now authenticated. The token information displayed below is
    already stored in the token helper. You do NOT need to run "bao login" again.
    Future OpenBao requests will automatically use this token.
    
    Key                    Value
    ---                    -----
    token                  <your_token>
    token_accessor         o5mN3ud1fz1Zmb4EIamcVhve
    token_duration         1h
    token_renewable        true
    token_policies         ["default"]
    identity_policies      []
    policies               ["default"]
    token_meta_username    test_user
  3. Выполните команду. Например, для записи секрета в движок cubbyhole можно использовать следующую команду:

    $ bao write cubbyhole/git-credentials username="student01" password="password"

    В случае успеха будет выведено следующее сообщение:

    Success! Data written to: cubbyhole/git-credentials

Примеры использования

Запись и чтение секретов

  1. Активация движка kv:

    $ bao secrets enable kv
  2. Запись секрета в движок kv с помощью команды kv put:

    $ bao kv put kv/ssh-creds username="student02" password="password"
  3. Вывод всех ключей в движке kv:

    $ bao list kv

    Команда выводит следующий результат:

    Keys
    ----
    ssh-creds
  4. Чтение секрета ssh-creds в движке kv:

    $ bao read kv/ssh-creds

    Команда выводит следующий результат:

    Key         Value
    ---         -----
    password    password
    username    student02

Создание пользователя

  1. Создайте ACL-политику, определяющую права пользователя:

    $ sudo vi admin.hcl

    Вы можете скопировать представленную ниже политику, дающую пользователю все права, или придумать свою:

    path "*" {
      capabilities = ["create", "read", "update", "delete", "list", "sudo"]
    }
  2. Примените политику:

    $ bao policy write admin admin.hcl
  3. Создайте пользователя:

    $ bao write auth/userpass/users/<username> password=<password> policies=admin

    Успешное выполнение команды приведет к следующему выводу:

    Success! Data written to: auth/userpass/users/<username>
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней