#secret #secrets-manager #aws #editor #edit #remote #storing

app barberousse

一个编辑AWS Secrets Manager中的机密而无需本地存储的实用程序

6个版本

0.1.6 2020年8月1日
0.1.4 2020年7月8日
0.1.3 2020年6月25日

#23 in #secrets-manager

24 每月下载次数

MITLGPL-3.0-or-later

25KB
332

Barberousse - 远程机密编辑器

:toc: :toc-title

width=120,align=center

关于

一个旨在避免从远程提供者下载机密的项目(目前仅支持AWS Secret Manager)。打开一个编辑器,其中包含可轻松编辑的机密内容,在保存并退出后,机密将自动上传并创建一个远程新版本。这样,就无需使用常见的坏习惯,如将机密版本控制到VCS,或者更糟糕的是,将它们存储在您的机器上并通过Slack发送:

注意:此项目可能只是一个概念验证,可能不会发展成为完整的项目。

用法

选项

就像awscli一样,您可以自定义要使用的配置文件和区域:.... 选项:-P, --profile 使用特定的aws配置文件,覆盖配置和环境设置

-R, --region 机密所在的区域,覆盖配置和环境设置 ....

这些是全局选项,可以在命令中的任何位置设置。

打印

将您的机密以美观的格式打印到stdout

默认情况下,远程机密以json格式读取并打印为yaml,以便于阅读。但是,您可以通过传递打印格式来自定义此行为,该格式定义了您希望机密如何格式化,以及机密格式定义远程机密的格式。 .... 参数:要打印的机密id

标志:-n, --no-color 不要着色输出,此行为与通过管道传输到另一个程序时的行为相同

选项:-p, --print-format 打印机密的格式,如果机密的格式为text,则此选项将被忽略并默认为text [默认:yaml] [可能值:json,yaml,text]

-s, --secret-format 机密远程存储的格式 [默认:json] [可能值:json,yaml,text] ....

默认情况下,输出是格式化并着色的。要禁用此功能,请使用--print-format=text

  • YAML输出(默认)

❯❯❯ barberousse cat /test/file --print-format yaml 1 │ --- 2 │ a: secret 3 │ another: secret value

  • JSON 输出

❯❯❯ barberousse cat /test/file --print-format json 1 │ { 2 │ "a": "secret", 3 │ "another": "secret value" 4 │ }

  • 将 JSON 输出通过管道传递给 jq

❯❯❯ barberousse cat /test/file --print-format json | jq -r '.a' secret

在您的终端上可能看起来像这样:

编辑

允许您在不将密钥保存到磁盘的情况下编辑远程密钥(尽管会创建一个临时文件...未来将提供更安全处理临时文件的方法,见 #3)。您可以使用不同的格式来编辑您的密钥(json, yaml, 纯文本)。

.... 参数:要编辑的密钥的 ID

选项:-e, --edit-format 用于编辑密钥的格式,如果密钥的格式是 text,则此选项将被忽略,并默认为 text [默认: yaml] [可能值:json, yaml, text]

-s, --secret-format 密钥远程存储的格式 [默认: json] [可能值:json, yaml, text]

--editor 覆盖用于编辑密钥的默认编辑器 $EDITOR ....

  • 以 YAML 格式编辑 JSON 密钥(默认)

    ❯❯❯ barberousse edit /test/file --edit-format yaml --secret-format json

  • 以 JSON 格式编辑 JSON 密钥

    ❯❯❯ barberousse edit /test/file --edit-format json --secret-format json

在您的终端上可能看起来像这样:

复制

通过复制密钥,您可以针对不同的用途进行定制。请谨慎使用此功能,因为它可能导致重复使用密钥,这不是一个好的做法。

.... 参数:要复制的密钥的 ID 要创建的密钥的 ID

选项:-e, --edit-format 用于编辑密钥的格式,如果密钥的格式是 text,则此选项将被忽略,并默认为 text [默认: yaml] [可能值:json, yaml, text]

-s, --secret-format 密钥远程存储的格式 [默认: json] [可能值:json, yaml, text]

--editor 覆盖用于编辑密钥的默认编辑器,$EDITOR

--target-region 为目标密钥使用不同的区域

....

  • 复制 JSON 密钥并使用 YAML 编辑它(默认)

    ❯❯❯ barberousse copy /test/file /test/file2

  • 将密钥从一个区域复制到另一个区域

    ❯❯❯ barberousse copy /test/file /test/file2 --region eu-west-1 --target-region eu-west-3

路线图

1.0

我们几乎完成了!

  • 通用
  • 支持选择配置文件和区域(支持环境变量)
  • 编辑
  • 编辑 JSON、YAML、文本
  • 使用 YAML 编辑 JSON(默认行为)
  • 使用
  • 如果不存在,则创建密钥
  • 自定义编辑器选择,传递 --editor
  • 打印
  • 以一个或多个其他格式查看密钥内容
  • 复制
  • 复制密钥(并在保存复制之前打开编辑器)
  • 支持跨区域

1.1

一些额外的编辑非内容信息的功能。整体上,这应该是一个交互式过程,否则就没有意义,因为 aws cli 已经提供了一个很好的 api 来执行此操作。

  • 编辑密钥的元数据(描述和 KMS 密钥):替换 update-secret --description "" --kms-key-id ""
  • 打印密钥的元数据

未来

欢迎提出建议!

依赖关系

~30–43MB
~607K SLoC