Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Predavani Secrets do bezicich kontejneru bez parsovani v Terraformu #102

Open
martinwenisch opened this issue Aug 16, 2020 · 3 comments
Open

Comments

@martinwenisch
Copy link
Collaborator

Problem:
V soucasne dobe se vsechny Secrets predavaji do bezicich aplikaci pres environmental variables (token k emailu, Hlidaci statu...). Na AWS jsou ulozene v Secrets Manager a Terraform tento Secrets Manager parsuje. Toto parsovani v Terraformu by bylo potreba odstranit a predat je do env variables kontejneru metodou valueFrom.

To v soucasne dobe neni mozne, protoze valueFrom nedokaze predat hodnotu secret, ale predava secrets jako JSON, coz backend aplikace nedokaze parsovat.

Priklad:
key:value
password:politik123

backend ocekava v env variable hodnotu politik123, ale valueFrom preda JSON:

{
  "password": "politik123"
}

Zadani:
Je potreba vyzkoumat moznosti predavani Secrets ze Secrets Manager AWS bez jejich parsovani v Terraformu (samotne secrets stringy nebudou zapsane ve state Terraformu).

Pripadne, pokud by se to ukazalo jako jednodussi, upravit backend (C# a Python aplikaci), aby parsovala secrets z formatu, ktery ji preda valueFrom.

V kazdem pripade je cil odstranit parsovani Secrets primo v ramci Terraformu.

Odkazy:

Soucasny kod parsujici Secrets v Terraformu:

Dokumentace predavani secrets do ECS:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-secrets.html

@ghost
Copy link

ghost commented Aug 31, 2020

ahoj,
zahlid jsem zminku na Cesko Digital slacku a zadny PR ani comment nevidim tak snad nedelam neco duplicitne. Nejste prvni kdo tenhle problem resi a vypada to, ze s pouzitim Secret Manageru to nejde jinak nez s tim naucit pracovat tu aplikaci

https://stackoverflow.com/questions/57191835/aws-ecs-how-to-retrieve-specific-key-from-secret-manager
aws/containers-roadmap#385

ty moznosti teda vidim tri:

  1. prestat pouzivat Secrets Manager a prehazet secrety do Systems Manager Parameter Store, ktery dle vseho predava jenom value daneho parametru (vyzkousene to nemam), je to jenom par secretu tak to neni moc manualni prace, akorat se musi zmenit IAM role pro ECS task a ten template
  2. prepise se backend kod at pracuje s jsonem
  3. trik co popisuje typek v github commentu [ECS] [secrets]: support parameter name from AWS Secrets Manager aws/containers-roadmap#385 (comment) - ten json parsuje v nejakem entrypoint.sh skriptu za pomoci jq.. tim padem by se musel prepsat Dockerfile, nainstalovat tam jq a vytvorit shell skript ve kterem se vyparsuji a vyexportuji env variables a na konci pusti ten dotnet a ten script zkopirovat do image a nakonci ho pouzit v entrypointu misto toho dotnetu..

nejcistejsi mi prijde to prvni reseni

@martinwenisch
Copy link
Collaborator Author

Ahoj,
diky Ondreji, variantu (1) bych osobne preferoval. At uz migraci do Parameter Store, nebo rozsekanim v samotnem Secrets Manageru (kolega me na Slacku upozornil, ze i kdyz se tak AWS v UI Consoli tvari, tak Secrets nemusi byt validni JSON, ale jakykoli String).

Ale rozsekani Secrets Manager by vyslo relativne draho oproti Parameter Store.

Zkusim se poptat na stav, jestli se na to nekdo vrhnul, ale zda se, ze je to porad volne a ceka na implementaci.

@ghost
Copy link

ghost commented Aug 31, 2020

mas pravdu ted se na to divam, ze do toho plaintext fieldu muzes dat hodnotu a nemit to jako k/v par - tim padem pak ten valueFrom vrati jenom obsah.. pokud vam neva dva/tri dolary mesicne navic tak je to asi nejjednodussi varianta

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant