Docker | 初探 Distroless Container Image 與 SBOM 資訊安全
Distroless Container 去除非必要工具,只留應用運行所需元件,實現輕量、安全的目的。本文以 .NET 和 Ubuntu Chiseled Image 為例,比較一般與 Distroless Image 的差異。並利用 Trivy、Syft、Grype 等工具,檢視 Image 的 SBOM 和漏洞。
閱讀更多分享軟體開發經驗和技術分享
Distroless Container 去除非必要工具,只留應用運行所需元件,實現輕量、安全的目的。本文以 .NET 和 Ubuntu Chiseled Image 為例,比較一般與 Distroless Image 的差異。並利用 Trivy、Syft、Grype 等工具,檢視 Image 的 SBOM 和漏洞。
閱讀更多使用 RabbitMQ 來建立一個 Event-Driven 的縮網址點擊分析的功能。透過生產者與消費者模型,讓服務與數據分析的行為解耦。避免後續增修數據分析功能時,影響到原本正常的功能。
閱讀更多本文介紹了在 .NET Core 中如何設定及使用 JWT Authentication,包含 Middleware 的設定、JWT Token 的驗證條件設定、產生 JWT Token 的程式、輸出 Authentication 失敗訊息的方式等。
閱讀更多「靈活運用 Docker 打造高效的容器化應用環境」系列的文章之一。記錄在建置 Docker Image 時,如何使用 Multi-Stage build 的方式,有效的減少產出 Artfact 的大小。後續不定期更新內容。
閱讀更多「靈活運用 Docker 打造高效的容器化應用環境」系列的文章之一。記錄了如何在 Ubuntu 之中,進行 Docker 的安裝設定。後續不定期更新內容。
閱讀更多「靈活運用 Docker 打造高效的容器化應用環境」系列的文章之一。本篇文章整理使用 Docker 時,Image 與 Container 常用的基本指令,內容包含查詢、啟動、停止、移除等等。
閱讀更多「靈活運用 Docker 打造高效的容器化應用環境」系列的文章之一。本文探討虛擬機器 (Virtual Machine, VM) 與容器 (Container) 技術的差異。 VM 是從操作系統層虛擬化,建立 Guest OS 環境;Container 則從應用程序層入手,將應用程序打包成映像檔,共用 Host OS。
閱讀更多排除 ASP.NET Core 無限重定向的問題。因系統架構限制 Web API 只能透過反向代理 (Reverse Proxy) 訪問,而反向代理使用 HTTP 訪問 Web API,但因為 Web API 中,使用 UseHttpsRedirection 強制重定向到 HTTPS。最終造成重定向次數過多的情形。
閱讀更多本文介紹如何在 Docker 環境中使用 Let's Encrypt 和 Certbot 申請免費 SSL/TLS 憑證,並設定 Nginx 支持 HTTPS。作法包括直接在 Ubuntu 主機使用 Certbot 配合 volume 掛載申請憑證,以及使用 Certbot 官方 Docker Image 的申請流程。
閱讀更多本文紀錄使用 Docker Compose 在 Digital Ocean Ubuntu VPS 上架設縮網址服務的過程,包括環境設定、服務架構規劃、Docker image 管理、網路與安全設定等。適合想學習如何利用容器技術架設 Web 服務的讀者。
閱讀更多記錄 EF Core Tools 相關操作重點摘要。內容包含 EF Tool 的安裝、DbContext Scaffold 與 code template 的 CLI 指令。
閱讀更多本文探討 EF Core 的 DBContext 與 Entity Type 客制化,透過 CodeTemplate 實現客制化。包含使用 Shadow Properties,以及重寫 DBContext 的 SaveChanges 自動更新欄位。
閱讀更多當 .NET Core 要使用 EF Core 去存取 PostgreSQL 時,可以先使用 dotnet-ef 的工具,協助產生對應 PostgreSQL schema 的 DBContext
閱讀更多分享三種在 EF Core 2.0 後的查詢過濾資料的方法。並著重說明 EFCore 2.0 後提供的 Global Query Filter 功能,它可以讓開發人員在模型建立期間設定預設的查詢過濾條件,這樣在所有的查詢中都會自動套用這個過濾條件,簡化查詢程式碼並避免查詢錯誤。
閱讀更多在 ASP.NET Core 中,當封裝依賴注入(DI)的註冊行為時,同時使用外部參數來建立不同的對象,本文介紹了兩種方法:直接使用 IHttpContextAccessor 和封裝 DI 所需的參數。並推薦使用後者,在不公開服務實作的前提下,通過介面獲取外部參數,以提高程式碼的可維護性和彈性。
閱讀更多在大多的情況下,服務都是把 Log 存到檔案之中,若是要收集 Log 資料,一是直接改寫程式的 Log 的方式,不然就是使用 agent 來收集 Log 資料。分享一個奇淫怪招,在不使用 agent 與調整程式主體的前提下,讓 NLog POST Log 到 Loki。
閱讀更多如何運用 ChatGPT 進行 Pair-Programming,並以使用 Flutter 撰寫 APP 為例,如何利用 ChatGPT 協助程式設計、概念詢問、程式碼修改與實作等方面,並提供注意事項。並提到 ChatGPT 在回答問題時有時會回答與問題無關的內容,使用者需要在 prompt 中加入回答的限制。
閱讀更多本篇文章探討在呼叫 API 時遇到非預期的 HTTP Status 狀況,並針對 415 Unsupported Media Type 錯誤,說明錯誤原因與其解法。如果遇到類似的問題,這篇文章或許可以提供參考。
閱讀更多在使用 Docker 封裝應用程式時,有時因為程式需要使用一些機敏性資料,例如連線字串及憑證資料等,就需要額外處理。在接下來的內文中,以 ASP.NET Webapi 為例,簡述如何在確保使用容器技術的同時,又能保護機密性資料不被外人所知道。
閱讀更多