Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Агент и прокси

Все запросы к StarVault должны сопровождаться действительным клиентским токеном. Это относится ко всем запросам API, а также к запросам через StarVault CLI и другие библиотеки. Поэтому клиенты StarVault должны сначала пройти аутентификацию в StarVault, чтобы получить токен. StarVault предоставляет несколько методов аутентификации, чтобы помочь в получении этого начального маркера.

proxy scheme

Если клиент может безопасно получить токен, все последующие запросы (например, запрос учетных данных базы данных, чтение секретов ключей/значений) обрабатываются на основе доверия, установленного в результате успешной аутентификации.

Это означает, что клиентское приложение должно вызывать StarVault API для аутентификации в StarVault и управления полученным токеном, в дополнение к вызову API для запроса секретов из StarVault. Это предполагает внесение изменений в код клиентских приложений, а также дополнительное тестирование и сопровождение приложения.

Следующий пример кода реализует StarVault API для аутентификации в StarVault с помощью метода AppRole auth, а затем использует полученный клиентский токен для чтения секретов в kv-v2/data/creds:

package main

import (
    ...snip...
    vault "github.com/hashicorp/vault/api"
)

// Получение секретного ключа (kv-v2) после аутентификации через AppRole
func getSecretWithAppRole() (string, error) {
    config := vault.DefaultConfig()

    client := vault.NewClient(config)
    wrappingToken := ioutil.ReadFile("path/to/wrapping-token")
    unwrappedToken := client.Logical().Unwrap(strings.TrimSuffix(string(wrappingToken), "\n"))

    secretID := unwrappedToken.Data["secret_id"]
    roleID := os.Getenv("APPROLE_ROLE_ID")

    params := map[string]interface{}{
        "role_id":   roleID,
        "secret_id": secretID,
    }
    resp := client.Logical().Write("auth/approle/login", params)
    client.SetToken(resp.Auth.ClientToken)

    secret, err := client.Logical().Read("kv-v2/data/creds")
    if err != nil {
        return "", fmt.Errorf("unable to read secret: %w", err)
    }

    data := secret.Data["data"].(map[string]interface{})

    ...snip...
}

1. Включение агента StarVault Agent и прокси StarVault Proxy в рабочий процесс

StarVault Agent и StarVault Proxy призваны устранить это первоначальное препятствие на пути к внедрению StarVault, обеспечив более масштабируемый и простой способ интеграции приложений с StarVault. StarVault Agent может получать ключи и предоставлять их приложениям, а StarVault Proxy может выступать в качестве прокси между StarVault и приложением, по необходимости упрощая процесс аутентификации и кэшируя запросы.

Как и большинство других команд CLI для двоичных файлов StarVault, StarVault Agent и StarVault Proxy доступны во всех двоичных файлах и образах StarVault.

Пример ответа:
Возможности StarVault Agent StarVault Proxy

Автоматическая автоавторизация для аутентификации в StarVault

Запуск в качестве службы Windows

Кэширование недавно созданных токенов и лицензий

Шаблонизация для отображения пользовательских шаблонов

Супервизор процесса для внедрения ключей в качестве переменных окружения в процесс

API-прокси для работы в качестве прокси для API StarVault

Не актуально

Статическое кэширование секретов для секретов KV

Чтобы узнать больше, обратитесь к странице документации StarVault Agent или StarVault Proxy.