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
2.1k
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
プロジェクトマネジメント実践論|現役エンジニアが語る!~チームでモノづくりをする時のコツとは?~
mixi_engineers
PRO
4
240
スクラムマスターなしでもいい感じにスクラム開発している話
mixi_engineers
PRO
1
300
組織のデータリテラシー向上に向けて ~ MIXI データ活用ガイドラインができるまで 〜
mixi_engineers
PRO
6
250
MIXI配信取り組み
mixi_engineers
PRO
2
120
MIXIにおけるWebRTC技術の活用/Use of WebRTC Technology in MIXI
mixi_engineers
PRO
2
170
「人物ごとのアルバム」の精度改善の軌跡/Improving accuracy of albums by person
mixi_engineers
PRO
2
290
「モンスターストライク」の運営を支えるデータ分析基盤の歴史と進化 / History and evolution of the data analysis infrastructure supporting “Monster Strike” operations
mixi_engineers
PRO
3
480
【全貌公開】 MIXI の Atlassian Cloud 移行の裏側 / Behind MIXI's Migration to Atlassian Cloud
mixi_engineers
PRO
0
800
MIXI TECH NOTE #12
mixi_engineers
PRO
2
95
Other Decks in Technology
See All in Technology
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 完全版 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming - Expanded
tomzoh
4
3.4k
OpenHands🤲にContributeしてみた
kotauchisunsun
1
510
SmartNewsにおける 1000+ノード規模 K8s基盤 でのコスト最適化 – Spot・Gravitonの大規模導入への挑戦
vsanna2
0
110
モバイル界のMCPを考える
naoto33
0
390
2025-06-26_Lightning_Talk_for_Lightning_Talks
_hashimo2
2
120
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
2
5.1k
How Community Opened Global Doors
hiroramos4
PRO
1
140
OPENLOGI Company Profile
hr01
0
67k
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
6
4.9k
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
260
KiCadでPad on Viaの基板作ってみた
iotengineer22
0
260
GitHub Copilot の概要
tomokusaba
1
150
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
810
Speed Design
sergeychernyshev
32
1k
Become a Pro
speakerdeck
PRO
28
5.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Site-Speed That Sticks
csswizardry
10
680
Scaling GitHub
holman
459
140k
Navigating Team Friction
lara
187
15k
The Cult of Friendly URLs
andyhume
79
6.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Adopting Sorbet at Scale
ufuk
77
9.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経由でコンテンツを配信してる場合
• 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