Slide 1

Slide 1 text

GitHub Actions × AWS OIDC連携の仕組みと経緯を理解する 2025/09/25 3-shake SRE Tech Talk #13 太田 暢 @iorandd Copyright © 3-shake, Inc. All Rights Reserved.

Slide 2

Slide 2 text

太田 暢 株式会社スリーシェイク Sreake事業部アプリケーション開発支援チーム ● バックエンド開発、たまにフロントエンドも ● AWSに興味あり、JAWS-UGに参加・登壇 自己紹介 2

Slide 3

Slide 3 text

🔍 GitHub ActionsとAWSを連携させたい! 3

Slide 4

Slide 4 text

🤖 それならOIDCでしょ 4

Slide 5

Slide 5 text

👀 2025年現在のベストプラクティス…? 「GitHub ActionsとAWSを連携する時は OIDCを使う」 5

Slide 6

Slide 6 text

👀 2025年現在のベストプラクティス 「GitHub ActionsとAWSを連携する時は OIDCを使う」 6 OAuth 2.0 を拡張して ID トークンによりユーザー認証を標準化し、 認証基盤とアプリケーション間で相互運用可能なシングルサインオンや フェデレーション認証を実現するプロトコル

Slide 7

Slide 7 text

👀 2025年現在のベストプラクティス 「GitHub ActionsとAWSを連携する時は OIDCを使う」 OAuth 2.0 を拡張して ID トークンによりユーザー認証を標準化し、 認証基盤とアプリケーション間で相互運用可能なシングルサインオンや フェデレーション認証を実現するプロトコル 7 信頼できるIDプロバイダが発行するIDトークン(一時的な認証トークン)を使っ て、サービス間で安全に認証を行うルール つまり

Slide 8

Slide 8 text

👀 2025年現在のベストプラクティス 「GitHub ActionsとAWSを連携する時は OIDCを使う」 OAuth 2.0 を拡張して ID トークンによりユーザー認証を標準化し、 認証基盤とアプリケーション間で相互運用可能なシングルサインオンや フェデレーション認証を実現するプロトコル GitHubが発行するOpenID Connect (OIDC)トークンを使って AWSにログインするルール 今回のケースで言い換えると 8 信頼できるIDプロバイダが発行するIDトークン(一時的な認証トークン)を使っ て、サービス間で安全に認証を行うルール つまり

Slide 9

Slide 9 text

OIDC連携の仕組み GitHubが発行するOIDCトークンを使ってAWSにログインするルール 9 https://docs.github.com/en/actions/concepts/security/openid-connect

Slide 10

Slide 10 text

OIDC連携の仕組み ①IAMで信頼関係を設定 10 https://docs.github.com/en/actions/ concepts/security/openid-connect GitHubのOIDCプロバイダーを IAM IdP(信頼する外部の身元確認 サービス)として登録 token.actions.githubusercontent.com

Slide 11

Slide 11 text

OIDC連携の仕組み ①IAMで信頼関係を設定 11 https://docs.github.com/en/actions/ concepts/security/openid-connect 指定したIAMロールを 「GitHubからのみ引き受け可能」 にする

Slide 12

Slide 12 text

OIDC連携の仕組み ②GitHubがOIDCトークンを発行 12 https://docs.github.com/en/actions/ concepts/security/openid-connect ワークフロー実行ごとにGitHubが JWT(署名付きトークン)を生成し、 「このリポジトリ・ブランチから実行された」 という情報を含める。 Github ActionsのYAML

Slide 13

Slide 13 text

OIDC連携の仕組み ③STSにトークンを提示 13 ワークフロー内で aws-actions/configure-aws-credentialsを使い、JWTを AWS STS(Security Token Service、 一時的な認証情報を発行するサービス)に 渡してロールを引き受ける。 https://docs.github.com/en/actions/ concepts/security/openid-connect Github Actionsのログ JWTは内部で渡される (ログの表示外 )

Slide 14

Slide 14 text

OIDC連携の仕組み ④短期クレデンシャルを取得 14 AWS STSが検証後、15分〜1時間有効な 一時的なAWSアクセスキーを発行。 これを使ってS3やECSへデプロイする。 https://docs.github.com/en/actions/ concepts/security/openid-connect ← 一時的なアクセスキー ← 一時的なシークレットキー ← セッショントークン Github Actionsのログ

Slide 15

Slide 15 text

🕰 OIDCがベストプラクティスになるまで 15 OpenID Connect Standard公表 https://openid.net/the-openid-foundation-laun ches-the-openid-connect-standard/ 2014 2018 2019 CognitoやEKSで OIDC利用が進む GitHub Actions 一般利用開始 https://github.blog/changelog/2019-11-11-github- actions-is-generally-available/ Google、 Microsoft、 Okta などの IDプロバイダーが OIDC対応を進める 2021

Slide 16

Slide 16 text

IAMユーザーのアクセスキーとシークレットキー を発行               ↓ GitHubリポジトリの「 Secrets」として保存               ↓ GitHub Actionsのワークフローでキーを渡して認証、必要に応じて STS でロールを引き受ける 🤔 課題 ● IAM ユーザーのアクセスキーの漏洩リスク ● 秘密鍵の定期的なローテーションの煩雑さ ● 複数のワークフローでの共有による、資格情報の追跡の困難 etc. OIDC以前の連携方法(~2021年ごろ) 16

Slide 17

Slide 17 text

🕰 OIDCがベストプラクティスになるまで 17 OpenID Connect Standard公表 https://openid.net/the-openid-foundation-laun ches-the-openid-connect-standard/ GitHub Actions 一般利用開始 https://github.blog/changelog/2019-11-11-github- actions-is-generally-available/ GitHub Actions OIDCサポート開始 https://github.blog/changelog/2021-11-23-secure- cloud-deployments-with-oidc-is-now-ga/ https://aws.amazon.com/jp/blogs/security/use-iam-roles-to-c onnect-github-actions-to-actions-in-aws/ AWS公式Actionでも OIDC利用を推奨 2014 2018 2019 2021 2022 2023 AWSとGitHubのOIDC統合を支援する Terraformモジュールのリリース CognitoやEKSで OIDC利用が進む OIDC連携で中間 TLS証明書の サムプリント登録が不要になる https://github.blog/changelog/2023-07-13-github- actions-oidc-integration-with-aws-no-longer-requi res-pinning-of-intermediate-tls-certificates/ https://github.com/terraform-module/terr aform-aws-github-oidc-provider Google、 Microsoft、 Okta などの IDプロバイダーが OIDC対応を進める

Slide 18

Slide 18 text

● IAM ユーザーのアクセスキーの漏洩リスク ○ 長期キーを保存 → OIDC 経由で一時的なトークンを払い出す             (ワークフロー実行ごとに有効期限付きで自動発行 ) ● 秘密鍵の定期的なローテーションの煩雑さ ○ 手動でキーを更新・配布 → ローテーション不要                 (OIDC が都度、新たな短期資格情報を取得 ) ● 複数のワークフローでの共有による資格情報の追跡の困難さ ○ アクセスキーを複数パイプラインで共用 → ワークフローごとに固有のフェデレーション認証              (OIDC のクレームや条件で追跡可能 ) ● 権限の過剰付与(過去の残骸キー問題) ○ 使われていないアクセスキーが放置 → 実行時のみ必要最小限の権限を付与                     (STS + OIDC の AssumeRoleWithWebIdentity) 💖 OIDCによる課題の解消 18

Slide 19

Slide 19 text

  最近のアップデート ● OIDCトークン権限の厳格化 (2024年6月) ○ 呼び出し元のワークフローや特定のジョブレベルで id-token: write権限を明示的に設定する ことが必須とな り、セキュリティが強化 ○ https://github.blog/changelog/2023-06-15-github-actions-securing-openid-connect-oidc-token-permissions-i n-reusable-workflows/ ● SHAピンニングとアクションブロッキングの強制 (2025年8月) ○ 特定のアクションやバージョンをブロックするポリシーをサポート ○ バージョンをコミット SHAにピンニングすることを強制する機能 が追加され、サプライチェーン攻撃のリスク低減 ○ https://github.blog/changelog/2025-08-15-github-actions-policy-now-supports-blocking-and-sha-pinning-acti ons/ 19 Github ActionsのYAML

Slide 20

Slide 20 text

  最近のアップデート ● OIDC IdP管理の簡素化 (2024年7月) ○ IAMでOIDC IdPの管理を簡素化 ○ 以前は手動で必要だった サムプリントの検証が不要に なり、ルート認証局( CA)を信頼するモデルに移行 ○ https://aws.amazon.com/jp/about-aws/whats-new/2024/07/aws-identity-access-management-open-id-conne ct-identity-providers/ ● SAMLアサーションの暗号化サポート (2025年2月) ○ IAMがSAMLアサーションの暗号化をサポート ○ IDプロバイダーから IAMへのSAMLアサーションがエンドユーザーのウェブブラウザなどの仲介者を経由する際に 暗号化されるようになり、セキュリティが向上 ○ https://aws.amazon.com/jp/about-aws/whats-new/2025/02/aws-iam-encrypted-saml-assertions/ ● AWS公式の Lambdaデプロイ用 GitHub Action(2025年8月) ○ aws-actions/aws-lambda-deploy ○ ワークフロー中でこのアクションを呼び出すだけでデプロイが完了 ○ https://aws.amazon.com/jp/about-aws/whats-new/2025/08/aws-lambda-github-actions-function-deployment/ ● configure‑aws‑credentials v5.0.0 のリリース (2025年9月) ○ ローカル実行などで OIDC認証をスキップ可能に ○ アカウントIDの許可リストをサポートし、入力ハンドリングが改善 ○ https://github.com/aws-actions/configure-aws-credentials/releases 20

Slide 21

Slide 21 text

✅ まとめ ● GitHub ActionsとAWSを連携する時はOIDCがベストプラクティス ● OIDCとは、信頼できる IDプロバイダが発行するトークン を使って、別のサービスに安全にログ インできるプロトコル ● GitHubとAWS両サイドで OIDC連携を標準化・強化してきた ● セキュリティポリシー (id-token: write や SHAピンニング)の組み合わせで安全性の最大化 が進 んでいる 21