$30 off During Our Annual Pro Sale. View Details »

マルチアカウントでの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. マルチアカウントでのIAMユーザー把握と可視化

    IAMユーザー棚卸しへの取り組み

    【オンライン】第二回 AWSマルチアカウント事例祭り

    2021/02/09

    株式会社ZOZOテクノロジーズ

    CTO室 / 技術開発本部 SRE部

    テックリード 光野達朗
    Copyright © ZOZO Technologies, Inc.

    View Slide

  2. © ZOZO Technologies, Inc.
    株式会社ZOZOテクノロジーズ

    CTO室 / 技術開発本部 SRE部

    テックリード


    光野 達朗

    2012年ヤフー株式会社にサーバサイドエンジニアとして入
    社。2016年4月からは株式会社VASILYでインフラエンジニ
    ア。2018年4月から現職。現在はAWSを専門とするSREテッ
    クリードとして、クラウドアーキテクチャの構築と信頼性向上
    に従事。

    ウィスキーと葉巻が好き。愛してる。

    
 2

    View Slide

  3. © ZOZO Technologies, Inc.
    プロダクト紹介

    3

    View Slide

  4. © ZOZO Technologies, Inc.
    https://zozo.jp/

    ● 日本最大級のファッション通販サイト

    ● 1,300以上のショップ、7,400以上のブランドの取り扱い(ともに2019年12
    月末時点)

    ● 常時73万点以上の商品アイテム数と毎日平均3,200点以上の新着商品
    を掲載

    ● 即日配送サービス

    ● ギフトラッピングサービス

    ● ツケ払い など

    4

    View Slide

  5. © ZOZO Technologies, Inc.
    https://wear.jp/

    5
    ● 日本最大級のファッションコーディネートアプリ

    ● 1,400万ダウンロード突破、コーディネート投稿総数は900万件以上(と
    もに2019年12月末時点)

    ● 全世界(App Store / Google Playが利用可能な全ての国)でダウンロー
    ドが可能

    ● 等身大の着こなしが支持を集め、10万人以上のフォロワーを持ち
    WEARISTAに認定された一般ユーザーも誕生


    View Slide

  6. © ZOZO Technologies, Inc.
    本発表で扱う範囲

    個々のプロダクトではなく

    組織全体のAWS運用に関する話

    (今日はマルチアカウント事例祭りです)

    6

    View Slide

  7. © ZOZO Technologies, Inc.
    本発表を通してお伝えしたいこと

    マルチアカウントでも

    IAMユーザー棚卸しできます👍

    7

    View Slide

  8. © ZOZO Technologies, Inc.
    8
    ZOZOテクノロジーズでは、継続的なIAMユーザー棚卸しに取り組んでいます。

    そのために組織のIAMユーザーを把握、可視化、Slackに共有する仕組みを作りました


    View Slide

  9. © ZOZO Technologies, Inc.
    前提:ログインユーザー管理

    9
    AWS Organizations
    メンバーアカウント メンバーアカウント
    AWS Single Sign-On
    Azure AD
    プロビジョン
    権限・ユーザーの配布
    ログイン用
    IAMリソース
    作成不要
    cf: AWS Single Sign-Onを用いた、
    セキュアでより良いログイン体験への取り組み - Speaker Deck
    マネージメントアカウント

    View Slide

  10. © ZOZO Technologies, Inc.
    実現したいこと:IAMユーザーの利用を最小限にする

    10
    ● IAMユーザーの問題点

    ○ 部署異動・退職時のユーザー管理が煩雑

    (煩雑だが、残しておくとログインできてしまう😫)

    ○ アクセストークンに有効期限が無い

    (AWS SSOの場合はセッションタイムアウトに準ずる。最大12時間)


    ● AWS SSOがある今、Webコンソールへのログインに

    IAMユーザーを使う必要はなく、これの多くは削除が可能なはず


    ● そのためにはまず把握が必要


    View Slide

  11. © ZOZO Technologies, Inc.
    課題:どのようにしてマルチアカウントの世界でIAMユーザーを把握するか

    11
    ● IAMユーザーの中には、Webコンソールにログインできないユーザがいる

    ○ 「コンソールのパスワード」を持たない

    ○ これを除外した一覧を作りたい


    ● 目視・・・?

    ○ 力技が過ぎる😫

    ● AWS Config・・・?

    ○ 数は把握できるが、パスワードの有無を区別できない😞

    ● API・・・?

    ○ 全AWSアカウントに対してこれを実行し続けるのは、非効率・・・😵


    また、削除に臨むのなら、アクセスキーの状況も確認したい


    View Slide

  12. © ZOZO Technologies, Inc.
    IAMユーザーや利用状況を

    手軽に把握

    そんな便利なものは無いのか?

    12

    View Slide

  13. © ZOZO Technologies, Inc.
    あった!:「認証情報レポート」

    13

    View Slide

  14. © 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より抜粋
    これをマルチアカウントで利用する


    View Slide

  15. © ZOZO Technologies, Inc.
    IAMユーザーの現状把握にあたって重視したこと

    15
    ● 運用に手間をかけない

    ○ AWSアカウントは増減する


    ● 認証情報レポートの取得と分析を分離する

    ○ rawデータをそのまま保存し、必要なタイミングで分析する

    ○ 加工すると分析要件が変わったときに修正する部分が増える


    ● 対応状況を時系列で可視化、自動で共有されるようにする

    ○ IAMユーザーの把握と削除は継続的なもの

    ○ 自動で共有されるようにすることで、取り組みに対するモチベーションを維持する


    View Slide

  16. © 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ツール

    ● メールなどでダッシュボードを共有可能


    View Slide

  17. © ZOZO Technologies, Inc.
    17
    【再掲】可視化の様子

    いずれも「Webコンソールにログイン可能なIAMユーザ」に限定して可視化している


    View Slide

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

    18
    AWS Organizations マネージメントアカウント
    メンバーアカウント
    1. CFn StackSetsでLambdaなど
    レポート自動取得設定を準備
    2. 特定アカウントの
    S3へレポートを集約
    3. Athenaで
    テーブルを作成
    3. Athenaで
    テーブルを作成
    4. QuickSightで
    可視化
    5. Gmail経由で
    Slackへ

    View Slide

  19. © ZOZO Technologies, Inc.
    19
    詳細


    View Slide

  20. © ZOZO Technologies, Inc.
    20
    構成上の工夫:S3へのレポート保存

    ● 分析・可視化にて利用するため、Organizations APIでAWSアカウント名を取得
    ○ AWSアカウント(12桁の数字)だと、「このアカウント、結局どれだろう」となってしまう
    ● S3へはAthenaのPartition Projectionが利用できる形で保存
    ○ Partition ProjectionはAthenaでのパーティション作成を自動化する仕組み

    ○ s3://path/to/YYYY/MM/DD/.csv


    ● 分析には認証情報レポートだけで良いが
    いくつかの工夫を施し利便性向上を図る

    View Slide

  21. © 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:///${orderdate}')

    View Slide

  22. © ZOZO Technologies, Inc.
    22
    分析の様子


    View Slide

  23. © ZOZO Technologies, Inc.
    23
    構成上の工夫:QuickSightでの可視化と共有

    ● QuickSightではAthenaへQueryを発行し、データセットを作成
    ● 可視化結果をダッシュボード化
    ● メール共有でGmailからSlackへ転送

    View Slide

  24. © ZOZO Technologies, Inc.
    24
    現在の運用状況

    ● IAMユーザーの把握と削除

    ○ 直近の目標:Webコンソールにログイン可能なIAMユーザーを90%削減

    ○ Athenaで一覧を作成し、各所の協力を得て判断が容易なIAMユーザーから削除を実施

    ■ ex. 最終ログイン日時が一ヶ月以前 かつ アクセスキーの利用が無い


    ● 削除作業の進捗共有

    ○ QuickSightによる可視化を社内で展開

    ○ IAMユーザー数の多いAWSアカウントからフォロー


    View Slide

  25. © ZOZO Technologies, Inc.
    今後解決する必要があること

    25
    ● ホワイトリストの管理

    ○ 必要性が認められるIAMユーザーについて、どこにリストを作成するか

    ○ スプレッドシートという選択肢もあるが、もっとAWS的なアプローチで管理したい


    ● IAMユーザー作成イベントの検知

    ○ Webコンソールにログイン可能なIAMユーザーが必要なケースは稀

    ○ AWS Configなどを用いて、作成そのものを検知できるようにしたい


    View Slide

  26. © ZOZO Technologies, Inc.
    まとめ

    26
    ● 組織全体のAWSで、IAMユーザーを最小限にしたいという課題があった

    ○ IAMユーザーは、部署異動や退職などのタイミングで適宜管理するべきだが煩雑である

    ○ AWS SSOを利用しており、

    Webコンソールにログイン可能なIAMユーザーが必要なケースは稀である


    ● 認証情報レポートで、アカウント単位のIAMユーザー情報を取得できた


    ● CFn StackSets / Athena / QuickSightを用いることで、

    マルチアカウントでのIAMユーザー把握と可視化・共有が実現した


    ● マルチアカウントのIAMユーザーの棚卸しに鋭意取り組んでいます!


    View Slide

  27. © ZOZO Technologies, Inc.
    We Are Hiring!

    ● AWSを使ってWebサービスを作りたい人

    ○ できます😆

    ● AWSをより良く使ってWebサービスを作りたい人

    ○ 一緒に強くなりましょう💪

    ● AWSをより良く使うための仕組みを作りたい人

    ○ 待ってます😁

    ● AWSをより良く使えているかを確認する仕組みを作りたい人

    ○ 今作ってます。一緒に作りましょう😍

    27
    => https://tech.zozo.com/recruit/ <=

    View Slide

  28. View Slide