GitLab 12.0釋出,大力加強安全功能,包括可視審閱和依賴列表
2022-05-23由 蟲蟲搜奇 發表于 林業
如何把審閱的內容刪除
日前Gitlab部落格宣佈釋出GitLab的又一個里程碑大版本12。0。該版本主推基於全棧DevOps的全供應鏈安全DevSecOps,從而實現真正意義上的開發,運維和安全的有機整合。另外程式碼審閱一直是Gitlab比較重點突擊加強的功能新版本在視覺化方面做了很多事情,可以極大快速提高程式碼審閱流程。另外還有專案依賴列表、基於IP ACL限制能安全功能方面的功能,更多的功能請跟著蟲蟲一起探索。
主要功能
視覺化審閱(STARTER及以上)
GitLab在使用者級別整個單個使用者的合併請求並自動建立審閱預覽介面(Review App)。該功能可以讓每一個使用者都能知道設計或UX是如何改變的。
GitLab 12。0在Review App中加入將視覺化審閱工具直,拓展變更審議的能力。透過一個小程式碼片段,使用者可以使設計人員,產品經理和其他相關人員能夠快速提供有關合並請求的反饋,而無需離開應用程式。
專案依賴列表(ULTIMATE版本)
ULTIMATE版本新版本在專案左側邊欄選單可以列出專案的依賴關係列表(有時稱為物料清單或物BOM)。
BOM可以表明專案中包含哪些元件,安全團隊和合規性團隊通常會審查這些依賴的元件確保沒有安全問題。可以瀏覽相關報告,並且支援以JSON格式匯出。
IP黑名單設定(ULTIMATE版本)
限制Gitlab介面的訪問一直都是大家很急需的功能,新版本商業版本中支援在Gitlab中進行IP(段)限制,加入黑名單機制限制訪問IP,設定更加靈活,可以自建例項可以在組級別上設定限制。(當然可以透過nginx進行IP限制,方法需要可以聯絡)
檔案同步到Web終端(ULTIMATE版本)
在GitLab 12。0中,Web IDE中的更改可以自動同步到Web終端,在提交更改之前,可以在Web終端中對其進行測試。該功能可以降低新貢獻者的入門門檻,因為他們無需安裝專案的本地依賴項即可檢視,編輯和測試。
JupyterHubGit整合
透過GitLab的Kubernetes整合部署JupyterHub是一種簡單方便地Jupyter Notebook環境構建。利用該環境可以建立和實時程式碼分享,視覺化、執行以後books檔案。
GitLab 12。0中如果透過Gitlab、K8s部署JupyterHub到叢集時,會自動安裝配置JupyterLab的Git擴充套件。然後透過Git對環境進行完全版本控制,在Jupyter中執行Git命令。可以透過左側面板上的Git選項卡或透過Jupyter的命令列提示符執行。
。gitlab-ci。yml多extends支援
透過extends關鍵字,把不同內容分割為不同檔案在引入,可以保持使用者CI/CD配置檔案整潔。在GitLab 12。0中,可以允許使用者在單個作業中包含多個擴充套件片段來改進此功能,並且透過多個擴充套件,可以實現整潔簡化的CI配置(處女座管理員必備)。
可摺疊的作業日誌
在GitLab 12。0中新添加了GitLab CI/CD作業擴充套件和摺疊日誌的輸出。使用者可以更輕鬆地除錯作業中的某些步驟,並在需要時瀏覽整體步驟。
檢視和完善漏洞資料庫(ULTIMATE版本)
gitlab公開了漏洞資料庫專案(/gitlab-org/security-products/gemnasium-db)。使用者可以檢視具體條目並驗證感興趣的漏洞,也支援使用者一起參與完善該咯多幹資料庫。
所有成員資格鎖定到LDAP(PREMIUM及以上)
依靠LDAP的組織通常需要於GitLab同步以進行許可權管理。在GitLab 12。0中,例項可以阻止具有例項級設定的非管理員在LDAP之外進行許可權更改。透過該方法,具有合規性的組織可以使用這個選項來確保LDAP中的許可權對映到Gitlab例項,而不能由非例項管理員的使用者修改。
GitLab Insight(ULTIMATE版本)
GitLab Ultimate 11。9(功能標誌)中引入的GitLab Insights現在在GitLab Ultimate 12。0中預設啟用。
可以統計專案中重要的資料的統計,比如給定時間段建立/關閉的問題,合併請求的平均合併時間等等。
改進了管道間變數傳遞的支援
在GitLab 11。8中,引入了從上游橋接作業觸發下游管道的功能。還介紹了將變數傳遞給下游管道的基本支援。在GitLab 12。0中新增加支援將當前環境變數傳遞到下游管道。可以允許使用者向下遊管道提供上下文以及提交,合併請求或觸發它的管道的其他細節。
組級別,預設啟用依賴關係代理(PREMIUM及以上)
在GitLab 11。11中,啟動了依賴代理的MVC,它允許使用者下載和快取Docker映象,以便更快,更可靠地下載。在GitLab 12。0中,在組級別預設啟用了該功能。
透過API刪除Container Registry標籤
Container Registry API允許GitLab使用者以程式設計方式輕鬆管理註冊。GitLab 12。0中更新了許可權模型,以允許開發人員刪除標籤。
啟用Git bitmap快取以加速重新打包
在GitLab 12。0中,當重新打包Git儲存庫時,bitmap快取將儲存在bitmap索引中。快取提高了重打包效能。(3。5。0之前的JGit版本與bitmap不相容)
GitLab無伺服器功能與現有的Knative整合
在此版本之前,GitLab無伺服器功能只能在透過GitLab安裝的Knative上使用。在GitLab 12。0中以安裝的Knative被GitLab Serverless利用。可以手動新增現有Knative叢集,將相關的無伺服器模板新增到專案中。所以GitLab Serverless可與託管的Knative產品一起使用,例如Google的GKE上的Cloud Run或在IBM託管的Knative服務。
從環境儀表板連結到外部儀表板
從GitLab 12。0開始,可以直接從GitLab的環境儀表板中提供並輕鬆訪問外部儀表板。
全新的討論執行緒設計
現有的用於討論合併請求和問題的設計涉及許多框和邊界,難以對對話進行跟蹤。在新版本中,對此做了重新設計來增強使用者的討論體驗。
Docker for DAST無需Docker即可執行(ULTIMATE版本)
動態應用程式安全性測試(DAST)不再需要在Docker中使用Docker來執行。因此,DAST Docker映象(3GB)現在將在Runners上快取。(注意映象每週更新一次,因此快取將在每週一失效)。
組級別郵件通知
在12。0中,添加了為群組通知設定電子郵件地址的功能。可以讓使用者將組通知傳送到不同的電子郵件地址。例如,工作組的工作電子郵件地址和個人組的個人電子郵件地址(個人設定專案裡面有電子郵件選單用以新增郵件地址)。
新增漏洞解除原因(ULTIMATE版本)
在解除掃描程式發現的漏洞時,新新增一個欄位可用於新增詳細說明此漏洞被解除的原因。
這將使安全團隊和開發人員能夠檢視歷史記錄並瞭解未修復專案的原因。
防止非管理員刪除專案
由於審計等原因可能希望確保專案(可能包括儲存庫中的重要程式碼)只能存檔,而不會被刪除和永久丟失。新版本可以透過例項級設定來防止非管理員刪除專案。
破壞主倉庫構建時電子郵件通知
GitLab Pipeline電子郵件服務整合允許使用者在構建完成和失敗時候透過電子郵件警報。之前,使用者需要自行訂閱才能收到構建失敗的通知。在新版本中,添加了僅在專案的預設分支(master)上傳送失敗通知的選項。
GitLab CI/CD中的所有新專案,預設使用更快的淺克隆
自GitLab 8。9起,GitLab CI/CD透過在作業定義中指定GIT_DEPTH變數來支援淺git克隆。新版本中添加了在專案級別設定clone深度的功能,專案維護者可設定預設為淺層克隆。淺Git克隆比每次克隆整個Git儲存庫更快,如果CI/CD作業設定為構建最新程式碼,通常淺的克隆就足夠了。
同樣在GitLab 12。0中,預設情況下,在GitLab中建立的新專案在建立時的GIT_DEPTH設定為50。該預設設定將幫助使用者使用GitLab CI/CD實現更快的克隆和構建時間,同時仍允許高階使用者在不同型別的CI/CD用例需要時更改此設定。
Git物件重複資料刪除(Beta)
Fork工作流程建立一個副本,使用者修改該副本併合併到上游專案,從而輕鬆地加速了協作,這也是Github等Git專案得以流行的功能。但是對一個熱門的專案,可能會存在數以千計的副本,儲存這些副本需要消耗大量的伺服器資源。
GitLab 12。0中,例項管理員可以使用object_pools功能標誌啟用Git物件重複資料刪除。啟用後,建立公共分支也將建立物件池並使用objects/info/ alternates來減少分叉的儲存要求。物件重複資料刪除需要啟用雜湊儲存,並且父專案要使用雜湊儲存。現有的forks還沒有自動遷移到物件池。在後續即將將釋出的版本中,會透過直接在重複資料刪除狀態下建立fork來實現快速fork。當前版本還需要首先建立fork,然後進行重複資料刪除。
從2019年5月30日起,GitLab線上git服務已啟用物件重複資料刪除。自建例項但預設情況下關閉該功能,因為在獲取時會顯示重複警告。
驗證在建立群集時提供的Kubernetes憑據
手動新增Kubernetes叢集需要輸入多個數據點,並且容易出錯。為了在手動新增叢集解決訪問和許可權問題,kubernetes整合支援將驗證API URL的可訪問性以及叢集令牌和CA證書的有效性。
從問題連結訪問Zoom會議
在GitLab 12。0中,過Zoom電話會議輕鬆與團隊成員就問題進行協作。在問題說明中貼上會議連結。 GitLab將檢測連結並在標題下方的頂部顯示“加入Zoom會議”按鈕,使其顯示給所有協作者。
問題API對任務完成統計資訊響應
使用者能夠在問題中定義任務,並且該資訊在整個應用程式的各個位置會顯示。在GitLab 12。0中,使用者可以透過API返回任務進度資訊。
問題API的其他問題統計資料
之前版本使用者無法從問題API獲取詳細的問題統計資訊。在GitLab 12。0中添加了返回所有、已關閉和已開啟狀態的問題統計的功能。
Omnibus改進
GitLab 12。0中Omnibus改進包括:
引入Mattermost 5。11,這是一個開源的Slack替代品,其最新版本包括一個新的遠端CLI工具,及更多功能。此版本還包括安全更新,儘快升級到新版本來。
預設情況下啟用JSON日誌記錄。
omnibus-gitlab預設會啟用Grafana服務。此外,現在已經實現GitLab和Grafana自動啟用OAuth身份驗證。
使用一些直接檢測的ruby指標改進了GitLab指標
GitLab Runner 12。0
功能變化
GitLab還同期釋出了GitLab Runner 12。0。主要變化如下:
Docker Credentials幫助程式支援;
在註冊時為跑步者新增access_level配置;
允許Kubernetes Executor配置Pod安全上下文;
為新註冊的Windows shell執行程式設定PowerShell預設值;
支援Windows docker卷配置。
功能刪除
同時GitLab Runner 12。0版本,也刪除了一些此前棄用的東西:
刪除已棄用的clone/fetch命令
刪除已棄用的git clean策略
刪除對已棄用的metrics_server設定的支援
刪除對K8S的已棄用入口點配置的支援
刪除對已棄用的S3快取配置的支援
刪除對已棄用分發的支援
刪除舊的docker helper image命令
可以在GitLab Runner的CHANGELOG中找到所有更改的列表。
效能改進
GitLab 12。0在效能方面的一些改進包括:
epics列表頁面系能做了效能大幅度最佳化。
避免為Elasticsearch結果訪問資料庫,避免兩次針對搜尋結果點選Elasticsearch。
批次提交文件到ElasticSearch索引;
快取在提交訊息中呈現Markdown以提高列表提交的效能;
提高每次推送的儲存庫大小限制檢查的效能;
使用長描述載入問題或合併請求時提高效能;
透過建議的更改提高合併請求的效能;
重新打包Git儲存庫時,透過使用delta島來提高效能並減少克隆的CPU使用率;
提高監控圖表的效能;
修復ListLastCommit RPC上的Git N+1;
使用——perl-regexp提高Git程式碼搜尋效能;
透過修復Git N + 1來提高JobsController的效能;
功能棄用
GitLab 9。x現在已超出版本維護時間
GitLab的主要維護版本版本這中,刪除對GitLab 9。x的支援。最低支援版本提高到GitLab 10。0。
啟用日期:2019年6月22日
GitLab Geo使用Hashed Storage
在GitLab 12。0,GitLab Geo需要使用Hashed Storage來緩解輔助節點上的競爭條件。請使用“sudo gitlab-rake gitlab:geo:check”檢查是否啟用了Hashed Storage並遷移了所有專案。
遷移日期:2019年6月22日
GitLab Geo需要GitLab 12中PostgreSQL外部資料包裝器
在GitLab 12。0中,Geo需要PostgreSQL外部資料包裝器,將最低PostgreSQL版本提高到9。6。 GitLab Geo使用PostgreSQL Foreign Data Wrapper來查詢來自不同PostgreSQL例項的資料。這是Geo Log Cursor所必需的,可以顯著提高了某些同步操作的效能。 Foreign Data Wrapper還提高了Geo節點狀態查詢的效能。對於大型專案,遺留查詢具有不可接受的效能。
遷移日期:2019年6月22日
刪除使用app作為Kubernetes部署板的匹配機制
在GitLab 12。1中將刪除Kubernetes部署選擇器的應用程式標籤匹配(刪除最初計劃為12。0)。在GitLab 11。10的一部分,gitlab引入了一種新的匹配機制,它使用app。gitlab。com/app和app。gitlab。com/env來展示部署板上的部署。要在部署板中檢視這些部署,需要做的就是推送新部署,GitLab將使用新標籤進行部署。
移除日期:2019年6月22日
刪除AUTO_DEVOPS_DOMAIN環境變數
新的KUBE_INGRESS_BASE_DOMAIN環境變數在GitLab 11。8部分引入。不再需要使用AUTO_DEVOPS_DOMAIN來定義多個域,因為現在可以在群集頁面上單獨定義這些域。
移除日期:2019年6月22日
刪除Kubernetes服務模板
在GitLab 12。1中計劃刪除例項級Kubernetes服務模板,以支援在GitLab 11。11中引入的例項級叢集功能。
作為升級到GitLab 12。0的一部分,任何使用服務模板的自建gitlab例項都將遷移到例項級叢集。
移除日期:2019年6月22日
刪除對“skip_auto_migrations”檔案的支援
在GitLab 12。0中完全刪除了對skip_auto_migrations檔案的支援。該檔案在GitLab 10。6中已被棄用。
移除日期:2019年6月22日
刪除Prometheus 1。x支援
GitLab 12。0中完全取消了對Prometheus 1。x的支援。
移除日期:2019年6月22日
openSUSE 42。3的棄用
openSUSE 42。3將於2019年6月30日到期。gitlab將會在12。2中放棄支援。
移除日期:2019年8月22日
在GitLab Runner中棄用遺留程式碼路徑
GitLab 11。9開始GitLab Runner一直在使用一種新方法來克隆/獲取儲存庫。在目前版本,如果不支援新方法,GitLab Runner將使用舊方法。
在GitLab 11。0中,我們更改了為GitLab Runner配置度量伺服器的方式。 metrics_server已被刪除,轉而使用GitLab 12。0中的listen_address。
在11。3中,GitLab Runner開始支援多個快取提供程式。這導致特定於S3的配置的新設定。
GitLab 12。0中將不再提供這些路徑。對於從11。9+以上的使用者,直接升級不會有任何影響。
棄用日期:2019年6月22日
棄用GitLab Runner的入口點功能標誌
在GitLab 11。4中,GitLab Runner引入了一個功能標誌FF_K8S_USE_ENTRYPOINT_OVER_COMMAND。在GitLab 12。0中,將刪除這些功能標誌。
移除日期:2019年6月22日
棄用對GitLab Runner達到EOL的Linux發行版的支援
GitLab Runner中一些Linux發行版已達到End of Life支援。GitLab 12。0中,GitLab Runner不再提供專門分發包給過期的Linux發行版。
棄用日期:2019年6月22日
刪除舊版GitLab Runner幫助程式命令
作為新增對Windows Docker執行程式的支援的一部分,需要棄用一些用於幫助程式映象的舊命令。在GitLab 12。0中,GitLab Runner開始使用新命令。這僅影響覆蓋幫助程式映象的使用者。
遷移日期:2019年6月22日
從GitLab Runner中刪除傳統的Git清理機制
使用GitLab Runner 11。10引入了一種配置Runner如何執行git clean命令的方法。新的清理策略刪除了git reset的使用,並在checkout之後刪除了git clean命令。在GitLab Runner 12。0中,GitLab Runner放棄了對舊版清理策略的支援,並刪除了使用功能標誌設定恢復該功能的方法。
棄用日期:2019年6月22日
安全許可證管理重新命名為許可證合規性
許可證管理做了重新命名以便更好地與GitLab 12。0中的常見行業用語一致。許可證合規性的目的是分析應用程式,跟蹤第三方元件(如庫和外部依賴項)使用的許可證,並檢查它們是否與專案的許可模型相容。許可證合規性安全軟體組合分析組的一部分。
遷移日期:2019年6月22日
安全功能不建議的“。gitlab-ci。yml”配置變數和引數
命令列引數——auth-first-page,不再受支援,需要刪除此引數。
DEP_SCAN_DISABLE_REMOTE_CHECKS標誌變數,不再受支援,需要刪除此引數。
GITLAB_FEATURES環境變數中的sast_container值,必須更改為container_scanning。
遷移日期:2019年6月22日
GitLab 12。0沒有維護的手動安全配置程式碼段
新版本不再更新在專案管道中配置安全功能時使用的文件中安全手動配置程式碼段。請使用include: template: Dependency-Scanning。gitlab-ci。yml配置中使用Secure的include。
棄用日期:2019年6月22日
GitLab官網倉庫預設禁用3DES
為了緩解這種情況,預設情況下將禁用前進3DES。對於現代瀏覽器的使用者,這不應該改變任何內容,但是在Windows XP作業系統上執行的Internet Explorer版本7和8的某些使用者可能會受到影響。
棄用日期:2019年6月22日
GitLab 12。1中刪除對MySQL的支援
GitLab 12。0是支援MySQL(和MariaDB)的最後一個版本。使用者需要遷移到PostgreSQL才能使用未來版本。 MySQL已被棄用,對它的支援以前僅限於Enterprise Edition Starter和Premium。
棄用日期:2019年7月22日
錯誤報告和日誌記錄的Sentry設定將從GitLab 12。1中的UI中刪除
GitLab 12。1中的UI中會刪除這些設定,該策略已在GitLab 11。11中的gitlab。yml中提供。此外,還可以定義Sentry環境,以區分開發,stagin和生產等多個部署。
遷移日期:2019年7月22日
組模板修復為Silver/Premium級別
當我們在GitLab 11。6中引入組級專案模板時,將該功能擴大化了。透過給予低於Silver/Premium的現有使用者/例項三個月的寬限期來修復GitLab 11。11中的這個錯誤。2019年8月22日,此寬限期將到期,組專案模板將需要Silver/ remium或更高版本。
遷移日期:2019年8月22日
GitLab 12。2中預設將使用Python 3進行許可證管理
如果使用Python 2的使用者在開始使用GitLab 12。2時進行自我管理,則需要將CI變數LM_PYTHON_VERSION設定為“2”。使用Python 3的使用者現在可以將CI變數LM_PYTHON_VERSION更改為“3”。
遷移日期:2019年8月22日
棄用對Windows批處理的支援
在GitLab 12。3計劃棄用GitLab Runner中的Windows批處理命令列作業(例如cmd。exe),以支援對Windows PowerShell的擴充套件和擴充套件支援。對於可能仍希望針對cmd。exe執行專案的使用者,可以從PowerShell呼叫這些命令,但不會為Windows批處理提供直接支援。
棄用日期:2019年9月22日
Docker GitLab Runner中棄用作業目錄快取記憶體
使用GitLab Runner 11。10,當使用Docker和Docker Machine執行程式已更改了共享卷中快取作業目錄部分。 GitLab Runner現在快取使用builds_dir配置的整個基本目錄,而不是僅快取作業工作目錄的父目錄。因為它是一個行為改變,我們添加了一個功能標誌,允許控制是否應該使用新的或舊的行為。在GitLab Runner 12。3,將刪除功能標誌和舊有行為。
遷移日期:2019年9月22日
安全許可證管理中的Python 2支援將在年底前棄用
Python 2。7在2020年1月1日達到其生命週期,因此將在未來的GitLab版本中刪除對Python 2的支援。
遷移日期:2019年12月22日
升級安裝
如果使用Omnibus安裝自建例項,透過發行版辦的包管理器直接升級即可:
比如CentOS下可以直接透過yum updata gitlab-ce自動完成升級過程。
GitLab 12。0升級特別說明
GitLab 12。0將Enterprise Edition多年來進行的資料庫更改合併到Community Edition中。作為這項工作的一部分,還刪除了各種舊遷移。升級到GitLab 12的使用者必須先升級到最新的11。11補丁版本,然後再升級到12。0。0。升級到12。1。0等未來版本時,使用者必須先升級到12。0。0。如果不按照此順序升級可能會導致資料遷移未成功,從而導致應用程式錯誤。 Omnibus安裝會先強制升級到12。0。0。透過原始碼安裝使用者必須按照這個順序受手動處理(XX->
11.11->12.0
->YY)。
GitLab 12。0預設使用Hashed Storage。這會影響新安裝。
GitLab 12。0將自動將PostgreSQL版本升級到10。0。
使用者可以跳過PostreSQL 10。0的自動升級,建立/etc/gitlab/ disable-postgresql-upgrade。
如果使用GitLab Geo,將在主節點和所有輔助節點上跳過自動PostgreSQL升級。將在12。1中為Geo使用者提供升級路徑。
預設情況下,GitLab 12。0將啟用JSON日誌記錄。並提供了保留以前非JSON的日誌格式的設定文件。