跳转到主要内容

安全地管理运行时配置

项目描述

https://travis-ci.org/timeoutdigital/treehugger.svg?branch=master

负责您在AWS上的环境(变量)。

需求

  • Python 3.4+

  • 一些简单的依赖项,如setup.py中列出 - boto3, PyYAML, requests和six。

  • 您的账户中一个名为alias/treehugger的KMS密钥。

工作原理

Treehugger允许您使用KMS加密的环境变量在EC2上运行应用程序。您将加密的变量存储在与您的其他配置管理一起的YAML文件中,然后只需将它们放入实例的EC2用户数据中。Treehugger可以从用户数据中读取变量,解密加密的变量,并运行您的应用程序。

例如,假设我们想运行一个需要GITHUB_TOKEN环境变量来与GitHub通信的应用程序。由于这是敏感数据,我们想将其加密,仅在运行应用程序时解密。您可以从编写一个包含变量未加密形式的YAML文件开始,该文件包含一个to_encrypt键,该键指示它应该被加密

GITHUB_TOKEN: {to_encrypt: example-token}
TREEHUGGER_APP: my-app
TREEHUGGER_STAGE: prod

《TREEHUGGER_APP》和《TREEHUGGER_STAGE》变量是必填的,用于为Treehugger提供上下文。它们用于使用KMS的加密上下文功能加密变量,提供访问控制和防止篡改。

您可以通过运行以下命令加密文件:

treehugger encrypt-file my_app_vars.yml

它将变成类似以下的内容:

GITHUB_TOKEN: {encrypted: AQECAHiVqEdWu6BhwWXkqJrEhgPpuDXA3TC1MPUeQb...}
TREEHUGGER_APP: my-app
TREEHUGGER_STAGE: prod

请注意,明文变量没有被加密,只有标记为to_encrypt的变量。

从现在开始,您可以使用以下命令编辑文件:

treehugger edit my_app_vars.yml

这将解密文件到一个临时文件,然后在您的$EDITOR中打开它,完成后再次将其加密回原位。这样可以避免意外提交解密后的机密信息。

对于部署,您需要将文件的 内容放入应用程序的EC2实例的用户数据 中,位于 treehugger 键下。

例如,您可以将文件的 内容作为参数传递给CloudFormation模板,将值放入自动扩展组的UserData 属性中。例如,如果作为参数传递 TreehuggerUserData(带有额外缩进):

LaunchConfig:
  Type: AWS::AutoScaling::LaunchConfiguration
  Properties:
    UserData:
      Fn::Base64:
        !Sub
        - |
          treehugger:
            ${IndentedTreehuggerUserData}

然后,在EC2实例上,您的应用程序可以通过以下命令启动:

treehugger exec -- /path/to/application

Treehugger将加载用户数据为YAML,提取“treehugger”键下的字典,解密标记为encrypted的变量,将它们放入环境变量中,然后使用execlp替换自身。

您还可以使用键 include 合并来自外部源的数据,例如

include: s3://bucket-name/filename.yml?versionId=7

其中值是一个指向另一个包含环境变量的YAML文件的URL。该文件将被检索,并将键合并到本地定义的内容之上。目前只支持S3 URL,并使用S3 API进行处理;versionId 是必需的,以避免歧义。

您还可以在环境变量中设置外部源的位置

TREEHUGGER_DATA='s3://bucket-name/filename.yml?versionId=7' treehugger exec -- /path/to/application

这在使用容器中的treehugger且UserData不可用时很有用。如果设置了TREEHUGGER_DATA环境变量,则不会读取UserData或文件。

注意。为了确保运行Treehugger时使用的是正确的Python版本,您还可以将其作为模块运行。例如

/usr/local/bin/python -m treehugger exec -- /path/to/application

测试

安装并运行 tox文档)。

致谢

Treehugger由Niklas Lindblad创建,并由Adam Johnson维护。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分布

treehugger-3.0.0.tar.gz (16.4 kB 查看哈希

上传时间

构建分布

treehugger-3.0.0-py3-none-any.whl (14.0 kB 查看哈希

上传于 Python 3

由以下机构支持