Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
©MIXI 複数プロダクトを管理する AWS Organizations における AWS IAM Identity Center を GitHub x Terraform でいい感じに運用したい Ops JAWS Meetup #24
Slide 2
Slide 2 text
©MIXI 2 自己紹介 • 濱野悠介(twitter:@yhamano0312) • 株式会社 MIXI 開発本部 CTO 室 SRE グループ • 好きな AWS サービスは AWS IAM Identity Center
Slide 3
Slide 3 text
©MIXI エモーションと コミュニケーションで 「心もつなぐ」場と機会を 創造し続けます。 MIXI GROUPは、 ただ「つながればいい」という効率的な機能の提供ではなく、 歓喜や興奮、温かな思い、幸せ、居心地の良さの共有を通じて、 その先に、もっと深くて濃く豊かな、心のつながりを生み出すような、 サービスの開発・提供を目指しています。 現在、スポーツ・ライフスタイル・デジタルエンターテインメント の3つの領域で事業を展開しており、 それぞれの主な事業内容は右の通りです。 また、近年の投資活動の拡大と重要性を勘案し、 FY2023からはスタートアップやファンド出資等の投資活動を事業化しました。 スポーツ事業 プロスポーツチーム運営および 公営競技ビジネスの推進 ライフスタイル事業 インターネットを活用し、 人々の生活に密着したサービスの提供 デジタルエンターテインメント事業 スマホゲームを中心としたゲームの提供 MIXI GROUPの事業領域 3つの領域で “「心もつなぐ」場と機会” を創造する事業を推進
Slide 4
Slide 4 text
©MIXI 4 開発本部 CTO 室 SRE グループ 紹介 • 開発本部 CTO 室 SRE グループの役割 • 注力事業への技術的支援 • 全社横断事業、プロジェクトへの技術的支援 • エンジニアのいないサービス、プロダクトへの機動的な支援
Slide 5
Slide 5 text
©MIXI 5 • 開発本部 CTO 室 SRE グループの役割 • 注力事業への技術的支援 • 全社横断事業、プロジェクトへの技術的支援 • エンジニアのいないサービス、プロダクトへの機動的な支援 課題を自ら見つけそれを解決して成果を出していく 開発本部 CTO 室 SRE グループ 紹介
Slide 6
Slide 6 text
©MIXI 6 • 開発本部 CTO 室 SRE グループの役割 • 注力事業への技術的支援 • 全社横断事業、プロジェクトへの技術的支援 • エンジニアのいないサービス、プロダクトへの機動的な支援 課題を自ら見つけそれを解決して成果を出していく 開発本部 CTO 室 SRE グループ 紹介 本日お話する分野
Slide 7
Slide 7 text
©MIXI 7 Agenda • AWS IAM Identity Center 概要と導入する場合のメリット • 現状の MIXI 社における AWS アカウント管理 • AWS IAM Identity Center を用いて IAM 管理する場合に運用で考える必要があること • GitHub x Terraform を用いた AWS IAM Identity Center の運用 • まとめ
Slide 8
Slide 8 text
©MIXI 8 AWS IAM Identity Center 概要と導入する場合のメリット
Slide 9
Slide 9 text
©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/
Slide 10
Slide 10 text
©MIXI 10 AWS IAM Identity Center を導入した場合のメリット • 複数 AWS アカウントへのコンソールログインが便利に! • IAM Identity Center 用のポータルにアクセスして認証を済ませるとログイン可能な AWS アカウントと権限が一覧で表示される
Slide 11
Slide 11 text
©MIXI 11 AWS IAM Identity Center を導入した場合のメリット • 社内で利用している ID プロバイダーと IAM Identity Center を連携することでユーザ管理 を ID プロバイダー側にまかせることができる • 休職/退職時に ID プロバイダー側で対象ユーザのステータスを非アクティブ状態にすれば IAM Identity Center 側にもログインできなくなる • IAM Identity Center では複数の外部 ID プロバイダーに対応している • MIXI 社にて ID プロバイダーとして利用している Okta も対応している
Slide 12
Slide 12 text
©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
Slide 13
Slide 13 text
©MIXI 13 AWS IAM Identity Center を導入できれば 開発者体験向上とセキュリティ向上の両立が実現できそう!
Slide 14
Slide 14 text
©MIXI 14 現状の MIXI 社における AWS アカウント管理
Slide 15
Slide 15 text
©MIXI 15 現状の MIXI 社における AWS アカウント管理 • AWS アカウント管理における役割分担 • 開発本部 • AWS Organizations 管理アカウントの管理 • AWS アカウント発行 • 請求管理 • セキュリティガードレール整備 • 各事業部 • プロダクト提供のために必要な AWS アカウント の管理/運用 • もちろん IAM に関する管理/運用も行う • どのユーザがどの AWS アカウントに対し てどういった権限をもってよいか
Slide 16
Slide 16 text
©MIXI 16 AWS IAM Identity Center を用いて IAM 管理する場合に運用で考える必要があること
Slide 17
Slide 17 text
©MIXI 17 AWS IAM Identity Center による IAM 管理の制約 • IAM Identity Center による IAM 管理は特定の AWS アカウント でしか行うことができない • 全事業部が利用することになるため 開発本部で IAM Identity Center の AWS アカウントは管理する
Slide 18
Slide 18 text
©MIXI 18 AWS IAM Identity Center を用いた IAM 管理の運用どうしよう
Slide 19
Slide 19 text
©MIXI 19 どうやって運用しようかな • 事業部からの依頼ベースで開発本部メンバが設定する • 開発本部メンバ作業がボトルネックとなってしまう可能性がある • 各事業部の AWS 管理者に IAM Identity Center の編集権限を渡して設定してもらう • 他事業部の IAM 設定を間違って編集してしまうかもしれない
Slide 20
Slide 20 text
©MIXI 20 どうやって運用しようかな • 事業部からの依頼ベースで開発本部メンバが設定する • 開発本部メンバ作業がボトルネックとなってしまう可能性がある • 各事業部の AWS 管理者に IAM Identity Center の編集権限を渡して設定してもらう • 他事業部の IAM 設定を間違って編集してしまうかもしれない 以下の要件を満たしながら運用したい ・極力事業部側の作業のみで IAM 設定をしてもらいたい ・他事業部の IAM 設定を無断で触れないようにしたい
Slide 21
Slide 21 text
©MIXI 21 AWS IAM Identity Center による IAM 設定を IaC 化して PR ベースによる設定フローにすれば実現できそう!
Slide 22
Slide 22 text
©MIXI 22 これ以降の話は検証中の段階で実運用はまだできていません 導入していく過程で変更する可能性があります
Slide 23
Slide 23 text
©MIXI 23 GitHub x Terraform を用いた AWS IAM Identity Center の運用
Slide 24
Slide 24 text
©MIXI 24 技術選定 • コード管理には MIXI 社のデファクトスタンダードで使われている GitHub を利用する • branch protection rule と CODEOWNERS 機能を組み合わせることで PR マージの条件に 特定ユーザ/チームの approve を強制することができる • IaC を実現するための利用言語は Terraform を検討中 • MIXI 社全体として Terraform の採用率が高い(肌感) • Terraform Cloud を利用すれば IaC の CI/CD ワークフローをマネージドにできる • OIDC 連携や料金プラン改定により使いやすくなった印象
Slide 25
Slide 25 text
©MIXI 25
Slide 26
Slide 26 text
©MIXI 26 • 事業部等の単位でディレクトリを切って、事業部で管理する AWS アカウントに対する IAM 設定を定義する • AWS, Terraform Cloud, ID プロバイダ 間の連携設定といった全体 的な設定は別ディレクトリに切り出して開発本部メンバが管理する
Slide 27
Slide 27 text
©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 設定を各 事業部がオーナーシップを持って管理することができる
Slide 28
Slide 28 text
©MIXI 28 • PR マージをトリガーに Terraform Cloud による apply が走って IAM Identity Center の設定が更新される • AWS x Terraform Cloud 間は OIDC 連携を行い Workspace 毎に設定する IAM Role は 各事業部が管理する AWS アカウントに対する IAM 設定しかできないように権限を絞る
Slide 29
Slide 29 text
©MIXI 29 利用者目線での利用するまで 1. 必要情報を開発本部に申請する • プロダクト名、AWS アカウント、コードオーナーに設定するGitHub team、AWS 管理者/利用者 2. 申請情報をもとに開発本部がキッティング作業を行う 3. 事業部メンバがIAM 設定の PR 作成と approve を行いマージする 4. 対象の AWS アカウントや AWS 利用者が増えた時だけ開発本部へ依頼 or PR を出しても らう
Slide 30
Slide 30 text
©MIXI 30 サポート • ドキュメント整備 • 相談窓口を設ける • IAM 設計の仕方が分からない、IaC の概念が分からない等でも利用してもらえるように場合によっ ては Embedded して IAM 設計/構築をサポートできる体制を整える • 利用者視点では IAM 設定にだけ注力できるように IAM 設定以外をラップした Terraform module を用意する
Slide 31
Slide 31 text
©MIXI 31 まとめ • 複数プロダクトを管理する AWS Organizations に対して AWS IAM Identity Center を導 入して開発者体験向上とセキュリティ向上を実現したい • 利用者側に IAM 管理のオーナーシップを持ってもらいつつ、他事業部に意図しない影響を 与えないように GitHub x Terraform の PR ベースによる設定フローを構築すると良さそ う
Slide 32
Slide 32 text
©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
Slide 33
Slide 33 text
©MIXI