Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GitHub ActionsのOIDC認証
Search
Tomofumi Kondo
March 01, 2022
Programming
1
210
GitHub ActionsのOIDC認証
2021年に新しく発表された、GitHub ActionsのOIDC認証機能についての紹介。
Tomofumi Kondo
March 01, 2022
Tweet
Share
More Decks by Tomofumi Kondo
See All by Tomofumi Kondo
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
3
Goで作る!ストレージ筐体間での安全なCinder volume移行システムの開発と運用
tomokon
0
100
Goによるインタプリタ開発
tomokon
1
71
初めてのTerraform
tomokon
1
39
ハッカソンで便利なインフラ構築サービス
tomokon
0
240
テスト、テスト、テスト!
tomokon
0
60
Other Decks in Programming
See All in Programming
分散DBって何者なんだ... Spannerから学ぶRDBとの違い
iwashi623
0
170
CSC305 Lecture 15
javiergs
PRO
0
240
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
210
TypeScript 5.9 で使えるようになった import defer でパフォーマンス最適化を実現する
bicstone
1
1k
Integrating WordPress and Symfony
alexandresalome
0
120
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
130
CSC509 Lecture 14
javiergs
PRO
0
220
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
370
Herb to ReActionView: A New Foundation for the View Layer @ San Francisco Ruby Conference 2025
marcoroth
0
240
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
390
テストやOSS開発に役立つSetup PHP Action
matsuo_atsushi
0
140
Why Kotlin? 電子カルテを Kotlin で開発する理由 / Why Kotlin? at Henry
agatan
2
6.2k
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Agile that works and the tools we love
rasmusluckow
331
21k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
960
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Being A Developer After 40
akosma
91
590k
Side Projects
sachag
455
43k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.3k
Transcript
GitHub ActionsのOIDC認証 東北大学4年 近藤智文 @tomokon_0314
目次 1. OIDCとは 2. GitHub ActionsのOIDC認証機能 3. デモ 4. まとめ
1. OIDCとは Open ID Connectの略 信頼されたOIDCプロバイダーが提供するトークンによって認証・認可を行う仕組 み。 OIDCのユーザーとなるサービスは、認証された主体の情報を示す「IDトークン」 や、認可されたアクションを示す「アクセストークン」というトークンを認可 サーバーに発行してもらう。
リソースサーバーに対するリクエストにそれらのトークンを含めることで、リ ソースに対して許可されたアクションを行うことができる。
1. OIDCとは
2. GitHub ActionsのOIDC認証機能 1. Cloud Providerの方でGitHubの特定の組織・リポジトリ・ブランチに対して アクションを許可するロールを作成しておく 2. GitHub ActionsのジョブでJWTを発行してCloud
Providerにリクエストし、 アクセストークンを得る 3. 得たトークンを使ってCloud ProviderのAPIを叩くなどして、Cloud Provider のリソースに対するアクション(サービスのデプロイとか)を実行する。 About security hardening with OpenID Connectより引用
2. GitHub ActionsのOIDC認証機能 メリット 従来は、AWSのリソースに対して特定のアクションを実行できるユーザーを作成 し、そのユーザーのアクセスキーとシークレットキー(IDとパスワードみたいなも の)をGitHubのsecretsに登録してGitHub Actionsで利用していた。 しかし、それでは認証情報をAWSの外部に置くことになるので流出の危険があり セキュリティ的に良くない。
OIDC認証を使うことで、workflow実行時に毎度発行される短命なトークンを利 用して認証を行えるため、secretsに認証情報を保存しなくてよくなる
3. デモ GitHub ActionsのOIDC認証を使用し、AWSのリソースに対してアクションの制 御を行うデモをする。
3. デモ AWSにてOIDCプロバイダを設定する
3. デモ AWSにてOIDCプロバイダを設定する Provider URL https://token.actions.githubuserconte nt.com Audience sts.amazonaws.com
3. デモ AWSにてOIDC用のロールを作成する
3. デモ OIDC用ロールの信頼ポリシー 例(抜粋) ``` "Principal": { "Federated":"arn:aws:iam::<アカウントID>:oidc-provider/token.actions.githubusercontent.com" }, "Action":
"sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "token.actions.githubusercontent.com:sub":"repo:<GitHubの組織名>/<GitHubのリポジトリ 名>:ref:refs/heads/main", "token.actions.githubusercontent.com:aud": "sts.amazonaws.com" } } ```
3. デモ OIDC用ロールに紐づける権限(抜粋) 今回は`sts get-caller-identity`を実行できる権限を付与しておく ``` { "Effect": "Allow", "Action":
"sts:GetCallerIdentity", "Resource": "*" } ```
3. デモ GitHubにてテスト用リポジトリの作成 組織名・リポジトリ名は先ほど設定した信頼ポリシーに一致させる 今回はこれで↓
3. デモ OIDC認証を使うGitHub Actionsのworkflow(抜粋) GitHub OIDC Providerが発行するOIDC認証用のJWTを使うための権限の設定 ``` permissions: id-token:
write ```
3. デモ OIDC認証を使うGitHub Actionsのworkflow(抜粋) AWSから先ほど作ったロールに紐づくトークンを取得する ``` - name: configure AWS
credentials uses: aws-actions/configure-aws-credentials@v1 with: role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/github-oidc-test role-session-name: testrolesession aws-region: ${{ env.AWS_REGION }} ```
OIDC認証を使うGitHub Actionsのworkflow(抜粋) 前のステップで取得したトークンを同封してAWSのAPIを叩く ``` - name: get caller identity run:
| aws sts get-caller-identity ``` 3. デモ
3. デモ OIDC認証を使うGitHub Actionsのworkflow(抜粋) workflowの結果
4. まとめ • GitHub ActionsのOIDC認証を使うことで、secretsに認証情報を保存しなく てよくなるため、認証情報の流出の危険性がなくなる。 • GitHub ActionsのworkflowからAWSのリソースに対するアクセス制御を柔軟 に行うことができる。