токен хранилища создать после входа в хранилище -метод ldap

Vault версии 1.5.2

Моя конечная цель - использовать Vault в некотором коде Terraform для получения временных учетных данных. Проблема в том, что Terraform всегда будет генерировать новый дочерний токен, даже если текущий токен является 5-минутным токеном. Это означает, что текущий VAULT_TOKEN должен быть своего рода суперкорневым токеном, потому что я пробовал войти в систему с бэкэндом LDAP, и не имеет значения, какие политики или роли токенов я пытаюсь использовать, похоже, я никогда не смогу сгенерировать новые токены.

Чтобы повторить то, что делает Terraform:

vault login -address vault.example -ca-cert ca.pem -method ldap -path ldap_users user=botman
Couldn't start vault with IPC_LOCK. Disabling IPC_LOCK, please use --privileged or --cap-add IPC_LOCK
Password (will be hidden):
s.<token>

У меня есть все разрешения, определенные политиками, и все в порядке.

Теперь попробуйте создать дочерний токен:

vault token create -address vault.example -ca-cert ca.pem -role superrole
Error creating token: Error making API request.

URL: POST https://vault.example/v1/auth/token/create/superrole
Code: 400. Errors:

* restricted use token cannot generate child tokens

Убираем параметр -role и получаем ту же ошибку.

Я пробовал искать повсюду, чтобы увидеть, что мне не хватает, но единственный токен, который может создавать дочерние токены, похоже, является корневым токеном.

Прошу прощения, если я упустил что-то очень простое.

Пример политики, которую я приложил (я пробовал много политик, но эта кажется самой экстремальной)

path "auth/*" {
  capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ:

Я нашел время, чтобы настроить несколько разрешений, чтобы проверить это. Я добавил те же политики, что и серверная часть LDAP. С одобрением я могу получить токен, а затем создать новые токены из исходного токена. Я просмотрел документацию LDAP, чтобы узнать, не пропустил ли я где-то, где говорится, что вы не можете создавать дочерние токены из токенов, происходящих из LDAP, и я ничего не нашел: https://www.vaultproject.io/docs/auth/ldap.html

РЕДАКТИРОВАТЬ2:

Конфигурация Pulumi для бэкэнда аутентификации LDAP

    return vault.ldap.AuthBackend(
        resource_name="vault-ldap-{}".format(ldap.name),
        binddn=bind_dn,
        bindpass=bind_pass,
        certificate=cert,
        description=ldap.desc,
        discoverdn=False,
        groupattr="cn",
        groupdn=ldap.groupdn,
        groupfilter="(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}}))",
        insecure_tls=False,
        path="ldap_{}".format(ldap.name),
        starttls=False,
        tls_max_version="tls12",
        tls_min_version="tls10",
        token_explicit_max_ttl=14 * 60 * 60 * 24,
        token_max_ttl=7 * 60 * 60 * 24,
        token_num_uses=56,
        url=url,
        userattr="samaccountname",
        userdn=ldap.userdn,
        opts=opts,
    )

person iridian    schedule 26.08.2020    source источник
comment
Можете показать детали токена из LDAP? Есть ли у вас какие-то ограничения вроде token_num_uses? И какова конфигурация вашего движка LDAP?   -  person lxop    schedule 28.08.2020
comment
token_num выглядит как 56. Я вставил блок Pulumi, который использовал для создания бэкэндов LDAP. Я думаю, что большинство переменных не актуальны, но при необходимости могу дать пример расширенного использования.   -  person iridian    schedule 28.08.2020
comment
Из этого обсуждения, похоже, что установка token_num_uses на что-то отличное от нуля не позволит токену создавать дочерние токены   -  person lxop    schedule 28.08.2020
comment
Причина, по которой он не работает для LDAP и работает для AppRole, заключается в том, что бэкэнд LDAP применяет свойство token_num_uses, тогда как я предполагаю, что бэкэнд AppRole не   -  person lxop    schedule 28.08.2020
comment
@lxop это было исправление. Не могли бы вы добавить ответ, чтобы я мог отдать вам должное?   -  person iridian    schedule 28.08.2020


Ответы (1)


Я вижу, что ваша серверная часть LDAP устанавливает token_num_uses. Из этой документации и это обсуждение, установка token_num_uses в значение, отличное от нуля, не позволит токену создание дочерних токенов.

Причина, по которой он не работает для LDAP и работает для AppRole, заключается в том, что бэкэнд LDAP применяет свойство token_num_uses, тогда как я предполагаю, что бэкэнд AppRole - нет.

person lxop    schedule 30.08.2020