「世の中には難しいことが多い!」と感じることが多い私が、様々な用語を、初学者向けにわかりやすく全力で解説します。
解説する用語
Google Cloudのセキュリティの製品である、Cloud Armorについて解説をします。
Cloud Armorとは
Cloud Armorとは、Google Cloud上で動作するウェブアプリケーションやサービスを、様々な脅威から保護するWeb Application Firewall(WAF)サービスです。
Google Cloudによって事前に構成されたWAFのルールを使用することで、かんたんにアプリケーションを保護することが出来ます。
詳細に説明するよ
あたりまえですが、システムを悪意のある攻撃から守りたいですよね。
Cloud Armorを使うことで、かんたんにウェブアプリケーションを様々な脅威から守ることが出来ます。代表的な例として、以下のような攻撃から守ることが出来ます。
- DDOS攻撃
- クロスサイトスクリプティング(XSS)
- SQLインジェクション(SQLi)
Cloud Armorは、リクエストの中身(ヘッダーやボディーなど)を確認して、「攻撃っぽいものないかな~」と監視してくれるのです。そして、攻撃っぽいリクエストは拒否をします。
セキュリティポリシーを使用してアプリを保護する
Cloud Armorでは、セキュリティポリシーを作成することで、アプリケーションを保護します。セキュリティポリシーとは、「こういう風に守ってね」と記載されているルールの集まりのことです。
Cloud Armorは、ロードバランサから振り分けられるサービスへの通信を保護することが出来ます。以下では、ロードバランサからCloud Runへ振り分けられる通信を保護しています。
Cloud Armorのポリシーを適用したいターゲットを選択することで、ポリシーが適用されます。
セキュリティポリシーの種類
セキュリティポリシーには、3つの種類があります。
一言で説明すると以下のような違いなります。
バックエンドセキュリティポリシー
ロードバランサからバックエンドサービスに接続された通信が対象となるポリシー
Edgeのセキュリティポリシー
キャッシュに保存されているコンテンツに対する通信が対象となるポリシー
ネットワークエッジのセキュリティポリシー
ロードバランサを使わないVMインスタンスに適応することができるポリシー
詳細を知りたい場合は、以下の公式ドキュメントを読んでみてください。
セキュリティポリシーに設定可能なルール
セキュリティポリシーには、条件(ルール)を設定し、そのルールに一致した通信を拒否(または)許可することが出来ます。ルールの一部を紹介します。
特定のIPアドレス範囲を拒否または許可する
特定のIPアドレスからの通信を拒否または許可することが出来ます。
以下では、「1.1.1.0/24」および「1.2.0.0」からの通信を拒否するようにしています。
特定のリージョンから通信を許可または拒否する
特定のリージョンからの通信通信を拒否または許可することが出来ます。
例えば、オーストラリアからの通信を拒否したい場合は、以下のような式で拒否ルールを設定します。
origin.region_code == 'AU'
以下は設定をしたWebコンソールの画面になります。
事前構成済みのルールを設定する
Google Cloudで事前に構成されたルールを設定することが出来ます。事前に構成されたルールを使うことで、かんたんに攻撃から守ることが出来ます。
例えば、SQLインジェクション(SQLi)攻撃から守りたい場合は、以下のような式を設定します。
evaluatePreconfiguredExpr('sqli-stable')
以下は設定をしたWebコンソールの画面になります。
事前構成済みのルールを使用した場合に「許可してほしい通信が拒否されてしまった、、」ということがあるかもしれません。
その場合は、「感度レベル」を調節することで、ルールを厳しくまたは緩くすることが出来ます。感度レベルは高くなるほどルールが厳しくなります。
例えば、SQLインジェクション(SQLi)攻撃から守りたい場合の感度レベルを3に設定したい場合は以下のような式を設定します。
evaluatePreconfiguredWaf('sqli-stable', {'sensitivity': 3})
具体的な感度レベルの詳細については以下を参考にしてください。
そのほかにどのようなルールが作成できるのか気になる方は以下を参考にしてください。
まとめ
- Cloud Armorを使用することでアプリケーションを様々な攻撃から保護することが出来ます。
- ポリシーにルールを適用することで使用することが出来ます
参考
本サイトでの注意事項
本サイトではなんとなく理解することを目的としているため正確性に欠ける表現があります。より正確な情報を詳しく知りたい場合は公式ドキュメントを参照ください。