2018年3月に CloudArmor のBETA版がリリースされました。
DDoS攻撃からの防御や、IPアドレス(IPv4/IPv6/CIDR)によるブラックリスト/ホワイトリスト形式の接続元制御によって、サービスを保護します。
CloudArmorは、保護対象のリソースの前に立ちはだかるリバースプロキシとして動作します。現在、CloudArmorを適用できるGCPリソースはGlobal HTTP(S) Load Balancerのバックエンドサービスのみとなります。
今回はGlobal HTTP(S) Load Balancer経由でサービスが構築されている状態を前提としてGlobal HTTP(S) Load BalancerにCloud Armorを付加して特定IPアドレスからのみアクセスできる環境を構築し、Cloud Armorの動きを理解します。
1.CloudArmorを作成してGlobal HTTP(S) Load Balancerに紐づける
今回は例としてIPアドレス1.2.3.4からのみ許可するように設定をしてみます。
また前提としてGlobal HTTP(S) Load Balancerを使用したサービスがすでに動作しているものとします。
GCPコンソールから「ネットワークセキュリティ」→「セキュリティポリシー」→「ポリシーを作成」で新規作成します。“ポリシーの設定”では名前を適当に、デフォルトルールアクションを拒否にします。これで一旦すべてのアクセスが拒否される設定になります。
続いて”ルールの追加”で許可するIPアドレスを追加していきます。
- 説明:適当に
- 一致:IPV4またはIPV6またはCIDRで5つまで記述
- アクション:許可
- 優先度:1~2,147,483,647(数字が小さいほど優先度が高い)
続いて”ターゲットへのポリシーの適用”でロードバランサのバックエンドを選択してポリシーを作成します。
構築はこれで完了になります。今回はIPアドレス1.2.3.4に対してのみ許可するホワイトリスト形式でやってみました。簡単でしたね!
2.検証してみる
許可されていないIPアドレスからブラウザ経由で通信を行うとどうなるのかを体験してみます。
とそっけないメッセージが出てきましたが、アクセス拒否されていることが確認できました。
3.ログをみる
アクセス拒否された際のログをみてみます。「Stackdriver Logging」→「ログ」→「HTTPロードバランサー」を選択してください。
セキュリティポリシー(CloudArmor)によりアクセス拒否されていることが見て取れます。
4.まとめ
本記事ではIPアドレスによるサービスの保護をするために、CloudArmorを利用することを紹介しました。とても簡単でしたよね!
gcloudコマンドやterraformなどCLIでのプロビジョニングもできますので、CI/CDツールと連携するなどして自動化や簡略化もできます。
GCP全般について、クラウドエースでは豊富な技術者によるサポートで快適なGCP生活のお手伝いをしておりますので、是非ご相談ください。