使用保险库在awscli中保持身份验证

vault-aws-login的Python项目详细描述


vault aws登录

使用保险库在awscli中保持身份验证 不影响其他配置文件,你希望保持非管理。在

安装和运行

  • 请确保consul-template已安装并位于您的$PATH
  • 运行pip3 install --upgrade vault-aws-login
  • 运行wget -O - https://nhtzr.github.io/vault-aws-login/vault-aws-config.tgz | tar -C "$HOME" -zxf -
  • ~/.vault-aws/config更新为:
    [default]
    vault_addr = https://vault.engineering.armory.io
    #      (overrides your current VAULT_ADDR env var.)
    #      (leave it empty if you dont want such thing to happen)
    vault_login_method = <your auth type to vault>
    #      Type of authentication to use such as "userpass" or "ldap". Note this
    #      corresponds to the TYPE, not the enabled path. Use -path to specify the
    #      path where the authentication is enabled. The default is token.
    #      (leave it empty if you dont want this parameter)
    #      (use extra_vl_flags = ["-path", "/your/path"] fort the given example above)
    vault_login_username = <your vault username>
    #      The -method flag allows using other auth methods, such as userpass, github, or
    #      cert. For these, additional "K=V" pairs may be required. For example, to
    #      authenticate to the userpass auth method:
    #      $ vault login -method=userpass username=my-username
    #      (vault_login_<K> = <V> is also valid for K=V pairs other than username)
    

假设您在保险库密码/aws/dev/sts/admin下拥有aws凭证,并且您 想要在aws配置文件dev下使用它们,请运行以下命令:

^{pr2}$

这将使consur模板在后台运行,保留您的devaws配置文件凭据 更新有效。aws --profile dev sts get-caller-identity可以帮助您再次检查此项。在

覆盖、模板和配置

如您所见,-l/--login标志(登录名)将生成的aws配置文件名和 源保险库秘密这是一个方便的约定,但并不总是理想的。 您可以重写aws概要文件和保险库密码,它们将对应于给定的登录名 在~/.vault-aws-login/confg文件中添加login_override部分:

[login_override dev_as_default]
aws_profile_name = default
vault_secret_path = /aws/dev/sts/admin

同样,login_template描述了与每个登录标识相对应的泛型值:

[login_template]
aws_profile_name = %(login_id)s
vault_secret_path = /aws/%(login_id)s/sts/admin

模板和重写都是由python3的ConfigParser.BasicInterpolation和{a3}实现的

以上两者都意味着

  • login_template中的属性可以依赖于login_override中的属性,反之亦然。在
  • 如果名称冲突,login_override中的属性具有更高的优先级

这允许模板在任意数据上呈现,而不仅仅是相应的登录名 (注意:login_id由脚本本身填充,因此不能重写)

[default]配置配置文件部分包含主脚本将使用的属性。 最重要的是给定的参数vault login,以及默认情况下需要的-l/--login/登录名。 您可以选择使用-p/--profile标志从任何其他部分获取这些属性, 您还可以使用带有-c/--config标志的完全不同的配置文件。在

对于consur模板特定的配置,您可以修改~/.vault-aws-config/credentials.hcl 如果你想调整它的行为。还有一个名为~/.vault-aws-config/config选项 extra_ct_flags在配置配置文件部分(.i.e[default])中,以防添加额外的标志,如-once。 如果要保留多个credentials.hcl文件,则可能需要设置consul_template_hcl 不同配置配置文件节中的不同值

代码概述

此脚本的一般工作流程是: 0如果vault token lookup失败,请登录vault。在

  1. 生成以下json并调用consult模板:
    [{ 'aws_profile_name': 'dev'
       'vault_secret_path': '/aws/sts/admin' }, .. ]
    
  2. consur模板生成以下凭证文件并调用aws_credentials_merge:
    [dev]
    aws_access_key_id = <info from vault>
    aws_secret_access_key = <info from vault>
    aws_session_token = <info from vault>
    
  3. aws\u credentials\u merge接受这个新凭证并将它们合并到~/.aws/credentials。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
尝试运行JFLAP。戴软呢帽的罐子23。Java正在抛出异常   无引用的java数组布尔复制   hibernate如何在java SE应用程序中使用JPA EntityManager   java如何使用ORMLite在SQLite中持久化JavaFX属性?   java无法将项目部署到GAE   java:谷歌地图维基百科层   java Resultset(getter/setter类)对象在第二次执行时未删除旧值   s中的java struts2:选择列表>请求的列表键“”作为集合/数组/映射/枚举/迭代器类型   java如何在Karaf 4.0.5中获得BaseDao中的entityManager?   java VSCode未从控制台读取西里尔文   java字体。createFromAsset()返回字体的空指针异常   java错误:将Android Studio从0.6.1更新到0.8.9后,没有合适的构造函数