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("args: {}".format(sys.argv))
print("environment: {}".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
我們得到以下輸出:
args: ['service.py', '--whatever', 'argument_1']
environment: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
如我們所見,所有參數都正確傳遞,並且所有之前配置的環境變數對流程都是可用的。有一些標誌可以讓您同時傳遞常規系統環境變數並用來自 Psono 的變數擴展它們。更多詳細信息可以在我們的psonoci 文檔中找到。
希望您喜歡我們的小小示範,展示了 Psono 如何幫助保護您的基礎設施。這一切都離不開 Bernd,這個功能的幕後推手,真心感謝你,Bernd!