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

複数プロダクトを管理する AWS Organizations における AWS IAM Id...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for yhamano yhamano
June 26, 2023

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

Avatar for yhamano

yhamano

June 26, 2023

More Decks by yhamano

Other Decks in Technology

Transcript

  1. ©MIXI 複数プロダクトを管理する AWS Organizations における AWS IAM Identity Center を

    GitHub x Terraform でいい感じに運用したい Ops JAWS Meetup #24
  2. ©MIXI 2 自己紹介 • 濱野悠介(twitter:@yhamano0312) • 株式会社 MIXI 開発本部 CTO

    室 SRE グループ • 好きな AWS サービスは AWS IAM Identity Center
  3. ©MIXI エモーションと コミュニケーションで 「心もつなぐ」場と機会を 創造し続けます。 MIXI GROUPは、 ただ「つながればいい」という効率的な機能の提供ではなく、 歓喜や興奮、温かな思い、幸せ、居心地の良さの共有を通じて、 その先に、もっと深くて濃く豊かな、心のつながりを生み出すような、

    サービスの開発・提供を目指しています。 現在、スポーツ・ライフスタイル・デジタルエンターテインメント の3つの領域で事業を展開しており、 それぞれの主な事業内容は右の通りです。 また、近年の投資活動の拡大と重要性を勘案し、 FY2023からはスタートアップやファンド出資等の投資活動を事業化しました。 スポーツ事業 プロスポーツチーム運営および 公営競技ビジネスの推進 ライフスタイル事業 インターネットを活用し、 人々の生活に密着したサービスの提供 デジタルエンターテインメント事業 スマホゲームを中心としたゲームの提供 MIXI GROUPの事業領域
 3つの領域で “「心もつなぐ」場と機会” を創造する事業を推進
  4. ©MIXI 4 開発本部 CTO 室 SRE グループ 紹介 • 開発本部

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

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

    • 全社横断事業、プロジェクトへの技術的支援 • エンジニアのいないサービス、プロダクトへの機動的な支援 課題を自ら見つけそれを解決して成果を出していく 開発本部 CTO 室 SRE グループ 紹介 本日お話する分野
  7. ©MIXI 7 Agenda • AWS IAM Identity Center 概要と導入する場合のメリット •

    現状の MIXI 社における AWS アカウント管理 • AWS IAM Identity Center を用いて IAM 管理する場合に運用で考える必要があること • GitHub x Terraform を用いた AWS IAM Identity Center の運用 • まとめ
  8. ©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/
  9. ©MIXI 10 AWS IAM Identity Center を導入した場合のメリット • 複数 AWS

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

    プロバイダーと IAM Identity Center を連携することでユーザ管理 を ID プロバイダー側にまかせることができる • 休職/退職時に ID プロバイダー側で対象ユーザのステータスを非アクティブ状態にすれば IAM Identity Center 側にもログインできなくなる • IAM Identity Center では複数の外部 ID プロバイダーに対応している • MIXI 社にて ID プロバイダーとして利用している Okta も対応している
  11. ©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
  12. ©MIXI 15 現状の MIXI 社における AWS アカウント管理 • AWS アカウント管理における役割分担

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

    IAM Identity Center による IAM 管理は特定の AWS アカウント でしか行うことができない • 全事業部が利用することになるため 開発本部で IAM Identity Center の AWS アカウントは管理する
  14. ©MIXI 19 どうやって運用しようかな • 事業部からの依頼ベースで開発本部メンバが設定する • 開発本部メンバ作業がボトルネックとなってしまう可能性がある • 各事業部の AWS

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

    管理者に IAM Identity Center の編集権限を渡して設定してもらう • 他事業部の IAM 設定を間違って編集してしまうかもしれない 以下の要件を満たしながら運用したい ・極力事業部側の作業のみで IAM 設定をしてもらいたい ・他事業部の IAM 設定を無断で触れないようにしたい
  16. ©MIXI 21 AWS IAM Identity Center による IAM 設定を IaC

    化して PR ベースによる設定フローにすれば実現できそう!
  17. ©MIXI 24 技術選定 • コード管理には MIXI 社のデファクトスタンダードで使われている GitHub を利用する •

    branch protection rule と CODEOWNERS 機能を組み合わせることで PR マージの条件に 特定ユーザ/チームの approve を強制することができる • IaC を実現するための利用言語は Terraform を検討中 • MIXI 社全体として Terraform の採用率が高い(肌感) • Terraform Cloud を利用すれば IaC の CI/CD ワークフローをマネージドにできる • OIDC 連携や料金プラン改定により使いやすくなった印象
  18. ©MIXI 26 • 事業部等の単位でディレクトリを切って、事業部で管理する AWS アカウントに対する IAM 設定を定義する • AWS,

    Terraform Cloud, ID プロバイダ 間の連携設定といった全体 的な設定は別ディレクトリに切り出して開発本部メンバが管理する
  19. ©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 設定を各 事業部がオーナーシップを持って管理することができる
  20. ©MIXI 28 • PR マージをトリガーに Terraform Cloud による apply が走って

    IAM Identity Center の設定が更新される • AWS x Terraform Cloud 間は OIDC 連携を行い Workspace 毎に設定する IAM Role は 各事業部が管理する AWS アカウントに対する IAM 設定しかできないように権限を絞る
  21. ©MIXI 29 利用者目線での利用するまで 1. 必要情報を開発本部に申請する • プロダクト名、AWS アカウント、コードオーナーに設定するGitHub team、AWS 管理者/利用者

    2. 申請情報をもとに開発本部がキッティング作業を行う 3. 事業部メンバがIAM 設定の PR 作成と approve を行いマージする 4. 対象の AWS アカウントや AWS 利用者が増えた時だけ開発本部へ依頼 or PR を出しても らう
  22. ©MIXI 30 サポート • ドキュメント整備 • 相談窓口を設ける • IAM 設計の仕方が分からない、IaC

    の概念が分からない等でも利用してもらえるように場合によっ ては Embedded して IAM 設計/構築をサポートできる体制を整える • 利用者視点では IAM 設定にだけ注力できるように IAM 設定以外をラップした Terraform module を用意する
  23. ©MIXI 31 まとめ • 複数プロダクトを管理する AWS Organizations に対して AWS IAM

    Identity Center を導 入して開発者体験向上とセキュリティ向上を実現したい • 利用者側に IAM 管理のオーナーシップを持ってもらいつつ、他事業部に意図しない影響を 与えないように GitHub x Terraform の PR ベースによる設定フローを構築すると良さそ う
  24. ©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