開発環境のアクセス方式を見直ししてみた。〜設計編〜
挨拶・ブログ執筆の経緯
こんにちは。
ネクストビートでSREを担当している八木下です。
この度、掲題の通り、開発環境のアクセス方式見直しを行っており、自身の備忘も兼ねて本ブログを執筆します。(ボリュームの都合上、設計編・導入編の二部に分けてお送りします。)
なぜ、本作業を行うことになったのか。
開発環境へのアクセスについて、リモートでの開発作業が増えてきており、様々な方式で対応を行っていましたが、改めて全体の見直しを図ることになりました。
実現したいこと
①弊社で業務する従業員が、社外ネットワークからも開発環境にアクセスできること。
②弊社での業務が終了した場合、可及的速やかに開発環境にアクセスできないこと。
今回スコープ外としていること
「スマホアプリ」
今回Webアプリケーションを対象に検討を進めており、スマホアプリはスコープ外としています。(スマホアプリにおける開発環境アクセスも別途改善を進める予定です。)
検討事項
(現行) IPによる制限
AWS WAFやALBにおけるルール、SecurityGroup等で接続元IPでアクセス制限を行うことが可能です。
しかし、ALBの場合1つのルールに対して5つ迄の条件しか設定できず、対象の接続元IPが多い場合、ルールが増えてしまう他、社内ネットワーク以外で開発環境へのアクセスが必要になった場合にそのままでは対応出来なくなってしまいます。
(例えば自宅でのリモート勤務の場合、グローバルIPアドレスが固定されていない場合が多く、複数の開発者がいる場合、その分だけ設定項目が増えてしまい、管理が煩雑になってしまいます。)
1. Basic認証
CloudFront Functionsを使用し、既存のWebアプリケーションを改修することなく、Basic認証を導入することが可能です。
しかし、定期的にパスワード変更を行い、それをユーザにアナウンスする運用を考えた場合、運用観点で若干の手間がかかりそうであった他、実現したいこと②が満たせなくなるため見送りました。
2. クライアント認証
2023年11月26日のアップデートにより、ALBがmTLSをサポートするようになりました。しかし、弊社で管理していない端末(PCやスマートフォン)については、個別で証明書を発行・管理しなければならず、こちらも運用観点で重たそうであったため見送りました。
3. WAF におけるカスタムヘッダーでの制限
AWS WAFにおける任意のカスタムヘッダーを登録し、Google Chromeの拡張機能を利用し、カスタムヘッダーを追加することでアクセス判定を行うことが可能です。
ただし、SafariやMicrosoft Edgeといったさまざまなブラウザソフト向けの設定手順を用意しなければならず、開発者以外に負担が大きそうである他、Basic認証同様、定期的にカスタムヘッダーの値を更新し、それをユーザにアナウンスする必要があるため、こちらも見送りました。
4. Congnito による認証
Amazon Cognitoを用いてユーザ認証を行うことが可能です。ユーザはAWS側で発行することも可能ですが、弊社がユーザ管理で使用しているMicrosoft Entra IDと連携し、SAML認証が実装可能です。
実現したいこと①と②が双方満たせそうであったため、今回はこちらの方式で導入に向けて動いています。
構成図
先んじて構成図を以下に展開します。
弊社では提供する サービス毎にアカウントが分かれており、全体管理を行うアカウントも存在する為、Amazon Cognitoは一つのアカウントに配置し、各アカウントから参照する形としています。
注意点として、Cognitoにおけるアプリケーションクライアント側につき、ドメイン毎に設定しなければならないため、複数のドメインがある場合はその分だけアプリケーションクライアントが必要となります。
Microsoft Entra IDにおけるエンタープライズアプリケーションを作成し、CognitoとアイデンティプロバイダーとしてSAML連携を実装します。
最後に
実際の導入については第二弾のブログで詳細記載していこうと思います。
ネクストビートでは、日々物凄いスピードで新技術の導入等を行っており、毎日のように新しい技術の導入が行えたりと、エンジニアとしての経験を大きく積むことができます。引き続き日々の情報のキャッチアップに努め、弊社提供サービスの更なる品質向上に繋げていきます。
ここまで読んでいただきありがとうございました。
We are Hiring!
本記事をご覧いただき、ネクストビートの技術や組織についてもっと話を聞いてみたいと思われた方、カジュアルにお話しませんか?
・今後のキャリアについて悩んでいる
・記事だけでなく、より詳しい内容について知りたい
・実際に働いている人の声を聴いてみたい
など、まだ転職を決められていない方でも、ネクストビートに少しでもご興味をお持ちいただけましたら、ぜひカジュアルにお話しましょう!
🔽申し込みはこちら
https://hrmos.co/pages/nextbeat/jobs/1000008
また、ネクストビートについてはこちらもご覧ください。