Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
AWS Cognito で開発環境を守る
MIXI ENGINEERS
PRO
July 01, 2022
Technology
0
880
AWS Cognito で開発環境を守る
『ミクシィ x ビットバンク合同LT会 〜2社におけるクラウド活用最前線〜』
https://mixi.connpass.com/event/251707/
にてお話した小林による発表資料です。
MIXI ENGINEERS
PRO
July 01, 2022
Tweet
Share
More Decks by MIXI ENGINEERS
See All by MIXI ENGINEERS
Jenkins Day Japan 2022 - モンスターストライクとJenkins
mixi_engineers
PRO
1
450
2022年の動画再生アプリの作り方
mixi_engineers
PRO
0
2.2k
MIXI TECH NOTE #08
mixi_engineers
PRO
0
190
コンテンツ屋が昔つくった PGW OSSの紹介
mixi_engineers
PRO
1
280
テスト自動化の魅力に気づくまで
mixi_engineers
PRO
1
600
TIPSTARの自動化〜泣いて笑って捲られて〜
mixi_engineers
PRO
0
220
モンスターストライクのQA効率化の取り組み
mixi_engineers
PRO
0
140
スポーツ・エンタメにおける映像伝送技術の実装と挑戦 〜車載カメラ、5G〜
mixi_engineers
PRO
1
530
srenext2022-skaru
mixi_engineers
PRO
1
6.6k
Other Decks in Technology
See All in Technology
JAWS-UG 横浜 #54 資料
takakuni
0
220
OVN-Kubernetes-Introduction-ja-2023-01-27.pdf
orimanabu
1
460
ECテックカンファレンス2023 EC事業部のモバイル開発2023
tatsumi0000
0
340
cdk deployに必要な権限ってなんだ?
kinyok
0
190
CUEとKubernetesカスタムオペレータを用いた新しいネットワークコントローラをつくってみた
hrk091
1
300
230125 古いタブレットの活用 かーでぃさん
comucal
PRO
0
17k
CES_2023_FleetWise_demo.pdf
sparkgene
0
130
書籍を書きました。 そう、VS Codeで。
takumanakagame
4
4.6k
マイクロサービス宣言から8年 振り返りとこれから / Eight Years After the Microservices Declaration A Look Back and A Look Ahead
eisuke
2
310
オンプレk8sとEKSの並行運用の実際
ch1aki
0
320
イ良い日ンマを作る(USBストレージ容量偽装の手法) / USB Storage Capacity Faking Techniques
shutingrz
0
560
Stripe / Okta Customer Identity Cloud(旧Auth0) の採用に至った理由 〜モリサワの SaaS 戦略〜
tomuro
0
140
Featured
See All Featured
Designing for humans not robots
tammielis
245
24k
How STYLIGHT went responsive
nonsquared
89
4.2k
Designing Experiences People Love
moore
130
22k
Become a Pro
speakerdeck
PRO
6
3.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
240
11k
The Web Native Designer (August 2011)
paulrobertlloyd
76
2.2k
Designing with Data
zakiwarfel
91
4.2k
Clear Off the Table
cherdarchuk
79
290k
How To Stay Up To Date on Web Technology
chriscoyier
779
250k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
44
14k
Bash Introduction
62gerente
601
210k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
13
5.4k
Transcript
AWS Cognitoで開発環境を守る 2022/07/01 株式会社ミクシィ 開発本部 セキュリティ室 小林 聖哉
©mixi, Inc, All rights reserverd. 自己紹介 • 開発本部 セキュリティ室 • 21新卒
• 全社的なAWS/GCPの監視 ◦ 監視基盤の実装・改善 • セキュリティ対策支援 • etc… 2
©mixi, Inc, All rights reserverd. アジェンダ • セキュリティ室で行っているIaaS監視の紹介 • 管理画面・開発環境のインターネット公開の課題
• Cognito 紹介 ◦ 活用シナリオ ◦ 導入時の課題と解決策 ◦ セキュリティ設定周り • まとめ 3
©mixi, Inc, All rights reserverd. セキュリティ室で行っているAWS/GCPの監視について • 各プロジェクトの監視 ◦ 設定不備や侵害の検知
• Irene ◦ 内製ツール ◦ アラートの自動評価・管理 ◦ 画面キャプチャ, etc… • AWS: 約50アカウント (※全てではない) ◦ CloudTrail ◦ GuardDuty ◦ OSSの設定監視ツール • GCP: 2組織/100プロジェクト以上 ◦ Security Command Center ◦ 内製のリソース収集ツール • 詳細 → https://speakerdeck.com/mixi_engineers/srenext2022-skaru 4
©mixi, Inc, All rights reserverd. 管理画面・開発環境のインターネット公開の課題 • サービスの管理画面・開発環境のインターネット公開の検知 ◦ リモートワークの普及/自宅からアクセスしたい
◦ 委託会社などの社外の人がアクセスしたい → ALBのIdP連携では自社IdPを使える人しか制御できない → 仕方なくインターネット公開 • 自社 + 特定の外部ユーザーを認証したい Cognitoを使えば 自社IdP + 他社のIdP/独自のユーザープール で実現できそう 5
©mixi, Inc, All rights reserverd. Cognitoとは • ウェブおよびモバイルアプリの認証、認可、およびユーザー管理機能を提供します • ユーザプール
(今回扱うのはこちら) ◦ 認証 ◦ ユーザディレクトリ ◦ サインアップおよびサインインサービス ▪ Cognito User Pool ▪ Google, Apple, Facebook, Amazon ▪ OIDC Provider ▪ SAML Provider ◦ サインインのためのHosted UIを提供 • IDプール ◦ 認可 ◦ Amazon S3 や DynamoDB などの AWS のサービスにアクセスするための一時的な AWS 認証情報を取得できます ◦ 匿名ユーザと認証されたユーザで異なるIAMロールを付与することができる Hosted UI 6
©mixi, Inc, All rights reserverd. シナリオ例 7 • Cognito ×
ALB • Cognito × CloudFront
©mixi, Inc, All rights reserverd. Cognito × ALB • ALB経由でアプリケーションを公開している場合
• リスナールールの認証にAmazon Cognitoを設定するだけ • HostedUIにリダイレクトされます 8
©mixi, Inc, All rights reserverd. Cognito × CloudFront • SPAなど、S3からCloudFront経由でコンテンツを配信してる場合
•
[email protected]
でHostedUIにリダイレクトして認証する ◦ https://github.com/awslabs/cognito-at-edge ◦ Viewer Request Eventsに設定する 9
©mixi, Inc, All rights reserverd. Cognito導入時の課題 導入自体は簡単そうだが・・・ 課題もでてきた • TOTPによるMFAを設定したい
• Google認証時に特定のユーザーだけ許可したい 10
©mixi, Inc, All rights reserverd. Cognito導入時の課題 • TOTPによるMFAを設定したい • Google認証時に特定のユーザーだけ許可したい
11
©mixi, Inc, All rights reserverd. CognitoのユーザにMFAを設定したい: 認証方法 • 社内ユーザー ◦
Google, OIDC IDプロバイダがそのまま使える ◦ 社内のセキュリティポリシーに沿った設定 • 外部ユーザー ◦ 業務委託先など一時的にアクセス可能なユーザを作りたい場合 ◦ Cognito User Poolにて、ユーザを作成して提供する必要がある ◦ 社内ユーザと同等のセキュリティレベルにしたい → MFAは設定させたい 12
©mixi, Inc, All rights reserverd. CognitoのユーザにMFAを設定したい • SMSもしくはTOTPによるMFAを設定可能だが、Hosted UIではTOTPの設定ができない ◦
https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/user-pool-settings-mfa -totp.html 1. AWS CLIを使って設定する • IAM発行して、作業してもらう必要がある 2. MFA設定用の画面を作る • AWS Amplify SDKを使うことで簡単に実装できる • 使い回しも可能 13
©mixi, Inc, All rights reserverd. CognitoのユーザにMFAを設定したい • Amplify SDKがよしなにやってくれる •
withAuthenticator でラップするだけ 14 src/App.js Sample
©mixi, Inc, All rights reserverd. CognitoのユーザにMFAを設定したい • TOTPによるMFA設定が可能 • S3等でホストしてユーザに設定してもらう
• 初期設定後はHosted UIでもMFAが使える 15
©mixi, Inc, All rights reserverd. Cognito導入時の課題 • TOTPによるMFAを設定したい • Google認証時に特定のユーザだけ許可したい
16
©mixi, Inc, All rights reserverd. 特定のGoogleユーザーだけ許可したい • Google OAuth同意画面のスコープ ◦
外部: 全てのGoogleアカウント ◦ 内部: GCPの組織に紐づいている全ユーザー • OAuth同意画面の設定だけではユーザごとに許可/拒否できない 17 同意画面の設定
©mixi, Inc, All rights reserverd. 特定のGoogleユーザーだけ許可したい: トリガー • 認証イベント時に、Lambda関数を挟める ◦
カスタム検証が可能 ◦ サインアップ前後 ◦ サインイン前後 • 属性 ◦ ユーザプールID ◦ アプリクライアントID ◦ ユーザ名 ◦ ユーザ属性 ▪ emailなど 18 サインイン前に属性の検証をして、認証の許可/拒否ができる
©mixi, Inc, All rights reserverd. 特定のGoogleユーザーだけ許可したい: トリガー • 検証用のLambdaを作成し、認証前のトリガーに設定する •
例: Googleユーザかつ許可するemailの時のみ通過させる ◦ ユーザー名: Google_XXX の形式になる (usernameを属性マッピングしていない場合) 19
©mixi, Inc, All rights reserverd. 特定のGoogleユーザーだけ許可したい: グループ管理 • 所属しているグループによって権限を変えることもできる ◦
ex) 管理者グループ, 一般ユーザグループなどに分けて、異なるIAMロールを付与できる • ソーシャルログインは自動的にグループが生成される (デフォルトではロールはついていない) • 複数のグループに所属することも可能で、優先順位がつけられる • トリガーで所属グループをチェックする 20
©mixi, Inc, All rights reserverd. セキュリティ設定について • 自己サインアップは無効にしましょう ◦ 有効のままだとだれでもサインアップできてしまい認証を突破できてしまいます
• アドバンスドセキュリティ ◦ 侵害された認証情報の検知 ◦ アダプティブ認証 ◦ IPアドレスのホワイトリスト/ブラックリスト • CloudTrail ◦ APIイベントからサインインステータスを見れる ▪ InitiateAuth: サインイン時のイベント ◦ 新たにHosted UIのイベントが見れるようになっていた (6/17) ▪ https://docs.aws.amazon.com/cognito/latest/developerguide/understanding-amazon-cognito-entries.html 21
©mixi, Inc, All rights reserverd. まとめ • Cognito + ALB/CloudFrontを使うことでセキュアな環境構築が可能
• AmplifySDKを使用して、TOTPによるMFAの設定が可能 • トリガーを使用することで、ユーザごとに制御が可能 • Cognitoのセキュリティ周りの設定 22
None