[英]Is it okay to use GitHub Secrets with a public repo?
我有一個帶有 GitHub 操作的私有倉庫,當有新的推送到主分支時,它會將代碼推送到 AWS S3 存儲桶。 我需要一對訪問密鑰才能推送內容,並將它們存儲為 GitHub Secrets 並將它們作為構建腳本中的環境變量引用。 現在我想在不久的將來公開這個 repo,我想知道這樣做是否安全。 該操作的工作流 (.github/workflows/main.yml) 本身確實是公開可見的,它的作用是什么,但它只有一個命令aws s3 cp myfile s3://my-bucket
並且絕對沒有訪問密鑰代碼本身。
將 GitHub Secrets 用於公共回購中的操作是否安全? 我是唯一的所有者和唯一的貢獻者,這在未來不會改變。 稍后我可能會使用 webhook 切換到 CodePipeline,但想先嘗試 GitHub Actions。 謝謝。
是的,秘密在公共存儲庫中使用是安全的,但有些事情你應該小心。
所有秘密都在構建日志中自動屏蔽並顯示為***
。 但是,如果在您的工作流程中,您從一個秘密(例如 base64 和 API 密鑰)創建了一個敏感憑證,那么您應該屏蔽新值,這樣它就不會在構建日志中泄漏。
echo "::add-mask::My sensitive value"
如果您非常關心您的秘密的安全性,我還建議您不要直接使用第三方 GitHub 操作,只需遵循操作的標簽或分支。 分叉操作並在工作流程中使用您的分叉。 這將防止有人修改您用來捕獲該操作所使用的秘密的操作,並將其發送到他們控制下的某個外部服務器。
或者,直接使用該操作並為您要定位的版本引用提交 hash。
- uses: thirdparty/foo-action@172ec762f2ac8e050062398456fccd30444f8f30
在您的帳戶上使用雙重身份驗證 (2FA) 。 如果您的帳戶遭到入侵,攻擊者很容易創建工作流並導出您的機密。
存儲庫協作者或任何具有write
權限的組織用戶都能夠創建工作流來導出機密。 因此,請謹慎管理對存儲庫的訪問。
與拉取請求相關的要點:
pull_request
事件無權訪問機密, 默認的GITHUB_TOKEN
。 此外,當事件由分叉存儲庫觸發時, GITHUB_TOKEN
具有只讀訪問權限。 這些是 GitHub 操作強制實施的有意限制,以防止攻擊者創建包含捕獲機密或使用機密執行操作的工作流的拉取請求。pull_request_target
事件對分叉觸發的事件沒有秘密限制。 默認情況下,它會檢出基礎分支上的最后一次提交,但可以檢出拉取請求 HEAD。 選擇這樣做需要格外小心。 將機密傳遞給可以在拉取請求中修改的任何代碼都可能允許攻擊者編寫代碼來導出機密。是的,看起來是這樣。 根據 Github ,您對誰可以訪問您的機密具有組織級別的訪問控制策略。
對於存儲在組織級別的機密,您可以使用訪問策略來控制哪些存儲庫可以使用組織機密。 組織級機密允許您在多個存儲庫之間共享機密,從而減少創建重復機密的需要。 在一個位置更新組織機密還可以確保更改在使用該機密的所有存儲庫工作流中生效。
存儲庫是公共的還是私有的都不會影響這一點,這是有道理的。 公共項目也需要秘密。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.