Slide 1

Slide 1 text

サイボウズ株式会社 ⽣産性向上チーム AWSマルチアカウント管理 ⽣産性向上チームって何をしてるの?〜社内の開発⽣産性を上げる組織横断の取り組み〜 Open Developers Conference 2021 Online

Slide 2

Slide 2 text

五⼗嵐 英樹 Hideki Igarashi 2019年2⽉ サイボウズ中途⼊社 ⽣産性向上チームにジョイン ⼊社前はSIer、Web系の会社でアプリケーション開発の 傍らでインフラやCIの整備などの改善活動 @ganta0087

Slide 3

Slide 3 text

AWSの利⽤⽤途

Slide 4

Slide 4 text

4 • プロダクション・ステージング環境 • 社内向けサービス⽤途 • 開発⽀援 (CI⽤のテスト環境、テスト並列化など) 社内でのAWSの利⽤⽤途

Slide 5

Slide 5 text

AWSを利⽤する⽬的 5 社内で便利なパブリッククラウドを活⽤して⽣産性を⾼めたい 社員が⼿軽で安全にAWSを利⽤できるようにしたい

Slide 6

Slide 6 text

ユーザー管理の課題

Slide 7

Slide 7 text

アカウントごとのユーザー作成は⼤変 • 管理やセキュリティ上、⽤途ごとに AWSアカウントを分けたい • 新規登録時・退職時に各アカウントの ユーザーの設定が必要 • 特に退職時は対応漏れを防ぎたい • 複数アカウントを利⽤するユーザーは パスワード管理が⼤変 7 AWS Account AWS Account

Slide 8

Slide 8 text

マルチアカウント管理の 
 しくみづくり

Slide 9

Slide 9 text

Azure ADによるシングルサインオン • 会社の標準のIdPがAzure AD • 単純にシングルサインオンをするだけではなくAWSアカウントごと の権限設定のしくみが必要 • マネジメントコンソールだけでなくCLIでの利⽤も考慮 9

Slide 10

Slide 10 text

認証⽤AWSアカウントを設ける 10 Azure AD 認証⽤アカウント SSO⽤ロール ログイン SSO Azure ADで認証⽤アカウントに SSOできるよう設定 認証⽤アカウント上のリソース操作は 何もできないようにポリシーを定義

Slide 11

Slide 11 text

認証⽤アカウントを経由して切り替え 11 Azure AD 認証⽤アカウント SSO⽤ロール Account A AdministratorRole Account B AdministratorRole DeveloperRole Switch Roleを使って各AWSアカウ ント上のロールに切り替える

Slide 12

Slide 12 text

アカウント切替時の権限設定のしくみ 12 Azure AD 認証⽤アカウント SSO⽤ロール Account B AdministratorRole Account A AdministratorRole DeveloperRole 誰がどのアカウントのロールに 切り替えてよいかを管理 CircleCI Server レコード取得 定期的にポリシーを更新

Slide 13

Slide 13 text

CLIでもシングルサインオンするには? 13 Azure ADの ログインフォーム SAMLレスポンス AWS Management Console Azure ADの認証を通過するにはWeb のログインフォームの操作が必要 AWS API (sts:AssumeRoleWithSAML) クレデンシャル このクレデンシャルがあれば認証⽤ AWSアカウントにAPIアクセスが可能 通常はこちらにリダイレクトされる

Slide 14

Slide 14 text

CLI⽤のシングルサインオンツールを開発 このクレデンシャルの取得の処理を⼿動で⾏うのは⾮現実的 ⇒⾃動化するOSSを開発 https://github.com/cybozu/assam 14 Azure AD SAMLレスポンス AWS API クレデンシャル assam ~/.aws/credentials AWS CLI AWS SDK ログイン 実⾏ Chrome起動 クレデンシャル保存

Slide 15

Slide 15 text

SSO後は公式のしくみでアカウント切替 クレデンシャルを取得してしまえばAWS CLIのIAMロール切り替えの しくみを使って⽬的のAWSアカウントのロールに切り替えればよい https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-con fi gure-role.html 15 [profile account-a] role_arn = arn:aws:iam:1234567890:role/ExampleRole source_profile = default ~/.aws/con fi g AWS_PROFILE環境変数にプロファイル名を設定しておくことで 
 ⾃動的にrole_arnに設定したロールに切り替えることができる (AWS SDKの場合はAWS_SDK_LOAD_CONFIG=trueも設定しておく)

Slide 16

Slide 16 text

運⽤

Slide 17

Slide 17 text

17 • しくみ作りだけでなくもちろんドキュメント整備も • kintoneアプリでAWSアカウント作成申請のフローを作成 • AWSアカウントの作成単位を整理 • グルーピング(Organization Unit)をして管理 • 作成申請が来たら定形作業ですぐに対応できるように • ルートユーザーの初期設定時に物理セキュリティキーの設定なども しているため完全⾃動化は難しい 運⽤が回るように

Slide 18

Slide 18 text

運⽤開始後 • 勉強会を開催したり開発⽀援時にAWS環境を活⽤して認知向上 • Transit Gateway + VPNで社内ネットワークとの接続も提供 • AWS⾃体の相談も⽣産性向上チームに来るようになった • 現在シングルサインオンのしくみで40個のAWSアカウントが運⽤中 18

Slide 19

Slide 19 text

安全性と利便性を⾼めて ⽣産性向上