怎麼用 Vault 管理敏感資料?

30. 怎麼用 Vault 管理敏感資料?

導入 Ansible 組態工具,多少會使用明文 (Plain text) 在 Playbooks 裡存放敏感資料 (sensitive data) ,更別說我們還會搭配 Git 版本系統使用,這很可能會造成潛在的資安風險!接下來凍仁將透過 Vault 這個保險庫系統強化資料安全

automate_with_ansible_practice-33.jpg ▲ 圖片來源:http://kingofwallpapers.com/vault.html 。

Vault 是什麼?

Vault 就字面上的意義有地窖、保險庫的意思。在 Ansible 裡是指加密、解密檔案的技術。

Ansible 從 v1.5 開始支援此功能,預設使用 AES 加密技術,其詳細說明可參考 Vault | Ansible Documentation 官方文件。

2016-12-30-ansible-vault-1.png

怎麼使用 Vault?

在進入實作之前,先來看看 Vault 的使用方法。

  1. 建立加密 (Encrypted) 檔案。

  2. 編輯加密檔案內容。

  3. 更換加密金鑰 (密碼)。

  4. 對已存在的明文檔案進行加密

  5. 解開 (Decrypt) 已加密檔案。

  6. 檢視已加密的檔案內容。

怎麼在 Playbooks 裡使用 Vault?

以下將藉由簡單的實作來展示 Playbook 搭配 Vault 的使用方法。

  1. 建立 Playbook。

    註:rawendraw 是為了相容 GitBook 所增加的語法,您可能會在某平台上看到它,請忽略之。

  2. 建立變數檔案。

  3. 將變數檔案進行加密:過程中需輸入兩次密碼。

  4. 檢視已加密的檔案內容:使用剛剛輸入的密碼進行檢視。

手動輸入金鑰 (密碼) 解密

  1. 執行 Playbook 並搭配 --ask-vault-pass 參數手動輸入密碼。

  2. 或透過 ansible.cfg 啟用 ask_vault_pass,其預設值為 false。

    1. 設定 ansible.cfg

    2. 執行 Playbook。

透過金鑰 (密碼) 檔解密

  1. 建立密碼檔:此例用的密碼為 bGpvxx

  2. 執行 Playbook 並搭配 --vault-password-file 參數指定金鑰路徑。

  3. 或於 ansible.cfg 裡新增 vault_password_file 參數,並指定金鑰路徑。

最後附上凍仁的實作畫面。

2016-12-30-ansible-vault-2.gif
  • 當 include 到 defaults/main.yml 密文 (Cipher text) 檔後,需先用 Vault 解開才可繼續執行。

後語

或許大家覺得在本機儲存敏感資料很安全,誰又能保證傳輸過程中能不被竊取呢?越方便的工具往往伴隨著越大的資安風險,但至少,我們可以先從檔案加密著手。

相關連結

Last updated

Was this helpful?