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

複数プロダクトを管理する AWS Organizations における AWS IAM Identity Center を GitHub x Terraform でいい感じに運用したい

yhamano
June 26, 2023

複数プロダクトを管理する AWS Organizations における AWS IAM Identity Center を GitHub x Terraform でいい感じに運用したい

yhamano

June 26, 2023
Tweet

More Decks by yhamano

Other Decks in Technology

Transcript

  1. ©MIXI
    複数プロダクトを管理する AWS Organizations
    における AWS IAM Identity Center を
    GitHub x Terraform でいい感じに運用したい
    Ops JAWS Meetup #24

    View full-size slide

  2. ©MIXI
    2
    自己紹介
    • 濱野悠介(twitter:@yhamano0312)
    • 株式会社 MIXI 開発本部 CTO 室 SRE グループ
    • 好きな AWS サービスは AWS IAM Identity Center

    View full-size slide

  3. ©MIXI
    エモーションと
    コミュニケーションで
    「心もつなぐ」場と機会を
    創造し続けます。
    MIXI GROUPは、
    ただ「つながればいい」という効率的な機能の提供ではなく、
    歓喜や興奮、温かな思い、幸せ、居心地の良さの共有を通じて、
    その先に、もっと深くて濃く豊かな、心のつながりを生み出すような、
    サービスの開発・提供を目指しています。
    現在、スポーツ・ライフスタイル・デジタルエンターテインメント
    の3つの領域で事業を展開しており、
    それぞれの主な事業内容は右の通りです。
    また、近年の投資活動の拡大と重要性を勘案し、
    FY2023からはスタートアップやファンド出資等の投資活動を事業化しました。
    スポーツ事業
    プロスポーツチーム運営および
    公営競技ビジネスの推進
    ライフスタイル事業
    インターネットを活用し、
    人々の生活に密着したサービスの提供
    デジタルエンターテインメント事業
    スマホゲームを中心としたゲームの提供
    MIXI GROUPの事業領域

    3つの領域で
    “「心もつなぐ」場と機会”
    を創造する事業を推進

    View full-size slide

  4. ©MIXI
    4
    開発本部 CTO 室 SRE グループ 紹介
    • 開発本部 CTO 室 SRE グループの役割
    • 注力事業への技術的支援
    • 全社横断事業、プロジェクトへの技術的支援
    • エンジニアのいないサービス、プロダクトへの機動的な支援

    View full-size slide

  5. ©MIXI
    5
    • 開発本部 CTO 室 SRE グループの役割
    • 注力事業への技術的支援
    • 全社横断事業、プロジェクトへの技術的支援
    • エンジニアのいないサービス、プロダクトへの機動的な支援
    課題を自ら見つけそれを解決して成果を出していく
    開発本部 CTO 室 SRE グループ 紹介

    View full-size slide

  6. ©MIXI
    6
    • 開発本部 CTO 室 SRE グループの役割
    • 注力事業への技術的支援
    • 全社横断事業、プロジェクトへの技術的支援
    • エンジニアのいないサービス、プロダクトへの機動的な支援
    課題を自ら見つけそれを解決して成果を出していく
    開発本部 CTO 室 SRE グループ 紹介
    本日お話する分野

    View full-size slide

  7. ©MIXI
    7
    Agenda
    • AWS IAM Identity Center 概要と導入する場合のメリット
    • 現状の MIXI 社における AWS アカウント管理
    • AWS IAM Identity Center を用いて IAM 管理する場合に運用で考える必要があること
    • GitHub x Terraform を用いた AWS IAM Identity Center の運用
    • まとめ

    View full-size slide

  8. ©MIXI
    8
    AWS IAM Identity Center 概要と導入する場合のメリット

    View full-size slide

  9. ©MIXI
    9
    AWS IAM Identity Center (旧 AWS SSO) 概要
    • AWS アカウント及びビジネスアプリケーションへのシングルサインオン(SSO)を提供する
    クラウドサービス
    • SSO とは一度のユーザ認証処理によって複数のシステムリソースが利用可能となる特性
    • どのユーザに対してどの権限をどの AWS アカウントに対して付与するかといった認可の
    仕組みも備えている
    • ここら辺の内容はクラスメソッドさんの AWS SSO を図解してみた の記事がとてもわかりやす
    かったのでおすすめ
    • AWS Organizations を利用していることが前提
    ・[AWS Black Belt Online Seminar] AWSアカウント シングルサインオンの設計と運用
    https://aws.amazon.com/jp/blogs/news/webinar-bb-awsaccountsso-2020/
    ・AWS SSOを図解してみた
    https://dev.classmethod.jp/articles/aws-sso-wakewakame/

    View full-size slide

  10. ©MIXI
    10
    AWS IAM Identity Center を導入した場合のメリット
    • 複数 AWS アカウントへのコンソールログインが便利に!
    • IAM Identity Center 用のポータルにアクセスして認証を済ませるとログイン可能な
    AWS アカウントと権限が一覧で表示される

    View full-size slide

  11. ©MIXI
    11
    AWS IAM Identity Center を導入した場合のメリット
    • 社内で利用している ID プロバイダーと IAM Identity Center を連携することでユーザ管理
    を ID プロバイダー側にまかせることができる
    • 休職/退職時に ID プロバイダー側で対象ユーザのステータスを非アクティブ状態にすれば IAM
    Identity Center 側にもログインできなくなる
    • IAM Identity Center では複数の外部 ID プロバイダーに対応している
    • MIXI 社にて ID プロバイダーとして利用している Okta も対応している

    View full-size slide

  12. ©MIXI
    12
    AWS IAM Identity Center を導入した場合のメリット
    • AWS CLI v2 を利用することで静的なアクセスキーを発行しなくても、一時的な認証情報
    を取得することができる!
    • 事前に IAM Identity Center のポータル URL やログイン先 AWS アカウントを
    profile に設定をしておく
    aws sso login --profile xxx aws s3 ls --profile xxx

    View full-size slide

  13. ©MIXI
    13
    AWS IAM Identity Center を導入できれば
    開発者体験向上とセキュリティ向上の両立が実現できそう!

    View full-size slide

  14. ©MIXI
    14
    現状の MIXI 社における AWS アカウント管理

    View full-size slide

  15. ©MIXI
    15
    現状の MIXI 社における AWS アカウント管理
    • AWS アカウント管理における役割分担
    • 開発本部
    • AWS Organizations 管理アカウントの管理
    • AWS アカウント発行
    • 請求管理
    • セキュリティガードレール整備
    • 各事業部
    • プロダクト提供のために必要な AWS アカウント
    の管理/運用
    • もちろん IAM に関する管理/運用も行う
    • どのユーザがどの AWS アカウントに対し
    てどういった権限をもってよいか

    View full-size slide

  16. ©MIXI
    16
    AWS IAM Identity Center を用いて
    IAM 管理する場合に運用で考える必要があること

    View full-size slide

  17. ©MIXI
    17
    AWS IAM Identity Center による IAM 管理の制約
    • IAM Identity Center による
    IAM 管理は特定の AWS アカウント
    でしか行うことができない
    • 全事業部が利用することになるため
    開発本部で IAM Identity Center の
    AWS アカウントは管理する

    View full-size slide

  18. ©MIXI
    18
    AWS IAM Identity Center を用いた
    IAM 管理の運用どうしよう

    View full-size slide

  19. ©MIXI
    19
    どうやって運用しようかな
    • 事業部からの依頼ベースで開発本部メンバが設定する
    • 開発本部メンバ作業がボトルネックとなってしまう可能性がある
    • 各事業部の AWS 管理者に IAM Identity Center の編集権限を渡して設定してもらう
    • 他事業部の IAM 設定を間違って編集してしまうかもしれない

    View full-size slide

  20. ©MIXI
    20
    どうやって運用しようかな
    • 事業部からの依頼ベースで開発本部メンバが設定する
    • 開発本部メンバ作業がボトルネックとなってしまう可能性がある
    • 各事業部の AWS 管理者に IAM Identity Center の編集権限を渡して設定してもらう
    • 他事業部の IAM 設定を間違って編集してしまうかもしれない
    以下の要件を満たしながら運用したい
    ・極力事業部側の作業のみで IAM 設定をしてもらいたい
    ・他事業部の IAM 設定を無断で触れないようにしたい

    View full-size slide

  21. ©MIXI
    21
    AWS IAM Identity Center による IAM 設定を IaC 化して
    PR ベースによる設定フローにすれば実現できそう!

    View full-size slide

  22. ©MIXI
    22
    これ以降の話は検証中の段階で実運用はまだできていません
    導入していく過程で変更する可能性があります

    View full-size slide

  23. ©MIXI
    23
    GitHub x Terraform を用いた
    AWS IAM Identity Center の運用

    View full-size slide

  24. ©MIXI
    24
    技術選定
    • コード管理には MIXI 社のデファクトスタンダードで使われている GitHub を利用する
    • branch protection rule と CODEOWNERS 機能を組み合わせることで PR マージの条件に
    特定ユーザ/チームの approve を強制することができる
    • IaC を実現するための利用言語は Terraform を検討中
    • MIXI 社全体として Terraform の採用率が高い(肌感)
    • Terraform Cloud を利用すれば IaC の CI/CD ワークフローをマネージドにできる
    • OIDC 連携や料金プラン改定により使いやすくなった印象

    View full-size slide

  25. ©MIXI
    26
    • 事業部等の単位でディレクトリを切って、事業部で管理する
    AWS アカウントに対する IAM 設定を定義する
    • AWS, Terraform Cloud, ID プロバイダ 間の連携設定といった全体
    的な設定は別ディレクトリに切り出して開発本部メンバが管理する

    View full-size slide

  26. ©MIXI
    27
    /terraform/A-division/ @org/A-division-members
    /terraform/B-division/ @org/B-division-members
    /terraform/common/ @org/octo-members
    • CODEOWNERS を使用することでコードオーナーを設定できる
    • GitHub の branch protection rule の設定により PR マージの条件とし
    てコードオーナーの approve を必須にすることができる
    • これにより各事業部の AWS IAM Identity Center による IAM 設定を各
    事業部がオーナーシップを持って管理することができる

    View full-size slide

  27. ©MIXI
    28
    • PR マージをトリガーに Terraform Cloud による apply が走って IAM Identity Center の設定が更新される
    • AWS x Terraform Cloud 間は OIDC 連携を行い Workspace 毎に設定する IAM Role は 各事業部が管理する AWS
    アカウントに対する IAM 設定しかできないように権限を絞る

    View full-size slide

  28. ©MIXI
    29
    利用者目線での利用するまで
    1. 必要情報を開発本部に申請する
    • プロダクト名、AWS アカウント、コードオーナーに設定するGitHub team、AWS 管理者/利用者
    2. 申請情報をもとに開発本部がキッティング作業を行う
    3. 事業部メンバがIAM 設定の PR 作成と approve を行いマージする
    4. 対象の AWS アカウントや AWS 利用者が増えた時だけ開発本部へ依頼 or PR を出しても
    らう

    View full-size slide

  29. ©MIXI
    30
    サポート
    • ドキュメント整備
    • 相談窓口を設ける
    • IAM 設計の仕方が分からない、IaC の概念が分からない等でも利用してもらえるように場合によっ
    ては Embedded して IAM 設計/構築をサポートできる体制を整える
    • 利用者視点では IAM 設定にだけ注力できるように IAM 設定以外をラップした Terraform
    module を用意する

    View full-size slide

  30. ©MIXI
    31
    まとめ
    • 複数プロダクトを管理する AWS Organizations に対して AWS IAM Identity Center を導
    入して開発者体験向上とセキュリティ向上を実現したい
    • 利用者側に IAM 管理のオーナーシップを持ってもらいつつ、他事業部に意図しない影響を
    与えないように GitHub x Terraform の PR ベースによる設定フローを構築すると良さそ

    View full-size slide

  31. ©MIXI
    32
    Appendix
    • [AWS Black Belt Online Seminar] AWSアカウント シングルサインオンの設計と運用
    • https://aws.amazon.com/jp/blogs/news/webinar-bb-awsaccountsso-2020/
    • AWS SSOを図解してみた
    • https://dev.classmethod.jp/articles/aws-sso-wakewakame/
    • Managing a branch protection rule
    • https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/ma
    naging-protected-branches/managing-a-branch-protection-rule
    • About code owners
    • https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/custo
    mizing-your-repository/about-code-owners
    • Dynamic Credentials with the AWS Provider
    • https://developer.hashicorp.com/terraform/cloud-docs/workspaces/dynamic-provider-credentials/
    aws-configuration
    • Terraform Cloud updates plans with an enhanced Free tier and more flexibility
    • https://www.hashicorp.com/blog/terraform-cloud-updates-plans-with-an-enhanced-free-tier-and-
    more-flexibility

    View full-size slide