Uwierzytelnianie (Auth)
2 minute read
Uwierzytelnianie (Auth)
Moduł Auth odpowiada za konfigurację metod uwierzytelniania w HashiCorp Vault oraz przypisywanie użytkownikom i procesom automatycznym odpowiednich polityk dostępu (policies). W projekcie wykorzystywane są dwie główne metody:
- Userpass – dla użytkowników technicznych i administratorów,
- AppRole – dla automatyzacji (CI/CD, GitLab Runner, systemy integracyjne).
1. Polityki (Policies)
Polityki definiują zakres dostępu do ścieżek w Vault. Każda polityka opisuje:
- na jakich ścieżkach (
path) - jakie operacje (
capabilities) są dozwolone.
1.1. Minimalny przykład polityki
Plik polityki w formacie HCL:
# policies/app-read.hcl
path "kv-apps/data/apps/example-service" {
capabilities = ["read"]
}
Rejestracja polityki w Vault:
resource "vault_policy" "app_read" {
name = "app-read"
policy = file("${path.module}/policies/app-read.hcl")
}
1.2. Zasady organizacyjne dla polityk
W projekcie polityki są utrzymywane w sposób modułowy w katalogu:
iac-vault/policies/
Struktura:
pki-*– polityki dla PKI,kv-*– polityki dla KV,.full-admin– pełne uprawnienia administracyjne.
➡ Każda nowa polityka powinna zostać dodana jako osobny moduł, aby zachować:
- spójność zarządzania,
- możliwość kontroli wersji,
- łatwe przypisywanie do metod uwierzytelniania.
2. Userpass – użytkownicy z przypisanymi politykami
Metoda userpass umożliwia logowanie do Vault za pomocą:
- loginu,
- hasła,
- przypisanych polityk.
2.1. Włączenie metody userpass
resource "vault_auth_backend" "userpass" {
type = "userpass"
}
2.2. Tworzenie użytkownika i przypisywanie polityk
resource "vault_generic_endpoint" "user_jan" {
depends_on = [vault_auth_backend.userpass]
path = "auth/userpass/users/jan"
data_json = jsonencode({
password = "silne-haslo"
policies = [
".full-admin",
"kv-apps.policy_admin"
]
})
}
2.3. Znaczenie pól
| Pole | Opis |
|---|---|
path |
Ścieżka użytkownika w metodzie userpass |
password |
Hasło użytkownika |
policies |
Lista polityk przypisanych do użytkownika |
✅ Ten mechanizm stosowany jest głównie dla:
- administratorów,
- operatorów,
- użytkowników technicznych.
3. AppRole – tokeny dla automatyzacji (CI/CD, GitLab)
Metoda AppRole przeznaczona jest dla:
- pipeline’ów GitLab,
- narzędzi automatyzujących,
- systemów backendowych.
Logowanie odbywa się przy użyciu:
role_id,secret_id.
3.1. Włączenie metody AppRole
resource "vault_auth_backend" "approle" {
type = "approle"
}
3.2. Definicja roli AppRole
resource "vault_approle_auth_backend_role" "ci_role" {
backend = vault_auth_backend.approle.path
role_name = "ci-role"
token_policies = [
"kv-apps.policy_write",
"pki-apps.policy_read"
]
token_ttl = "24h"
token_max_ttl = "24h"
}
3.3. Generowanie secret_id
resource "vault_approle_auth_backend_role_secret_id" "ci_role" {
backend = vault_auth_backend.approle.path
role_name = vault_approle_auth_backend_role.ci_role.role_name
}
3.4. Znaczenie parametrów
| Parametr | Opis |
|---|---|
role_name |
Nazwa roli używana w automatyzacji |
token_policies |
Polityki przypisane do tokenu |
token_ttl |
Czas życia tokenu |
token_max_ttl |
Maksymalny czas życia tokenu |
secret_id |
Jednorazowy sekret do logowania |