与保管库管理员mesos一起工作以获取和更新保管库凭据的代理。
vaultkeeper的Python项目详细描述
一个安全的引入代理,用于使用hashicorp的保险库中的秘密的应用程序,设计用于vault-gatekeeper-mesos。有关此项目架构的更多背景信息,请参阅jeff mitchell的Secure Introduction at Scale。
vaultkeeper将动态生成的机密的生命周期与用户应用程序的生命周期耦合起来,将机密的暂时攻击面最小化。当与停靠的应用程序一起使用时,vaultkeeper的设计可确保您的消费者应用程序仅在获取并准备好其机密后才启动。
vaultkeeper支持SET_ROLE操作necessary to revoke dynamically-generated PostgreSQL credentials。
先决条件
要成功使用vaultkeeper,您必须具有:
- 已配置并正在运行的保管库实例。
- 配置了一个vault-gatekeeper-mesos实例,并与您的保险库实例和mesos实例一起运行。
- 使用保管库凭据并配置为使用vaultkeeper输出的应用程序,例如使用django-vaultkeeper-adaptor的django应用程序。
安装软件包
克隆此项目并在存储库的根目录中使用以下命令从源位置安装包:
$ pip install -r requirements.txt
使用以下命令安装开发包:
$ pip install -r requirements.txt
$ pip install -e .[test]
配置
环境变量
VAULTKEEPER_CONFIG-一个json字符串,格式为vaultkeeper配置。见configs/example_agent_config.json
VAULT_SECRETS-json字符串,格式为vaultkeepersecrets。见configs/example_consumer_config.json。
MESOS_TASK_ID-分配给此任务的mesos任务id,它应该由mesos自动填充。
MARATHON_APP_ID-分配给此任务的马拉松应用程序ID,它应该由马拉松自动填充。
保管库管理员配置
vaultkeeper使用json环境变量中的参数:
{"entry_cmd":"sh /scripts/django-entrypoint.sh","output_path":"","refresh_interval":30,"lease_increment":40,"renewal_grace":15}
entry_cmd-要由vaultkeeper管理的应用程序的入口点。这可以是任意的shell命令。
output_path-vaultkeeper获取凭据的输出位置。
refresh_interval-续租的间隔(秒)。
lease_increment-如果租约到期续租,延长租约的增量(秒)。
renewal_grace-租约到期前续租的时间(秒)。
机密配置
vaultkeeper以json格式读取从保险库获取的机密规范。
包含PostgreSQL和RabbitMQ凭据的示例机密文件如下所示:
[{"id":"default","backend":"postgresql","endpoint":"0.0.0.0:5432/mydb","vault_path":"database/creds/psql-rw","schema":"public","policy":"psql-rw","set_role":"app_owner",},{"id":"broker1","backend":"rabbitmq","endpoint":"0.0.0.0:5672/myvhost","vault_path":"/rabbitmq/creds/ampq-worker","vhost":"myvhost","policy":"ampq-worker"}]
机密配置文件中的公共基本参数:
id-此机密的逻辑标识符。标识符在每个使用者实例中必须是唯一的。
backend-此机密的保管库机密后端。
endpoint-资源的终结点。这应该是一个附加了适用名称空间(即vhost,数据库名称)的套接字地址。
vault_path-应该从中读取机密的保险库路径。
policy-在保险库上指定的资源策略附加到此机密。
展开
vaultkeeper将机密输出为json。您的应用程序需要能够解析和使用此输出。对于django应用程序,建议使用django-vaultkeeper-adaptor。
为要管理的应用程序提供带有入口点的vaultkeeper配置文件。确保您的消费者应用程序知道^{tt将存储1}$的机密输出。
之后,不要运行应用程序的常规入口点脚本,而是运行vaultkeeper:
$ vaultkeeper
推荐PyPI第三方库
- 热门话题
- java在某些练习中避免索引异常 java Android,如何在具有socket的网络区域上提高性能? 更改web中的执行顺序后,JavaServlet过滤器不起作用。xml java如何绑定泛型类? JavaGmail RESTAPI:使用Google凭证而不模拟 java是解码整数序列的最快方法 java根据hashmaps的值(通过map的值进行比较)对hashmaps的数组列表进行排序 用于JBoss 7.1或Apache的java负载平衡器,带有Healt检查 java非常慢的MySQL读取性能 java如何在使用iRetryAnalyzer时从Windows CMD关闭Selenium WebDriver? java随机闪烁仅出现在Galaxy Note 4上 java AttributeOverride MappedSuperClass属性的类型不同 java JPA:如何检测现有实体是否已更新? java如何使用mavenassemblyplugin从dependencySet中删除METAINF? 安装SecurityManager时,java MQQueueManager构造函数挂起