Slide 1

Slide 1 text

©2022 TC3株式会社 Confidential ©2022 TC3株式会社 Confidential 1
 IDaaS勉強会 Workload Identity Federation July 8, 2022 Yuki Sanada, Technical Lead

Slide 2

Slide 2 text

©2022 TC3株式会社 Confidential 2
 Workload Identity Federationってなに? もとはGCP独自の用語のようだが、最近ではGCP以外でも使われ始めている様子。 このスライドではWIFがどういった概念なのかを各クラウドプロバイダーのドキュメントから紐解いていき たい。 実世界の例: - GitHub actionsがAWSやGCPのリソースにアクセスする - オンプレミスサーバー上のバッチアプリケーションがAWS, Azure, GCP上のリソースにアクセスする

Slide 3

Slide 3 text

©2022 TC3株式会社 Confidential 3
 Workload Identity Federationってなに? ワークロードの認証のフェデレーション? 1. ワークロードとは 2. ワークロードの認証とは 3. フェデレーションとは 4. ワークロードの認証のフェデレーションとは

Slide 4

Slide 4 text

©2022 TC3株式会社 Confidential 4
 Workload Identity Federationってなに? ワークロード(Workload)とは 直訳すると「作業負荷」のことだが、 この場合のワークロードは、コンピューターに負荷をかけるプロセスそのものを指す。 参考: https://www.techtarget.com/searchdatacenter/definition/workload In computing, a workload, typically, is any program or application that runs on any computer. A workload can be a simple alarm clock or contact app running on a smartphone, … ITの文脈においてワークロードとは、コンピューター上で走るプログラム、アプリケーションのこ と。スマートフォン上のアラームや電話帳アプリ、...もそれに該当する

Slide 5

Slide 5 text

©2022 TC3株式会社 Confidential 5
 Workload Identity Federationってなに? ワークロードの認証(Workload Identity)とは ワークロードは人を介さず自律的に動くアプリケーションなので、 人で言えばユーザーID・パスワードといった、ワークロード専用の認証情報が必要になる。 単純にワークロードにもユーザーID・パスワードを発行したら終わりなのでは? と思った方もいるかもしれませんが、そう思われるのも当然でついこの前(?)まではそうすることが一般的だったように思います。

Slide 6

Slide 6 text

©2022 TC3株式会社 Confidential 6
 Workload Identity Federationってなに? ワークロードの認証に関する問題 - GitHubの公開リポジトリにAWSのアクセスキーを入れると、たとえ1分でも盗られる可能性 がある。 - つい最近有名なCIサービスの脆弱性により、本来ユーザーにしかみることのできないログが 抜かれ、ワークロードで利用していた認証情報が盗まれた。

Slide 7

Slide 7 text

©2022 TC3株式会社 Confidential 7
 Workload Identity Federationってなに? フェデレーション(Federation)とは 直訳すると「連合」のことだが、 この場合のフェデレーションは、外部システムと自システムを接続し、外部の機能をシームレスに 利用できる状態を指す。 参考: https://en.wikipedia.org/wiki/Federation_(information_technology) A federation is a group of computing or network providers agreeing upon standards of operation in a collective fashion. フェデレーションとは、複数のコンピュータやネットワークプロバイダーが、標準仕様に則り協調 すること。

Slide 8

Slide 8 text

©2022 TC3株式会社 Confidential 8
 Workload Identity Federationってなに? ワークロードの認証のフェデレーションとは これまでの内容をまとめると、Workload Identity Federationは「ワークロードの認証に関する標 準仕様上で動くシステムの集まり」となる。 ただし「ワークロードの認証に関する標準仕様」というものがあるわけではない。そのため、この スライドでは出来る限り一般化した説明を試みてみたい。 GCP, AWS, Azureのドキュメントを見る限り(※)根本的なフロー、先に触れたワークロードの認証 に関するリスクや、数ページ後に紹介する価値はほぼ同じであると考えている。 ※実装に関する詳しいドキュメントは見つけられなかったので同じ可能性もある

Slide 9

Slide 9 text

©2022 TC3株式会社 Confidential 9
 Workload Identity Federationってなに? OAuth 2.0 Token Exchange GCPが提供しているものは「OAuth 2.0 Token Exchange」の仕様の上に実装されているのでまず は OAuth 2.0 Token Exchange の要点をおさえておく。 参考: https://datatracker.ietf.org/doc/html/rfc8693 This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation 本仕様では、OAuth 2.0 認可サーバーにセキュリティトークンを要求・取得する方法を定義する ことで、HTTP および JSON ベースのセキュリティトークンサービス(STS)のプロトコルを定義し ている(なりすましや委任を用いたセキュリティトークンも含む)。

Slide 10

Slide 10 text

©2022 TC3株式会社 Confidential 10
 Workload Identity Federationってなに? OAuth 2.0 Token Exchange Client app Workload 外部API AuthZ Server 1 2 認可サーバーに アクセストークンをリクエストする ※subject_token は Client app から渡されたもの 認可サーバーが持つSTSを利用してトークンを変換する ※ STS: セキュリティトークンサービス

Slide 11

Slide 11 text

©2022 TC3株式会社 Confidential 11
 Workload Identity Federationってなに? OAuth 2.0 Token Exchange Client app Workload 外部API AuthZ Server 1 2 認証サーバーから アクセストークンを受け取る

Slide 12

Slide 12 text

©2022 TC3株式会社 Confidential 12
 Workload Identity Federationってなに? OAuth 2.0 Token Exchange Client app Workload 外部API AuthZ Server 1 2 変換されたトークンを使って、 外部APIをコールする ※ Token Exchangeを利用しない一般的なAPIコール では、Client appからBackend APIに直接このリクエ ストを送っている

Slide 13

Slide 13 text

©2022 TC3株式会社 Confidential 13
 Workload Identity Federationってなに? OAuth 2.0 Token Exchange の価値 なにが嬉しいの? a. クライアントアプリケーションが外部APIのトークンを知っている必要がなくなるため、外 部APIのトークンが漏れる可能性が減る(WIFにおいてはクライアントアプリというものは存在しないので関連が薄 い) b. 従来のM2M(※)では、クライアントアプリケーション側の情報(e.g. 誰か)を外部APIまで届け ることが出来なかった(WIFにおいてこのメリットは関連が薄いが、ワークロードごとにIDをつける等してワークロード の情報を外部APIに届けることはできる) c. 従来のM2Mの場合、外部APIのキーをワークロードごとに持っている必要がありキーのロー テーションがしにくく、漏れたときの被害が広がりやすい(WIFでは事前にOIDCやPKIで外部サービスと信 頼関係を築いているため、個別ワークロード実装側でキーに触れさせないような実装をするといった考慮が必要ではあるものの、 より安全になる) ※ M2M = Machine-to-Machine: 従来は静的な認証情報(e.g. API Key, API secret)をワークロードに事前に設定しておいたり、OAuth2 の Client Credential flow でワークロード専用の認証情報(client_id, client_secret)をアクセストークンに変換し外部APIを呼び出してい た。 Client Credential flow と WIF の違いは Federation しているか(事前に信頼関係を築いているか)否かだと考えている。

Slide 14

Slide 14 text

©2022 TC3株式会社 Confidential 14
 Workload Identity Federationってなに? 要するに: セキュアなトークン変換の仕組みを使って短命なトークンを発行し、 外部のリソースにアクセスする方法 Token Exchange プロセス 代理アカウント w/ Workload専用ロール リソース Workload 外部 事前にWorkload専用に最小権限が設定されたロールが作成されていて、アク セスの都度そのロールを持ったアカウントが仮想的に用意され、そのアカウン トがリソースにアクセスしたような挙動をするとも言える 内部 認証基盤 (e.g. OIDC, PKI) 信頼関係構築済 Workloadがキーを参照するより、 認証基盤側でトークン発行まで実施した方が安全

Slide 15

Slide 15 text

©2022 TC3株式会社 Confidential 15
 Workload Identity Federationってなに? 参考資料 Workload Identity Federation - GCP: https://cloud.google.com/iam/docs/workload-identity-federation OAuth 2.0 Token Exchange: https://datatracker.ietf.org/doc/html/rfc8693 Delegation Patterns for OAuth 2.0 using Token Exchange - Scott Brady: https://www.scottbrady91.com/oauth/delegation-patterns-for-oauth-20 Secure cloud deployments with OpenID Connect: https://github.blog/changelog/2021-10-27-github-actions-secure-cloud-deployments-with-openid-connect/ Workload Identity Federation - Azure: https://docs.microsoft.com/en-us/azure/active-directory/develop/workload-identity-federation AWS IAM Roles Anywhare - https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html

Slide 16

Slide 16 text

©2022 TC3株式会社 Confidential 16
 Thank you for your attention. G I G I N N O V A T E D . If you are interested, please contact to [email protected] .