Slide 1

Slide 1 text

Organizations と Identity Center を Terraform で管理しよう e-dash株式会社 伊藤 明彦 2025年2月25日 @a2-ito @piyohiko110

Slide 2

Slide 2 text

伊藤 明彦 Ito Akihiko @a2-ito @piyohiko110 所属:e-dash株式会社 役割:SRE 出⾝:⼭⼝県 趣味:ジム ⾃⼰紹介 2

Slide 3

Slide 3 text

会社について 3 ● 企業のCO2排出量可視化‧削減のSaaSを開発 ● 三井物産出資のスタートアップ ● 2022年設⽴‧本社は東京⾚坂 ● ソフトウェアエンジニア絶賛募集中です

Slide 4

Slide 4 text

● AWS Organizations を利⽤して AWS アカウントを管理している ● Entra ID + AWS Identity Center を利⽤して利⽤者のアカウントを払い出している ● Terraform を利⽤して AWSインフラ のメンテナンスをしている 背景 4

Slide 5

Slide 5 text

● Entra ID + AWS Identity Center になって多少は楽になったものの、ポチポチやるのが⾟い ● メンバ‧グループのメンテナンスが⾯倒 ● Terraform‧開発メンバ向けIAMロールの最⼩権限の維持が⼤変 課題認識 5

Slide 6

Slide 6 text

● Organizations/Identity Center の設定 ○ AWSアカウントの作成 ○ ワークフォースユーザ ○ 所属グループ ○ Permission Sets ○ グループの割当 ● 各アカウントの初期設定 ○ リソース管理⽤ロール ○ state 格納⽤バケット ○ etc Terraform にまかせてみよう 6

Slide 7

Slide 7 text

ワークフォースユーザ‧グループを作って、Permission Set を割り当てる 7 permission_sets = { "read_only_user" = { name = "ReadOnlyAccess" policy_arn = "arn:aws:iam::aws:policy/ReadOnlyAccess" is_managed = true session_duration = "PT8H" } "work_user" = { name = "WorkUserPolicy" is_managed = false session_duration = "PT8H" } } assignments = [ { account_id = local.accounts.hogehoge.account_id group = "workusers" permission_set = " read_only_user" }, { account_id = local.accounts.hogehoge.account_id group = "workusers" permission_set = " work_user" }, ]

Slide 8

Slide 8 text

● AWS Organizations でアカウントを作成した場合、OrganizationAccountAccessRole とい うロールがあるので何もしなくてもスイッチできる ● 最も強い権限なので注意 AWSアカウントを作成し、そのままセットアップをする 8 provider "aws" { alias = "hogehoge" region = data.aws_region.current.name assume_role { role_arn = "arn:aws:iam::${local.accounts.hogehoge.account_id}:role/OrganizationAccountAccessRole" } }

Slide 9

Slide 9 text

● Terraform Cloud を利⽤すると、実⾏環境 や state 置き場を任せられる ● PR 作成時に plan が実⾏され、merge 時に apply が実⾏される ● AWS や Terraform の権限や知識を必要とせずID管理ができるようになる HCP Terraform (Terraform Cloud) から plan/apply を実⾏する 9

Slide 10

Slide 10 text

● ⾃動プロビジョニングを使えば、ワークフォースユーザも⾃動作成されるようになる ● ただし、ユーザの所属グループも Entra ID 側で管理する必要がある ● グループはAWS側で(SRE側で)管理したいため、⾃動プロビジョニングは使わないとい う判断になった 余談) Entra ID の⾃動プロビジョニング 10

Slide 11

Slide 11 text

● Terraform のコードを⼊⼒すると最⼩権限の IAM Policy を出⼒してくれるツール pike* を 試してみた(2024年10⽉頃) ● 都度⼿動でのメンテナンスが必要ということで、結局採⽤に⾄らず ○ App Runner などの⽐較的新しいサービスに未対応 ○ 出⼒されたポリシの⼿動分割が必要 余談) pike を使った最⼩権限運⽤ 11 *https://github.com/JamesWoolfenden/pike

Slide 12

Slide 12 text

● Organizations と Identity Center を Terraform (Cloud) で管理するようにしました ● 作業ミスの低減、⾯倒なポチポチ作業のストレス開放になるはず ● 情シスメンバへの運⽤移管やさらなる⾃動化を⽬指します サマリ 12

Slide 13

Slide 13 text

THANK YOU! e-dash株式会社 伊藤 明彦 2025年2月25日 @a2-ito @piyohiko110