Skip to content

v0.32.0 — Динамические секреты AWS, GCP, Azure

Choose a tag to compare

@NAGenaev NAGenaev released this 12 Jun 19:34
· 78 commits to main since this release

Динамические секреты AWS, GCP, Azure

Автоматически генерируемые учётные данные облачных провайдеров с ограниченным временем жизни — без хранения долгосрочных ключей в секретах.

AWS IAM

Tuck создаёт IAM-пользователя или временные ключи STS при каждом запросе:

tuckcli dynamic aws configure \
  --access-key-id=$AWS_ACCESS_KEY_ID \
  --secret-access-key=$AWS_SECRET_ACCESS_KEY

tuckcli dynamic aws create-role deploy \
  --policy-arn=arn:aws:iam::aws:policy/PowerUserAccess \
  --ttl=1h

tuckcli dynamic aws creds deploy
# → {"access_key_id": "ASIA...", "secret_access_key": "...", "session_token": "..."}

GCP Service Accounts

Tuck генерирует OAuth 2.0-токены или ключи сервисных аккаунтов с ограниченным сроком действия:

tuckcli dynamic gcp configure --sa-email=tuck@project.iam.gserviceaccount.com --credentials=@key.json
tuckcli dynamic gcp create-role data-reader --bindings='{"roles/bigquery.dataViewer": ["project/my-project"]}'
tuckcli dynamic gcp token data-reader  # → временный OAuth2-токен

Azure Active Directory

Создаёт сервисных участников (service principals) с назначением ролей RBAC:

tuckcli dynamic azure configure --subscription-id=... --tenant-id=... --client-id=... --client-secret=...
tuckcli dynamic azure create-role vm-ops --azure-roles='[{"role_name":"Contributor","scope":"/subscriptions/..."}]'
tuckcli dynamic azure creds vm-ops
# → {"client_id": "...", "client_secret": "...", "tenant_id": "..."}

SDK

// AWS
awsCreds, _ := c.AWS().GenerateCreds("deploy")

// GCP
token, _ := c.GCP().GenerateToken("data-reader")

// Azure
azCreds, _ := c.Azure().GenerateCreds("vm-ops")

Состав изменений

  • internal/dynamic/aws.go: AWSEngineConfigure, CreateRole, GenerateCreds, RevokeCreds
  • internal/dynamic/gcp.go: GCPEngineConfigure, CreateRole, GenerateToken, GenerateKey
  • internal/dynamic/azure.go: AzureEngineConfigure, CreateRole, GenerateCreds, RevokeCreds
  • pkg/client/dynamic_aws.go, dynamic_gcp.go, dynamic_azure.go: клиентские обёртки SDK
  • HTTP-маршруты: /v1/dynamic/aws/..., /v1/dynamic/gcp/..., /v1/dynamic/azure/...