Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

● クラシコムが運営 ● ECメディア ● 月間訪問者数 約450万 ● 月間注文件数 約3〜4万 北欧、暮らしの道具店とは hokuohkurashi.com

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

今日話すのは

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

昔話 ● 元々はASPのECでサービスを運用 ● 2015年頃からフルスクラッチで作るプロジェクトが始動 ● このときAWSを選択 ● 当時のエンジニアはたった2人 ● 2016年5月にリリース ● リリース後すぐに1人減る ● なかなかハード…

Slide 10

Slide 10 text

昔話 ● シングルアカウント1VPCに詰め込まれた本番・ステージング ・テスト環境 ● ローカル開発が上記アカウントのS3、SESを使用する前提 ● 全エンジニアに付与された強めのIAM ● 例えばLambdaFullAccess

Slide 11

Slide 11 text

LambdaFullAccessの中身抜粋 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:*", "dynamodb:*", "events:*", "lambda:*", "logs:*", "s3:*" ], "Resource": "*" } ] } ※ 実際は他にも Actionあります

Slide 12

Slide 12 text

この状態のときに どんなことが起こるか

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

なんとかしよう

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

実際に分けてみた

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

マスター ● AWS Organizationsの管理 ● 監査・監視、ログ集約 ○ CloudTrail ○ GuardDuty

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

分けてみた感想

Slide 29

Slide 29 text

非常に良くなった ● 本番環境に安心感 ● 本番の近くに余計なリソースがなく探しやすくなった ● 爆弾処理みたいなことも減った ● 事故る心配が減り本番以外の環境も改善しやすくなった ● IAMユーザーの管理・権限付与が楽になった ● コストが把握しやすくなった

Slide 30

Slide 30 text

課題になった点 ● 本番アカウントから剥がすと動かない環境が発生 ○ 頑張るしかない ● AWSのコンソール、aws-cliで環境切り替えがやや面倒 ○ コンソール: AWS Extend Switch Role ○ aws-cli: aws-vault ● 各環境のセキュリティ管理 ○ AWS Control Tower, AWS Config など

Slide 31

Slide 31 text

各環境のセキュリティ管理 ● マスター・本番だけがセキュリティ厚くなりがち ● テスト・サンドボックスのアカウントが薄くなりがち ● 気づいたらマイニング用のEC2が立ってた、みたいな事例もあるので気を つけないといけない ● AWS Control Towerで複数アカウントをまとめてセキュアに ● 2021/4/9に東京リージョンでも使えるようになった

Slide 32

Slide 32 text

改善余地はまだあるが だいぶ良い状態になった🙌

Slide 33

Slide 33 text

ありがとうございました