AWS 免費方案・作品集
使用 GitHub Actions OIDC 安全部署到 AWS
解說從 GitHub Actions 部署到 AWS 時,不使用長期存取金鑰,改用 OIDC 進行臨時驗證的設計思路。
發布日期:2026-06-07/更新日期:2026-08-02/作者:AWS Cert Roadmap Lab
#GitHub Actions#OIDC#IAM#CI/CD#CloudFront
從 GitHub Actions 部署到 AWS 時,有一種做法是把 AWS 存取金鑰存放在 GitHub Secrets。不過,還有一種更安全的設計方式,就是採用 OIDC。
結論
OIDC 方式讓 GitHub Actions 臨時擔任 AWS IAM Role。因為不必把長期存取金鑰存放在 GitHub,所以可以降低外洩風險。
問題在哪裡
把 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 存在 GitHub Secrets,雖然運用上很簡單,但長期存取金鑰一旦外洩,造成的風險很大。
即使是個人開發,只要打算當作作品集公開,就必須謹慎處理憑證資訊。
OIDC 方式的運作原理
當 GitHub Actions 執行時,GitHub 會發行 OIDC token。在 AWS IAM 端則設定 GitHub 的 OIDC Provider 與 Trust Policy,讓 IAM Role 只能由特定的 repository、特定的 branch 來擔任。
在這個專案中,正式環境的 branch 名稱使用 master。因此 Trust Policy 的 sub 條件也對應為 refs/heads/master。
採用最小權限
給 GitHub Actions 使用的 Role,只授予部署所需的權限:上傳到 S3、刪除 S3 內的檔案、執行 CloudFront Invalidation。
至於 IAM 操作、DynamoDB 刪除、EC2 操作等與部署無關的權限,則不予授予。
本專案的流程
- 推送到 master branch
- GitHub Actions 啟動
- 執行 Next.js 的 build
- 透過 OIDC 擔任 AWS IAM Role
- 將 out/ 同步到 S3
- 執行 CloudFront Invalidation
考試與實務上的重點
- IAM Role 可用於臨時的權限委派
- 最小權限原則很重要
- 減少長期存取金鑰可以降低外洩風險
- CI/CD 同樣需要安全設計
相關用語
延伸閱讀
接下來學什麼
結合部落格文章與 AWS 術語集、服務比較、模擬題、架構圖,把考試知識和實作體驗連結起來理解。