This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Uwierzytelnianie (Auth)

Uwierzytelnianie (Auth)

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