GH-500 數位教科書 開啟互動版

GH-500 名詞庫

D1 GitHub 安全套件、功能與生態系

GitHub Secret Protection
需購買的安全套件,包含 secret scanning 使用者警示、push protection、delegated bypass、custom patterns 與 AI 偵測的 secret。
GitHub Code Security
需購買的安全套件,包含 code scanning、CodeQL CLI、Copilot Autofix、AI Scan、dependency review 與 security campaigns。
Security overview
位於組織 Security and quality 頁籤,檢視整個組織的安全趨勢與風險,資料以各 repository 的預設分支為準。
Security campaign
把一批警示分組分享給開發者的修復活動,有具名聯絡人,code scanning 警示會觸發 Copilot Autofix。
Security manager
組織層級角色,擁有所有 repository 的讀取權限與所有安全警示的寫入權限,並能設定安全功能。
Delegated alert dismissal
限制誰能直接關閉警示:有寫入權限的使用者須提出請求,由擁有者或 security manager 核准或拒絕。
Dependency graph
列出 repository 的直接與間接相依性,是 dependency review 與 Dependabot 的資料基礎,可匯出為 SPDX 相容的 SBOM。
Artifact attestation
經密碼學簽署的聲明,說明建置的來源與工作流程,或相關的 SBOM;不保證軟體安全。
Supply chain attack
攻擊者利用相依性的弱點插入惡意程式碼或竊取資料。
Immutable releases
發布後禁止更動 release 的資產與 Git tag;預設不啟用,發布時自動產生 attestation。
直接相依性
直接寫在 manifest 或 lockfile 中的相依性。
間接(transitive)相依性
專案不直接指定、但被其他相依性使用的相依性。
Risk 檢視
Security overview 的檢視之一,用來找出風險最高的 repository。
Coverage 檢視
Security overview 的檢視之一,用來確認各 repository 是否啟用安全功能;解讀「沒有警示」前要先看它。
Enablement 檢視
Security overview 的檢視之一,呈現各團隊採用安全功能的速度。
Assessments 檢視
Security overview 的檢視之一;免費的 secret risk assessment 讓 GitHub Team 組織在未購買套件時也能評估外洩風險。
稽核日誌(合規資料)
Security overview 儀表板的指標會隨時間變動;需要一致資料做合規或稽核時,官方建議改用稽核日誌。
預防導向功能
在變更進入預設分支或 repository 之前運作的功能:push protection、pull request 上的 code scanning 與 dependency review。
Dependency submission API
生態系不被 manifest 分析支援時,用來提交相依性的 API;建置階段提交的資訊可補足間接相依性。
自訂安全角色
需要比 security manager 更窄或更寬的權限時建立,例如只管理 secret scanning 結果與繞過請求。

D2 設定與使用 Secret Protection

Secret scanning
掃描所有分支的完整 Git 歷史、issue 與 pull request 文字、Discussions、wiki 與 secret gist,找出寫死的憑證並產生警示。
Push protection
在推送當下偵測疑似 secret 並阻擋,要求貢獻者移除後重推;與事後才產生警示的 secret scanning 不同。
Partner patterns
偵測服務供應商發行憑證的樣式,屬於預設的偵測;偵測到的 secret 會直接回報給供應商處理,不會顯示在 repository 警示中。
Validity checks
確認偵測到的 secret 是否仍然有效,協助依風險排定處理順序。
Delegated bypass
把繞過 push protection 的權限收斂給指定對象;其他貢獻者的繞過請求送審,並在 7 天後過期。
Exemption
委派繞過下的一種授權,讓指定對象的推送完全不觸發 push protection,適合可信的自動化帳號。
Custom pattern
以規則運算式自訂的 secret 樣式,可定義在 repository、組織或企業層級;先 dry run 檢視誤判,發佈後才能啟用 push protection。
Non-provider patterns
偵測不屬於特定供應商的 secret,例如私密金鑰、連線字串與一般 API 金鑰。
Generic patterns
push protection 支援的樣式之一,涵蓋私密金鑰、資料庫連線字串等結構化 secret。
AI 偵測的 secret
公開預覽,針對密碼這類沒有固定格式的 secret;push protection 的 REST API 途徑不含這一類。
使用者層級的 push protection
只在 GitHub.com、綁定個人帳號、預設啟用,阻止你把 secret 推到公開 repository;除非 repository 層級也啟用,繞過時不產生警示。
Bypass privileges
被授權者在被阻擋時可自行繞過 push protection,並能審查、核准他人的繞過請求。
繞過 push protection 的三個理由
It's used in tests、It's a false positive 與 I'll fix it later;前兩者建立已關閉的警示,最後一個建立開啟中的警示。
Dry run(自訂樣式)
Save and dry run 找出符合項但不建立警示;結果最多顯示 1,000 筆,用來檢視誤判後再發佈。
Secret format
自訂樣式表單的必填欄位,以規則運算式描述 secret 的格式。
Publish 與 Enable(自訂樣式)
樣式發佈後,才能按 Enable 對它啟用 push protection;組織層級只對已啟用 push protection 的 repository 生效。
先撤銷後清歷史
外洩的 secret 應視為已外洩並先撤銷或輪替;憑證失效後改寫 Git 歷史通常不必要,而且耗時。
通報 GitHub 撤銷 PAT
私有 repository 中外洩的 GitHub personal access token 可通報 GitHub 撤銷(公開預覽);通報前宜先輪替憑證。
繞過請求 7 天過期
委派繞過中,不在名單上的貢獻者提出的繞過請求進入審查流程,7 天後過期。

D3 設定與使用供應鏈安全

SBOM
專案相依性的正式、機器可讀清單;GitHub 可從 dependency graph 匯出 SPDX 格式,內容不含 dependents。
Dependabot alerts
在 GitHub Advisory Database 新增 advisory,或 dependency graph 改變時,針對預設分支發出的有弱點相依性警示;只有經 GitHub 審查的 advisory 會觸發。
EPSS
Exploit Prediction Scoring System,弱點被利用機率的分數;官方建議與嚴重度、範圍、關係一併用來排定警示優先順序。
Dependabot security updates
為有可用修補的 Dependabot 警示自動開 pull request,更新到包含修補的最低版本;合併後關閉對應警示。
Dependabot version updates
依 dependabot.yml 讓相依性保持最新版本,不論有無弱點;預設有 3 天的 cooldown,security updates 不受影響。
Auto-triage 規則
在通知寄出前自動關閉、延後或重新開啟 Dependabot 警示的規則,分為 GitHub 預設規則與自訂規則。
Dependency review
在 pull request 顯示相依性變動與弱點資料,於引入前攔下問題;要先啟用 dependency graph。
Dependency review action
在 pull request 比較相依性差異的 GitHub Action;預設發現有弱點的套件就失敗,allow-licenses 與 deny-licenses 只能擇一。
Dependents
依賴你的 repository 與套件;只在公開 repository 列出,私有 repository 不回報。
Show paths
dependency graph 中展開間接相依性,查看是哪條路徑把它帶進來。
GitHub Advisory Database
Dependabot 警示的弱點資料來源;只有經 GitHub 審查的 advisory 會觸發警示。
SPDX
SBOM 匯出採用的業界標準格式;內容不包含 dependents。
Grouped security updates
在同一個生態系內把多個相依性的 security updates 合成一個 pull request;不跨生態系,也不與 version updates 合併。
Cooldown
Dependabot version updates 預設 3 天,新版本發布後 3 天才會被考慮;不適用於 security updates。
Reachability analysis
選用功能(公開預覽),判斷應用程式能否到達有弱點的相依性程式碼;目前支援 npm、pnpm、Yarn 的 JavaScript 與 TypeScript repository。
resolution:auto-dismiss
被 auto-triage 規則自動關閉的警示的關閉原因;仍可查詢與重新開啟。
Dependabot 警示指派
有寫入權限者可把警示指派給協作者、團隊或 AI agent;需要 Code Security 或 Advanced Security 授權,公開 repository 也一樣。
fail-on-severity
dependency review action 的選項,設定達到哪個嚴重度(critical、high、moderate、low)就失敗。
allow-licenses 與 deny-licenses
dependency review action 的授權選項;兩者只能擇一使用。
Enterprise Open-Source License Manager
企業層級角色,可接收並回應授權合規的關閉請求;授權合規限 Enterprise Cloud 且啟用 Code Security。
Compatibility score
Dependabot security updates 可能附帶的分數,是同一更新在其他公開 repository CI 通過的百分比。

D4 設定與使用 Code Security

CodeQL
GitHub 開發的程式碼分析引擎;先建立 CodeQL database,再對資料庫執行查詢,結果顯示為 code scanning 警示。
Default setup
最快、最省維護的 code scanning 設定;自動選語言、query suite 與觸發事件,不需維護 workflow 檔。
Advanced setup
需要自訂 Actions workflow(建置、matrix、排程)或使用外部 CI 時採用的 code scanning 設定。
Query suite
一次選入多個 CodeQL 查詢的集合;內建 default、security-extended 與 security-and-quality。
SARIF
Static Analysis Results Interchange Format,以 JSON 為基礎的開放標準;code scanning 支援 2.1.0 的子集。
Security severity
CodeQL 安全警示的 Critical、High、Medium、Low 等級,依 CVSS;有此等級時優先於 severity。
Copilot Autofix
為單一 code scanning 警示產生一個建議修復,由你審查後自行建立 pull request;不消耗 AI credits。
Agentic autofix
把警示指派給 Copilot,由 agent 探索程式碼、產生並驗證修復並開 draft pull request;會消耗 AI Credits 與 Actions 分鐘數。
Tool status page
顯示預設分支上各 code scanning 工具的狀態、檔案涵蓋率與錯誤訊息,是除錯的起點。
CodeQL database
為程式碼建立的資料庫表示;CodeQL 對它執行查詢,結果顯示為 code scanning 警示。
security-extended
default 加上精確度與嚴重度稍低的查詢,可能有較多誤報;可用於 default setup,介面上稱為 Extended。
security-and-quality
security-extended 加上找出可維護性與可靠性問題的查詢;只能用於 advanced setup。
自訂 query suite(.qls)
以 YAML 定義的查詢集,副檔名 .qls;使用自訂 suite 需要 advanced setup。
Build mode
none(不建置)、autobuild(偵測並嘗試建置)、manual(自行定義建置步驟);C/C++、C#、Java、Rust 預設用 none。
Data-flow 警示
顯示資料從來源到使用處每一步的警示;同一弱點的多條路徑歸在同一則警示下。
Affected branches
警示頁面右側顯示警示在其他分支的狀態;警示頁面本身只反映預設分支。
github-codeql-config-file
repository property,指定 CodeQL 設定檔路徑;套用到所有 setup 類型,advanced workflow 明確指定的 config-file 優先於它。
github-codeql-extra-queries
repository property,為組織內相關分析加入額外查詢,不必修改個別 workflow。
Threat model
決定哪些污染資料來源被視為風險;公開預覽,目前只支援 Java/Kotlin 與 C#。
Code scanning merge protection
在 ruleset 加入 code scanning 規則,必要工具發現指定嚴重度警示、分析進行中或未設定時阻擋合併;不會自動啟用 code scanning。
SARIF category
同一 commit 上傳多組結果時,必須為每組指定的唯一識別;CodeQL action 會依 workflow 名稱與 matrix 變數自動設定。
Code scanning results 檢查
pull request 上顯示 code scanning 結果的檢查名稱;error、critical 或 high 嚴重度會使檢查失敗。

D5 安全營運:最佳做法、優先順序與修復

GHSA ID
GitHub 每則 advisory 的唯一識別碼,格式 GHSA-xxxx-xxxx-xxxx,字元取自 23456789cfghjmpqrvwx,字母全小寫。
GitHub-reviewed advisory
對應到支援生態系套件、經 GitHub 審查有效性的 advisory;會產生 Dependabot 警示,未審查與惡意軟體 advisory 不會。
Malware advisory
關於惡意開源套件的 advisory,沒有修復版本,要從專案移除並找替代;多為替換攻擊。
Campaign manager
Security campaign 的主要聯絡人,必須是組織擁有者或 security manager 的使用者或團隊。
CVE
弱點的公開編號;來自 National Vulnerability Database 的 advisory 附有 CVE 連結。
CWE
弱點類型標籤;計算安全嚴重度時,取相關 CWE 所有 CVE 的 CVSS 第 75 百分位。
OSV 格式
GitHub Advisory Database 的 advisory 以 Open Source Vulnerability 格式的 JSON 檔發布。
Unreviewed advisory
直接從 National Vulnerability Database feed 自動發布、未檢查有效性的 advisory;Dependabot 不為它產生警示。
CVSS
弱點嚴重度評分;Advisory Database 支援 CVSS 3.1 與 4.0,分為 Low、Medium/Moderate、High、Critical。
EPSS 百分位
與相同或較低 EPSS 分數的已評分弱點所占的比例;95 百分位表示 95% 的已模型化弱點比它更不可能被利用。
社群貢獻(Analyst)
對 github/advisory-database 提交的 pull request,經 GitHub Security Lab 策展團隊審查;被接受者獲得 Analyst credit。
替換攻擊(substitution attack)
攻擊者在公開 registry 發布與你依賴的第三方或私有套件同名的套件;多數 malware advisory 屬於這類。
Campaign 範本
預先定義的篩選條件,選出一群密切相關的警示;agentic autofix 停用時會加上 autofix:supported。
Campaign 警示上限
一個 security campaign 納入的警示不得超過 1000 則。
Require code scanning results
branch ruleset 規則,為每個必要工具設定警示等級與安全警示等級作為合併條件。
左移(預防性安全)
在變更進入預設分支或 repository 之前就攔下問題,例如 push protection、dependency review 與合併保護。

D6 GitHub 安全套件管理

Security configuration
一組安全功能的啟用設定,可套用到組織內的 repository;控制 repository 層級的功能。
Global settings
控制組織層級的安全設定,由所有 repository 繼承。
Enforced configuration
強制的 security configuration;repository 擁有者不能改變它已啟用或已停用的功能,未設定的功能不強制。
removed 狀態
repository 管理員改了與未強制 configuration 衝突的設定;仍關聯但不再繼承全部設定,也不計入涵蓋指標。
detached 狀態
configuration 與 repository 完全斷開;現有安全設定不變,顯示為 No configuration。
Enabled with advanced setup allowed
Default setup 的選項,只在 CodeQL 分析目前沒有執行的 repository 啟用 default setup,讓 configuration 可套用到所有 repository。
預設 configuration
只自動套用到新建立的 repository;轉移進組織的 repository 需手動套用。
CodeQL model pack
擴充 CodeQL 對額外框架與函式庫的辨識;目前是公開預覽,支援 C/C++、C#、Java/Kotlin、Python、Ruby 與 Rust。
生產環境脈絡
整合 Microsoft Defender for Cloud、JFrog Artifactory 或 CI/CD 的資料,協助排定 code scanning 與 Dependabot 警示的優先順序。
attached 狀態
configuration 已套用,repository 繼承所有設定。
failed 狀態
repository 現有設定與 configuration 衝突,無法套用。
removed_by_enterprise 狀態
企業層級的設定變更與已套用的組織設定衝突。
Use as default for newly created repositories
configuration 的 Policy 選項,可選 Public、Private and internal 或 All repositories;只自動套用到新建立的 repository。
Prevent direct alert dismissals
configuration 中啟用委派警示關閉的選項,可分別用於 secret scanning、code scanning 與 Dependabot。
Extended metadata checks
secret scanning 的 configuration 選項,只能在 validity checks 啟用時啟用。
Labeled runner
Dependabot 或 default setup 使用的帶標籤 runner;Dependabot 預設標籤為 dependabot,公開 repository 一律用 GitHub-hosted runner。
AI applications 掃描
global settings 中獨立於 AI Scan 的設定,控制不同的偵測器;啟用 AI Scan 不會啟用它。
不活躍 repository 持續掃描
global settings 選項,讓不活躍 repository 每 30 天繼續掃描;週期固定,不可設定。
批次 script 啟用 advanced setup
對不適用 default setup 的 repository,用 script 把 CodeQL workflow 加到每個 repository;組織需啟用 GitHub Actions。
Configurations REST API
用來建立與管理 security configuration 的 REST 端點,涵蓋組織與企業層級。
repository_security_configuration
稽核日誌事件,記錄 repository 的 configuration 狀態變更。
Private vulnerability reporting
security configuration 中可啟用、停用或保持現狀的選項之一。