Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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.2k
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
競輪・オートレース配信を支える画音監視 - 長距離伝送・配信におけるIPベースMultiview活用事例
mixi_engineers
PRO
0
42
インフラ室事例集
mixi_engineers
PRO
2
380
価格だけじゃない、トランジット調達先の選定基準を語るBoF
mixi_engineers
PRO
1
14
TIPSTARを支えるCloud Spanner
mixi_engineers
PRO
1
38
モンストを支えるインフラ技術
mixi_engineers
PRO
1
740
ルールベースからMLへ みてね写真プリント自動提案の活用事例
mixi_engineers
PRO
1
130
SoccerNet GSRの紹介と技術応用:選手視点映像を提供するサッカー作戦盤ツール
mixi_engineers
PRO
1
340
2つのフロントエンドと状態管理
mixi_engineers
PRO
5
290
月間4億メディアの画像解析を救え!みてね発・オンデバイスMLで挑む圧倒的コストカット作戦
mixi_engineers
PRO
2
330
Other Decks in Technology
See All in Technology
Fashion×AI「似合う」を届けるためのWEARのAI戦略
zozotech
PRO
2
820
AIプラットフォームにおけるMLflowの利用について
lycorptech_jp
PRO
1
170
品質のための共通認識
kakehashi
PRO
3
260
1人1サービス開発しているチームでのClaudeCodeの使い方
noayaoshiro
1
280
今からでも間に合う!速習Devin入門とその活用方法
ismk
1
750
大企業でもできる!ボトムアップで拡大させるプラットフォームの作り方
findy_eventslides
1
820
SSO方式とJumpアカウント方式の比較と設計方針
yuobayashi
7
690
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
230
モダンデータスタック (MDS) の話とデータ分析が起こすビジネス変革
sutotakeshi
0
500
ExpoのインダストリーブースでみたAWSが見せる製造業の未来
hamadakoji
0
140
初めてのDatabricks AI/BI Genie
taka_aki
0
200
re:Invent2025 コンテナ系アップデート振り返り(+CloudWatchログのアップデート紹介)
masukawa
0
390
Featured
See All Featured
Statistics for Hackers
jakevdp
799
230k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Context Engineering - Making Every Token Count
addyosmani
9
520
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
What's in a price? How to price your products and services
michaelherold
246
13k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
BBQ
matthewcrist
89
9.9k
Scaling GitHub
holman
464
140k
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