DevSecOps:如何使用 Ansible Vault 在 GitLab CI/CD 中安全管理秘密資訊 前言 以下是關於如何在 **GitLab CI/CD** 中使用 **Ansible Vault** 建立安全的 CI/CD 管道的詳細步驟。這將指導你從加密秘密資訊開始,到設置管道進行部署的完整過程。 準備 1. GitLab 帳戶 :確保已擁有一個 GitLab 帳戶並且已經設置好一個 repository。 2. 本地安裝 Ansible :需要在本地安裝 Ansible 來加密/解密秘密文件。 第一步:設置 Ansible 並創建加密的文件 1. 安裝 Ansible : 首先,確保已在本地機器上安裝了 Ansible。在 Ubuntu 上運行以下命令來安裝它: ```bash sudo apt-get install ansible ``` 如果使用其他操作系統,請參考官方的 [Ansible 安裝指南](https://docs.ansible.com/ansible/latest/installation_guide/index.html)。 2. 創建一個秘密文件: 在本地的工作目錄中,創建一個包含敏感資訊的 YAML 文件,例如: ```yaml # secret_vars.yml db_username: myuser db_password: supersecurepassword api_key: someAPIkey12345 ``` 3. 使用 Ansible Vault 加密文件: 運行以下命令來加密 `secret_vars.yml` 文件: ```bash ansible-vault encrypt secret_vars.yml ``` 系統會提示你輸入一個密碼。記住這個密碼,因為你需要在 GitLab Pipeline 中使用它。 你會看到 `secret_vars.yml` 文件已經被加密,內容看起來像這樣: ```yaml $ANSIBLE_VAULT;1.1;AES256 663336393839626139623061656136353937303330376437346539383266
Kubernetes中的TLS應用 隨著資訊傳遞速度的快速增加和數據的廣泛使用,保障資料安全性已成為一個至關重要的議題。特別是在大規模應用中,例如容器化環境下的 Kubernetes(k8s)集群,通信安全性無疑是一個極為重要的環節。而透過 Transport Layer Security(TLS)技術的應用,我們能夠有效地保障通信的安全性。 Transport Layer Security(TLS)技術的應用 在資訊傳輸中,若敏感資料如使用者帳號和密碼以明文形式傳送,這對駭客來說是易於竊取的。因此,我們採用加密技術來保護這些敏感資訊,將其加密後再傳送給伺服器進行解密(即對稱加密)。 然而,在傳送加密金鑰的過程中,金鑰本身可能被竊取,這樣一來駭客就有可能用偷來的金鑰來解密敏感資訊。為了解決此問題,伺服器會生成一對公鑰(Public Key)和私鑰(Private Key)。公鑰會傳送給瀏覽器,瀏覽器使用公鑰將金鑰加密後再傳送回伺服器。伺服器可以使用私鑰解密獲取金鑰,這樣一來就能保障金鑰在傳遞過程中的安全性(即非對稱加密)。 然而,即使使用了非對稱加密,駭客仍然有可能透過釣魚網站的方式誘使使用者交出金鑰,因此我們需要確認連線對象是否是合法的網站。 建立連線時,瀏覽器會要求伺服器提供證書以驗證其身份。此證書包含了伺服器的公鑰以及發行機構的訊息。通過驗證這個證書,我們可以確認公鑰的合法性,從而判斷連線對象是否是合法的網站。 然而,駭客也有可能偽造證書,因此為了避免這種情況的發生,各個證書授權機構會生成一對公私鑰。在發出證書之前,證書授權機構會使用私鑰對證書進行加密。這樣一來,瀏覽器在獲得證書後可以使用內建的公鑰對其進行解密,以驗證證書的合法性。 TLS 在 Kubernetes 中的重要性 在 Kubernetes 集群中,無論是 API Server、Pod 之間的通信,還是其他組件之間的通信,都需要得到安全保護。TLS 技術的應用使得這些通信變得安全可靠,有效地防止了敏感信息的泄露和不良攻擊的發生。 為了識別各個元件的身份,我們在 Kubernetes 環境中設置了相應的 client certificate 和 server certificate。 舉例來說,System admin user、Kube Scheduler、Kube Controll Mana