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
マルチアカウントでのIAMユーザー把握と可視化 IAMユーザー棚卸しへの取り組み 【オンライン】第二回 AWSマルチアカウント事例祭り 2021/02/09 株式会社ZOZOテクノロジーズ CTO室 / 技術開発本部 SRE部 テックリード 光野達朗Copyright © ZOZO Technologies, Inc.
View Slide
© ZOZO Technologies, Inc.株式会社ZOZOテクノロジーズ CTO室 / 技術開発本部 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.本発表を通してお伝えしたいこと マルチアカウントでも IAMユーザー棚卸しできます👍 7
© ZOZO Technologies, Inc.8ZOZOテクノロジーズでは、継続的なIAMユーザー棚卸しに取り組んでいます。 そのために組織のIAMユーザーを把握、可視化、Slackに共有する仕組みを作りました
© ZOZO Technologies, Inc.前提:ログインユーザー管理 9AWS Organizationsメンバーアカウント メンバーアカウントAWS Single Sign-OnAzure ADプロビジョン権限・ユーザーの配布ログイン用IAMリソース作成不要cf: AWS Single Sign-Onを用いた、セキュアでより良いログイン体験への取り組み - Speaker Deckマネージメントアカウント
© ZOZO Technologies, Inc.実現したいこと:IAMユーザーの利用を最小限にする 10● IAMユーザーの問題点 ○ 部署異動・退職時のユーザー管理が煩雑 (煩雑だが、残しておくとログインできてしまう😫) ○ アクセストークンに有効期限が無い (AWS SSOの場合はセッションタイムアウトに準ずる。最大12時間) ● AWS SSOがある今、Webコンソールへのログインに IAMユーザーを使う必要はなく、これの多くは削除が可能なはず ● そのためにはまず把握が必要
© ZOZO Technologies, Inc.課題:どのようにしてマルチアカウントの世界でIAMユーザーを把握するか 11● IAMユーザーの中には、Webコンソールにログインできないユーザがいる ○ 「コンソールのパスワード」を持たない ○ これを除外した一覧を作りたい ● 目視・・・? ○ 力技が過ぎる😫 ● AWS Config・・・? ○ 数は把握できるが、パスワードの有無を区別できない😞 ● API・・・? ○ 全AWSアカウントに対してこれを実行し続けるのは、非効率・・・😵 また、削除に臨むのなら、アクセスキーの状況も確認したい
© ZOZO Technologies, Inc.IAMユーザーや利用状況を 手軽に把握 そんな便利なものは無いのか? 12
© ZOZO Technologies, Inc.あった!:「認証情報レポート」 13
© 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より抜粋これをマルチアカウントで利用する
© ZOZO Technologies, Inc.IAMユーザーの現状把握にあたって重視したこと 15● 運用に手間をかけない ○ AWSアカウントは増減する ● 認証情報レポートの取得と分析を分離する ○ rawデータをそのまま保存し、必要なタイミングで分析する ○ 加工すると分析要件が変わったときに修正する部分が増える ● 対応状況を時系列で可視化、自動で共有されるようにする ○ IAMユーザーの把握と削除は継続的なもの ○ 自動で共有されるようにすることで、取り組みに対するモチベーションを維持する
© 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ツール ● メールなどでダッシュボードを共有可能
© ZOZO Technologies, Inc.17【再掲】可視化の様子 いずれも「Webコンソールにログイン可能なIAMユーザ」に限定して可視化している
© ZOZO Technologies, Inc.概要:マルチアカウントでIAMユーザーを把握する流れ 18AWS Organizations マネージメントアカウントメンバーアカウント1. CFn StackSetsでLambdaなどレポート自動取得設定を準備2. 特定アカウントのS3へレポートを集約3. Athenaでテーブルを作成3. Athenaでテーブルを作成4. QuickSightで可視化5. Gmail経由でSlackへ
© ZOZO Technologies, Inc.19詳細
© ZOZO Technologies, Inc.20構成上の工夫:S3へのレポート保存 ● 分析・可視化にて利用するため、Organizations APIでAWSアカウント名を取得○ AWSアカウント(12桁の数字)だと、「このアカウント、結局どれだろう」となってしまう● S3へはAthenaのPartition Projectionが利用できる形で保存○ Partition ProjectionはAthenaでのパーティション作成を自動化する仕組み ○ s3://path/to/YYYY/MM/DD/.csv ● 分析には認証情報レポートだけで良いがいくつかの工夫を施し利便性向上を図る
© 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}')
© ZOZO Technologies, Inc.22分析の様子
© ZOZO Technologies, Inc.23構成上の工夫:QuickSightでの可視化と共有 ● QuickSightではAthenaへQueryを発行し、データセットを作成● 可視化結果をダッシュボード化● メール共有でGmailからSlackへ転送
© ZOZO Technologies, Inc.24現在の運用状況 ● IAMユーザーの把握と削除 ○ 直近の目標:Webコンソールにログイン可能なIAMユーザーを90%削減 ○ Athenaで一覧を作成し、各所の協力を得て判断が容易なIAMユーザーから削除を実施 ■ ex. 最終ログイン日時が一ヶ月以前 かつ アクセスキーの利用が無い ● 削除作業の進捗共有 ○ QuickSightによる可視化を社内で展開 ○ IAMユーザー数の多いAWSアカウントからフォロー
© ZOZO Technologies, Inc.今後解決する必要があること 25● ホワイトリストの管理 ○ 必要性が認められるIAMユーザーについて、どこにリストを作成するか ○ スプレッドシートという選択肢もあるが、もっとAWS的なアプローチで管理したい ● IAMユーザー作成イベントの検知 ○ Webコンソールにログイン可能なIAMユーザーが必要なケースは稀 ○ AWS Configなどを用いて、作成そのものを検知できるようにしたい
© ZOZO Technologies, Inc.まとめ 26● 組織全体のAWSで、IAMユーザーを最小限にしたいという課題があった ○ IAMユーザーは、部署異動や退職などのタイミングで適宜管理するべきだが煩雑である ○ AWS SSOを利用しており、 Webコンソールにログイン可能なIAMユーザーが必要なケースは稀である ● 認証情報レポートで、アカウント単位のIAMユーザー情報を取得できた ● CFn StackSets / Athena / QuickSightを用いることで、 マルチアカウントでのIAMユーザー把握と可視化・共有が実現した ● マルチアカウントのIAMユーザーの棚卸しに鋭意取り組んでいます!
© ZOZO Technologies, Inc.We Are Hiring! ● AWSを使ってWebサービスを作りたい人 ○ できます😆 ● AWSをより良く使ってWebサービスを作りたい人 ○ 一緒に強くなりましょう💪 ● AWSをより良く使うための仕組みを作りたい人 ○ 待ってます😁 ● AWSをより良く使えているかを確認する仕組みを作りたい人 ○ 今作ってます。一緒に作りましょう😍 27=> https://tech.zozo.com/recruit/ <=