Pull to refresh
97.09
Nixys
DevOps, DevSecOps, MLOps — IT Solutions Integrator

Интеграция групп HashiCorp Vault с Google G Suite

Reading time 3 min
Views 3.2K
Original author: Vipul Agarwal

image


UPDATE (8 июля, 2021): я обновил фрагмент кода default_role для работы с Vault 1.7.1.


Vault — это отличный инструмент, обеспечивающий безопасный и надежный способ хранения и распространения секретов, таких как ключи API, токены доступа и пароли. В данной статье главным образом сфокусируемся на процессах аутентификации и авторизации в Vault с помощью Google G-Suite OIDC и добавления групповых claim (заявлений о группах) в среде платформы Google Cloud.


В чем преимущество групповых claim?


Google G-Suite упрощает процессы управления для пользователя и отлично ладит с платформой Google Cloud. Групповой claim может использоваться для авторизации пользователя в Vault посредством маппинга связанной группы Google G-Suite c группой Vault. Таким образом к пользователю будет применена соответствующая политика Vault.


Предварительные настройки


Следуйте шагам из инструкции по конфигурации Vault OIDC. Ее можно свести к следующим пунктам:



Создание политик


Создайте политику чтения и управления


vault policy write reader - <<EOF
path "/secret/*" {
    capabilities = ["read", "list"]
}
EOF

vault policy write manager - <<EOF
path "/secret/*" {
    capabilities = ["create", "read", "update", "delete", "list"]
}
EOF

Настройка аутентификации OIDC


Вам понадобится client_id, client_secret, а также адрес электронной почты суперадминистратора, полученный в предыдущих шагах.


vault write auth/oidc/config -<<EOF
{
    "oidc_discovery_url": "https://accounts.google.com",
    "oidc_client_id": "<YOUR_CLIENT_ID>",
    "oidc_client_secret": "<YOUR_CLIENT_SECRET>",
    "default_role": "default_role",
    "provider_config": {
        "provider": "gsuite",
        "gsuite_service_account": "/path/to/serviceaccount.json",
        "gsuite_admin_impersonate": "<YOUR_SUPER_ADMIN_EMAIL>",
        "fetch_groups": true,
        "groups_recurse_max_depth": 5
    }
}
EOF

Создание default_role


Требует внешний адрес хранилища Vault. Этот шаг можно пропустить если вы тестируете локально/производите локальное тестирование.


vault write auth/oidc/role/default_role \
        allowed_redirect_uris="https://VAULT_EXTERNAL_ADDR/ui/vault/auth/oidc/oidc/callback" \
        allowed_redirect_uris="http://localhost:8250/oidc/callback" \
        user_claim="sub" \
        policies="reader" \
        groups_claim="groups"

Cоздайте группу Vault и псевдоним группы


vault write identity/group name="manager.group@yourdomain.com" type="external" \
        policies="manager" \
        metadata=responsibility="Manager Group"

export GROUP_ID="<from_last_output>"

vault auth list -format=json  \
        | jq -r '."oidc/".accessor' > accessor.txt

vault write identity/group-alias name="manager.group@yourdomain.com" \
        mount_accessor=$(cat accessor.txt) \
        canonical_id="$GROUP_ID"

Проверьте настройки запуска


Давайте представим, что есть пользователь john.doe@yourdomain.com и он является частью/участником группы GSuite manager.group@yourdomain.com. После настройки по вышеуказанным шагам, вход в хранилище через интерфейс командной строки должен выглядеть следующим образом:


$ vault login -method=oidc
...
Key                  Value
---                  -----
token                <TOKEN>
token_accessor       <TOKEN_ACCESSOR>
token_duration       768h
token_renewable      true
token_policies       ["default" "reader"]
identity_policies    ["manager"]
policies             ["default" "manager" "reader"]
token_meta_role      default_role

Логин/вход в систему будет работать как следует, т.к политика управления будет отображаться в identity_policies, которая маппируется через группу manager.group@yourdomain.com.


Я решил написать данную статью именно по той причине, что документация Vault не объясняет все процессы полностью.


Данная статья написана с целью упростить восприятие, т.к базовая документация Vault недостаточно подробно посвящает в этот процесс. Мне потребовалось немало времени, чтобы собрать воедино всю информацию из кейсов GitHub и запросов на включение кода. Надеюсь, что эти рекомендации помогут сэкономить время и наладить процесс авторизации пользователей в хранилище с помощью групп G Suite.

Tags:
Hubs:
+3
Comments 0
Comments Leave a comment

Articles

Information

Website
nixys.io
Registered
Founded
Employees
51–100 employees
Location
Россия
Representative
Vlada Grishkina-Makareva