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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    率

    化


    View Slide

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

    View Slide

  9. Terraform

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  17. セキュリティ

    View Slide

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

    View Slide

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



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

    View Slide

  20. 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 Slide

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



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

    View Slide

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



    View Slide

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

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

    View Slide

  24. 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 Slide

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

    View Slide

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

    View Slide

  27. IAMユーザー

    View Slide

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


    View Slide

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


    View Slide

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


    View Slide

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

    View Slide

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

    View Slide

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

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

    View Slide

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

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

    View Slide

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

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

    View Slide

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

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

    View Slide

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

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

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

    View Slide

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

    View Slide