云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

香港服务器_咖啡云主机_9元

小七 141 0

构建保管库令牌助手

Vault是一个用于管理机密的开源工具。前面我们展示了Vault如何提供加密即服务,以及如何构建自定义的安全保险库插件。本文探讨了Vault开源和Vault Enterprise的一个鲜为人知的特性:令牌助手。»令牌帮助程序在许多方面,Vault在概念上类似于web应用程序。用户通过用户名和密码、OAuth(使用GitHub登录、使用Twitter登录等)或通过API的令牌对应用程序进行身份验证。在此过程中,web应用程序获取用户提供的信息,对其进行验证,并将已验证用户的身份映射到应用程序中的策略和权限上。用户的"身份"通常以"会话"的形式返回,会话存储在安全cookie中,由web浏览器管理。将来对网站的请求包括签名的cookie,应用程序使用它来验证身份。如果没有此功能,用户每次单击链接时都需要输入用户名和密码。在Vault中,与"session"最等价的东西是Vault令牌。此外,由于它不在浏览器中运行,因此Vault会将令牌辅助对象用于本地Vault命令行工具。令牌助手对令牌的职责与浏览器对cookie的职责类似。令牌助手负责存储、更新、检索和删除本地CLI的身份验证数据。当发出经过身份验证的API请求时,vaultcli查询配置的令牌助手,令牌助手返回存储的令牌。Vault CLI使用此令牌向Vault服务器发出经过身份验证的API请求。此外,vaultcli可能会请求token helper存储身份验证数据,这可能是Vault auth命令的副产品。»默认令牌帮助程序Vault包含一个默认的令牌助手,它将提供的令牌保存在当前用户的主目录~/.Vault token。例如:$vault认证11413f3f-ec5b-cd25-92cb-96970d76bbe1# ...$cat~/.vault代币11413f3f-ec5b-cd25-92cb-96970d76bbe1共享系统上的用户或不信任存储敏感数据的文件系统的用户可能希望利用不同的工具(如1Password、LastPass或Keychain Access)来存储本地保险库身份验证信息。Vault的可扩展令牌助手模型使您可以轻松地将自定义集成构建到这些第三方工具中。»编写自定义令牌助手令牌帮助器是本地二进制文件或脚本,从Vault接收shell命令以存储、获取或删除令牌:store->my helper store(要存储的令牌在stdin上传递)get->my helper get(返回stdout上的令牌)擦除->我的助手擦除»储存Vault将使用参数存储调用令牌助手。将在中的标准中提供要存储的令牌。$我的助手商店对于本地测试,通过管道将令牌传递到二进制文件:$echo"超级秘密令牌"|我的助手商店令牌助手应该:从标准的中提供的标记中删除任何前导或尾随空格。保险库令牌永远不会有前导空格或尾随空格,但某些shell可能会无意中添加空格。验证提供的令牌不是空字符串。如果值是空字符串,请改为调用erase。以持久的方式保存令牌。因为二进制文件是作为命令(而不是服务器)执行的,所以大多数令牌助手无法将令牌持久化在内存中;它们需要将令牌写入磁盘、密钥链或其他外部工具。退出,状态代码为0(正常)。通常,存储操作应该只返回持久化提供的令牌时发生的错误。»得到Vault将使用参数get调用令牌助手。令牌助手应该在标准输出时返回存储的令牌(如果有)。$我的助手得到绝密令牌如果没有存储值,则令牌助手必须返回空值。如果未存储值,则令牌助手永远不应返回错误。令牌助手应该:从持久存储器中检索令牌。把令牌打印出来。退出,状态代码为0(正常)。»擦除Vault将使用参数erase调用令牌助手。令牌助手应该清理存储的令牌(如果有)。$我的助手删除如果没有存储值,令牌助手应该简单地返回。如果未存储值,则令牌助手永远不应返回错误。令牌助手应该:清除或擦洗令牌的任何痕迹。退出,状态代码为0(正常)。»例子下面是一个用Ruby编写的token helper示例,它的行为类似于默认的token helper。它没有将令牌存储在~/.vault令牌中,而是将令牌存储在/tmp/vault token中:#!/usr/bin/env红宝石PATH="/tmp/vault token"。冻结def主(args)大小写参数[0]当"得到"然后得到当"擦除"然后擦除当"储存"然后储存其他的放入"未知方法#{args[0]}"出口1结束结束def获取打印文件.read(路径)。如果文件.exist?(路径)结束def擦除文件.删除(路径)如果文件.exist?(路径)结束def存储文件.打开(路径,"wb+"){f | f.write($标准读带) }结束主(重复ARGV.dup)有一些重要的事情需要注意,即:程序只响应get、erase和store。get操作不包含任何前导符或尾随空格。如果文件不存在,则erase命令将正常处理。store命令在文件不存在的情况下向上插入文件的创建,如果存在,则覆盖文件中的任何现有内容。要获得与macos Keychain访问集成的更高级令牌助手,请查看GitHub上的sethvargo/vault token helper osx Keychain。令牌助手几乎可以用任何语言编写,因此可以执行几乎任何功能,包括与第三方服务和api集成。下一节将详细介绍如何安装此令牌助手并配置本地Vault CLI以使用它。»安装和配置如果没有自定义配置,本地Vault CLI工具将使用默认的令牌助手。要配置本地CLI工具,请在~/.Vault中为Vault CLI创建配置文件:#~/.保险库token_helper="/full/path/to/token"-助手.rb"注意:在本例中,我们正在配置本地Vault CLI工具。这些选项将应用于在此系统上为此用户运行的每个vault命令。这与Vault服务器配置文件不同,后者在启动时提供给服务器,并详细说明服务器的配置选项。vaultcli工具会自动搜索~/.Vault中的配置选项,并在每次调用命令时解析并加载这些选项。可以使用VAULT_CONFIG_path环境变量为该配置文件指定不同的路径,但本文假定使用默认位置。token helper的路径必须是二进制文件的完整路径,并且二进制文件必须具有可执行权限。令牌助手不能是相对路径,也不能是二进制文件的路径以外的任何内容。这就是所有需要的配置!未来所有需要令牌的vault命令将自动使用配置的令牌助手。»结论扩展一个像Vault这样的安全工具可能看起来很吓人,但希望这篇文章说服了你。通过利用Vault灵活的令牌助手,我们能够定制本地令牌的存储和检索方式。要获得与macos Keychain访问集成的更高级令牌助手,请查看GitHub上的sethvargo/vault token helper osx Keychain。我们期待着看到你将建立什么自定义保险库令牌助手!