目次
はじめに
前回の記事で筆者はNetwork Endpoints Group (NEG) に追加された新機能『Serverless NEG』をGAEで試しました。
今回は、前回作ったServerless NEG + GAEにCloud Armorを追加してみたいと思います。
Cloud Armorについては本サイトの下記の記事を読んでいただけると、どんなものか等が分かると思いますので、今回は説明を省略します。
DDoS攻撃を防いでくれるCloudArmorでIP制限してサービスを保護する
また、Serverless NEG + GAEについては、前回の記事に読んで作成しておいてください。
Serverless NEG + GAE を試してみる
Cloud Armorを作成してGlobal HTTP(S) Load Balancerに紐づける
Serverless NEG + GAEを作成したら、Cloud Armorの作成とHTTP(S) Load Balancerへの紐付けを行います。
Cloud Armorの作成は、GCPコンソールから「ネットワークセキュリティ」→「セキュリティポリシー」→「ポリシーを作成」から行います。
今回はブラックリスト形式のセキュリティポリシーを作成し、現在作業をしている作業者のIPのみを拒否するようにしたいと思います。
Cloud Armor適用前のServerless NEG + GAEだけの状態でブラウザからアクセスすると「Hello App Engine!」と表示されますので覚えておいてください。
それでは、次からはCloud Armorの作成を行いましょう。
1. ポリシーの設定
各項目を入力しましたら、『次のステップ』ボタンを押下してください。
設定項目名 | 設定値 | 備考 |
---|---|---|
名前 | serverless-neg-test | 任意な値を設定して構いません。 |
説明 | 省略しています。 | 省略可のため、任意な値を設定して構いません。 |
デフォルトのルールアクション | 許可 | ブラックリスト形式のポリシーを作りたいので、デフォルトは全てのアクセスを許可するようにします。 |
2. ルールの追加
各項目を入力しましたら、『次のステップ』ボタンを押下してください。
設定項目名 | 設定値 | 備考 |
---|---|---|
説明 | 現在のIPを拒否するルール | 省略可能なため、任意な値を設定して構いません。 |
条件 | 基本モード(IPアドレスまたはIP範囲のみ) | |
一致 | 作業者が現在利用しているIPアドレスを入力 | |
アクション | 拒否 | ブラックリスト形式のポリシーを作りたいので、拒否を選択します。 |
拒否ステータス | 403(アクセス拒否) | |
プレビューのみ | 「有効にする」のチェックを外す |
3. ターゲットへのポリシーの追加
各項目を入力しましたら、『次のステップ』ボタンを押下してください。
設定項目名 | 設定値 | 備考 |
---|---|---|
タイプ | ロードバランサバックエンドサービス | |
ターゲット | helloworld-backend-service | 前回の記事で作成したバックエンドサービスを指定します。 |
4. 動作確認
では、最後に確認のためにブラウザからアクセスしてみましょう。
(筆者の体感では設定の反映まで、ポリシー作成後、5〜10分くらいかかりました。)
『2. ルールの追加』で設定した通り、今現在アクセスしているIPから接続したら「403 Forbidden」がちゃんと表示されましたね。
次は、『2. ルールの追加』で拒否するようにしたIP以外からアクセスしてみましょう。
筆者は一旦いつも使っているWi-Fiからスマホのテザリングに切り替えて、再度同じURLにアクセスしました。
スマホのテザリングに切り替えてアクセスすると「Hello App Engine!」が表示されました。
Cloud Armorで作ったセキュリティポリシーはブラックリスト形式でしたので、拒否していないIPであるスマホのテザリングでは、設定通りに「403 Forbidden」が表示されませんでした。
これでCloud Armorが機能している事と、Serverless NEG + Cloud Armor + GAE が設定できたことが確認できました。
まとめ
Serverless NEG + GAEにCloud Armorを設定するのはとても簡単だったと思います。
GAEの場合にはGAEファイアウォールの機能がありますので、今回やったようなIPでの制限はかけることはできますが、受信リクエストの属性の値に応じた制限はかけられません。そこまでの細かな制御を行う場合は、やはりServerless NEGとCloud Armorを使用するのが簡単だと思います。
また、Serverless NEGを使用した場合の制限事項がいくつかありますので、検討時には下記のドキュメントを一度は読んでおくと良いと思います。
https://cloud.google.com/load-balancing/docs/negs/serverless-neg-concepts?hl=ja#limitations
前回の記事でも言いましたが、2020年7月時点でまだServerless NEGはベータ版の機能です。
GAEやCloud Run、Cloud Functionsにとって非常に強力なサービスですので、早くGAになって欲しい機能ですね。
クラウドエースでは、Google Cloud Platformのご利用について様々な技術支援を行っております。何かお困りのことがございましたらぜひご相談ください!