在 swarm 集群中管理敏感資料
在動態的、大規模的分布式集群上,管理和分發 密碼、證書 等敏感資訊是極其重要的工作。傳統的金鑰分發方式(如金鑰放入映象中,設定環境變數,volume 動態掛載等)都存在著潛在的巨大的安全風險。
docker 目前已經提供了 secrets 管理功能,使用者可以在 swarm 集群中安全地管理密碼、金鑰證書等敏感資料,並允許在多個 docker 容器例項之間共享訪問指定的敏感資料。
注意: secret 也可以在 docker compose 中使用。
我們可以用 docker secret 命令來管理敏感資訊。接下來我們在上面章節中建立好的 swarm 集群中介紹該命令的使用。
這裡我們以在 swarm 集群中部署 mysql 和 wordpress 服務為例。
建立 secret
我們使用 docker secret create 命令以管道符的形式建立 secret
$ openssl rand -base64 20 | docker secret create mysql_password -
$ openssl rand -base64 20 | docker secret create mysql_root_password -
檢視 secret
使用 docker secret ls 命令來檢視 secret
$ docker secret ls
id name created updated
l1vinzevzhj4goakjap5ya409 mysql_password 41 seconds ago 41 seconds ago
yvsczlx9votfw3l0nz5rlidig mysql_root_password 12 seconds ago 12 seconds ago
建立 mysql 服務
建立服務相關命令已經在前邊章節進行了介紹,這裡直接列出命令。
$ docker network create -d overlay mysql_private
$ docker service create \
--name mysql \
--replicas 1 \
--network mysql_private \
--mount type=volume,source=mydata,destination=/var/lib/mysql \
--secret source=mysql_root_password,target=mysql_root_password \
--secret source=mysql_password,target=mysql_password \
-e mysql_root_password_file="/run/secrets/mysql_root_password" \
-e mysql_password_file="/run/secrets/mysql_password" \
-e mysql_user="wordpress" \
-e mysql_database="wordpress" \
mysql:latest
如果你沒有在 target 中顯式的指定路徑時,secret 預設通過 tmpfs 檔案系統掛載到容器的 /run/secrets 目錄中。
$ docker service create \
--name wordpress \
--replicas 1 \
--network mysql_private \
--publish target=30000,port=80 \
--mount type=volume,source=wpdata,destination=/var/www/html \
--secret source=mysql_password,target=wp_db_password,mode=0400 \
-e wordpress_db_user="wordpress" \
-e wordpress_db_password_file="/run/secrets/wp_db_password" \
-e wordpress_db_host="mysql:3306" \
-e wordpress_db_name="wordpress" \
wordpress:latest
檢視服務
$ docker service ls
id name mode replicas image
wvnh0siktqr3 mysql replicated 1/1 mysql:latest
nzt5xzae4n62 wordpress replicated 1/1 wordpress:latest
現在瀏覽器訪問 ip:30000,即可開始 wordpress 的安裝與使用。
通過以上方法,我們沒有像以前通過設定環境變數來設定 mysql 密碼, 而是採用 docker secret 來設定密碼,防範了密碼洩露的風險。
專案管理 風險管理
目錄 1 規劃風險管理 2 識別風險 3 實施定性風險分析 4 實施定量風險分析 5 規劃風險應對 6 控制風險 常見問題 需要編寫乙個計畫來記錄了我們打算如何來進行專案風險管理的內容。我們需要識別這個專案裡到底有哪些風險,並把它記錄下來。通過風險的發生概率和發生之後對專案的影響情況,對風險進行乙個...
風險管理的基礎 風險評估
風險評估是識別及分析影響公司目標實現的風險的過程,是風險管理的基礎。在風險評估中,應識別和分析對實現目標具有阻礙作用的風險。1 識別影響企業目標實現的風險,並針對這些風險制定相應的控制措施。2 描述業務流程 對企業的業務進行梳理,確定企業所有流程目錄 按照企業確定的業務流程描述標準和模板,利用流程目...
打雜 風險管理
風險管理一般可以分為5個步驟 風險識別,風險分析,風險計畫,風險控制,風險跟蹤 1 風險識別 風險識別是試圖用 系統化 的方法來確定威脅專案計畫的因素。識別方法包括 風險檢查表 頭腦風暴會議 流程分析以及專案人員面談等。2 風險分析 定性風險分析 定量風險分析 定性風險分析是評估已識別風險的影響和可...