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

北欧、暮らしの道具店を支えるAWSマルチアカウント運用 / hokuohkurashi aws multi account

877ac424e59bd3dd183859ef4cc9a08a?s=47 ryosukes
May 18, 2021
2k

北欧、暮らしの道具店を支えるAWSマルチアカウント運用 / hokuohkurashi aws multi account

877ac424e59bd3dd183859ef4cc9a08a?s=128

ryosukes

May 18, 2021
Tweet

Transcript

  1. 北欧、暮らしの道具店の AWSマルチアカウント運用 2021.05.14 株式会社クラシコム 佐々木亮祐

  2. 名前: 佐々木 亮祐(@ryosukes47) 出身: 宮城県 趣味: 音楽 好きな食べ物: 寿司 自己紹介

  3. 北欧、暮らしの道具店とは

  4. • クラシコムが運営 • ECメディア • 月間訪問者数 約450万 • 月間注文件数 約3〜4万

    北欧、暮らしの道具店とは hokuohkurashi.com
  5. “当店は「フィットする暮らし、つくろう」 というコンセプトを掲げ、 2007年9月18日にインターネット上で ひっそりと産声をあげました。” (店長からお客様への挨拶より) 北欧、暮らしの道具店とは 佐藤

  6. 今日話すのは

  7. 北欧、暮らしの道具店の AWSマルチアカウント 運用について

  8. まずは マルチアカウントにする前の 昔話からします

  9. 昔話 • 元々はASPのECでサービスを運用 • 2015年頃からフルスクラッチで作るプロジェクトが始動 • このときAWSを選択 • 当時のエンジニアはたった2人 •

    2016年5月にリリース • リリース後すぐに1人減る • なかなかハード…
  10. 昔話 • シングルアカウント1VPCに詰め込まれた本番・ステージング ・テスト環境 • ローカル開発が上記アカウントのS3、SESを使用する前提 • 全エンジニアに付与された強めのIAM • 例えばLambdaFullAccess

  11. LambdaFullAccessの中身抜粋 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action":

    [ "cloudwatch:*", "dynamodb:*", "events:*", "lambda:*", "logs:*", "s3:*" ], "Resource": "*" } ] } ※ 実際は他にも Actionあります
  12. この状態のときに どんなことが起こるか

  13. いつでも誰でも本番環境に S3バケットやDynamoDBを 作成・削除ができる

  14. 気づかないうちに作られる なぞのS3バケットや DynamoDBテーブル達

  15. ローカル作業中に意図せず 作られてしまったり…

  16. なんとかしよう

  17. 2020年1月 マルチアカウント化 スタート

  18. どんな状態を目指すか 1. 本番環境守りやすく 2. 見通し良く 3. 権限管理・移譲しやすく

  19. 本番環境守りやすく • 本番環境が存在するアカウントでの変更を減らしたい • 減らして、オペミスなどで事故る可能性を下げたい • 本番を変更できるユーザーを最小限にして事故を減らしたい • 開発に必要な環境は別途用意すればOK

  20. 見通し良く • 環境が混在するとリソースの依存関係が把握しづらい • 他の環境に影響しないか毎回確認するのはつらい • リソース名に環境のprefix/suffixが付くと冗長 • なので各アカウントに環境を混在させるのはできるだけ避けたい

  21. 権限管理・移譲しやすく • そもそもエンジニア全員が持ってる権限強すぎるのでついでに絞りたい • かといって権限がなく身動き取りづらいという状況は減らしたい • 環境ごとにいくつかIAMロールを用意・整備して、ロールの利用可否で権 限管理すれば柔軟に管理できるのでは

  22. 実際に分けてみた

  23. 分けた結果のアカウントリスト • マスター • 本番 • ステージング/テスト • サンドボックス •

    分析 • 社内ツール • ユーザー
  24. 分けた結果のアカウントリスト • マスター • 本番 • ステージング/テスト • サンドボックス •

    分析 • 社内ツール • ユーザー
  25. マスター • AWS Organizationsの管理 • 監査・監視、ログ集約 ◦ CloudTrail ◦ GuardDuty

  26. サンドボックス • AWSリソースで新しく使うものの検証など • 気楽に壊して良いし他の人に壊されても文句言えない環境 • 使えるエンジニアには強い権限を与えてるがIAMだけは壊されると困るの でIAMは最低限

  27. ユーザー • 各アカウントにスイッチロールできるヒューマンユーザー管理 • IAMユーザー、使用できるロールの管理のみ

  28. 分けてみた感想

  29. 非常に良くなった • 本番環境に安心感 • 本番の近くに余計なリソースがなく探しやすくなった • 爆弾処理みたいなことも減った • 事故る心配が減り本番以外の環境も改善しやすくなった •

    IAMユーザーの管理・権限付与が楽になった • コストが把握しやすくなった
  30. 課題になった点 • 本番アカウントから剥がすと動かない環境が発生 ◦ 頑張るしかない • AWSのコンソール、aws-cliで環境切り替えがやや面倒 ◦ コンソール: AWS

    Extend Switch Role ◦ aws-cli: aws-vault • 各環境のセキュリティ管理 ◦ AWS Control Tower, AWS Config など
  31. 各環境のセキュリティ管理 • マスター・本番だけがセキュリティ厚くなりがち • テスト・サンドボックスのアカウントが薄くなりがち • 気づいたらマイニング用のEC2が立ってた、みたいな事例もあるので気を つけないといけない • AWS

    Control Towerで複数アカウントをまとめてセキュアに • 2021/4/9に東京リージョンでも使えるようになった
  32. 改善余地はまだあるが だいぶ良い状態になった🙌

  33. ありがとうございました