使用保险库在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第三方库


热门话题
具有泛型的对象的oop Java数组   爪哇丑陋的数字找到第1500名UVA在线评委   SpringJava。lang.IllegalStateException:自动连线批注至少需要一个参数   java为什么我的系统找不到我的属性文件?   java有没有办法让Maven同时构建1.5和1.6字节码JAR?   java通过Sailfin中的header进行操作   使用向量、距离和图形   如果提供的登录信息是错误的,为什么java控件不进入else部分和Toast?   java如何为电子商务安卓应用程序存储产品列表   java保存声音首选项Libgdx Android   java无法在测试单元中调用JpaRepository   java使用批处理更新Cassandra表中的选定列,而不将其他列值设为null   java如何在log4j2中的手动代码配置中向appender添加级别?   从ImageIO返回的java Null。读取(新的ByteArrayInputStream(bs));   java不确定如何防止此Arraylist处于可编辑状态   netbeans中的java更改清单(TrustedLibrary=true属性)   java无法使用RestTemplate和Spring数据REST发布具有关系的新实体