IT 服务需要配置。配置的一部分是您不希望暴露的机密。常见的示例是数据库凭据或保护会话 cookie 或身份验证凭据的随机值。如果您正在开发软件,事情可能会在构建管道、分发证书和访问密钥方面变得更糟。
机密泄露可能导致用户账户接管、数据盗窃、构建链攻击和其他代价高昂的问题。恶劣的声誉、知识产权的丧失以及潜在的巨额法律费用只是可能成本的一小部分。
Psono 提供了最新版本的 psonoci 受保护环境。受保护环境允许您运行进程并通过环境变量配置它们,而无需将它们暴露给系统。这些环境变量是从 Psono 安全加载的,永远不会存储在服务器上的任何地方,并且仅暴露给单个进程。
首先,您必须创建一个环境变量机密。请注意,一个机密可以包含多个环境变量,因此您可以按环境对环境变量进行分组,或者只是因为它们属于一起,比如数据库用户和数据库密码。
之后,您创建一个 API 密钥,并允许该 API 密钥访问您的新环境变量机密。
现在请注意 API 密钥机密,因为这些参数是唯一直接暴露给系统的参数。
在您的服务器或构建管道中通过以下单个命令安装 psono ci:
curl https://get.psono.com/psono/psono-ci/x86_64-linux/psonoci --output psonoci && chmod +x psonoci
而不是仅仅运行 ./some_command
,您可以这样启动您的进程:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./some_command
为了简单起见,我们将如 --api-key-id
或 --api-secret-key-hex
之类的参数传递为参数,但您也可以配置一个配置文件。
为了演示目的,我们创建了这个小的 Python 脚本 service.py
,它打印传递给脚本的所有环境变量和参数。
#!/usr/bin/python3
import os
import sys
print("参数: {}".format(sys.argv))
print("环境: {}".format(os.environ))
例如我们可以这样执行它,而不是执行 ./service.py --whatever=argument_1
:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./service.py --whatever=argument_1
我们得到以下输出:
参数: ['service.py', '--whatever', 'argument_1']
环境: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
正如我们所看到的,所有参数都被正确传递,并且我们之前配置的所有环境变量对于进程都是可用的。存在一些标志,可以允许您同时传递正常的系统环境变量并将它们与 Psono 的环境变量一起扩展。有关更多详细信息,请参阅我们的 psonoci 文档。
希望您喜欢我们的小故障说明,演示了 Psono 如何帮助保护您的基础设施。如果没有 Bernd,这个功能的幕后高手,这一切都不可能实现,谢谢你 Bernd!