Open thbar opened 3 years ago
J'ai fait un backup dans mon gestionnaire de mots de passe pour les applications suivantes:
Ping @fchabouis pour info
Prochaine étape choix d'un gestionnaire de mot de passe d'équipe, je garde ouvert.
Il faudrait une tâche récurrente là dessus (trimestrielle par exemple).
On a maintenant un compte Dashlord.
Je vais essayer de rajouter @ChristinaLaumond et @cyrilmorin dessus.
@thbar est-ce que la config de prod avait été sauvegardée dessus ?
Tu veux dire Dashlane?
Non, j’avais fait une copie dans mon 1password, car actuellement le souci avec Dashlane c’est que les super admins ont à ma connaissance accès à tout, et ça fait donc une cible de choix.
Le lun. 12 déc. 2022 à 14:21, Francis Chabouis @.***> a écrit :
On a maintenant un compte Dashlord.
Je vais essayer de rajouter @ChristinaLaumond https://github.com/ChristinaLaumond et @cyrilmorin https://github.com/cyrilmorin dessus.
@thbar https://github.com/thbar est-ce que la config de prod avait été sauvegardée dessus ?
— Reply to this email directly, view it on GitHub https://github.com/etalab/transport-site/issues/1549#issuecomment-1346489769, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAACPHOMC64R5YMAFVH2DDTWM4RG7ANCNFSM4ZIETITA . You are receiving this because you were mentioned.Message ID: @.***>
-- Thibaut
https://www.logeek.fr http://www.logeek.fr https://thibautbarrere.com
Je sonde Clever Cloud, ticket #ZO827H
Nous souhaiterions en savoir plus sur la gestion des variables d'environnement. Ces données sont sensibles et sont critiques si nous devons redéployer une infrastructure ailleurs.
Pourriez-vous nous indiquer si des procédures particulières sont mises en place côté Clever pour protéger ces données / réaliser des sauvegardes ?
Nous souhaiterions potentiellement dumper et sauvegarder ces variables d'environnement en dehors de Clever Cloud. Avez-vous des recommendations pour procéder à ceci ? Je sais qu'il est possible d'utiliser l'API potentiellement pour réaliser ceci.
Leur réponse
Les variables sont stockées chiffrées dans notre backend, l'intégralité des variables sont backupés mais il n'y a pas d'outil automatique aujourd'hui pour restaurer une précedente version des variables pour une app donnée.
Il n'y a pas de procédure particulière pour les dumper ou les restaurer : vous pouvez le faire directement depuis la cli clever env, il y doit également y avoir des endpoints d'api je peux vous les retrouver.
Nous avons dans notre roadmap d'améliorer le versionnement et la gestion des secrets dans les var d'env mais cela est chantier qui n'est pas encore lancé
J'ai fait un petit script en utilisant leur API pour récupérer les variables d'env sur notre org et les mettre dans un fichier.
On pourrait à terme en faire un job et stocker ça de manière chiffrée sur un autre hébergeur. @thbar et moi on était plus partis sur une sauvegarde régulière de notre côté (LastPass / 1Password) ~tous les trimestres.
Mix.install([{:oauther, "~> 1.1"}, {:httpoison, "~> 2.0"}, {:jason, "~> 1.3"}])
defmodule CleverCloudClient do
# See https://www.clever-cloud.com/doc/extend/cc-api/
@base_url URI.new!("https://api.clever-cloud.com")
@org_id "REDACTED"
# Create an OAuth consumer: https://console.clever-cloud.com/organisations/REDACTED/oauth-consumers/new
@consumer_key "REDACTED"
@consumer_secret "REDACTED"
# Generate those using the Clever Cloud CLI `clever login`
@token "REDACTED"
@token_secret "REDACTED"
def get_applications do
"/v2/organisations/#{@org_id}/applications" |> get_request()
end
def get_env_variables(app_id) do
"/v2/organisations/#{@org_id}/applications/#{app_id}/env" |> get_request()
end
defp get_request(url) do
get_url = @base_url |> URI.merge(url) |> URI.to_string()
params = OAuther.sign("GET", get_url, [], oauth_credentials())
{auth_header, _req_params} = OAuther.header(params)
HTTPoison.get!(get_url, [auth_header])
end
defp oauth_credentials do
OAuther.credentials(
consumer_key: @consumer_key,
consumer_secret: @consumer_secret,
token: @token,
token_secret: @token_secret
)
end
end
CleverCloudClient.get_applications()
|> Map.fetch!(:body)
|> Jason.decode!()
|> Enum.map(&Map.take(&1, ["id", "name"]))
|> Enum.each(fn %{"id" => app_id, "name" => app_name} ->
env =
app_id
|> CleverCloudClient.get_env_variables()
|> Map.fetch!(:body)
IO.inspect({app_name, env})
File.write("/tmp/#{app_name}", env)
end)
@AntoineAugusti merci d'avoir conservé le code et d'avoir fouillé, ça servira sûrement à un moment !
Backup fait aujourd'hui sur les 4 configurations suivantes:
Format "expert" dans CleverCloud.
Il faut sauvegarder quelque part les configurations de production, car reconstruire certains credentials pourrait être non trivial.
Je vais faire une copie rapide dans un gestionnaire de mot de passe déjà en place de mon côté, et on a commencé à discuter avec @fchabouis pour en prendre un au niveau de l'équipe et ainsi pouvoir partager ce qui est pertinent.