極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有:
- 極狐GitLab 中文文檔
- 極狐GitLab 中文論壇
- 極狐GitLab 官網
外部授權控制 (BASIC SELF)
在高度控制的環境中,訪問策略可能需要由外部服務控制,該服務允許基于項目分類和用戶權限的訪問。極狐GitLab 提供了一種使用您自己定義的服務,檢查項目授權的方法。
配置并啟用外部服務后,當訪問項目時,會向外部服務發出請求,并帶有分配給該項目的用戶信息和項目分類標簽。當服務以已知響應進行回復時,結果將被緩存六個小時。
如果啟用了外部授權,系統會進一步阻止呈現跨項目數據的頁面和功能。包括:
- 儀表盤下的大多數頁面(活動、里程碑、代碼片段、分配的合并請求、分配的議題、待辦事項列表)。
- 在特定群組下(活動、貢獻分析、議題、議題看板、標記、里程碑、合并請求)。
- 全局和群組搜索被禁用。
這是為了防止一次對外部授權服務執行過多的請求。
每當訪問被授予或拒絕時,都會記錄在一個名為 external-policy-access-control.log 的日志文件中。 在 Linux 軟件包文檔中閱讀有關保留的日志的更多信息。
當使用帶有自簽名證書的 TLS 身份驗證時,CA 證書需要被 OpenSSL 安裝信任。使用通過 Omnibus 安裝的極狐GitLab 時,請在 Linux 軟件包文檔 中了解如何安裝自定義 CA。或者,使用 openssl version -d 了解在哪里安裝自定義證書。
配置
外部授權服務可以由管理員啟用:
1.在左側導航欄底部,選擇 管理中心。
2.選擇 設置 > 通用。
3.展開 外部授權。
4.填寫字段。
5.選擇 保存更改。
允許使用部署令牌和部署密鑰進行外部授權
- 引入于 15.9 版本。
- 部署令牌變更為無法訪問容器鏡像庫或軟件包庫于 16.0 版本。
您可以使用部署令牌或部署密鑰,將實例設置為允許對 Git 操作進行外部授權。
先決條件:
- 您必須使用沒有服務 URL 的分類標記進行外部授權。
允許使用部署令牌和密鑰進行授權:
1.在左側導航欄底部,選擇 管理中心。
2.選擇 設置 > 通用。
3.展開 外部授權,然后:
- 將服務 URL 字段留空。
- 選擇 允許部署令牌和部署密鑰與外部授權一起使用。
4.選擇 保存更改。
WARNING:如果啟用外部授權,部署令牌將無法訪問容器鏡像庫或軟件包庫。如果您使用部署令牌訪問這些庫,則會中斷對這些令牌的使用。禁用外部授權,可以將令牌用于容器鏡像庫或軟件包庫。
工作原理
當極狐GitLab 請求訪問時,它會使用以下正文向外部服務發送 JSON POST 請求:
{"user_identifier": "jane@acme.org","project_classification_label": "project-label","user_ldap_dn": "CN=Jane Doe,CN=admin,DC=acme","identities": [{ "provider": "ldap", "extern_uid": "CN=Jane Doe,CN=admin,DC=acme" },{ "provider": "bitbucket", "extern_uid": "2435223452345" }]
}
user_ldap_dn 是可選的,僅在用戶通過 LDAP 登錄時發送。
identities 包含與用戶關聯的所有身份的詳細信息。如果沒有與用戶關聯的身份,則這是一個空數組。
當外部授權服務響應狀態碼 200 時,用戶被授予訪問權限。當外部服務響應狀態碼 401 或 403 時,用戶被拒絕訪問。在任何情況下,請求都會被緩存六個小時。
拒絕訪問時,可以選擇在 JSON 正文中指定 reason:
{"reason": "You are not allowed access to this project."
}
除 200、401 或 403 之外的任何其他狀態代碼也會拒絕用戶訪問,但不會緩存響應。
如果服務超時(500 毫秒后),則會顯示 “External Policy Server did not respond” 消息。
分類標記
您可以在項目的 設置 > 通用 > 通用項目設置 頁面中,在 分類標記 框中使用自己的分類標記。當項目上沒有指定分類標記時,使用全局設置中定義的默認標記。
標記顯示在右上角的所有項目頁面上。