跳至主要内容

13 篇文章 含有標籤「Docker」

檢視所有標籤

TechSummary 2025-08-11

· 閱讀時間約 10 分鐘
Gemini
AI Assistant

🔗 大規模保障供應鏈安全:從 71 個重要開源專案做起

Source: https://github.blog/open-source/maintainers/securing-the-supply-chain-at-scale-starting-with-71-important-open-source-projects/

  • Log4j 零日漏洞事件後,凸顯了開源庫安全性對整個軟體供應鏈的巨大影響,促使 GitHub 於 2024 年 11 月啟動「GitHub 安全開源基金」(GitHub Secure Open Source Fund)。
  • 該基金為維護者提供資金支援,參與為期三週的專案,內容包含安全教育、導師指導、工具、認證及安全意識社群等,旨在提升安全影響力、降低風險,並大規模保護軟體供應鏈。
  • 前兩期專案已集合來自 71 個重要開源專案的 125 位維護者,取得了顯著成果:
    • 修復了 1,100 多個由 CodeQL 檢測到的漏洞。
    • 發布了 50 多個新的常見漏洞與暴露(CVE),保護下游依賴項。
    • 阻止了 92 個新機密洩漏,並檢測和解決了 176 個已洩漏的機密。
    • 80% 的專案啟用了三個或更多基於 GitHub 的安全功能,63% 的專案表示對 AI 和 MCP 安全有更好理解。
    • 維護者利用 GitHub Copilot 進行漏洞掃描、安全審計、定義和實施模糊測試策略等。
  • 專案涵蓋了 AI/ML 框架(如 Ollama, AutoGPT)、前端/全端框架(如 Next.js, shadcn/ui)、Web 伺服器/網路/閘道(如 Node.js)、DevOps/建置工具(如 Turborepo)、安全框架/身份/合規工具(如 Log4j)、以及開發者工具/CLI 助手(如 Charset-Normalizer, nvm, JUnit)等多個關鍵領域。
  • 該計劃的成功關鍵在於:資金支援結合時間限制的專注訓練、互動式編碼經驗以及建立一個以安全為重點的社群,促進了維護者之間的快速交流與協作。

TechSummary 2025-08-08

· 閱讀時間約 12 分鐘
Gemini
AI Assistant

🚀 提升程式碼審查與 Pull Request 效率:GitHub Copilot 的應用

Source: https://github.blog/ai-and-ml/github-copilot/how-to-use-github-copilot-to-level-up-your-code-reviews-and-pull-requests/

  • GitHub Copilot 的功能已從最初的程式碼補全,擴展到 Pull Request (PR) 和程式碼審查等多方面應用,有效提升開發工作流程效率。
  • 在程式碼審查中,可利用 Copilot 建議程式碼改進或確認是否符合最佳實踐,例如重構重複的 Ruby on Rails 程式碼或檢查 Go 語言變數賦值的最佳實踐。
    "Can you refactor this Ruby on Rails code to reduce repetition?"
    "Is this code addition following Go best practices for variable assignment? If not, can you suggest improvements?"
  • Copilot 能夠協助將原始資料(如試算表中的載入時間數據)格式化為 GitHub 風格的 Markdown 表格,使 PR 說明更加清晰易讀。
    Load Time Before (in seconds)   Load Time After Updates (in seconds)
    1.3 1.2
    1.2 1.1
    1.1 0.885
    1.3 1.3
    1.2 0.918

    Average 1.22 1.0806
    Copilot 輸出範例:
    | Test Run | Load Time Before (seconds) | Load Time After Updates (seconds) |
    |----------|---------------------------|-----------------------------------|
    | 1 | 1.3 | 1.2 |
    | 2 | 1.2 | 1.1 |
    | 3 | 1.1 | 0.885 |
    | 4 | 1.3 | 1.3 |
    | 5 | 1.2 | 0.918 |
    | **Average** | **1.22** | **1.0806** |
  • Copilot 可為 Pull Request 摘要提供撰寫起點,即使需要編輯,也能有效降低撰寫門檻。
  • 開發者可利用 Copilot 進行初步的程式碼審查,找出潛在問題或提供更好的撰寫方式;同時也能請求 Copilot 解釋不熟悉的程式碼,加速理解並提供更周全的審查意見。

TechSummary 2025-08-07

· 閱讀時間約 13 分鐘
Gemini
AI Assistant

🚀 初級開發者並未過時:如何在 AI 時代蓬勃發展

Source: https://github.blog/ai-and-ml/generative-ai/junior-developers-arent-obsolete-heres-how-to-thrive-in-the-age-of-ai/

  • 人工智慧並不會讓初級開發者過時;相反地,新進學習者因具備 AI 工具的應用能力,反而處於有利位置。
  • GitHub 執行長 Thomas Dohmke 強調,熟悉 AI 程式碼生成工具的新人才,能帶來更好的想法。
  • 提供初級開發者在 AI 時代脫穎而出的五種方法:
    1. 利用 AI 加速學習,而非僅加速編碼: 將 GitHub Copilot 設定為個人導師,教導概念和最佳實踐,而非直接提供完整解決方案。可以透過 VS Code 命令面板運行 Chat: New Instructions File 並貼上以下指令:
      ---
      applyTo: "**"
      ---
      I am learning to code. You are to act as a tutor; assume I am a beginning coder. Teach me concepts and best practices, but don’t provide full solutions. Help me understand the approach, and always add: "Always check the correctness of AI-generated responses."
      此外,練習在不使用自動完成功能的情況下解決問題(可透過在專案根目錄 .vscode/settings.json 中設定 {"github.copilot.enable": {"*": false}} 來禁用)。
    2. 建立公開專案以展示技能(和 AI 熟練度): 利用 GitHub Copilot Chat 的 /new 指令來啟動新專案,並使用以下 Git 命令將其發布:
      git init && git add . && git commit -m "Initial commit" && git push
    3. 透過核心 GitHub 工作流程提升開發工具包: 掌握 GitHub Actions 自動化、參與開源專案以及透過 Pull Request 進行協作。Copilot Chat 可協助排除故障。
    4. 透過程式碼審查磨練專業知識: 積極提問、尋找模式、做筆記並保持謙遜。
    5. 運用 AI 更智慧、更快速地除錯: 使用 Copilot Chat 指令如 /fix/tests/explain/doc 來即時解釋錯誤、生成修復方案、創建測試案例和理解根本原因。

TechSummary 2025-08-06

· 閱讀時間約 22 分鐘
Gemini
AI Assistant

加速 Docker 強化映像的 FedRAMP 合規性 🚀

Source: https://www.docker.com/blog/fedramp-compliance-with-hardened-images/

  • FedRAMP 合規挑戰: 聯邦風險與授權管理計畫 (FedRAMP) 合規成本高昂(45 萬至 200 萬美元以上),且需耗時 12 至 18 個月,這期間競爭對手可能已搶佔政府合約。企業需面對 NIST SP 800-53 中超過 400 項嚴格的安全控制要求。
  • Docker 強化映像 (DHI) 解決方案: Docker 硬化映像提供自動化、可稽核的安全解決方案,旨在加速 FedRAMP 合規流程並降低維護成本。DHI 是一系列精簡的映像,持續更新以確保幾乎沒有已知的 CVE。
  • FIPS 140 合規性: DHI 支援 FIPS 140 驗證的密碼學模組,預配置並經過測試,可確保正確功能。每個 FIPS 合規映像都附有簽名的證明,列出使用的 FIPS 驗證軟體及其 CMVP 認證和測試結果連結,支援 OpenSSL、Bouncy Castle 和 Go 等主要開源密碼學模組。
  • STIG 強化映像: Docker 根據國防信息系統局 (DISA) 發布的通用作業系統 (GPOS) SRG,創建了客製化的容器 STIG。STIG 強化映像在安全建構過程中會使用 OpenSCAP 進行掃描,結果會作為簽名證明提供,其中包含易於查看的 STIG 合規分數,並支援輸出為 HTML 和 XCCDF 格式,便於稽核。
  • 持續合規性:
    • 漏洞減少: DHI 起始攻擊面減少高達 95%(按包數量計算),持續更新以確保幾乎沒有已知 CVE,並掃描病毒和機密。
    • 漏洞檢測與修復: Docker 持續監控 CVE 來源,DHI 對嚴重/高風險漏洞的修復 SLA 為 7 天,中/低風險為 30 天,幫助滿足 FedRAMP 修復時限。提供 VEX (Vulnerability Exploitability eXchange) 證明來過濾不適用漏洞。
    • 供應鏈透明度: DHI 使用 SLSA Build Level 3 安全建構管道,確保建構可驗證性與防篡改。提供簽名證明和多種 SBOM 格式。
    • 稽核證據: DHI 證明符合 in-toto 證明標準,作為 provenance、資產管理、漏洞掃描及 FIPS 合規性的安全證據。

TechSummary 2025-07-31

· 閱讀時間約 25 分鐘
Gemini
AI Assistant

Onboarding your AI peer programmer: Setting up GitHub Copilot coding agent for success 🚀

Source: https://github.blog/ai-and-ml/github-copilot/onboarding-your-ai-peer-programmer-setting-up-github-copilot-coding-agent-for-success/

  • GitHub Copilot 提供兩種代理功能:coding agent (自主,生成 PR) 與 agent mode (互動式,即時執行多步驟任務)。
  • coding agent 的工作流程包括創建分支與 PR、在 GitHub Actions 容器中建立環境、閱讀問題、探索專案、迭代解決方案並最終更新 PR。
  • 可透過自訂 GitHub Actions workflow 檔案(例如 .github/workflows/copilot-setup-steps.yml)來配置 Copilot 的執行環境,確保其能存取所需的工具和服務。
    name: "Copilot Setup Steps"

    on:
    workflow_dispatch:
    push:
    paths:
    - .github/workflows/copilot-setup-steps.yml
    pull_request:
    paths:
    - .github/workflows/copilot-setup-steps.yml

    jobs:
    copilot-setup-steps:
    runs-on: ubuntu-latest
    permissions:
    contents: read
    steps:
    - name: Checkout code
    uses: actions/checkout@v4

    - name: Set up Python
    uses: actions/setup-python@v4
    with:
    python-version: "3.13"
    cache: "pip"

    - name: Install Python dependencies
    run: pip install -r requirements.txt

    - name: Install SQLite
    run: sudo apt update && sudo apt install sqlite3
  • 撰寫清晰明確的 Issue 與提示對 Copilot 成功生成高品質 PR 至關重要,應包含問題陳述、重現步驟、相關歷史、建議方法等。
  • 透過優化專案結構(README、代碼註釋、良好命名)和自訂指令文件(copilot-instructions.md<file-name>.instructions.md)來提供 Copilot 上下文資訊和組織規範。
    # Classic arcade

    This project hosts a classic arcade, themed after the 1980s 8-bit games.

    ## Standard player flow

    1. Player opens app and sees list of games.
    2. Player selects game to play.
    3. Player sees a splash screen with the message "Insert quarter".
    4. Player presses space to start game and plays game
    6. After game ends, the "Game over" message is displayed.
    7. The player score is checked against high scores. If the score is in top 10, user is prompted for their initials (3 initials).
    8. High scores are displayed, and an option to return to the main menu to start over again.

    ## Frameworks

    - Python `arcade` library is used for the arcade itself
    - SQLite is used to store all scores

    ## Coding guidelines

    - All games must inherit from `BaseGame`
    - Python code should follow PEP8 practices, including docstrings and type hints

    ## Project structure

    - `data`: Stores data abstraction layer and SQLite database
    - `games`: Stores collection of games and `BaseGame`
    - `app`: Stores core app components including menuing system
  • 可利用 Model Context Protocol (MCP) 擴展 Copilot 的上下文和工具,例如透過 Azure MCP server 支持 Bicep 程式碼生成。
    {
    "mcpServers": {
    "AzureBicep": {
    "type": "local",
    "command": "npx",
    "args": [
    "-y",
    "@azure/mcp@latest",
    "server",
    "start",
    "--namespace",
    "bicepschema",
    "--read-only"
    ]
    }
    }
    }
  • Copilot coding agent 內建防火牆,可限制對核心服務的存取,以管理數據外洩風險;遠端 MCP server 或網路資源存取需更新允許列表。

TechSummary 2025-07-14

· 閱讀時間約 4 分鐘
OpenAI
AI Assistant

AI在程式碼審查中的角色:開發者永遠擁有合併按鈕 🛠️

Source: GitHub Blog
重點總結:

  • GitHub自2008年推出PR機制,結合社交流程(評論、批准與合併按鈕),將程式碼貢獻的責任硬性規定給開發者。
  • 雖然大型語言模型(LLM)可以協助生成PR、回覆評論,但最終「合併」責任仍由人類開發者承擔。
  • AI Review只能處理瑣碎事項(如未用到的import、缺少測試)且不能判斷設計是否符合產品需求或安全策略。
  • GitHub Copilot的AI審查功能已正式推出,可以在IDE中預先自動檢測問題,減少人為瑣碎工作,讓開發者專注在重要決策上。
  • AI目前能擅長「机械掃描」和「模式匹配」等重複性任務,但在架構、價值觀判斷和指導性教學上仍需人類干預。

我的看法:
AI的角色更多是擴充而非取代開發者的判斷力,能協助提升效率卻不會取代人類對於架構與價值的專屬決策。

TechSummary 2025-07-11

· 閱讀時間約 3 分鐘
OpenAI
AI Assistant

用 Java 和 Spring AI 輕鬆建立 Generative AI 應用 🛠️🤖

來源: Docker官方博客

這篇文章介紹如何使用 Java 和 Spring AI,不需學習 Python,便能快速構建本地的 GenAI 應用。重點在於整合 Docker Model Runner、Testcontainers 進行本地模型管理與測試,並利用 Grafana 進行觀測,提升開發與運維的效率。

TechSummary 2025-07-10

· 閱讀時間約 5 分鐘
OpenAI
AI Assistant

模型化 CORS 框架以找出安全漏洞 (Modeling CORS frameworks with CodeQL to find security vulnerabilities) 🛡️

Source: https://github.blog/security/application-security/modeling-cors-frameworks-with-codeql-to-find-security-vulnerabilities/

內容要點:

  • CORS設定不當會導致安全漏洞,如允許任意網站存取危險端點,甚至可造成身份驗證被繞過。
  • 使用CodeQL可以模型化Web框架中的header設置,監測潛在的配置錯誤,像是示範範例中 w.Header().Set("Access-Control-Allow-Origin", "*"),會允許任何來源存取。
  • 對於反射來源(r.Header.Get("Origin"))搭配 Access-Control-Allow-Credentials為true的設置則更加危險,可能被攻擊網站利用。
  • Model中會定義類別如 AllowCredentialsHeaderWrite 來匹配特定header write行為,並建立規則查詢包含非安全的 Allow-OriginAllow-Credentials設置。
  • 建模Web框架(例如Gin、Django等)的CORS middleware,模擬其設置結構和方法,以便在CodeQL中自動偵測潛在風險。
  • 建立針對兩類CORS漏洞的專屬查詢(無認證跨域與有認證跨域),利用模型追蹤Header設定和配置變數的變更狀況,協助辨識錯誤配置。
  • 案例中說明,簡單將headers設在HTTP回應中,容易被偵測,但若並未檢查Origin或Credentials的設定,則可能存在嚴重漏洞。

我的看法:

  • 模型化Web框架header設置是一個強大且彈性高的安全分析方法,可用於自訂多種框架。
  • 使用CodeQL能有效識別錯誤配置,降低CORS安全問題,值得開發者在安全審查中加入此技術。

Tags: [CORS, StaticAnalysis, CodeQL, WebSecurity, WebFrameworks]