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
サイボウズ株式会社 ⽣産性向上チームAWSマルチアカウント管理⽣産性向上チームって何をしてるの?〜社内の開発⽣産性を上げる組織横断の取り組み〜Open Developers Conference 2021 Online
View Slide
五⼗嵐 英樹Hideki Igarashi2019年2⽉ サイボウズ中途⼊社⽣産性向上チームにジョイン⼊社前はSIer、Web系の会社でアプリケーション開発の傍らでインフラやCIの整備などの改善活動@ganta0087
AWSの利⽤⽤途
4• プロダクション・ステージング環境• 社内向けサービス⽤途• 開発⽀援 (CI⽤のテスト環境、テスト並列化など)社内でのAWSの利⽤⽤途
AWSを利⽤する⽬的5社内で便利なパブリッククラウドを活⽤して⽣産性を⾼めたい社員が⼿軽で安全にAWSを利⽤できるようにしたい
ユーザー管理の課題
アカウントごとのユーザー作成は⼤変• 管理やセキュリティ上、⽤途ごとにAWSアカウントを分けたい• 新規登録時・退職時に各アカウントのユーザーの設定が必要• 特に退職時は対応漏れを防ぎたい• 複数アカウントを利⽤するユーザーはパスワード管理が⼤変7AWS AccountAWS Account
マルチアカウント管理の しくみづくり
Azure ADによるシングルサインオン• 会社の標準のIdPがAzure AD• 単純にシングルサインオンをするだけではなくAWSアカウントごとの権限設定のしくみが必要• マネジメントコンソールだけでなくCLIでの利⽤も考慮9
認証⽤AWSアカウントを設ける10Azure AD認証⽤アカウントSSO⽤ロールログインSSOAzure ADで認証⽤アカウントにSSOできるよう設定認証⽤アカウント上のリソース操作は何もできないようにポリシーを定義
認証⽤アカウントを経由して切り替え11Azure AD認証⽤アカウントSSO⽤ロールAccount AAdministratorRoleAccount BAdministratorRoleDeveloperRoleSwitch Roleを使って各AWSアカウント上のロールに切り替える
アカウント切替時の権限設定のしくみ12Azure AD認証⽤アカウントSSO⽤ロールAccount BAdministratorRoleAccount AAdministratorRoleDeveloperRole誰がどのアカウントのロールに切り替えてよいかを管理CircleCI Serverレコード取得定期的にポリシーを更新
CLIでもシングルサインオンするには?13Azure ADのログインフォームSAMLレスポンスAWS ManagementConsoleAzure ADの認証を通過するにはWebのログインフォームの操作が必要AWS API(sts:AssumeRoleWithSAML)クレデンシャルこのクレデンシャルがあれば認証⽤AWSアカウントにAPIアクセスが可能通常はこちらにリダイレクトされる
CLI⽤のシングルサインオンツールを開発このクレデンシャルの取得の処理を⼿動で⾏うのは⾮現実的⇒⾃動化するOSSを開発 https://github.com/cybozu/assam14Azure ADSAMLレスポンスAWS APIクレデンシャルassam~/.aws/credentialsAWS CLIAWS SDKログイン実⾏Chrome起動クレデンシャル保存
SSO後は公式のしくみでアカウント切替クレデンシャルを取得してしまえばAWS CLIのIAMロール切り替えのしくみを使って⽬的のAWSアカウントのロールに切り替えればよいhttps://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-role.html15[profile account-a]role_arn = arn:aws:iam:1234567890:role/ExampleRolesource_profile = default~/.aws/configAWS_PROFILE環境変数にプロファイル名を設定しておくことで ⾃動的にrole_arnに設定したロールに切り替えることができる(AWS SDKの場合はAWS_SDK_LOAD_CONFIG=trueも設定しておく)
運⽤
17• しくみ作りだけでなくもちろんドキュメント整備も• kintoneアプリでAWSアカウント作成申請のフローを作成• AWSアカウントの作成単位を整理• グルーピング(Organization Unit)をして管理• 作成申請が来たら定形作業ですぐに対応できるように• ルートユーザーの初期設定時に物理セキュリティキーの設定などもしているため完全⾃動化は難しい運⽤が回るように
運⽤開始後• 勉強会を開催したり開発⽀援時にAWS環境を活⽤して認知向上• Transit Gateway + VPNで社内ネットワークとの接続も提供• AWS⾃体の相談も⽣産性向上チームに来るようになった• 現在シングルサインオンのしくみで40個のAWSアカウントが運⽤中18
安全性と利便性を⾼めて ⽣産性向上