Slide 1

Slide 1 text

マルチアカウントでのIAMユーザー把握と可視化
 IAMユーザー棚卸しへの取り組み
 【オンライン】第二回 AWSマルチアカウント事例祭り
 2021/02/09
 株式会社ZOZOテクノロジーズ
 CTO室 / 技術開発本部 SRE部
 テックリード 光野達朗 Copyright © ZOZO Technologies, Inc.

Slide 2

Slide 2 text

© ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ
 CTO室 / 技術開発本部 SRE部
 テックリード
 
 光野 達朗
 2012年ヤフー株式会社にサーバサイドエンジニアとして入 社。2016年4月からは株式会社VASILYでインフラエンジニ ア。2018年4月から現職。現在はAWSを専門とするSREテッ クリードとして、クラウドアーキテクチャの構築と信頼性向上 に従事。
 ウィスキーと葉巻が好き。愛してる。
 
 2

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

© ZOZO Technologies, Inc. https://zozo.jp/
 ● 日本最大級のファッション通販サイト
 ● 1,300以上のショップ、7,400以上のブランドの取り扱い(ともに2019年12 月末時点)
 ● 常時73万点以上の商品アイテム数と毎日平均3,200点以上の新着商品 を掲載
 ● 即日配送サービス
 ● ギフトラッピングサービス
 ● ツケ払い など
 4

Slide 5

Slide 5 text

© ZOZO Technologies, Inc. https://wear.jp/
 5 ● 日本最大級のファッションコーディネートアプリ
 ● 1,400万ダウンロード突破、コーディネート投稿総数は900万件以上(と もに2019年12月末時点)
 ● 全世界(App Store / Google Playが利用可能な全ての国)でダウンロー ドが可能
 ● 等身大の着こなしが支持を集め、10万人以上のフォロワーを持ち WEARISTAに認定された一般ユーザーも誕生


Slide 6

Slide 6 text

© ZOZO Technologies, Inc. 本発表で扱う範囲
 個々のプロダクトではなく
 組織全体のAWS運用に関する話
 (今日はマルチアカウント事例祭りです)
 6

Slide 7

Slide 7 text

© ZOZO Technologies, Inc. 本発表を通してお伝えしたいこと
 マルチアカウントでも
 IAMユーザー棚卸しできます👍
 7

Slide 8

Slide 8 text

© ZOZO Technologies, Inc. 8 ZOZOテクノロジーズでは、継続的なIAMユーザー棚卸しに取り組んでいます。
 そのために組織のIAMユーザーを把握、可視化、Slackに共有する仕組みを作りました


Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

© ZOZO Technologies, Inc. 実現したいこと:IAMユーザーの利用を最小限にする
 10 ● IAMユーザーの問題点
 ○ 部署異動・退職時のユーザー管理が煩雑
 (煩雑だが、残しておくとログインできてしまう😫)
 ○ アクセストークンに有効期限が無い
 (AWS SSOの場合はセッションタイムアウトに準ずる。最大12時間)
 
 ● AWS SSOがある今、Webコンソールへのログインに
 IAMユーザーを使う必要はなく、これの多くは削除が可能なはず
 
 ● そのためにはまず把握が必要


Slide 11

Slide 11 text

© ZOZO Technologies, Inc. 課題:どのようにしてマルチアカウントの世界でIAMユーザーを把握するか
 11 ● IAMユーザーの中には、Webコンソールにログインできないユーザがいる
 ○ 「コンソールのパスワード」を持たない
 ○ これを除外した一覧を作りたい
 
 ● 目視・・・?
 ○ 力技が過ぎる😫
 ● AWS Config・・・?
 ○ 数は把握できるが、パスワードの有無を区別できない😞
 ● API・・・?
 ○ 全AWSアカウントに対してこれを実行し続けるのは、非効率・・・😵
 
 また、削除に臨むのなら、アクセスキーの状況も確認したい


Slide 12

Slide 12 text

© ZOZO Technologies, Inc. IAMユーザーや利用状況を
 手軽に把握
 そんな便利なものは無いのか?
 12

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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


Slide 15

Slide 15 text

© ZOZO Technologies, Inc. IAMユーザーの現状把握にあたって重視したこと
 15 ● 運用に手間をかけない
 ○ AWSアカウントは増減する
 
 ● 認証情報レポートの取得と分析を分離する
 ○ rawデータをそのまま保存し、必要なタイミングで分析する
 ○ 加工すると分析要件が変わったときに修正する部分が増える
 
 ● 対応状況を時系列で可視化、自動で共有されるようにする
 ○ IAMユーザーの把握と削除は継続的なもの
 ○ 自動で共有されるようにすることで、取り組みに対するモチベーションを維持する


Slide 16

Slide 16 text

© 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ツール
 ● メールなどでダッシュボードを共有可能


Slide 17

Slide 17 text

© ZOZO Technologies, Inc. 17 【再掲】可視化の様子
 いずれも「Webコンソールにログイン可能なIAMユーザ」に限定して可視化している


Slide 18

Slide 18 text

© ZOZO Technologies, Inc. 概要:マルチアカウントでIAMユーザーを把握する流れ
 18 AWS Organizations マネージメントアカウント メンバーアカウント 1. CFn StackSetsでLambdaなど レポート自動取得設定を準備 2. 特定アカウントの S3へレポートを集約 3. Athenaで テーブルを作成 3. Athenaで テーブルを作成 4. QuickSightで 可視化 5. Gmail経由で Slackへ

Slide 19

Slide 19 text

© ZOZO Technologies, Inc. 19 詳細


Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

© 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}')

Slide 22

Slide 22 text

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


Slide 23

Slide 23 text

© ZOZO Technologies, Inc. 23 構成上の工夫:QuickSightでの可視化と共有
 ● QuickSightではAthenaへQueryを発行し、データセットを作成 ● 可視化結果をダッシュボード化 ● メール共有でGmailからSlackへ転送

Slide 24

Slide 24 text

© ZOZO Technologies, Inc. 24 現在の運用状況
 ● IAMユーザーの把握と削除
 ○ 直近の目標:Webコンソールにログイン可能なIAMユーザーを90%削減
 ○ Athenaで一覧を作成し、各所の協力を得て判断が容易なIAMユーザーから削除を実施
 ■ ex. 最終ログイン日時が一ヶ月以前 かつ アクセスキーの利用が無い
 
 ● 削除作業の進捗共有
 ○ QuickSightによる可視化を社内で展開
 ○ IAMユーザー数の多いAWSアカウントからフォロー


Slide 25

Slide 25 text

© ZOZO Technologies, Inc. 今後解決する必要があること
 25 ● ホワイトリストの管理
 ○ 必要性が認められるIAMユーザーについて、どこにリストを作成するか
 ○ スプレッドシートという選択肢もあるが、もっとAWS的なアプローチで管理したい
 
 ● IAMユーザー作成イベントの検知
 ○ Webコンソールにログイン可能なIAMユーザーが必要なケースは稀
 ○ AWS Configなどを用いて、作成そのものを検知できるようにしたい


Slide 26

Slide 26 text

© ZOZO Technologies, Inc. まとめ
 26 ● 組織全体のAWSで、IAMユーザーを最小限にしたいという課題があった
 ○ IAMユーザーは、部署異動や退職などのタイミングで適宜管理するべきだが煩雑である
 ○ AWS SSOを利用しており、
 Webコンソールにログイン可能なIAMユーザーが必要なケースは稀である
 
 ● 認証情報レポートで、アカウント単位のIAMユーザー情報を取得できた
 
 ● CFn StackSets / Athena / QuickSightを用いることで、
 マルチアカウントでのIAMユーザー把握と可視化・共有が実現した
 
 ● マルチアカウントのIAMユーザーの棚卸しに鋭意取り組んでいます!


Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

No content