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

MedPeer SREチームによるAWSアカウント運用効率化 / Improving efficiency of AWS account operations by MedPeer SRE team

reireias
November 17, 2021

MedPeer SREチームによるAWSアカウント運用効率化 / Improving efficiency of AWS account operations by MedPeer SRE team

2021/11/17 に行われた下記AWSイベントの登壇資料です。

なぜあの会社は少人数でもシステム運用ができるのか?
〜工夫を凝らし効率的に運用しているお客様事例祭り
https://awsonlineseminar.splashthat.com/

reireias

November 17, 2021
Tweet

More Decks by reireias

Other Decks in Technology

Transcript

  1. SREチームによる
    AWSアカウント運用効率化
    メドピア株式会社 侘美 怜

    View full-size slide

  2. 自己紹介
    名前 侘美 怜(たくみ さとし)
    アカウント @reirei_As
    reireias
    略歴 2013年 富士ゼロックスに入社
    BtoBのSaaSプロダクトの開発
    オンプレからAWSへの移行
    2019年 メドピアに入社
    SREチーム所属
    たまにRailsエンジニア

    View full-size slide

  3. メドピアのサービス・事業

    View full-size slide

  4. SREチーム:組織
    各サービスの開発チームはエンジニア3〜5名で構成され、15チームほど
    SREチームは全サービスを横断的に見る立ち位置

    View full-size slide

  5. SREチーム:役割・業務
    SREの主な役割
    ● インフラ構築・改修・パフォーマンスチューニング
    ● モニタリングの設定・運用
    ● AWS上のセキュリティの担保
    ● GitHubやRollbarなど、全社的に開発で利用するツールの管理
    各サービスごとに主担当のSREが一人 = SRE一人あたり数サービスを担当

    View full-size slide

  6. SREチーム:データ
    サービス数・SREチーム共にまだまだ成長中!
    2021
    2020
    2019
    2018
    2017
    2016
    2015
    AWSアカウント 48個
    SRE 6名
    PullRequest 85/週

    View full-size slide

  7. こんなSREチームのAWSアカウント運用上の工夫をご紹介
    効

    率

    化


    View full-size slide

  8. アジェンダ
    ● Terraform
    ● セキュリティ
    ● IAMユーザー

    View full-size slide

  9. Terraform CloudによるCI/CDパイプライン
    Terraform Cloud
    HashiCorp社のTerraformマネージドサービス
    https://www.terraform.io/cloud
    機能
    ● Terraformのstateの管理機能
    ● Terraformのplan(変更の差分の表示)やapply(変更の反映)の実行環境
    ● Terraformモジュールのレジストリ
    ○ IAMロール、通知系のLambda関数、会社のIPなどの定数、等をモジュールとして登録し活用中

    View full-size slide

  10. Terraform CloudによるCI/CDパイプライン
    Terraform Cloud
    GitHub
    Pull Request作成
    merge
    plan実行
    apply実行
    各種リソース
    Trigger
    Trigger Apply
    Read
    こんなCI/CDパイプラインが実現可能
    ※ Terraform Cloud以外のツールでも同様のパイプラインは構築可能

    View full-size slide

  11. Terraform CloudによるCI/CDパイプライン
    メリット①:Terraform実行用のクレデンシャル管理の改善
    Before
    ● AWSアカウント単位でクレデンシャルを発行
    ● SREのマシンのローカルに保存
    After
    ● Terraform Cloudにクレデンシャルを登録
    ● SREはTerraform Cloudへログインするだけ
    工数削減 + セキュリティ向上

    View full-size slide

  12. 補足:Terraform Cloudに渡すクレデンシャル
    普通に移行するとAWSアカウントの数だけIAMユーザーのクレデンシャルを登録する必
    要がでてきてしまう。
    OrganizationAccountAccessRoleという、管理アカウントのIAMユーザーから利用でき
    るロールを使うことで、Terraform Cloudには管理アカウント上のIAMユーザーのクレデ
    ンシャルを1個のみ登録するだけでよくなる。
    後は各Terraform側で任意のアカウントにAssumeRoleする実装とすれば良い。

    View full-size slide

  13. Terraform CloudによるCI/CDパイプライン
    メリット②:構成の統一
    Before
    ● MakefileやDockerを使ってTerraformを実行する実装が一部残っていた
    ● 新規参入者の障壁 = 古いリポジトリがより放置される
    ● SRE外からもPRを投げづらい
    After
    ● PR作成→plan実行/PRマージ→applyに統一
    ● SRE外からも気軽にPRを投げられるように

    View full-size slide

  14. Terraform CloudによるCI/CDパイプライン
    メリット③:apply忘れやエラー放置の撲滅
    Before
    ● PRマージしたけどapply忘れてました
    ● applyエラーになったけど後で直します
    →放置
    After
    ● 自動apply(※)による担保
    ● 一覧で表示されるのでエラーに気付ける
    ※ ちなみに、確認画面をはさんで apply という設定も可能

    View full-size slide

  15. SRE相互でのコードレビュー
    SREチームのレビュールール
    ● 他のSRE1名以上のapproveが必要
    ● 基本はSREチームメンバーでランダムアサイン
    メリット
    ● 最新のAWSの機能や良い実装のサービス間での横展開
    ● IaCのコード再利用性の高さがより発揮される
    デメリット
    ● AWSの知見がSREチームのみに蓄積される

    View full-size slide

  16. セキュリティ

    View full-size slide

  17. 効率的なセキュリティの担保
    セキュリティルール準拠状態をチェックし可視化
    少ない工数でいかにセキュリティを担保するかを追求した構成
    特徴
    ● 全アカウントに対して、設定したセキュリティルールに準拠しているかを自動で
    チェック
    ● 新規アカウントに対しても自動的にチェック対象とする
    ● アカウント毎のセキュリティルールへの準拠状態をダッシュボード表示

    View full-size slide

  18. Log Account
    Root Account
    セキュリティの可視化
    CloudFormation
    Config
    Organizations
    Service Account 1
    Config
    Service Account N
    Config



    作成 &
    ルール設定
    Bucket
    ログ保存
    Athena QuickSight
    SRE レポート

    View full-size slide

  19. Service Account 1
    Root Account
    セキュリティの可視化
    CloudFormation
    Config
    Organizations
    Service Account 1
    Config
    Service Account N
    Config
    作成 &
    ルール設定
    Bucket
    ログ保存
    Athena QuickSight
    SRE レポート



    CloudFormation StackSetsにより
    Organizations配下の全アカウントへの
    AWS Configの設定
    AWS ConfigのOrganization Config
    Rule機能で全アカウントにルールを設定

    View full-size slide

  20. Log Account
    Root Account
    セキュリティの可視化
    CloudFormation
    Config
    Organizations
    Service Account 1
    Config
    Service Account N
    Config
    作成 &
    ルール設定
    Bucket
    ログ保存
    Athena QuickSight
    SRE レポート



    Configのスナップショットログ
    を1つのS3バケットに集約

    View full-size slide

  21. Log Account
    Root Account
    セキュリティの可視化
    CloudFormation
    Config
    Organizations
    Service Account 1
    Config
    Service Account N
    Config
    作成 &
    ルール設定
    Bucket
    ログ保存
    Athena QuickSight
    SRE レポート
    Athena + QuickSightで集計
    と分析



    View full-size slide

  22. Log Account
    Root Account
    セキュリティの可視化
    CloudFormation
    Config
    Organizations
    Service Account 1
    Config
    Service Account N
    Config
    ・・

    作成 &
    ルール設定
    Bucket
    ログ保存
    Athena QuickSight
    SRE レポート
    ダッシュボードや月イチのレポートメールでセ
    キュリティ対策状況をチェック
    ダッシュボードのサンプル

    View full-size slide

  23. Log Account
    Root Account
    セキュリティの可視化
    CloudFormation
    Config
    Organizations
    Service Account 1
    Config
    Service Account N
    Config
    ・・

    作成 &
    ルール設定
    Bucket
    ログ保存
    Athena QuickSight
    SRE レポート
    より詳細が気になる方はこちらのテックブログへ
    AWS Config + Athena + QuickSightによる複数AWSアカウント横
    断でのセキュリティ状態の可視化 - メドピア開発者ブログ
    https://tech.medpeer.co.jp/entry/2021/10/01/090000

    View full-size slide

  24. tfsecの導入とDependabotの活用
    セキュリティ対策の工数削減として役立ったTips
    ● tfsec
    ○ https://github.com/aquasecurity/tfsec
    ○ Terraformのコードを解析して潜在的なセキュリティ問題を警告してくれるツール
    ○ AWSには一度作成すると修正が難しいリソースもあるので有用
    ● DependabotによるAWS Providerの更新PR作成
    ○ GitHubに組み込まれているツールで、リポジトリ内のライブラリのセキュリティアラートや更新の PR
    などを発行してくれる
    ○ Terraformのプロバイダーやモジュールにも対応しているので、 AWS Providerを最新に保つのが楽

    View full-size slide

  25. セキュリティ可視化 + tfsecによる効果
    Before
    ● 実装時期や実装者によってセキュリティ対策はまばら
    ● セキュリティに関する社内ルールはあるが、どのアカウントでどれくらい守られてい
    るかチェックが難しい
    After
    ● 静的解析と実際のリソースをチェックすることでセキュリティを担保
    ● 可視化 することで、定量的にセキュリティ対策状況を把握できる
    ● 改善すべき対象が浮き彫りに

    View full-size slide

  26. IAMユーザー

    View full-size slide

  27. Service Account A
    IAMユーザーの運用方法
    intra Account
    開発者
    IAMユーザー IAMロール 各種リソース
    操作
    Service Account B
    IAMロール 各種リソース
    操作
    Assume Role
    ● 開発者用のIAMユーザーは1アカウントに
    集約
    ● どのIAMロールにAssume Role可能かも
    ここで制御


    View full-size slide

  28. Service Account A
    IAMユーザーの運用方法
    intra Account
    開発者
    IAMユーザー IAMロール 各種リソース
    操作
    Service Account B
    IAMロール 各種リソース
    操作
    Assume Role
    ● 各AWSアカウントを操作する際は Assume
    Roleして操作


    View full-size slide

  29. Service Account A
    IAMユーザーの運用方法
    intra Account
    開発者
    IAMユーザー IAMロール 各種リソース
    操作
    Service Account B
    IAMロール 各種リソース
    操作
    Assume Role
    ● 各AWSアカウント上のIAMロールは
    Terraformのモジュールでadminや
    readonlyなどいくつかのパターンを用意


    View full-size slide

  30. IAMユーザーの運用方法
    この方式のメリット
    ● IAMユーザーの数を減らし、アクセスキーの流出リスクを低減
    ● アクセスキーの定期ローテーションを現実的な工数で実現可能(後述)
    ● 権限を一元管理できる

    View full-size slide

  31. アクセスキーのローテーション運用の課題
    ● IAMユーザーのアクセスキーは定期的な変更がベストプラクティスである
    ○ ローテーションできるように、 IAMユーザー毎に2個まで作成できるようになっている
    ● 開発者に「自身で更新してください」では更新しない開発者が出てくる
    ● SRE側で強制的に新しいアクセスキーに更新したいが、SREが開発者のキーを見
    てしまうとセキュリティ上問題がある
    ○ SREが任意の開発者になりすまして AWSを操作可能になってしまう
    開発者のアクセスキーを閲覧せずに、強制的に更新という方式で実現したい!

    View full-size slide

  32. アクセスキーの発行のための仕組み
    開発者 SRE Terraform
    提出 実装
    IAMアクセスキー
    発行
    apply
    暗号化
    利用
    output

    復号
    公開鍵
    秘密鍵
    IAMアクセスキー
    暗号化された
    アクセスキー
    ① 開発者がPGP鍵を生成し、公開鍵を SREに提出。

    View full-size slide

  33. アクセスキーの発行のための仕組み
    開発者 SRE Terraform
    提出 実装
    IAMアクセスキー
    発行
    apply
    暗号化
    利用
    output

    復号
    公開鍵
    秘密鍵
    IAMアクセスキー
    暗号化された
    アクセスキー
    ② PGP鍵を指定しIAMアクセスキー作成を実装。

    View full-size slide

  34. アクセスキーの発行のための仕組み
    開発者 SRE Terraform
    提出 実装
    IAMアクセスキー
    発行
    apply
    暗号化
    利用
    output

    復号
    公開鍵
    秘密鍵
    IAMアクセスキー
    暗号化された
    アクセスキー
    ③ applyすると、作成されたIAMアクセスキーがPGP公開鍵で暗号化される。

    View full-size slide

  35. アクセスキーの発行のための仕組み
    開発者 SRE Terraform
    提出 実装
    IAMアクセスキー
    発行
    apply
    暗号化
    利用
    output

    復号
    公開鍵
    秘密鍵
    IAMアクセスキー
    暗号化された
    アクセスキー
    ④ SREは暗号化されたIAMアクセスキーを開発者に伝達し、開発者は復号する。

    View full-size slide

  36. アクセスキーの発行のための仕組み
    開発者 SRE Terraform
    提出 実装
    IAMアクセスキー
    発行
    apply
    暗号化
    利用
    output

    復号
    公開鍵
    秘密鍵
    IAMアクセスキー
    暗号化された
    アクセスキー
    SREが生のIAMアクセスキーを目撃することなく、
    強制的にIAMアクセスキーを発行できた!

    ローテーションに必要な工数を大幅削減

    View full-size slide

  37. まとめ
    Terraform、セキュリティ、IAMユーザー関連の効率化のためにメドピアが行っている工
    夫をいくつか紹介した
    特に以下2点はかなりの効率化が見込めるので是非導入をおすすめしたい
    ● IaCのCI/CDパイプライン
    ● Organizations関連機能の活用

    View full-size slide