ZOZOタウンで買い物したことなくて恐縮ですが、テクノロジーとしてはとても魅力ある企業ですね。
AWS Configを用いたマルチアカウント・マルチリージョンでのリソース把握とコンプライアンス維持への取り組みについて
講師:株式会社ZOZOテクノロジーズ 技術開発本部 SRE部 テックリード 光野 達朗(@kotatsu360)
QA
通知を受け取った後の対応はどうしてるんですか?
実験的に見ているところなので自身で見てプロダクトチームへ連絡している。 プロダクトチームへ直接通知を検討中。
今後設定したいルールってなんですか
セキュリティに対して強く効果がある部分。ssh ポートをインターネットに公開してないかなど。
次にログに関して。「Aでは出てlB出だしてない」とかの状況にならないように、アカウントでログの状況を統一したい。
ルールはcontroltowerをベースに設定されたのでしょうか?
まだしてない。 Config のプリセットのマネージドルールを使ってる。 利用するだけでベストプラクティスになるので、これを中心にセキュリティを高めている。
Config Rulesの標準ルールだけでも汎用的なものからパラメータを個別に設定が必要なものまでいろいろあります。後者は各AWSアカウントの利用状況に依るので、全AWSアカウントに共通設定を適用は難しいなと感じています。ルールの採用方針があれば教えてください。
書いてあるとおりと思われる。 Config を採用したばかりということもあり、絶対に守りたい 22 port や S3 の公開権限などを中心にしている。 各アカウントの事情を細かく見なくていいレベルとしている。
Security Hubのセキュリティ標準チェックも活用できそうでしょうか?
活用できると思われるがまだ見れてない。 マルチアカウントマルチリージョンができることが重要。 リージョンに広く使えると思われるので検討していきたい。
どれくらいの期間で、現在の状態まで構築出来ましたか?
Try&Error も含めて、足掛け2週間。 Config の設定がアカウント単位やリージョン単位などをサポートに問い合わせるなどに時間がかかった。
マルチアカウント運用の開始までの取り組み
講師:株式会社ウェザーニューズ Cloud Initiative 小野 晃路
アプリいつも使ってます。
86年創業。94年入社とのこと。
そんなにも歴史ある会社だったんですね。アプリのイメージしかなかった。
www.slideshare.net
- 2012年から AWS 利用。グローバルの天気アプリの作成がきっかけ
- 元々、オンプレがメイン。密結合
- 現地に行くのも時間かかる
- ケーブル片付けだけで半日など
- ビルの法定停電
- 最初は運用アカウントのみ、オンプレ接続
- 開発アカウント追加、オンプレ接続
- 利用促すために PoC アカウントを発行、オンプレ接続なし
- 同じアカウントを使うとコスト配分できない
- IAM 最低限にするのは大変、詳しくないときに作った最初のチームは権限ゆるい
- サービス上限にひっかかる
- オンプレと接続したい
- 開発アカウントで試すときに権限がないので調整に時間がかかる --> オンプレでいいや
- 問題も多いからマルチアカウントを検討へ
- AWS Summit 2017 「AWSにおけるマルチアカウント管理の手法とベストプラクティス」を参考に
- AWS Transit Gateway
- AWS SSO
- AWS 利用のガバナンスの決定
- ガバナンスと権限移譲のバランスを取る
- ガードレール方式
- ガバナンスと権限移譲のバランスを取る
- アクターの整理
- アカウント名とメールアドレスの命名規則
- CDK を使って管理
- cli も併用、コードベースにする
- まとめ
- SSO 使おう
- 運用ルールを事前に決める
- コード管理で運用しましょう
- 課題
- マスターアカウント=運用アカウントのためシステムが乗ってる
- 支払い専用へどう移行するか
- マスターアカウント=運用アカウントのためシステムが乗ってる
QA
コード管理で運用するとのことですが、初期構築だけではなく運用含めて全てをコードで管理されるのでしょうか?
変更があれば、コードでするようにしている。
「進化し続けるインフラ」のためのマルチアカウント管理
講師:株式会社リクルート インフラソリューションユニット SRE部 須藤 悠
- 13チーム、90アカウントを管理
- 2016年数アカウントからスタート
- Terraform 運用
- Pull Request で 自動 plan
- 最初は手動
- 次の1年程度は CFn
- 次の2年程度で次第に Terraform へ
- 現在すべて Terraform + Terraform Enterprise で運用
- 1000plan/月、200apply/月
- 基盤の権限構成
- 4つの権限
- 管理者権限:プロダクト責任者向け
- 開発者権限:開発者一般向け
- 運用者権限:運用者向け
- コンテンツ権限:S3 バケット更新用
- 4つの権限
- root 権限はかなり厳重に制限
- 基盤チーム専用の MFA デバイス
- root 必須以外は利用不可
- 利用リソース
- CloudTrail
- S3 の出力内容は変更削除不可、参照のみ
- Config
- CuardDuty
- SNS Topic でメールと Slack 通知
- VPC Peering
- Transit Gateway
- Organizations SCP
- Compute SavingsPlans
- Fagate で恩恵を受けたい場合は個別アカウントで設定
- RI は個別アカウントのみ
- Consolidated Billing & Cost Explorer
- RDS
- 意図せず再起動が出ないようにメンテンススケジュールを Slack 通知
- Route53
- 内部 HostedZone レコードを DynamoDB に集約
- ACM + Route53
- 開発でも HTTPS 使う
- クロスアカウント化が必要なので Terraform 化してない
- CloudTrail
- LDAP により ID 管理とフェデレーション
- マルチアカウントで大切にしていること
- 進化し続けるインフラ
- 基盤チームでプロダクトを幸せに
- インフラ運用だけじゃない価値を
- プロダクトに寄り添い伴走し成長させる
- AWS 新機能、新サービスのキャッチアップ
- 障害を学びに
- トラブルシュートは学びの宝庫
QA
アーキテクチャレビューできるには幅広いAWSスキルが必要になると思いますが、そのために基盤チームのメンバーの教育は何かやっているのでしょうか
メンバーごとに得分野と不得意があると思う。まず一つの機能の適用検証を一人でする。レビューアートしてハイスキルな人や知見のある人をつける。壁打ち相手を作って進めるようにする。
CFnからterraformへの移行を決めた際に、CFnでは辛いなと感じたポイントをいくつか教えていただきたいです。
当時は yaml が使えなかった。json を書くのが辛かった。 Terraform だとインポートして IaC に組み込めるのが良かった。
CCoEチームにいます。当初はCCoEチームがAWS全般に詳しかったのですが、複数案件を経るとプロダクトチームの方にノウハウが蓄積するようになり、相談されても答えられないものが増えつつあるのが悩みです。社内のAWSノウハウ共有のいい方法と、CCoEチームメンバーとしてのモチベ維持方法に関して何かあればお聞かせください。
前半に関しては、プロダクトチームが成長成熟することは素直に喜ぶ。CCoE チームが関与してたからこそ成長できたと誇っていいと思う。 社内のノウハウに関しては、モチベーションを持った特定の人が何人かいると思うので、その人に声をかけて勉強会とかカジュアルにオンライン飲み会で技術の話するなどもいいかなと。 モチベーションの維持は、プロダクトと CCoE で注目すべき AWS のサービスは違うと思う。そういったところでそれぞれ興味を持って突き進めばいいと思いました。
所感
10年ほど AWS 触ってるから徐々にアカウントが増えていき、綺麗にマルチアカウント管理はできてない状況です。
最初に作ったアカウントがマスターアカウントになって運用もしている状態だし、自分がメインでみてないアカウントはセキュリティ周りも後回しになったりするし...
計画的にまとめて管理を考えないとダメな状況になってきましたが、専門のインフラチームとかでないとなかなか難しいですね。