簡體   English   中英

GitHub 訪問令牌,具有對私有存儲庫的只讀訪問權限

[英]GitHub access token with read-only access to private repositories

我有一個節點依賴於私有 Git 存儲庫的項目。 我需要能夠在不提示輸入密碼或允許 SSH 連接的情況下運行npm install ,因此我在 package.json 中使用了我在 GitHub 上創建的訪問令牌:

  "dependencies": {
    "sass-theme": "git+https://[token]:x-oauth-basic@github.com/MyOrg/sass-theme.git#v1.0.2",
    "node-sass": "^4.5.0"
  }

這個項目與許多其他人共享,所以顯然我不想將我的令牌保留在源代碼管理中。 我知道我可以在 GitHub 上創建一個只讀部署密鑰,但我相信這需要其他開發人員導入 SSH 密鑰才能在本地構建項目。

是否可以創建一個可以共享但具有克隆存儲庫的只讀訪問權限的訪問令牌?

我能想到的創建一個提供對私有存儲庫的只讀訪問權限的令牌的最直接方法是:

  1. 擁有一個對給定私有倉庫具有只讀訪問權限的用戶(理想情況下,其他不多)
  2. 當該用戶創建具有“repo”范圍的個人訪問令牌時

最好他們無權訪問其他組織/存儲庫,因為“存儲庫”范圍授予用戶對用戶具有寫入權限的任何存儲庫的完全控制權。

我知道在企業解決方案中,我們會使用系統 ID 來執行此操作,但在 GitHub 上,您可以改為創建Machine User

部署密鑰是要走的路 默認情況下,它們不允許寫入訪問,並且它們的范圍僅限於特定存儲庫(與 GitHub 個人訪問令牌不同)。 因此,您現在可以生成一個私鑰/公鑰對,將其中一個設置為只讀/拉取僅在 GitHub 中的單個存儲庫上部署密鑰,並在您的 CI 中使用私鑰。

例如運行一個 bash 腳本:

eval "$(ssh-agent -s)";
ssh-add <your private deploy key>;

現在,您的 CI 有權在構建期間訪問私有存儲庫。

您可以通過轉到 Github 上的存儲庫然后單擊設置>部署密鑰>添加部署密鑰來添加部署密鑰

如果您認為將憑據放入源代碼是一個壞主意(您應該這樣做!),那么您幾乎沒有選擇:

  1. 將其托管在私有 GitHub 存儲庫中,但將其他數十人作為協作者添加到此存儲庫(具有只讀訪問權限)。

  2. 將其托管在私有 GitHub 存儲庫中,但作為組織擁有,並將這些人添加到組織中。

  3. 將其發布為私有 npm 模塊。

  4. 將其發布到私有 npm 注冊表中。

  5. 在需要它的程序的源代碼中包含依賴項。

最后一個基本上就像在使用該模塊的原始代碼中包含node_modules一樣,所以它當然不漂亮。 托管您自己的 npm 注冊表並非易事,但您可以通過這種方式自動添加用戶。 發布私有 npm 模塊不是免費的。 維護一個充滿了應該能夠訪問您的存儲庫的人的組織很煩人。

請記住一件事:如果您與多個人共享您的憑據,則希望每個人最終都能訪問它,這只是時間問題。 憑據的范圍可能有限,它可以是只讀部署密鑰或具有受限訪問權限的機器用戶,但如果它被分發,它最終會像往常一樣泄漏,尤其是當你與數十人共享它時。 保留可以訪問代碼的人員列表會更好,您可以使用 GitHub API 自動更新該列表。

我絕不會建議在項目的源代碼中分發憑據,無論這些憑據提供的訪問權限有多么有限。

對私有倉庫沒有只讀訪問權限,這很丑陋。

我建議即使將讀/寫作為臨時令牌也創建一個新令牌。 然后拉/取更改並直接刪除令牌。

顯然,GitHub 已經聽到您的聲音並添加了一個名為“細粒度令牌”的新測試版功能!

https://github.blog/2022-10-18-introducing-fine-grained-personal-access-tokens-for-github/

“創建適合個人 API 使用和通過 HTTPS 使用 Git 的細粒度、存儲庫范圍的令牌”

Go 設置/開發者設置/個人訪問令牌/細粒度令牌

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM