12 个版本 (破坏性更新)
0.9.2 | 2023年6月15日 |
---|---|
0.9.0 | 2022年1月15日 |
0.8.0 | 2020年11月7日 |
0.6.0 | 2020年4月4日 |
0.3.0 | 2019年12月29日 |
#189 in 身份验证
每月49次下载
99KB
2K SLoC
Rucredstash
目录
介绍
Rucredstash 是 CredStash 的 Rust 版本
它结合使用 AWS 密钥管理服务 (KMS) 和 DynamoDB 来存储秘密。当您需要安全地存储和检索凭证(如数据库密码、API 密钥等)时,这是必需的。更详细的教程在这里。
此包通过 CLI 和库方式提供接口。CLI 被设计为原始 credstash 程序的替代品,因此它尝试具有与原始程序完全相同的接口。
使用方法
rucredstash 0.8.0
Sibi Prabakaran
A credential/secret storage system
USAGE:
rucredstash [OPTIONS] [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-a, --arn <ARN> AWS IAM ARN for AssumeRole
-m, --mfa_serial <MFA_SERIAL> Optional MFA hardware device serial number or virtual device ARN
-p, --profile <PROFILE> Boto config profile to use when connecting to AWS
-r, --region <REGION> the AWS region in which to operate. If a region is not specified, credstash will
use the value of the AWS_DEFAULT_REGION env variable, or if that is not set, the
value in `~/.aws/config`. As a last resort, it will use us-east-1
-t, --table <TABLE> DynamoDB table to use for credential storage. If not specified, credstash will use
the value of the CREDSTASH_DEFAULT_TABLE env variable, or if that is not set, the
value `credential-store` will be used
SUBCOMMANDS:
delete Delete a credential from the store
get Get a credential from the store
getall Get all credentials from the store
help Prints this message or the help of the given subcommand(s)
keys List all keys in the store
list List credentials and their versions
put Put a credential into the store
putall Put credentials from json or file into the store
setup setup the credential store
安装
请参阅 Github 发布: https://github.com/psibi/rucredstash/releases
提供适用于三个主要平台的可执行文件:Linux、Windows 和 MacOS。
基础设施设置
要使 rucredstash
运作,您需要设置以下 AWS 基础设施
- 创建客户管理的密钥 (CMK) 密钥
- 服务 => KMS => 创建密钥 => 输入 "credstash" 作为密钥别名
- 创建 DynamoDB 表
- rucredstash 设置
使用示例
传递 AWS 凭据的不同方式
最简单的情况是导出适当的环境变量并使用它
$ export AWS_ACCESS_KEY_ID=xxxx
$ export AWS_SECRET_ACCESS_KEY=xxxx
$ rucredstash list
hello -- version 0000000000000000001 --comment
hellehllobyegood -- version 0000000000000000001 --comment
hello1 -- version 0000000000000000001 --comment
请注意,默认情况下,rucredstash
使用 DefaultCredentialsProvider,因此您的凭据将基于此。但它甚至允许其他复杂的用例
$ export AWS_ACCESS_KEY_ID=xxxx
$ export AWS_SECRET_ACCESS_KEY=xxxx
$ rucredstash --arn arn:aws:iam::786946123934:role/admin --mfa_serial arn:aws:iam::786946123934:mfa/sibi --region us-west-2 list
Enter MFA Code: xxxxx
hello -- version 0000000000000000001 --comment
hellehllobyegood -- version 0000000000000000001 --comment
hello1 -- version 0000000000000000001 --comment
请注意,MFA功能在原始credstash程序(Python程序)中不存在。您还可以使用aws-env等程序,并使用此工具。示例
$ aws-env rucredstash list
hello -- version 0000000000000000001 --comment
hellehllobyegood -- version 0000000000000000001 --comment
hello1 -- version 0000000000000000001 --comment
其他使用示例
放置秘密值
$ rucredstash put hello world
hello has been stored
您还可以使用与凭证关联的加密上下文
$ rucredstash put nasdaq nifty500 market=world
nasdaq has been stored
甚至多个加密上下文
$ rucredstash put vanguard vanguardsecret market=world indexfunds=us
vanguard has been stored
获取秘密值
$ rucredstash get hello1
world1
现在让我们也尝试使用加密上下文进行检索
$ rucredstash get nasdaq market=world
nifty500
以及使用多个加密上下文
$ rucredstash get vanguard market=world indexfunds=us
vanguardsecret
获取所有秘密值
$ rucredstash getall
{
"hellehllobyegood": "dam",
"hello": "world",
"hello1": "world1"
}
您也可以以其他格式获取它
$ rucredstash getall --format yaml
hello: world
hellehllobyegood: dam
hello1: world1
列出带有其他元数据的凭证
$ rucredstash list
hello -- version 0000000000000000001 --comment
hellehllobyegood -- version 0000000000000000001 --comment
hello1 -- version 0000000000000000001 --comment
获取所有密钥
$ rucredstash keys
hello
hellehllobyegood
hello1
删除特定密钥
$ rucredstash delete hello
Deleting hello --version 0000000000000000001
放置多个秘密(putall 子命令)
您可以使用特殊符号@
从文件传递输入,以表示数据是从文件中提供的
$ bat secrets.json
───────┬────────────────────────────────────────
│ File: secrets.json
───────┼────────────────────────────────────────
1 │ {
2 │ "hello": "world",
3 │ "hi": "bye"
4 │ }
───────┴────────────────────────────────────────
$ rucredstash putall @secrets.json
hello has been stored
hi has been stored
您还可以使用特殊运算符-
通过stdin传递数据
$ rucredstash putall -
{ "hello": "world" }
hello has been stored
请注意,传递的数据应为json格式。您按下Enter键以表示您已完成数据传递。
此外,您还可以直接传递数据给它
$ rucredstash putall '{"hello":"world","hi":"bye"}'
hello has been stored
hi has been stored
依赖项
~27–41MB
~722K SLoC