Агент и прокси
Все запросы к StarVault должны сопровождаться действительным клиентским токеном. Это относится ко всем запросам API, а также к запросам через StarVault CLI и другие библиотеки. Поэтому клиенты StarVault должны сначала пройти аутентификацию в StarVault, чтобы получить токен. StarVault предоставляет несколько методов аутентификации, чтобы помочь в получении этого начального маркера.
Если клиент может безопасно получить токен, все последующие запросы (например, запрос учетных данных базы данных, чтение секретов ключей/значений) обрабатываются на основе доверия, установленного в результате успешной аутентификации.
Это означает, что клиентское приложение должно вызывать 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 Agent или StarVault Proxy.