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

AWSマルチアカウント管理 / ODC2021 Online

AWSマルチアカウント管理 / ODC2021 Online

Open Developers Conference 2021 Online
https://event.ospn.jp/odc2021-online/

生産性向上チームって何をしてるの?〜社内の開発生産性を上げる組織横断の取り組み〜
2021.08.28 15:00-15:45
https://event.ospn.jp/odc2021-online/session/376878

Hideki Igarashi

August 24, 2021
Tweet

More Decks by Hideki Igarashi

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. AWSの利⽤⽤途

    View Slide

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

    View Slide

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

    View Slide

  6. ユーザー管理の課題

    View Slide

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

    View Slide

  8. マルチアカウント管理の

    しくみづくり

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. 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も設定しておく)

    View Slide

  16. 運⽤

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide