Tech Blog

グローバルな家族アプリFammを運営するTimers inc (タイマーズ) の公式Tech Blogです。弊社のエンジニアリングを支える記事を随時公開。エンジニア絶賛採用中!→ https://timers-inc.com/engineering

AWS Application Load Balancer で特定のURLだけIP制限を行う #aws #applicationloadbalancer

こんにちは、サーバーサイドエンジニアのいわむ(@k_iwamu)です。

エンジニアとしてサービスを作っていると、特定のIPからのみ利用できるAPIや管理画面を作る機会があるかと思います。

IP制限をかける方法はいくつかあると思いますが、
今回、AWSApplication Load Balancer(以下ALB)のリスナールール使って特定のURLのみIP制限をかけることがとても簡単にできたので紹介します。

f:id:kohei_iwamura:20200208142648p:plain

ALBのリスナールールとは

ALBのリスナールールとは、ALBがリクエストをルーティングする際のルールを定義したものです。ルーティングしたい優先度、条件(IF)、アクション(THEN)で構成されています。

f:id:kohei_iwamura:20200208134453p:plain

今回、条件では「パス」と「IP制限」、アクションでは「転送」と「固定レスポンス」を利用します。

設定方法

今回の目的は「/admin/*のURLを社内IPからのアクセスに制限し、他のURLはどのIPからも利用可能な状態にすること」として設定していきます。

設定ページへの移動

まず、指定のALBを選択し、リスナータブを選択します。そのあと、一番右にある「ルールの表示/編集」を選択します。

f:id:kohei_iwamura:20200208130631p:plain

下のような画面が表示されると思います。今は全てのアクセスをターゲットグループに転送している状態ですね。 ここから設定を加えていきます。

f:id:kohei_iwamura:20200208144325p:plain

設定を行う

以下の表のように3つリスナーグループを設定します。

順番 条件 転送先
1 送信元IPが社内 & URLが/admin/* ターゲットグループに転送する
2 URLが/admin/* 固定レスポンス(status code 401)を返す
2 URLが/* ターゲットグループに転送する

1つ目の設定では、社内IPかつURLが/admin/*のリクエストは、ターゲットグループに転送しています。この設定で社内IPから利用できるようになります。

f:id:kohei_iwamura:20200208141756p:plain
1つ目の設定

2つ目の設定では、URLが/admin/*のリクエストは、固定レスポンス(status code 401)を返すようにしています。1つ目のルールで社内IPから利用できるようにしているので、この設定を追加することで社内IP以外は全てアクセスできないようにできました。

f:id:kohei_iwamura:20200208141634p:plain
2つ目の設定

3つ目の設定では、全てのURLが利用できるようにしています。しかし1つ目と2つ目のルールが優先されるので、/admin/*に対して制限がかかっていることに影響はありません。

f:id:kohei_iwamura:20200208141636p:plain
3つ目の設定

以上の設定で完了です。この設定だけで/admin/*だけ社内IPからしかアクセスできないようにすることができます。 こちらが完成したページになります。

f:id:kohei_iwamura:20200208130620p:plain

最後に

ALBのリスナールールを応用して特定のURLだけIP制限を行う方法を紹介しました。 紹介したようにとても簡単な設定できるので、IP制限を実装する時の1つの選択肢としてかなり有効だと思っています。

また、ここでは触れませんが、「今回紹介した方法 + アプリケーション側でさらに認証」など、多層でセキュリティを強化する設計にも用いることができますので、ぜひご検討してみてください。

積極採用中!!

子育て家族アプリFammを運営するTimers inc.では、現在エンジニアを積極採用中!
急成長中のサービスの技術の話を少しでも聞いてみたい方、スタートアップで働きたい方など、是非お気軽にご連絡ください!
採用HP: http://timers-inc.com/engineerings

プロダクトマネージャーも積極募集中です!

Timersでは各職種を積極採用中!

急成長スタートアップで、最高のものづくりをしよう。

募集の詳細をみる