5.7K Views
April 09, 24
スライド概要
2024.04.09 Engineering Productivity Meetup #2 in 大阪
での発表資料
https://cybozu.connpass.com/event/311067/
AWS SSO のしくみを AWS IAM Identity Center へ 移⾏したはなし サイボウズ株式会社 開発本部 ⽣産性向上チーム ⼩林 直樹 (@naotama)
⾃⼰紹介 ▌ ⼩林 直樹 / :: @naotama ▌ 職歴 n 〜2022年2⽉ メーカー系 / NTTD系 の受託会社 組込 → Windowsアプリ → Android → Webバックエンド/インフラ n 2022年3⽉〜 サイボウズ株式会社 ⽣産性向上チーム ▌ 普段 n 好き: 🏃 / 🚵 / ⚽コーチ / 庭いじり / 🏂 / ⛳ n 時間あれば Podcast 聴いている ▌ ⽣息地 n 京都府⽊津川市 ▌ 最近のトピック n 6ヶ⽉前にはじめた⾆下免疫治療が効いて快適な⽇々 n 2024年からはじめた 100km/⽉ 継続中 n フロントエンド⼊⾨中
はなすこと ▌背景 ▌前 AWS SSO 環境 ▌AWS SSO 環境 ( IAM Identity Center ) ▌さいごに
背景
背景 ▌サイボウズでは kintone アプリで申請すれば AWS アカウントを利⽤開始できます ▌AWS アカウント利⽤は 社内 ID ( Azure Entra ID ) で シングルサインオン(以下 SSOと記載) して利⽤できます ▌AWS SSO のしくみを 「独⾃実装を含むものから AWS 公式の IAM Identity Center に移⾏」 しました
前 AWS SSO 環境
前 AWS SSO 環境 ▌AWS + Azure ADによるSingle Sign-Onと複数AWSアカウント切り替 えのしくみ作り n サイボウズ五⼗嵐さんが書いたブログがあるのでみてください︕ n https://blog.cybozu.io/entry/2019/10/18/080000 ▌AWS マルチアカウント管理 n サイボウズ五⼗嵐さんが発表資料があるのでみてください︕ n https://speakerdeck.com/hideki/odc2021-online マルチアカウント管理の考え⽅や AWS SSO を実現するための しくみは、上記ブログ・発表資料 が詳しいので割愛
前 AWS SSO 環境 – 構成 ブラウザ利⽤ CLI 利⽤ assam (OSS) : https://github.com/cybozu/assam
AWS SSO 環境 ( IAM Identity Center )
AWS IAM Identity Center へ変更するモチベーション AWS SSO するなら AWS 公式のしくみ(IAM Identity Center)にしたい
AWS SSO - IAM Identity Center IAM Identity Center は AWS Organizations によって管理されている AWS アカウントに SSO できるサービスです。IAM Identity Center のアク セスポータルサイトが⽤意されており、ログインしたユーザーが利⽤可能な AWS アカウント + 許可セット(権限)で SSO できます。 AWS CLI コマンド による SSO ログインも可能です。
AWS SSO – Organizations と IAM Identity Center ▌1つの AWS Organizations に 1つの IAM Identity Center です ▌デフォルトでは AWS Organizations のルートアカウントからのみ IAM Identity Center が管理できます。追加で IAM Identity Center の管 理を AWS Organizations 配下のメンバーアカウントに委任することが可 能です ▌委任されたアカウントからはルートアカウントへの権限追加といった⼀部の操 作を除いて IAM Identity Center の管理を⾏えます
AWS SSO – 許可セット ▌許可セットで権限を定義して 「誰が、どの AWS アカウント に、どの許可セット(権限)で アクセスするか」 を設定して利 ⽤します n 誰が = プリンシパル(ユーザ or グループ) です
AWS SSO – 構成
AWS SSO – 構成 – 許可セット x アカウント x ユーザ割当 (1) ▌ GitHub Actions workflow でスケジュール実⾏し、許可セット x アカウント x ユーザ割当を 10分ごとに実⾏しています ▌ 割当プログラムから AWS を操作するために OIDC を利⽤して AWS 認証しています ▌ 割当プログラムは Go⾔語で実装しています(チームでは TypeScript or Go でツール実装することが多い) n 許可セットの割当 n 許可セット x アカウント x ユーザの割当 の2つプログラムが実⾏されています ▌ ルートアカウント(IAM Identity Center マスターアカウント)の許可セット x アカウント x ユーザ割当は別のしくみで実施してい ます
AWS SSO – 構成 – 許可セット x アカウント x ユーザ割当 (2-1) ▌ルートアカウントの許可セット x アカウント x ユーザ割当管理は Terraform を利⽤してい ます n メンバーアカウント(委任アカウント含む)へは AWSServiceRoleForSSO を通して割当操作が ⾏われるが、マスターアカウントの場合は、操作する ユーザ(今回だと OIDC のロール)権限が利⽤され るため、追加ポリシーが必要でした。このポリシーが強 い権限だったため、GitHub Actions 側に権限を 渡さない⽅針とし、Terraform での管理としました
AWS SSO – 構成 – Azure Entra ID 同期 ▌Azure Entra ID から IAM Identity Center へユーザ・グループを同期して います n 同期範囲は 「全てのユーザ・グループ」 としています n 新しい社員が増えて社内 ID が作成されれば AWS SSO 利⽤可能にな ります ▌同期は40分間隔で⾃動的に実施されています
AWS SSO – ブラウザを利⽤して SSO ▌アクセスポータルへログインすると 利⽤可能な アカウント と 許可 セットが表⽰されます n 利⽤したいアカウント、許可 セットを選択して SSO 可能 です n セッション有効期限は12時間 で運⽤(1〜12時間設定可 能)しています
AWS SSO – CLI を利⽤して SSO ▌AWS CLI で SSO 利⽤可能です n aws configure sso で必要項⽬を設定後 aws sso login で AWS 操作可能なクレデンシャルを取得できます n リモートシェルのような GUI が使えずブラウザが利⽤不可な環境でも利⽤可能 です
AWS SSO – 改善したこと
さいごに
さいごに ▌AWS 公式 AWS SSO のしくみが構築できました ▌利⽤ユーザの申請から利⽤開始までの体験を前環境からほぼ踏襲できました ▌メンテナンスソフト(assam)を1つ減らすことができました(す) (前 AWS SSO クローズ後) ▌コードを含めた細かい内容は説明しませんでしたのでブログにまとめたい(希望)
Q&A