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.6k
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
【D2-5】MIXI SREの最新事例まるわかり! 〜 各事業のSRE活動にかかわるエンジニアに本音を聞く | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
3
76
【D2-7】共闘ことばRPG コトダマンの自律分散型QA組織 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
1
28
【D2-S1】MIXIオンプレミス設備のこれまでとこれから~そして印西へ~ | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
1
50
【D2-6】モンスト10周年における真獣神化実装担当者が10年分の形態変化の設計をイチから作り直した話 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
2
69
【D2-8】WordPressのヘッドレス運用化 〜minimo roomのJamstack構成移行プロジェクト〜 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
2
38
【D2-S2】Kotlin と Flutter を愛であう会 for Android開発 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
2
58
なんで私に登壇依頼が?! ~頼られるエンジニアになるためには~ /
mixi_engineers
PRO
2
240
【D1-3】フィギュアスケートにおける自動追尾カメラ開発 - 位置情報+AI画像解析 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
1
290
【D1-6】netkeibaにおける機械学習を用いた競馬オッズ予測手法の開発とその変革 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
1
260
Other Decks in Technology
See All in Technology
ゼロから始めるVue.jsコミュニティ貢献 / first-vuejs-community-contribution-link-and-motivation
lmi
1
120
require(ESM)とECMAScript仕様
uhyo
3
640
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
140
Java EE/Jakarta EEの現状と将来―クラウドネイティブ時代にJava EEは対応できるのか?―
takakiyo
1
160
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
160
AWSに詳しくない人でも始められるコスト最適化ガイド
yuhta28
1
230
アクセシビリティを考慮したUI/CSSフレームワーク・ライブラリ選定
yajihum
2
1k
Meta Quest 3 で動く桜マシマシ WebXR アプリを IBM Cloud Code Engine と Babylon.js で作った話
1ftseabass
PRO
0
120
開発生産性大幅アップ!Postman VS Code拡張機能
nagix
2
380
Azureの基本的な権限管理の勉強会
yhana
0
420
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
4
14k
リテール金融(キャッシュレス・ネット銀行・ネット証券)の競争環境と経済圏
8maki
0
1.1k
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
456
32k
GraphQLの誤解/rethinking-graphql
sonatard
50
9.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
Why Our Code Smells
bkeepers
PRO
331
56k
Gamification - CAS2011
davidbonilla
76
4.6k
The Mythical Team-Month
searls
216
42k
Building Your Own Lightsaber
phodgson
99
5.7k
Building Adaptive Systems
keathley
31
1.9k
Writing Fast Ruby
sferik
621
60k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
121
39k
How GitHub (no longer) Works
holman
304
140k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
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