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
AWS Cognito で開発環境を守る
Search
MIXI ENGINEERS
PRO
July 01, 2022
Technology
0
1.9k
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
運営11年目タイトルを守る最強の盾の有効性と活用法
mixi_engineers
PRO
2
220
MIXI における技術広報とその役割
mixi_engineers
PRO
2
240
セキュリティ監視の内製化 効率とリスク
mixi_engineers
PRO
7
2.4k
IT企業でロボットを作った話 / A story about building a robot in an IT company
mixi_engineers
PRO
2
93
「共闘ことばRPG コトダマン」 SREチーム流 アプリのユーザー体験向上を支えるオブザーバビリティ
mixi_engineers
PRO
1
260
MIXI M のこれまでとこれから / Welcome Fintech Community #2
mixi_engineers
PRO
1
200
Git 研修 Advanced【MIXI 24新卒技術研修】
mixi_engineers
PRO
3
1.4k
データベース研修 DB基礎【MIXI 24新卒技術研修】
mixi_engineers
PRO
7
1.8k
データベース研修 分析向けSQL入門【MIXI 24新卒技術研修】
mixi_engineers
PRO
4
820
Other Decks in Technology
See All in Technology
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
180
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
1
120
DynamoDB でスロットリングが発生したとき/when_throttling_occurs_in_dynamodb_short
emiki
0
270
The Rise of LLMOps
asei
9
1.8k
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
310
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
130
強いチームと開発生産性
onk
PRO
36
12k
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
3
350
SDNという名のデータプレーンプログラミングの歴史
ebiken
PRO
2
130
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
150
FlutterアプリにおけるSLI/SLOを用いたユーザー体験の可視化と計測基盤構築
ostk0069
0
120
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
327
38k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Unsuck your backbone
ammeep
668
57k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
It's Worth the Effort
3n
183
27k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
430
Optimizing for Happiness
mojombo
376
70k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Designing for Performance
lara
604
68k
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経由でコンテンツを配信してる場合
• lambda@Edgeで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