envchainのバックエンドにAWS Secrets Managerを使ったようなツールを作った。
使い方
Secrets Managerに秘匿値を設定した上で
$ aws secretsmanager get-secret-value --secret-id foo/bar { ... "SecretString": "BAZ", ... $ aws secretsmanager get-secret-value --secret-id foo/zoo # JSON secret { ... "SecretString": "{\"TOKEN\":\"AAA\",\"SECRET\":\"BBB\"}", ...
sevの設定ファル(~/.sev.toml
)を作成し
[hello] BAR = "secretsmanager://foo/bar" ZOO = "secretsmanager://foo/zoo:TOKEN" BAZ = "BAZBAZBAZ" [world] HOGE = "secretsmanager://foo/zoo:SECRET" FOGA = "secretsmanager://foo/bar" PIYO = "PIYOPIYOPIYO"
sevでラップしてプロファイル名を指定してコマンドを実行すると、秘匿値が環境変数経由でコマンドに渡される。
$ sev hello -- env FOO=BAZ ZOO=AAA BAZ=BAZBAZBAZ $ sev world -- env HOGE=BBB FUGA=BAZ PIYO=PIYOPIYOPIYO
設定ファイルにAWS_PROFILEを指定しておくと、デフォルトではそのAWS_PROFILEを使ってSecrets Manager APIを呼び出す。
[hello] AWS_PROFILE = "my-profile" BAR = "secretsmanager://foo/bar" # foo/barの値の取得にmy-profileが使われる