Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マルチアカウントでのIAMユーザー把握と可視化 IAMユーザー棚卸しへの取り組み / Understanding and Visualizing IAM Users with Multiple Accounts

マルチアカウントでのIAMユーザー把握と可視化 IAMユーザー棚卸しへの取り組み / Understanding and Visualizing IAM Users with Multiple Accounts

Title
マルチアカウントでのIAMユーザー把握と可視化
IAMユーザー棚卸しへの取り組み

Speaker
光野 達朗 Tatsuro Mitsuno (CTO室 / 技術開発本部 SRE部 テックリード)

2021/02/09 第二回 AWSマルチアカウント事例祭り
https://zozotech-inc.connpass.com/event/200890/
#ama_fes02

https://www.youtube.com/watch?v=LHVifH4P4GM

Tatsuro Mitsuno

February 09, 2021
Tweet

More Decks by Tatsuro Mitsuno

Other Decks in Technology

Transcript

  1. © ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ
 CTO室 / 技術開発本部 SRE部
 テックリード


    
 光野 達朗
 2012年ヤフー株式会社にサーバサイドエンジニアとして入 社。2016年4月からは株式会社VASILYでインフラエンジニ ア。2018年4月から現職。現在はAWSを専門とするSREテッ クリードとして、クラウドアーキテクチャの構築と信頼性向上 に従事。
 ウィスキーと葉巻が好き。愛してる。
 
 2
  2. © ZOZO Technologies, Inc. https://zozo.jp/
 • 日本最大級のファッション通販サイト
 • 1,300以上のショップ、7,400以上のブランドの取り扱い(ともに2019年12 月末時点)


    • 常時73万点以上の商品アイテム数と毎日平均3,200点以上の新着商品 を掲載
 • 即日配送サービス
 • ギフトラッピングサービス
 • ツケ払い など
 4
  3. © ZOZO Technologies, Inc. https://wear.jp/
 5 • 日本最大級のファッションコーディネートアプリ
 • 1,400万ダウンロード突破、コーディネート投稿総数は900万件以上(と

    もに2019年12月末時点)
 • 全世界(App Store / Google Playが利用可能な全ての国)でダウンロー ドが可能
 • 等身大の着こなしが支持を集め、10万人以上のフォロワーを持ち WEARISTAに認定された一般ユーザーも誕生

  4. © ZOZO Technologies, Inc. 前提:ログインユーザー管理
 9 AWS Organizations メンバーアカウント メンバーアカウント

    AWS Single Sign-On Azure AD プロビジョン 権限・ユーザーの配布 ログイン用 IAMリソース 作成不要 cf: AWS Single Sign-Onを用いた、 セキュアでより良いログイン体験への取り組み - Speaker Deck マネージメントアカウント
  5. © ZOZO Technologies, Inc. 実現したいこと:IAMユーザーの利用を最小限にする
 10 • IAMユーザーの問題点
 ◦ 部署異動・退職時のユーザー管理が煩雑


    (煩雑だが、残しておくとログインできてしまう😫)
 ◦ アクセストークンに有効期限が無い
 (AWS SSOの場合はセッションタイムアウトに準ずる。最大12時間)
 
 • AWS SSOがある今、Webコンソールへのログインに
 IAMユーザーを使う必要はなく、これの多くは削除が可能なはず
 
 • そのためにはまず把握が必要

  6. © ZOZO Technologies, Inc. 課題:どのようにしてマルチアカウントの世界でIAMユーザーを把握するか
 11 • IAMユーザーの中には、Webコンソールにログインできないユーザがいる
 ◦ 「コンソールのパスワード」を持たない


    ◦ これを除外した一覧を作りたい
 
 • 目視・・・?
 ◦ 力技が過ぎる😫
 • AWS Config・・・?
 ◦ 数は把握できるが、パスワードの有無を区別できない😞
 • API・・・?
 ◦ 全AWSアカウントに対してこれを実行し続けるのは、非効率・・・😵
 
 また、削除に臨むのなら、アクセスキーの状況も確認したい

  7. © ZOZO Technologies, Inc. 認証情報レポート
 14 • AWSアカウントに存在するIAMユーザーと各種認証情報ステータスの一覧
 • Webコンソール/APIにてCSVファイルの形で取得できる


    
 
 列名 列名の概要 user ユーザー名 password_enable ユーザーがパスワードを持っている場合、この値は TRUE 。 それ以外の場合は FALSE 。AWS アカウントのルートユーザーの値は常に not_supported 。 password_last_used パスワードが最後に利用された日時 access_key_1_active ユーザーがアクセスキーを所有し、そのアクセスキーのステータスが Active である場 合、この値は TRUE。それ以外の場合は、FALSE 。 access_key_1_last_used_date ユーザーのアクセスキーが作成または最後に変更された日時 cf. AWS アカウントの認証情報レポートの取得#レポートフォーマットの理解 - AWS Identity and Access Managementより抜粋 これをマルチアカウントで利用する

  8. © ZOZO Technologies, Inc. IAMユーザーの現状把握にあたって重視したこと
 15 • 運用に手間をかけない
 ◦ AWSアカウントは増減する


    
 • 認証情報レポートの取得と分析を分離する
 ◦ rawデータをそのまま保存し、必要なタイミングで分析する
 ◦ 加工すると分析要件が変わったときに修正する部分が増える
 
 • 対応状況を時系列で可視化、自動で共有されるようにする
 ◦ IAMユーザーの把握と削除は継続的なもの
 ◦ 自動で共有されるようにすることで、取り組みに対するモチベーションを維持する

  9. © ZOZO Technologies, Inc. 16 実現のために活躍したAWSサービスたち
 AWS CloudFormation(CFn) Service Managed

    StackSets
 • JSON/YAMLでリソースを定義し、複数のリージョン・アカウントを指定して実行
 • AWS Organizations統合を行い、Service Managed StackSetsとすることで、
 新規アカウントへの自動反映が可能になる
 Amazon Athena
 • Amazon S3 内のデータを標準 SQL を使用して分析できる
 Amazon QuickSight
 • Athenaなどをデータソースに、分析・可視化が可能なBIツール
 • メールなどでダッシュボードを共有可能

  10. © ZOZO Technologies, Inc. 概要:マルチアカウントでIAMユーザーを把握する流れ
 18 AWS Organizations マネージメントアカウント メンバーアカウント

    1. CFn StackSetsでLambdaなど レポート自動取得設定を準備 2. 特定アカウントの S3へレポートを集約 3. Athenaで テーブルを作成 3. Athenaで テーブルを作成 4. QuickSightで 可視化 5. Gmail経由で Slackへ
  11. © ZOZO Technologies, Inc. 20 構成上の工夫:S3へのレポート保存
 • 分析・可視化にて利用するため、Organizations APIでAWSアカウント名を取得 ◦

    AWSアカウント(12桁の数字)だと、「このアカウント、結局どれだろう」となってしまう • S3へはAthenaのPartition Projectionが利用できる形で保存 ◦ Partition ProjectionはAthenaでのパーティション作成を自動化する仕組み
 ◦ s3://path/to/YYYY/MM/DD/<ACOUNT_NAME>.csv
 
 • 分析には認証情報レポートだけで良いが いくつかの工夫を施し利便性向上を図る
  12. © ZOZO Technologies, Inc. 21 構成上の工夫:Athenaでのテーブル定義
 • Athenaでは日付を用いたPartition Projectionを設定
 


    
 
 
 
 
 
 
 
 
 • 日付をWHERE句に指定することで
 スキャン量が減り、クエリが高速になる
 
 • ここまでの取組みで、
 IAMユーザーの把握を実現!
 CREATE EXTERNAL TABLE `credential_reports`( (略) TBLPROPERTIES ( 'has_encrypted_data'='false', 'projection.enabled'='true', 'projection.orderdate.format'='yyyy/MM/dd', 'projection.orderdate.interval'='1', 'projection.orderdate.interval.unit'='DAYS', 'projection.orderdate.range'='2020/09/10,NOW', 'projection.orderdate.type'='date', 'skip.header.line.count'='1', 'storage.location.template'='s3://<bucket>/${orderdate}')
  13. © ZOZO Technologies, Inc. 24 現在の運用状況
 • IAMユーザーの把握と削除
 ◦ 直近の目標:Webコンソールにログイン可能なIAMユーザーを90%削減


    ◦ Athenaで一覧を作成し、各所の協力を得て判断が容易なIAMユーザーから削除を実施
 ▪ ex. 最終ログイン日時が一ヶ月以前 かつ アクセスキーの利用が無い
 
 • 削除作業の進捗共有
 ◦ QuickSightによる可視化を社内で展開
 ◦ IAMユーザー数の多いAWSアカウントからフォロー

  14. © ZOZO Technologies, Inc. 今後解決する必要があること
 25 • ホワイトリストの管理
 ◦ 必要性が認められるIAMユーザーについて、どこにリストを作成するか


    ◦ スプレッドシートという選択肢もあるが、もっとAWS的なアプローチで管理したい
 
 • IAMユーザー作成イベントの検知
 ◦ Webコンソールにログイン可能なIAMユーザーが必要なケースは稀
 ◦ AWS Configなどを用いて、作成そのものを検知できるようにしたい

  15. © ZOZO Technologies, Inc. まとめ
 26 • 組織全体のAWSで、IAMユーザーを最小限にしたいという課題があった
 ◦ IAMユーザーは、部署異動や退職などのタイミングで適宜管理するべきだが煩雑である


    ◦ AWS SSOを利用しており、
 Webコンソールにログイン可能なIAMユーザーが必要なケースは稀である
 
 • 認証情報レポートで、アカウント単位のIAMユーザー情報を取得できた
 
 • CFn StackSets / Athena / QuickSightを用いることで、
 マルチアカウントでのIAMユーザー把握と可視化・共有が実現した
 
 • マルチアカウントのIAMユーザーの棚卸しに鋭意取り組んでいます!

  16. © ZOZO Technologies, Inc. We Are Hiring!
 • AWSを使ってWebサービスを作りたい人
 ◦

    できます😆
 • AWSをより良く使ってWebサービスを作りたい人
 ◦ 一緒に強くなりましょう💪
 • AWSをより良く使うための仕組みを作りたい人
 ◦ 待ってます😁
 • AWSをより良く使えているかを確認する仕組みを作りたい人
 ◦ 今作ってます。一緒に作りましょう😍
 27 => https://tech.zozo.com/recruit/ <=