平台與維運 2026 年 5 月 5 日

2026-05-05 — HCP Terraform Infragraph 知識圖譜、GitHub eBPF 部署安全

primary=https://www.hashicorp.com/blog/introducing-hcp-terraform-powered-by-infragraph-in-public-preview primary=https://github.blog/engineering/infrastructure/how-github-uses-ebpf-to-improve-deployment-safety/

HCP Terraform Infragraph:以事件驅動知識圖譜統一多雲基礎設施可見性

HashiCorp Blog · 2026-05-04

HashiCorp 在 2026 年 5 月 4 日宣佈 HCP Terraform powered by Infragraph 進入公開預覽,為合資格的美國 HCP Terraform 客戶開放。Infragraph 是一個集中式、事件驅動的知識圖譜(knowledge graph),設計目標是統一跨混合雲與多雲環境的基礎設施可見性,解決基礎設施資料孤島(infrastructure data silos)問題。

核心架構:知識圖譜作為基礎設施真相來源

Infragraph 透過直接連接主要雲端供應商(AWS、Azure、GCP)及本地系統,即時維護資產資訊並在基礎設施狀態變更時動態更新。這區別於傳統靜態庫存工具——傳統工具需要定期掃描,Infragraph 則以事件驅動模式持續反映真實狀態。

圖譜節點代表基礎設施資源,邊代表資源間的依賴關係與所有權。這個結構讓 Infragraph 能夠回答跨服務的關聯查詢,例如「哪些 Lambda 函數依賴這個 RDS 實例」或「這個 IAM 角色被哪些服務使用」。

查詢能力與 AI 整合

Infragraph 提供自然語言查詢介面,面向 CloudOps、平台工程和資安團隊。支援的查詢場景包括:

  • 識別未被 Terraform 管理的遊離資源(unmanaged resources)
  • 找出使用過時 Terraform 版本的工作空間
  • 合規性報告與配置漂移(drift)管理
  • 資源所有權追蹤

HashiCorp 將 Infragraph 定位為為 AI 代理人提供可信任、自動化工作流程基礎的統一知識層——AI 代理人在執行基礎設施操作前需要精確的上下文,知識圖譜提供了這個上下文的結構化來源。

與 Terraform Search 的整合

Infragraph 支援透過 Terraform Search 注入自訂資料流,讓組織能把 Terraform 以外的自有資源(例如 CMDB 資料、傳統系統資源)納入圖譜。這個可擴充的資料攝入機制確保 Infragraph 不限於 Terraform 管理的資源,而是涵蓋整個基礎設施生態系。

原始來源:HashiCorp Blog


GitHub 如何用 eBPF 偵測部署循環依賴並強化部署安全

GitHub Engineering Blog · 2026-04-16

GitHub 工程團隊發表了一篇技術文章,詳述如何使用 eBPF 在 cgroup 層級攔截部署腳本的網路流量,自動偵測並阻止對 github.com 本身的循環依賴(circular dependency)。這個問題有個著名的自我指涉性質:「要部署 GitHub,我們需要 GitHub 本身正常運作。」

三類循環依賴

文章識別了三種導致部署失敗的依賴模式:

  • 直接依賴:部署腳本從 github.com 拉取外部資源
  • 隱性依賴:工具在執行時自動檢查更新(例如 bundler、npm 的版本檢查)
  • 傳遞依賴:內部服務觸發外部呼叫,錯誤在服務鏈中傳播

eBPF 實作架構

解決方案分為兩層 eBPF 程式:

  • `BPF_PROG_TYPE_CGROUP_SOCK_ADDR`(connect4 程式):攔截 cgroup 內的 socket 建立 syscall,將所有 DNS 查詢(port 53)重導向到本地代理程式
  • `BPF_PROG_TYPE_CGROUP_SKB`:在 cgroup 網路出口層監控並過濾外部流量

本地代理程式透過 eBPF Maps 與核心通訊,接收 DNS 查詢後對照阻擋清單評估,並捕獲 DNS Transaction ID 與 PID 以關聯出是哪個命令觸發了被阻擋的請求。實作使用 cilium/ebpf Go 函式庫簡化核心整合,無需手動撰寫 BPF 字節碼載入邏輯。

// 示意:eBPF Map 結構(DNS 查詢追蹤)
struct dns_query_key {
    __u32 pid;
    __u16 txid;
};
struct dns_query_val {
    char cmdline[256];
    char domain[256];
};

整個系統僅作用於部署腳本所在的 cgroup,不影響生產工作負載的網路行為。六個月推行後,系統能在事故發生前自動偵測問題依賴,並提供具體的命令與域名資訊,大幅縮短除錯時間。

原始來源:GitHub Engineering Blog


End of article
0
Would love your thoughts, please comment.x
()
x