Title AWS Single Sign-Onを用いた、セキュアでより良いログイン体験への取り組み
Speaker 光野 達朗 Tatsuro Mitsuno (技術開発本部 SRE部 テックリード)
2020/07/22 【【オンライン】ZOZO×一休×PayPay AWS Night https://techplay.jp/event/784413 #ZIP_AWS
https://www.youtube.com/watch?v=W75G6DCDN6w
AWS Single Sign-Onを用いた、 セキュアでより良いログイン体験への取り組み 【オンライン】ZOZO×一休×PayPay AWS Night 2020/07/22 株式会社ZOZOテクノロジーズ 技術開発本部 SRE部 テックリード 光野達朗Copyright © ZOZO Technologies, Inc.
View Slide
© ZOZO Technologies, Inc.株式会社ZOZOテクノロジーズ 技術開発本部 SRE部 テックリード 光野 達朗 2012年ヤフー株式会社にサーバサイドエンジニアとして入社。2016年4月からは株式会社VASILYでインフラエンジニア。2018年4月から現職。現在はAWSを専門とするSREテックリードとして、クラウドアーキテクチャの構築と信頼性向上に従事。 ウィスキーと葉巻が好き。愛してる。 2
© ZOZO Technologies, Inc.プロダクト紹介 3
© ZOZO Technologies, Inc.https://zozo.jp/ ● 日本最大級のファッション通販サイト ● 1,300以上のショップ、7,400以上のブランドの取り扱い(ともに2019年12月末時点) ● 常時73万点以上の商品アイテム数と毎日平均3,200点以上の新着商品を掲載 ● 即日配送サービス ● ギフトラッピングサービス ● ツケ払い など 4
© ZOZO Technologies, Inc.https://wear.jp/ 5● 日本最大級のファッションコーディネートアプリ ● 1,400万ダウンロード突破、コーディネート投稿総数は900万件以上(ともに2019年12月末時点) ● 全世界(App Store / Google Playが利用可能な全ての国)でダウンロードが可能 ● 等身大の着こなしが支持を集め、10万人以上のフォロワーを持ちWEARISTAに認定された一般ユーザーも誕生
© ZOZO Technologies, Inc.本発表で扱う範囲 個々のプロダクトではなく 組織全体のAWS運用に関する話 6
© ZOZO Technologies, Inc.本発表を通して伝えたいこと Single Sign-Onはいいぞ AWSをマルチアカウントで用いる場合には必ず設定した方が良い AWSアカウントが1つでも設定する価値あり 7
© ZOZO Technologies, Inc.前提:ZOZOテクノロジーズのAWSアカウント体系 8AWS Organizations(複数アカウントを一元管理するもの)マスターアカウントメンバーアカウント メンバーアカウント● 組織の親● 請求の一元管理● 各種統制系機能の管理● 組織の子● 各プロダクトごとに複数所有● 本番環境用・事前環境用・etc.
© ZOZO Technologies, Inc.マルチアカウント体系のメリデメ 9cf. AWS におけるマルチアカウント管理の手法とベストプラクティス, 高田智己, AWS Summit Tokyo 2017
© ZOZO Technologies, Inc.マルチアカウント体系のメリデメ 10cf. AWS におけるマルチアカウント管理の手法とベストプラクティス, 高田智己, AWS Summit Tokyo 2017
© ZOZO Technologies, Inc.本日取り上げる運用のオーバーヘッド なによりもまず ログインが手間 MFA必須にすると更に大変 11
© ZOZO Technologies, Inc.ログイン 12本番環境用アカウント開発環境用アカウント事前環境用アカウント利用者【手間その1】各アカウントにIAMユーザやIAMロールを作成【手間その2】ログインのたびにTOTP入力
© ZOZO Technologies, Inc.この手間、必要? 13● 仕組みは必要 ○ アカウント分離もMFAも大事なサービスを守るためには必要 ● 手間は無くていい ○ ex. 入退社に伴うIAMユーザの作成・削除 ○ 手間がかかることは後回しにされ、安全でなくなる可能性がある ● 必要なことこそ簡単にしたい 利用者素敵な仕組み● 簡単に切り替えられる● IAMリソース不要
© ZOZO Technologies, Inc.解決への取り組み:Single Sign-On ● Single Sign-On(以下、SSO) ○ シングルサインオン ○ 一度のユーザ認証処理で、複数サービスのユーザ認証も済ませること・その仕組み ○ 「どこかに1度ログインしたら、AWSアカウントへのログインもそれで済ませる」 目指したところ(SSOといっても実現方法は色々) ● 組織のID体系と紐付けたい ○ ZOZOテクノロジーズの場合、Azure ADによるAD管理 ● AWSアカウントごとに設定したくない ○ ZOZOテクノロジーズの場合、現在60アカウント程度。増加傾向 ● ユーザ・アカウント・権限の紐付けを柔軟にしたい 14
© ZOZO Technologies, Inc.いろいろ試しまして... 15
© ZOZO Technologies, Inc.できました! 16AWS Organizations マスターアカウントメンバーアカウント メンバーアカウントAWS Single Sign-OnAzure ADプロビジョン権限・ユーザの配布ログイン用IAMリソース作成不要
© ZOZO Technologies, Inc.デモ動画 17登壇時はデモ動画でした 静止画になるため削除しています
© ZOZO Technologies, Inc.設定:初期設定 18● AWS SSOのIDソースを検討する a. SSO自体に管理させる・Microsoft AD・Azure AD(2019/09対応)・Okta(2020/06対応) b. 弊社はAzure ADを外部IDソースとして利用 ● 大きく3ステップで完了 a. AWS OrganizationsからAWS Single Sign-On(以下SSO)統合を有効化 b. AWS SSOのリソースを作成 c. Azure ADの「エンタープライズアプリケーション」を作成し接続 i. SAML認証を処理する要素(プログラムを書くわけではない)
© ZOZO Technologies, Inc.設定:日々の運用 191. Azure ADの「エンタープライズアプリケーション」にユーザを追加 2. AWS SSO側にユーザが現れるので、アカウントと権限を紐付け a. AWSアカウントごとのIAMユーザ・IAMポリシー作成は不要(AWS SSOが用意する) b. SSO提供アカウント(組織の親アカウント)のみ管理すれば良い
© ZOZO Technologies, Inc.AWS Single Sign-Onの良いところ・イマイチなところ 20● AWSアカウントの増減を気にしなくて良い ○ Organizationsで管理されるAWSアカウント全てが自動的に対象となる ● Azure ADにてユーザが削除されるとAWS SSO側でも「無効化」される ○ 退職時に、アカウントをのぞいてIAMユーザを削除して回らなくて良い ● AWS CLI v2との統合 ○ aws sso login 〜でSSOベースのアクセストークンが取得できる ● APIが少ない ○ 権限の更新・ユーザの更新など更新作業はWebコンソールオンリー ● SSOで定義する権限がIAMと統合されてない ○ 記法はIAMと同じだが作成されたポリシーは個別管理
© ZOZO Technologies, Inc.今後解決する必要があること 21● 最小限かつ十分な権限設計 ○ 今は大まかな権限設計(管理者・RW・RO・Billingなど・・・) ○ 既存の権限がバラバラで、何かが「できなくなる」ことを避けた結果 ● SSO移行促進・不要なIAMユーザ削除 ○ SSOを利用していないユーザへの啓蒙 ○ SSOベースになって不要になったIAMユーザの洗い出しと削除 AWS CloudTrailAWS Configいくつかの監査系サービスを組み合わせた分析に挑戦中
© ZOZO Technologies, Inc.まとめ ● AWSのマルチアカウント運用で、頻繁なログインが課題だった ● AWS SSOによって複数AWSアカウントでのログイン体験を改善した ○ 弊社ではAzure ADをIDソースにしたが、AWS SSO単体でID管理することも可能 ● IAMユーザを使う場面が減るため、管理上のメリットも多し ○ 人間用IAMユーザを削除して回る必要がなくなる ● 1アカウントでも設定は可能。アカウントが増える可能性があれば検討推奨 ● (AWS)Single Sign-Onはいいぞ 22
© ZOZO Technologies, Inc.Appendix Q. AWS SSO以外で検討した手段と結果は? A. IAMのIDプロバイダを利用したSSO / クロスアカウントAssumeRoleを検討したが、各アカウント単位で事前に作るものが多かったので非採用。機能的にもAWS SSOが最も使いやすい。 Q. OneLogin / Okta / TrustLoginなどのサービスを使わなかった理由は? A. 既にAzure ADを中心としたSSO体系が存在していたので、 1. Azure AD=>(別サービス)=> AWS 2. (別サービス)=> AWS などとするメリットが特に無かった。 23
© ZOZO Technologies, Inc.We Are Hiring! ● AWSを使ってWebサービスを作りたい人 ○ できます ● AWSをより良く使ってWebサービスを作りたい人 ○ 一緒に強くなりましょう ● AWSをより良く使うための仕組みを作りたい人 ○ 待ってます ● AWSをより良く使えているかを確認する仕組みを作りたい人 ○ 今作ってます。一緒に作りましょう 24=> https://tech.zozo.com/recruit/ <=