🔒 Учебник по Vault. Часть 4 — Information Security Squad
🔒 Учебник по Vault. Часть 4

Аутентификация и политики

По умолчанию Vault использует аутентификацию по токену.

Можно использовать : vault token create

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

Токен может быть отозван администратором.

Оператор, пытающийся отозвать его, получит ошибку.

$ vault token create
Key                  Value
---                  -----
token                3WZeul5S8KgctuWgSsgB8mHQ
token_accessor       6Up6TqBg5g2oyVvZAoC9GN8j

# попытка ототзвать от другого пользователя
$ vault token revoke 3WZeul5S8KgctuWgSsgB8mHQ
Error revoking token: Error making API request.

URL: PUT http://vault.local:8200/v1/auth/token/revoke
Code: 403. Errors:

* 1 error occurred:

* permission denied

# от администратора, который его создал
$ vault token revoke 3WZeul5S8KgctuWgSsgB8mHQ
Success! Revoked token (if it existed)

UserPass аутентификация

Vault поддерживает множество разных механизмов аутентификации.

Методы аутентификации — это механизм, используемый Vault для аутентификации; присвоение идентификатора и применение набора политик доступа для пользователя или процесса.

Простым в реализации является метод userpass.

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

$ vault auth enable userpass
Success! Enabled userpass auth method at: userpass/

$ vault write auth/userpass/users/lord.nikon \
> password=R4zor-n-Bl4d3 \
> policies=admins
Success! Data written to: auth/userpass/users/lord.nikon

$ vault login -method=userpass \
> username=lord.nikon \
> password=R4zor-n-Bl4d3
Success! You are now authenticated. The token information displayed below
is already stored in the token helper. You do NOT need to run "vault login"
again. Future Vault requests will automatically use this token.

Key                    Value
---                    -----
token                  3vk72Ueofq9f6FBJMJtgliXH
token_accessor         2WAPnzZFl1MXWDwz97lwBtTE
token_duration         768h
token_renewable        true
token_policies         ["admins" "default"]
identity_policies      []
policies               ["admins" "default"]
token_meta_username    lord.nikon

Авторизация: Политики

Vault использует HCL для определения политик, которые можно прикрепить к ролям.

Можно создать политику, которая разрешает читать всем, но разрешает создавать только в пространстве имен foo

$ vault policy write my-readonly-policy -<<EOF
> path "secret/*" {
> 
>   capabilities = ["read"]
> 
> }
> 
> 
> 
> path "secret/data/*" {
> 
>   capabilities = ["read"]
> 
> }
> 
> 
> 
> path "secret/data/foo" {
> 
>   capabilities = ["read","create"]
> 
> }
> EOF
Success! Uploaded policy: my-readonly-policy
Теперь мы можем прикрепить политику только для чтения к токену.
Этот токен может быть использован, например, в процессе сборки для чтения (но не обновления) секретов, необходимых в пайплане сборки / развертывания.
$ vault token create -policy=my-readonly-policy
Key                  Value
---                  -----
token                1eluleJQ0qw8HXWpixyNQP8Q
token_accessor       1cCui3p8Z0FIuFglOs8ELoPd
token_duration       768h
token_renewable      true
token_policies       ["default" "my-readonly-policy"]
identity_policies    []
policies             ["default" "my-readonly-policy"]

#create/update a kv first
$ vault kv put secret/build-secret "u=h4ck-the-pl4n3t"
Key              Value
---              -----
created_time     2019-01-01T18:32:11.0358738Z
deletion_time    n/a
destroyed        false
version          2

$ vault login 1eluleJQ0qw8HXWpixyNQP8Q
Success! You are now authenticated. The token information displayed below …snip… 

$ vault kv put secret/build-secret "u=tr4shing-our-r1ght5\!"
Error writing data to secret/data/build-secret: Error making API request.

URL: PUT http://vault.local:8200/v1/secret/data/build-secret
Code: 403. Errors:

* 1 error occurred:

* permission denied
Мы также можем прикрепить политику к методу авторизации.
Например, если мы включили логины на github.com, мы могли бы установить для них те же разрешения только для чтения.
$ vault write auth/github/map/teams/default value=my-readonly-policy

 

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40