Slide 1

Slide 1 text

マルチクラウドで認証したい ~CloudRunと.NET8 Blazor ServerでAzure Open AIをセキュアに呼び出す~ 1

Slide 2

Slide 2 text

● 自己紹介 ● 宣伝 ● 前提知識 ○ 認証・認可とは ● 認証・認可の用途 ○ どういう用途で使う? ● Google Cloudの認証・認可 ○ 基礎知識 ○ Google Cloudリソースへの認証1 ○ Google Cloudリソースへの認証2 ○ 外部IDを使って認証する ○ Google CloudにおけるID統合 ○ Google Cloudの認証・認可 ○ Google アカウントとGoogle Cloud アカウント ● 主要なMicrosoftの認証(使うものに厳選して紹介 話すこと 2 ● デモ ● AWSの認証・認可 ○ AWSリソースへの認証・認可1 ○ AWSリソースへの認証・認可2 ○ AWSアカウントの制御 ○ 補足:AWS Builder ID ● まとめ ● Tips(ここは話さない)

Slide 3

Slide 3 text

自己紹介 3 Kento.Yamada ● クラウドの運用分析・MSP向けのシステム開発 ● github@ymd65536 ● Microsoft MVP for Developer Technologies(2024年4月〜) new!!

Slide 4

Slide 4 text

宣伝 4 技術書典16に出典します! PagerDutyを使っている7人が思いのたけをぶちまけた作品! 明日(2024年05月26日)に発売されます。電子もあるYo PagerDuty FANBOOK Vol.1

Slide 5

Slide 5 text

今回やりたいこと Azure以外からAzureのサービスを呼び出したい ので クラウドで用意された認証認可を上手いこと使って実現したい! 5

Slide 6

Slide 6 text

前提知識 6

Slide 7

Slide 7 text

認証・認可とは 7 認証:システム・リソース利用に必要な本人確認 認可:システム・リソースの操作に対する権限

Slide 8

Slide 8 text

認証・認可とは 8 認証:部屋には入っていいけど、部屋のモノには触らんといて! 認可:モノによっては触ってもいいよ。(ただし許可したモノだけね!)

Slide 9

Slide 9 text

認証・認可とは 9 認証:Azureへのログイン 認可:Azureのサービスを利用できるかどうか(ポリシーで定義)

Slide 10

Slide 10 text

認証・認可の用途 10

Slide 11

Slide 11 text

どういう用途で使う? 11 クラウドでは標準になっている。その一方で使い方で役割が変わる! ● 社内アカウントの管理(情シスっぽい話) ○ ex) 社内資料へのアクセス ○ ex) デバイスアクセス(MDM) ● インフラの管理(エンジニアっぽい話) ○ ex) Webアプリケーションで特定のデータベースにアクセス ○ ex) マネジメントコンソールからリソースにアクセス

Slide 12

Slide 12 text

どういう用途で使う? 12 クラウドでは標準になっている。その一方で使い方で役割が変わる! ● 社内アカウントの管理(情シスっぽい話) ○ ex) 社内資料へのアクセス ○ ex) デバイスアクセス(MDM) ● インフラの管理(エンジニアっぽい話) ○ ex) Webアプリケーションで特定のデータベースにアクセス ○ ex) マネジメントコンソールからリソースにアクセス

Slide 13

Slide 13 text

Google Cloudの認証・認可 13

Slide 14

Slide 14 text

Google Cloudの認証・認可(基礎知識) 14 認証・認可でいうと、えげつないくらいある! ● API キー ● OAuth クライアント ID ● ユーザー アカウントまたはサービス アカウント ● トークン ● Firebase Authentication ● Identity Platform ● Identity-Aware Proxy ● Workload IdentityとWorkforce Identity ● Cloud Identity ● Identity and Access Management

Slide 15

Slide 15 text

補足:GoogleアカウントとGoogle Cloud アカウント 根本的に異なるもの ● Google = Googleアカウント(今回使うもの) ● Google Cloud = Google Cloudアカウント(今回使うもの) ● Google Workspace = Google Workspaceアカウント Google CloudはGoogle アカウントかGoogle Workspaceアカウントがあれば使える! 15

Slide 16

Slide 16 text

Google Cloudリソースへの認証1 16 ● Firebase Authentication ○ Firebaseプラットフォームにおける認証 ○ FirebaseはGoogleに買収されているため、Googleの認証機能として数える ● Identity Platform ○ Google Cloudにおける認証サービス ○ なんだけども、実はSDKレベルで見るとFirebaseとほぼ同じ ○ Firebaseの上位互換のような存在

Slide 17

Slide 17 text

Google Cloudリソースへの認証2 17 ● Identity-Aware Proxy(IAP) ○ 認証用リバースプロキシみたいなもの ○ 社内ユーザに限定してアプリケーションを展開したい時に利用できる コイツがあれば、踏み台サーバはいらない(コイツいうな!)

Slide 18

Slide 18 text

外部IDを使って認証する 外部IDを使ってGoogle Cloudリソースへのアクセスを許可 ● Workforce Identity ○ サービスとして紹介されている ● Workload Identity ○ Google のIAMがもつ1つの機能として解説されている ● Cloud Identity ○ IDaaS、ID統合なので認証は外部 外部IDというとたとえば、Microsoft Entra IDとの連携 18

Slide 19

Slide 19 text

外部IDを使って認証する 19 https://cloud.google.com/architecture/identity/federating-gcp-with-azure-active-directory?hl=ja AzureのテナントまるごとGoogle CloudのWorkloadIdentityで繋いで使っても良い。 →とはいえ、個人で小さく開発したいという用途ではちょっとやりすぎかも

Slide 20

Slide 20 text

Google Cloudの認証・認可 20 ● Google Cloudの認証およびリソース操作に関する制御 ○ Identity and Access Management(IAM) 今回はCloudRunと他のサービスアクセスで利用します。 ポリシー名の言い回しはわりとAzureに近しいものを感じる。 例:⚪⚪⚪管理者、⚪⚪⚪閲覧者など

Slide 21

Slide 21 text

主要なMicrosoftの認証 ● Microsoft Entra ID ● Active Directory(AD) Azure AD=Microsoft Entra ID という解釈でOK! なお、Azureサービスの呼び出しにはManaged IDを利用(推奨) ※細かいことを言うとたくさんあるけど、趣旨がズレるので割愛 21 今回はAzureの「アプリの登録」を使っています。

Slide 22

Slide 22 text

構成図 22 Artifact Registry Cloud Run Blazor Server Cloud Monitoring Microsoft Azure Secret Manager ログチェック シークレットの登録 イメージのプッシュ シークレットの参照 イメージのプル マネージドIDを呼び出し Google認証

Slide 23

Slide 23 text

デモ 23

Slide 24

Slide 24 text

補足:CloudRunとAzureの認証 CloudRunにAzureのデフォルトクレデンシャルを読み込ませる 👉CloudRunがAzureの資格情報を引き受けてAzureにアクセス 👉CloudRunから届いたアクセスを認証する(認証情報を検証する) 👉認証されたアクセスにどのような認可があるかをチェックする 👉認可された認証でAzure Open AIにアクセスする 24

Slide 25

Slide 25 text

25 AWSの認証認可には何がある? おまけ

Slide 26

Slide 26 text

AWSの認証・認可 26 今回は説明だけに留めておくよ!

Slide 27

Slide 27 text

AWSリソースへの認証・認可1 ● AWSの認証およびリソース操作に関する制御 ○ Identity and Access Management(IAM) AWS IAMでは主に3つの分け方がある(振り返り) ● IAMユーザー ○ コンソールユーザーだったり、プログラブルユーザーだったりさまざま ● IAMロール ○ AzureではマネージドID、Google Cloudではサービスアカウントに該当 ● IAMユーザーグループ ○ IAM ユーザーの集合 27

Slide 28

Slide 28 text

AWSリソースへの認証・認可2 ● アプリケーションのアイデンティティプラットフォーム ○ Amazon Cognito ソーシャルで認証して前述のAWS IAMと連携 (Web IDフェデレーションアクセスなどよく言われる) IAMロールをマップして操作できる内容を変更できる。 例:システムにGoogleのIDでログインしたら閲覧のみ許可 28

Slide 29

Slide 29 text

AWSアカウントの制御 ● アカウント制御 ○ AWS Control Tower 簡単にいうと?: 組織内のアカウントオーケストレーション できること(例): 特定のサービスのみOUもしくはアカウント単位で操作を制限/強制する。 29

Slide 30

Slide 30 text

補足:AWS Builder ID ● AWSのアカウントを補完するものとして登場 ● これ単体ではAWSリソースにアクセスできない ● その反面、このIDがないと利用できないサービスがある 30 参考:AWS ビルダー IDでサインインします。 https://docs.aws.amazon.com/ja_jp/signin/latest/userguide/builder-id-type.html

Slide 31

Slide 31 text

まとめ ● 認証認可ってなんだっけ? ○ 認証:システム・リソース利用に必要な本人確認 ○ 認可:システム・リソースの操作に対する権限 ● クラウドではさまざまな認証がある ○ 昨今においてはクラウド同士で安全に認証する方法があるYo ● 今回はGoogle Cloud ✖ Azureで認証してみた ○ 認証すれば、他のクラウドサービスも安全に呼び出せるYo ● AWSの認証認可 ○ IAMやAmazon Cognito、AWS Control TowerがあるYo 31

Slide 32

Slide 32 text

32 ここから先は資料集 Tips

Slide 33

Slide 33 text

Google Cloud関連 33

Slide 34

Slide 34 text

Identity-Aware Proxy https://cloud.google.com/iap/docs/concepts-overview?hl=ja 34

Slide 35

Slide 35 text

Workload Identity https://cloud.google.com/iam/docs/workload-identity-federation?hl=ja 35

Slide 36

Slide 36 text

IAM https://cloud.google.com/iam/docs/overview?hl=ja 36

Slide 37

Slide 37 text

Workforce Identity https://cloud.google.com/workforce-identity-federation?hl=ja 37

Slide 38

Slide 38 text

Cloud Identity https://cloud.google.com/identity?hl=ja 38