北欧、暮らしの道具店を支えるAWSマルチアカウント運用 / hokuohkurashi aws multi account
by
ryosukes
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
ありがとうございました