v0.32.0 — Динамические секреты AWS, GCP, Azure
Динамические секреты 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:AWSEngine—Configure,CreateRole,GenerateCreds,RevokeCredsinternal/dynamic/gcp.go:GCPEngine—Configure,CreateRole,GenerateToken,GenerateKeyinternal/dynamic/azure.go:AzureEngine—Configure,CreateRole,GenerateCreds,RevokeCredspkg/client/dynamic_aws.go,dynamic_gcp.go,dynamic_azure.go: клиентские обёртки SDK- HTTP-маршруты:
/v1/dynamic/aws/...,/v1/dynamic/gcp/...,/v1/dynamic/azure/...