
状況
Amazon EC2 でホストされている Web アプリがあります。これは、社内の少数のユーザーのみが使用することを目的としています。
この問題への対処方法
- インスタンスの (Elastic) IP アドレスをユーザーと共有します。
- 必要に応じて、各ユーザーの IP アドレスをインスタンスのセキュリティ グループに追加します。
私が言ったら必要に応じてつまり、Web ポータルにエラー ページが表示されていると苦情を言うユーザーからのメールです。彼らは、IP をセキュリティ グループに含めるこの手順が必要であることを忘れています (彼らを責めるつもりはありません。彼らはエンド ユーザーです)。
この質問のために、会社内にこのアクセスを必要とするユーザーが合計 5 人いると仮定します。User-1 と User-2 の IP アドレスはすでにセキュリティ グループに追加されています。
問題点
- ユーザー 3 は IP アドレスに直接アクセスしますが、ユーザーの IP アドレスがセキュリティ グループに追加されていないため、アクセスできません。
- ユーザー 1 またはユーザー 2 がインターネットを再起動すると、IP アドレスが変更される可能性があり (ISP によって提供される動的 IP)、新しい IP アドレスをセキュリティ グループに追加する必要があります (他のユーザーによるアクセスを防ぐために、古い IP アドレスを取り消す必要があります)。
私が検討している他の選択肢
- オフィスの VPN へのアクセスのみを提供し、すべてのユーザーにその VPN 経由で接続するように依頼します。
- (ユーザーにとって非常に面倒です) ユーザーに AWS マネジメントコンソールにログインし、EC2 サービスに移動し、セキュリティグループセクションに移動して IP アドレスを手動で追加するように依頼します (ユーザーにはすでに AWS IAM ユーザーと、これを実行するための適切な権限があります)。
- ユーザーの現在の IP をセキュリティ グループに追加するスクリプトを作成します (AWS CLI / SDK を使用)。スクリプトに誰かの API 認証情報を含める必要があるため、非常に危険で不適切に思えます。
答え1
オプション 4 - セキュリティ グループを介したアクセスの制御を停止し、代わりに適切な認証メカニズムを実装します。
例えば、アプリケーション ロード バランサウェブアプリの前にALBを設定し、Cognito認証認証されたユーザーのみが ALB を経由して Web アプリにアクセスできるようになります。これで問題は解決です。Cognito はローカル ユーザーを持つことができます。また、Azure AD と一緒に使用したり、組織で Office365 を使用したりすることもできます。これは、アプリを変更する必要のない非常に透過的な方法です。
あるいは、Web アプリがサポートしている場合は、組織が使用しているユーザー ディレクトリ (Office365、G-Suite など) に対して SAML 認証を要求するように構成する必要があります。
お役に立てれば幸いです :)
答え2
オプション 5 - セキュリティ グループ (基本的には IP ベースのファイアウォール) の管理を停止し、TLS クライアント証明書を使用します。
Azure ADやLDAPなどの最新のユーザー管理システムを使用している場合は、証明書を発行して配布するための適切なツールがすでにあります。プライベートCAを設定し、証明書による認証を行うようにHTTPサーバー(Nginx、Apache2、AWS ALB)を構成します。証明書を持っていない、または無効な証明書(期限切れのものを含む)を持っているユーザーは、HTTPサーバーを通過できません。これには、ゼロWeb アプリ自体に変更を加えることができます。また、アクセス制御に加えて証明書がその目的を果たすことができるため、アプリ内の認証を削除することもできます。
ボーナスポイントはこれが機能することですどこにでも- AWS、Azure、またはオンプレミスのインフラストラクチャのいずれであっても、まったく同じ資格情報と構成のスタックを再利用することもできます (AWS ALB を除く)。