Skip to content

Настройка авторизации в vault через Gitlab

На стороне Gitlab

Get the OIDC client ID and secret from gitlab

Переходим в Admin Area - Applications - Create new application:

  • Applications(https://gitlab./admin/applications)
  • New application
    • Name = vault
    • Scopes - openid = check
    • Redirect Url = http://localhost:8250/iodc/callback https://vault./ui/vault/auth/oidc-gitlab/oidc/callback
  • Save application.
  • Копируем значения your_application_id и your_secret

На стороне Vault:

  1. Включим OIDC: vault auth enable oidc

если нужно включить несколько oidc то нужно задавать -path: vault auth enable -path=oidc-gitlab oidc

Вы увидите: Success! Enabled oidc auth method at: oidc/

  1. Создаем админскую политику admin-policy

в веб интерфейсе vault: Policies - ACL policies

admin-policy.json
# Read system health check
path "sys/health"
{
  capabilities = ["read", "sudo"]
}

# Create and manage ACL policies broadly across Vault

# List existing policies
path "sys/policies/acl"
{
  capabilities = ["list"]
}

# Create and manage ACL policies
path "sys/policies/acl/*"
{
  capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}

# Enable and manage authentication methods broadly across Vault

# Manage auth methods broadly across Vault
path "auth/*"
{
  capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}

# Create, update, and delete auth methods
path "sys/auth/*"
{
  capabilities = ["create", "update", "delete", "sudo"]
}

# List auth methods
path "sys/auth"
{
  capabilities = ["read"]
}

# Enable and manage the key/value secrets engine at `secret/` path

# List, create, update, and delete key/value secrets
path "secret/*"
{
  capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}

# Manage secrets engines
path "sys/mounts/*"
{
  capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}

# List existing secrets engines.
path "sys/mounts"
{
  capabilities = ["read"]
}
  1. создаем конфигурацию под подключению к identity provider gitlab

default_role : admin-role

vault write auth/oidc-gitlab/config \
    oidc_discovery_url="https://gitlab.<domain>" \
    oidc_client_id="your_application_id" \
    oidc_client_secret="your_secret" \
    default_role="..." \
    bound_issuer="https://gitlab.<domain>"

для дополнительного oidc: vault write auth/oidc-gitlab/config ... 4. Конфигурируем роль

user_claim : можно задать email, чтобы быстро идентифицировать в интерфейсе vault сессии пользователей, но нужно добавить email, profile в vault Application in gitlab alt text

yourGroup/yourSubgroup : берем из gitlab в нижнем регистре

: admin-role : admin-policy : truedev

vault write auth/oidc-gitlab/role/<user-role> -<<EOF
{
   "user_claim": "sub",
   "allowed_redirect_uris": "https://vault.<domain>/ui/vault/auth/oidc-gitlab/oidc/callback,http://localhost:8250/oidc/callback",
   "bound_audiences": "<your_application_id>",
   "oidc_scopes": "openid",
   "role_type": "oidc",
   "token_policies": "<user-policy>",
   "ttl": "1h",
   "bound_claims": { "groups": ["<yourGroup/yourSubgroup>", ... ] }
}
EOF
можно конечно было бы указать без bound_claims , а только "token_policies": "admin-policy", "groups_claim": "groups". Если нет дополнительных требований по проверке конкретных групп(bound_claims) для предоставления доступа, использование "groups_claim" является простым и эффективным способом интеграции с Identity Provider.

для дополнительного oidc:

vault write auth/oidc-gitlab/role/<user-role> -<<EOF
{
   "user_claim": "sub",
   "allowed_redirect_uris": "https://vault.<domain>/ui/vault/auth/oidc-gitlab/oidc/callback,http://localhost:8250/oidc/callback",

Вход в vault через браузер

Открываем https://vault. , выбираем Method OIDC, указываем роль, если не указать будет назначена роль по умолчанию, которая задавалась в конфиге default_role. alt text

если настроили дополнительный oidc то нужно указать в mount path: oidc-gitlabs alt text

Далее редиректит на gitlab - Нажимаем Authorize:

alt text

Логин через консоль запускается так

vault login -method=oidc role=<user-role>

если подключали доп oidc указать path vault login -path=oidc-gitlab -method=oidc role=admin-role