現在位置: 首頁 > Puppet > 正文

Puppet 4 自動化部署 – 實作 Policy-based autosigning

前面介紹到了 Policy-based autosigning,在這邊依照官方所述來測試 Policy-based autosigning 的實作環境

 

首先必須先了解一下 Policy-based autosigning 的運作概念是在 csr 證書中加入參數供認證,由於在 Puppet 的認證關係中是由 Agent 發起,所以在 csr 動手腳的動作就落在 Agent 上面,

 

在 Master 中開啟 Policy-based autosigning 支援

可以在 puppet.conf 中加入 autosign 參數來開啟 Policy-based autosigning

To enable policy-based autosigning, set autosign = <policy executable file> in the [master] section of the CA Puppet master’s puppet.conf.

在這邊必須注意的是 autosign 參數帶的是一個 script 檔,他將會替你執行這個 script 去驗證 Agent 的 csr 資訊。

 

而且這個 script 必須是 puppet master 有執行的權限,script 必須 return 0 (成功) 或是 1 (失敗),來判別這是否為合法的 Agent。

The policy executable file must be executable by the same user as the Puppet master. If not, it will be treated as a certname whitelist file.

 

 

 

在 Agent 中的 csr 資訊加入認證資訊

 

可以加入設定檔 csr_attributes.yaml 來替 CSR 添加額外的驗證訊息:

Extra data for the CSR is read from the csr_attributes.yaml file in Puppet’s confdir. (The location of this file can be changed with the csr_attributes setting.)

 

在官方特別提到,csr_attributes.yaml 必須擁有 custom_attributes 或 extension_requests 其中一個類型的參數,其支援的類型可以參考 CSR attributes and certificate extensions

 

 

 

實作 Policy-based autosigning 工作

在這篇小弟有寫了一個 Policy-based autosigning 工作範例在 github,是採用 custom_attributes 類型中的 challengePassword 進行驗證,從下面這張工作流程圖了解一下在這個示範中的作業流程

 

 

在 Master 安裝 autosign script

 

用 setup.sh 的安裝動作會將 autosign script 安裝在 /opt/autosign (預設),並且將 autosign 自動寫入在 puppet.conf

 

用 autosign 產生 challengePassword 驗證檔案

 

會產生一個 example.com 的檔案,裡面的 content 為隨機的 challengePassword 驗證碼,這隻檔案的用意是要給 autosign-verify 進行驗證 agent csr 的

 

在 Agent 加入 challengePassword 的認證

 

然後主動提交測試是否可以驗證成功

驗證成功,也收到 catalog 佈署完成。

 

驗證一下 Master,自動 sign certificate 囉

 

如何證明真的是使用 Policy-based autosigning 而不是只是在白名單內而已?!

我在 autosign-verify 裡面寫了一段,只要驗證成功,就會刪除在 waiting 中的 example.com 驗證檔案,所以在 /opt/autosign/pks 裡面只會存在尚未驗證的 node

 

這邊要特別注意,puppet 在進行驗證的時候完全是使用 puppet 的權限去進行動作,所以不管是 create, remove 等動作都必須要有權限,所以都採用 puppet:puppet 的權限。

The policy executable file must be executable by the same user as the Puppet master. If not, it will be treated as a certname whitelist file.

 

 

 

 

特別標註:

  • 要獲得 agent 的 csr stdin 訊息可以用 $(cat) 來取得,若是在測試階段要抓取字串可以用以下指令去擷取,requests 是存放 agent 等待 sign 的 csr 存放位置。

 

 

 

 

 

 

參考資料:

autosigning certificate requests

CSR attributes and certificate extensions

Config files: csr_attributes.yaml

Upgrade to newer version of commons-exec (or switch to zt-exec) when STDIN bug is fixed

文章連結: https://shazi.info/%e3%80%90devops%e3%80%91puppet-4-%e8%87%aa%e5%8b%95%e5%8c%96%e9%83%a8%e7%bd%b2-%e5%af%a6%e4%bd%9c-policy-based-autosigning/ | Mr. 沙先生

該文章由 shazi7804 於2017年01月02日發表在 Puppet 分類下, 你可以發表回文,並在保留原文地址及作者的情况下引用到你的網站或部落格。
原文轉載請註明: Puppet 4 自動化部署 – 實作 Policy-based autosigning | Mr. 沙先生
標籤: , , ,

Puppet 4 自動化部署 – 實作 Policy-based autosigning:給Mr.沙先生一點建議

發表回文