Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GitHub ActionsのOIDC認証
Search
tomokon
March 01, 2022
Programming
1
160
GitHub ActionsのOIDC認証
2021年に新しく発表された、GitHub ActionsのOIDC認証機能についての紹介。
tomokon
March 01, 2022
Tweet
Share
More Decks by tomokon
See All by tomokon
Goによるインタプリタ開発
tomokon
1
60
初めてのTerraform
tomokon
1
22
ハッカソンで便利なインフラ構築サービス
tomokon
0
190
テスト、テスト、テスト!
tomokon
0
41
Other Decks in Programming
See All in Programming
ここ1~2年くらいで 使えるようになった(主要ブラウザーの最新版 がすべて対応した ) ウェブの新機能について ランダムに喋る!
myzkyy
9
6.5k
Go1.22からの疑似乱数生成器について/go-122-pseudo-random-generator
convto
1
160
上手な探索的テストとその上達方法について
matsu802
4
660
MySQL のインデックスの種類をおさらいしよう! / overviewing indexes in MySQL
okashoi
0
170
設計の知識と技能で駆動するソフトウェア開発
masuda220
PRO
18
11k
Data Contracts In Practice With Debezium and Apache Flink (Kafka Summit London)
gunnarmorling
2
280
App Router への移行は「改善」となり得るのか?/ Can migration to App Router be an improvement
takefumiyoshii
1
140
Building a Smaller App Binary
kateinoigakukun
2
210
品質とスピードを両立: TypeScriptの柔軟な型システムをバックエンドで活用する
kosui
5
1.1k
9年開発を牽引して見えてきた、共通化すべきものと個別でつくるもの ~プログラム言語~
shinout
1
220
自作ソフト(VMagicMirror)がVRMA対応してる話+実装のTips
bakudreameater
0
110
孤独のCTOグルメという やや奇抜な企画をやった目的と効果
shoheimitani
3
1k
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
6
950
Building Better People: How to give real-time feedback that sticks.
wjessup
350
18k
Happy Clients
brianwarren
91
6.3k
Agile that works and the tools we love
rasmusluckow
323
20k
How GitHub (no longer) Works
holman
301
140k
Designing the Hi-DPI Web
ddemaree
275
33k
Faster Mobile Websites
deanohume
296
30k
4 Signs Your Business is Dying
shpigford
174
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
124
32k
How To Stay Up To Date on Web Technology
chriscoyier
781
250k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.8k
Done Done
chrislema
178
15k
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のリソースに対するアクセス制御を柔軟 に行うことができる。