Security

如何在 EC2 實例上安全地安裝 Secret?

  • June 15, 2016

上下文:使用一些自動擴展組和一些非擴展自立式虛擬機設置基礎設施。某些角色需要機密(私鑰),這些機密應僅限於 root 或特定使用者。管理是通過 Puppet(“無伺服器” - 配置在 git 儲存庫中)完成的,Ansible 也可用。

  • 將秘密放在 Puppet 或 git 中是不可接受的,因為它們很容易獲得
  • 將機密放入 EC2 使用者數據會限制對特定 VM 的訪問,並在自動縮放組中正確複製,但是 VM 中的任何 unix 使用者都可以訪問它。
  • 將秘密放入安全的 S3 儲存桶中需要做很多工作,限制對特定 VM 的訪問,在自動縮放組中正確複製,加密靜態數據,但是 VM 中的任何 unix 使用者都可以訪問它——參見http:// blogs.aws.amazon.com/security/post/Tx2B3QUWAA7KOU/How-to-Manage-Secrets-for-Amazon-EC2-Container-Service-Based-Applications-by-Usi
  • AWS KMS 改進了安全 S3 儲存桶,但我在 VM中找不到任何限制訪問其服務的跡象。

我並不幻想 Linux 的使用者權限是防彈的。但是,將機密訪問權限限制為僅 Linux root 使用者是……有用的!:-)

我們找到了一個可行的解決方案:

  • 使用 Vault 或類似工具來管理按角色分組的實際機密,並使用快捷鍵來解鎖每組機密。

  • 使用可編寫腳本的東西(即:Cloudformation、Terraform、aws cli)自動創建實例,作為創建腳本的一部分……

    • 使用 Vault 密鑰創建和填充短期 S3 儲存桶
    • 通過 EC2 使用者數據提供一個引導腳本,該腳本從 S3 儲存桶中獲取 Vault 密鑰

假設:

  • S3 儲存桶 url 隨機性阻止它(快速)發現
  • 在引導程序完成之前,您的基礎 AMI 是安全的;這意味著它不是預先植根的 ;-) 並且不會提供不安全/配置錯誤的服務,這些服務可能會在 S3 儲存桶生命的短暫時間視窗內被成功攻擊。

感謝@ceejayoz 提供有用的提示。

引用自:https://serverfault.com/questions/782818