選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
3 分鐘閱讀時間 (508 個字)

每日小知識 #13 - Container 資安(4)

shutterstock_198004562

可重覆產生且可信任的 Dockerfile

如何才能讓 某一個版本 的 Dockerfile 產出來的 Image 都是一樣的呢?如果可以這麼做的話:

  • 可以提高可信度,能證明我們的 Image 就是從某一份原碼建置後再 docker build 產出的結果
  • 能夠在新版本(比方說 Canary Release) 發生問題時,正確退到某個版本

當然,要達到完美的境界是不太可能的,但有以下幾個原則可以遵循:

  • FROM 所引用的 Image,一定要加上 Tag,指定特定版本,e.g. FROM redis:6.09
    • 如同前面幾篇有提過,latest 這個 Tag 如果在本機已經有了,它是不會自動更新的喔!
    • 如果要再更嚴謹一點,可以使用 Image 的 digest,e.g. FROM redis@sha256:3479bbcab…(略),這樣可以避免某個 Tag 名稱 底下的 Image 被惡意抽換。
  • 在使用套件安裝包(yum/apt/dnf…等)的時候,最好加上版本
    • 以 CentOS8 上安裝 openjdk 為例,yum search 的結果如下圖:
    • 假設我們要安裝的是 java 11 的 jdk,那可以再透過 yum --showduplicates list 這個指令,看看它有多少個分支:
    • 選定版本後,我們可以再用 yum-utils 的 repoquery 確認一下整個組起來是怎樣:
    • apt 的方法也差不多囉,大家可以自行找找,
  • 下載任何軟體時驗明其身份
    • 這一點特別重要,否則很容易受到中間人攻擊
    • 承上,前面提過的 checksum 或是 數位簽章 就是個很好的檢驗方式喔
    • 通常官方提供的 Image 都會有檢驗的機制,以 nodeJS 為例:

      (圖片出處: Using Docker)
      • 1.取得簽署要下載的 nodejs 的 GPG 金鑰
      • 2.接著是下載 nodejs 的 tarball
      • 3.然後下載 checksum
      • 4.透過 GPG 檢驗 checksum 真的是由步驟一的金鑰簽署的
      • 5.透過 shasum256 這個工具檢查是否跟我們下載的 tarball 是一致的
    • 假設官方沒有提供這麼完整的驗證機制,我們也可以透過自己產 checksum,自己驗。

以上就是今天的小知識,希望大家到目前為止都還 OK,因為明天開始會有更多更多資安相關的設定要說明,加油。

References:

  1. yum 安裝特定版本
  2. apt 安裝特定版本
每日小知識 #14 - Container 資安(5)
[前端-小分享]在JavaScript裡多元使用 Array-Part1

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/05/04, 週六

Captcha 圖像