SlideShare a Scribd company logo
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
セキュリティを強化しよう!
〜CloudArmorの基本機能解説〜
虎の穴ラボ エンジニアリングリーダー
植竹 惇
T O R A N O A N A L a b
1
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
自己紹介
植竹 惇
● 2018/08入社
● エンジニアリングリーダー
虎の穴ラボへの入社理由
● 趣味と仕事を近づけたい
● スタートアップ的な部署で
得難い体験ができそう
趣味
● バンドリ
● アニメ全般
● 金曜日のWebマンガ各種
2
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
今日のテーマ
CloudArmorの基本機能解説
3
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
アジェンダ
● CloudArmorとは
○ 構成について
○ ルールの基本事項
● 詳細モードによるアクセス制限
○ UA制限
○ 条件組み合わせによる制限
○ 様々な構文による制限
○ 事前構成されたWAFルール
○ 最近追加されたルールについて
● まとめ
4
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
構成について
5
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
GCPが提供する、ウェブ攻撃からサイトを保護する機能
・IPアドレスごとのアクセス制限
・UserAgentルールによるアクセス制限
・各種WAFルールに基づいたアクセス制限
など様々な機能が備わり、
新機能追加含め定期的にアップデートされ続けている。
<引用>GCP公式のCloudArmor説明ページ
https://cloud.google.com/armor
6
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
システム構成としてはLB(LoadBalancing)に紐付ける形で運用する。
条件でNGだった場合
7
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
LB(LoadBalancing)の紐付け先がCloudRunやGKEでも可。
8
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
つまりCloudArmorは
アプリケーションに到達する前に
ロードバランサーへのアクセス時点で
防御する仕組み
9
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
CloudArmorはひとつのターゲット
(アプリ)に対しての防御ルールを
『ポリシー』という単位で作成する。
3の「ターゲットへのポリシーの適応」で
紐付けるロードバランサーを選択する。
最も重要なのでは2の「ルールの追加」で
ここの設定をどのようにするかで、
CloudArmorの動作が変わってくる。
10
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
料金はかなり安価です。
1サービスに対し、ルールを 20件設定、
月に400万アクセス来ると過程した場合、
月額$28(約3220円)程度。
ただし、アプリケーションに含まれる
CSSや画像ファイルなども含まれるため、
少しでも削減したい場合は別ドメインの CDNに
切り出すなどの対応が必要。
HTTPリクエスト $0.75/1,000,000件
ポリシー数 1件あたり月額$5
ルール数 1件あたり月額$1
11
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
ルールの基本事項
12
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
『ルール』は後から追加・編集・削除が可能。
上の図で設定されているルールは「指定した IPアドレス」に対してアクセスを「拒否」する。
IPアドレスは1ルールにつき最大10個指定ができる。
※設定ルールの一覧画面
13
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
ルールは優先度に従って並んでいますが、
同じIPの指定がされたルールがこのように並んでいる場合、
「203.0.113.0/24」のIPからアクセスするとどうなるでしょうか。
14
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
答えは「拒否(403)でアクセスが制限される」です。
優先度の高い順に判定され、条件に一致した場合はそのアクションが実行されます。
よって、以下の場合は逆に「許可」されます。
15
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
CloudArmorとは
『ルール』は『プレビュー』としてアクションはせずに、
判定結果だけをログとして残すことも出来ます。
上の図で設定されている場合だと、「拒否( 403)」の判定がアクセスログに記録されつつ、
「許可」のアクションが実行されます。
16
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
● CloudArmorはロードバランサのアクセス時点で防御を行う仕組み
● アプリケーションはVMグループだけではなく
CloudRunやGKEも利用できる
● ルールは優先度の高い順で評価し、
アクションが決まればそれ以降は評価されない
CloudArmorとは まとめ
17
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限
UA制限 &
条件組み合わせによる制限
18
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(UA制限)
『ルール』は大きく『基本モード』と『詳細モード』のふた
つがあります。
IP制限だけであれば基本モードですが、詳細モードを
使いこなすことが、CloudArmorを利用するにあたっ
て重要になります。
詳細モードではテキストエリアの記述欄が表示され、
そこに構文を設定します。
※ルール編集の条件設定部分
19
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(UA制限)
User-Agentによる識別を行う構文です。
上記の例ではInternet Explorerでのアクセスを検知します。
Internet Explorerは基本的に「MSIE」の文字列が含まれるため、
この構文でアクセス検知が可能です。
request.headers['user-agent'].contains('MSIE')
20
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(UA制限)
しかし、この場合だと Internet Explorer 11のケースがカバーできません。
Windows10のIE11は「MSIE」という文字列がなく、
「Trident」という文字列で判別できるようになっています。
どちらかの条件で検知するにはどうすればよいでしょうか。
request.headers['user-agent'].contains('MSIE')
21
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(条件組み合わせによる制限)
詳細モードでは「 || 」や「 && 」の論理演算子が使えます。
この場合はUserAgentに『MSIE』または『Trident』の文字が含まれるとき
request.headers['user-agent'].contains('MSIE') ||
request.headers['user-agent'].contains('Trident')
request.headers['user-agent'].contains('MSIE') &&
inIpRange(origin.ip, '203.0.113.0/24')
この場合はUserAgentに『MSIE』が含まれ、かつIPが『203.0.113.0/24』のとき
となります。
22
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(条件組み合わせによる制限)
論理演算子は様々な種類があります。
x == ”hoge” 文字列hogeと一致する
x != ”hoge” 文字列hogeと一致しない
x && y x かつ y がtrueである
x || y x または y がtrueである
!x x がfalseである
x.contains(‘hoge’) 文字列xに部分文字列hogeが含まれている
inIpRange(x, y) IPアドレスxがIPアドレス範囲yに含まれている
これ以外にも数種、論理演算が存在します
23
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(様々な構文による制限)
『origin』と『request』の変数を使うことで、様々なリクエスト元の情報を取得し、
判別に利用することが出来ます。
origin.region_code == ‘JP’ &&
request.path.contains('/test/') &&
request.method == POST
(例)送信元IPが日本かつ、URLのpathに「/test/」が含まれるPOSTメソッド
request.method HTTPリクエストメソッド
request.path HTTP URLのパス
request.query 「name1=hoge」などのURLクエリ
request.headers リクエストのヘッダー情報
origin.ip 送信元IP
origin.region_code 送信元IPの国コード
origin.asn 送信元IPアドレスの自律システム番号
24
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限
事前構成されたWAFルール &
最近追加されたルールについて
25
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(事前構成されたWAFルール)
SQLインジェクションなどの攻撃に対しての WAFルールの設定も可能です。
evaluatePreconfiguredExpr('sqli-stable', [])
構文はこのようになります。
『evaluatePreconfiguredExpr』というメソッドを使うことで CloudArmorが
事前に用意している WAFルールを適用することができます。
ひとつめの引数は対象となるルールを、
ふたつ目の引数はルールの中でも限定的に除外したい詳細ルールを設定できます。
26
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(事前構成されたWAFルール)
それぞれのWAFルールには、いくつかの詳細ルールがあります。
除外したい詳細ルールが設定できるのは、
正しい動作でも対象のプロジェクトで検知されてしまう場合に対応するためです。
evaluatePreconfiguredExpr('sqli-stable', [
'owasp-crs-v030001-id942421-sqli',
'owasp-crs-v030001-id942432-sqli'
])
この場合はSQL文字がcookieやパラメータから検出され、
特殊文字数の検知が一定以上確認された場合の詳細ルールを除外しています。
「SELECT」や「FROM」などよく使われやすかったり、暗号鍵で含まれることもあるので
適応しづらいルールです。
27
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(事前構成されたWAFルール)
事前に正常なアクセスに詳細ルールの検知が含まれているかを知りたい場合は
プレビューモードを使います。
28
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(事前構成されたWAFルール)
検知した場合はロギングで上記のような検索方法で見つけることができます。
こちらは設定した優先度「5」のルールでプレビュー検知されたアクセスを見つけるものです。
29
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(事前構成されたWAFルール)
検索結果のログでは
右画像のような形式で記録されます。
『previewSecurityPolicy』
の中身がプレビューで検知した
内容の詳細となり
『preconfiguredExprIds』
が実際に検知した詳細 ルールです。
30
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(事前構成されたWAFルール)
SQLインジェクション以外には以下のようなルールもあります。
◆CloudArmor公式WAF一覧
https://cloud.google.com/armor/docs/rule-tuning?hl=ja
sqli-stable SQLインジェクション
xss-stable クロスサイト スクリプティング
lfi-stable ローカル ファイル インクルード
rfi-stable リモート ファイル インクルード
protocolattack-stable プロトコル攻撃
php-stable PHP インジェクション攻撃
31
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
詳細モードによるアクセス制限(最近追加されたルールについて)
最近では『cve-canary』という『log4j攻撃』に対応したWAFルールも追加されました。
詳細ルールも4つほど設定されており、
近年の脆弱性のニュースも踏まえながらアップデートされ続けています。
気がつけば新しいWAFルールが追加されているということはよくあるので、
GCPとしても意欲的かつ継続的にアップデートする機能として捉えていそうです。
evaluatePreconfiguredExpr('cve-canary',[
'owasp-crs-v030001-id244228-cve',
'owasp-crs-v030001-id344228-cve'
])
32
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
● 詳細モードではUAや国コード指定など、IP以外での検知方法がある
● 論理演算子による条件の組み合わせがあり、
柔軟性の高いルールを独自に設定可能
● 事前構成されたWAFルールがいくつもあり、
今後も継続的にアップデートされてゆく
詳細モードによるアクセス制限 まとめ
33
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
まとめ
34
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
● CloudArmorはGCPが提供する高機能なWAF機能
● 様々な構文や条件を組み合わせて、柔軟な設定が可能
● 事前構成ルールを使って一般的な攻撃への
防御を任意に設定可能
まとめ
35
Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved.
ご清聴ありがとうございました
36

More Related Content

PPTX
いまさら、AWSのネットワーク設計
PDF
AWS Black Belt Techシリーズ AWS IAM
PDF
Keycloak拡張入門
PPTX
週末趣味のAWS Transit Gatewayでの経路制御
PDF
AWSのログ管理ベストプラクティス
PDF
ここから始めるAWSセキュリティ
PDF
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
PDF
Zabbixを徹底活用してみよう ~4.2の最新情報もご紹介~
いまさら、AWSのネットワーク設計
AWS Black Belt Techシリーズ AWS IAM
Keycloak拡張入門
週末趣味のAWS Transit Gatewayでの経路制御
AWSのログ管理ベストプラクティス
ここから始めるAWSセキュリティ
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
Zabbixを徹底活用してみよう ~4.2の最新情報もご紹介~

What's hot (20)

PDF
Ingress on Azure Kubernetes Service
PDF
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
PDF
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
PDF
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
PDF
Amazon Simple Workflow Service (SWF)
PDF
Nutanix運用指南術
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
PDF
20200721 AWS Black Belt Online Seminar AWS App Mesh
PDF
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
PDF
20200526 AWS Black Belt Online Seminar AWS X-Ray
PDF
Babelfish Compatibility
PPTX
KeycloakでAPI認可に入門する
PDF
Oracle Data Guard による高可用性
PDF
Machine configoperatorのちょっとイイかもしれない話
PDF
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
PPTX
DeNA の AWS アカウント管理とセキュリティ監査自動化
PDF
Oracle GoldenGate入門
PDF
楽天のインフラ事情 2022
PDF
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
Ingress on Azure Kubernetes Service
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
Amazon Simple Workflow Service (SWF)
Nutanix運用指南術
単なるキャッシュじゃないよ!?infinispanの紹介
20200721 AWS Black Belt Online Seminar AWS App Mesh
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
20200526 AWS Black Belt Online Seminar AWS X-Ray
Babelfish Compatibility
KeycloakでAPI認可に入門する
Oracle Data Guard による高可用性
Machine configoperatorのちょっとイイかもしれない話
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
DeNA の AWS アカウント管理とセキュリティ監査自動化
Oracle GoldenGate入門
楽天のインフラ事情 2022
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
Ad

More from 虎の穴 開発室 (20)

PDF
FizzBuzzで学ぶJavaの進化
PDF
Railsのデバッグ どうやるかを改めて確認する
PDF
虎の穴ラボ エンジニア採用説明資料 .pdf
PDF
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
PDF
toranoana.deno #6 アジェンダ 採用説明
PDF
Deno 向け WEB 開発用のツールを作ったので 紹介します
PDF
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
PDF
GCPの画像認識APIの紹介
PDF
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
PDF
GitHub APIとfreshで遊ぼう
PDF
通販開発部の西田さん「通販開発マネジメントの5ルール」
PDF
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
PDF
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
PDF
Amplify Studioを使ってみた
PDF
いいテスト会 (スプリントレビュー) をやろう!
PDF
【Saitama.js】Denoのすすめ
PDF
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
PDF
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
PDF
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
PDF
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
FizzBuzzで学ぶJavaの進化
Railsのデバッグ どうやるかを改めて確認する
虎の穴ラボ エンジニア採用説明資料 .pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
toranoana.deno #6 アジェンダ 採用説明
Deno 向け WEB 開発用のツールを作ったので 紹介します
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
GCPの画像認識APIの紹介
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
GitHub APIとfreshで遊ぼう
通販開発部の西田さん「通販開発マネジメントの5ルール」
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
Amplify Studioを使ってみた
いいテスト会 (スプリントレビュー) をやろう!
【Saitama.js】Denoのすすめ
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
Ad

セキュリティを強化しよう!CloudArmorの機能解説

  • 1. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. セキュリティを強化しよう! 〜CloudArmorの基本機能解説〜 虎の穴ラボ エンジニアリングリーダー 植竹 惇 T O R A N O A N A L a b 1
  • 2. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 自己紹介 植竹 惇 ● 2018/08入社 ● エンジニアリングリーダー 虎の穴ラボへの入社理由 ● 趣味と仕事を近づけたい ● スタートアップ的な部署で 得難い体験ができそう 趣味 ● バンドリ ● アニメ全般 ● 金曜日のWebマンガ各種 2
  • 3. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 今日のテーマ CloudArmorの基本機能解説 3
  • 4. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アジェンダ ● CloudArmorとは ○ 構成について ○ ルールの基本事項 ● 詳細モードによるアクセス制限 ○ UA制限 ○ 条件組み合わせによる制限 ○ 様々な構文による制限 ○ 事前構成されたWAFルール ○ 最近追加されたルールについて ● まとめ 4
  • 5. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは 構成について 5
  • 6. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは GCPが提供する、ウェブ攻撃からサイトを保護する機能 ・IPアドレスごとのアクセス制限 ・UserAgentルールによるアクセス制限 ・各種WAFルールに基づいたアクセス制限 など様々な機能が備わり、 新機能追加含め定期的にアップデートされ続けている。 <引用>GCP公式のCloudArmor説明ページ https://cloud.google.com/armor 6
  • 7. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは システム構成としてはLB(LoadBalancing)に紐付ける形で運用する。 条件でNGだった場合 7
  • 8. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは LB(LoadBalancing)の紐付け先がCloudRunやGKEでも可。 8
  • 9. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは つまりCloudArmorは アプリケーションに到達する前に ロードバランサーへのアクセス時点で 防御する仕組み 9
  • 10. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは CloudArmorはひとつのターゲット (アプリ)に対しての防御ルールを 『ポリシー』という単位で作成する。 3の「ターゲットへのポリシーの適応」で 紐付けるロードバランサーを選択する。 最も重要なのでは2の「ルールの追加」で ここの設定をどのようにするかで、 CloudArmorの動作が変わってくる。 10
  • 11. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは 料金はかなり安価です。 1サービスに対し、ルールを 20件設定、 月に400万アクセス来ると過程した場合、 月額$28(約3220円)程度。 ただし、アプリケーションに含まれる CSSや画像ファイルなども含まれるため、 少しでも削減したい場合は別ドメインの CDNに 切り出すなどの対応が必要。 HTTPリクエスト $0.75/1,000,000件 ポリシー数 1件あたり月額$5 ルール数 1件あたり月額$1 11
  • 12. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは ルールの基本事項 12
  • 13. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは 『ルール』は後から追加・編集・削除が可能。 上の図で設定されているルールは「指定した IPアドレス」に対してアクセスを「拒否」する。 IPアドレスは1ルールにつき最大10個指定ができる。 ※設定ルールの一覧画面 13
  • 14. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは ルールは優先度に従って並んでいますが、 同じIPの指定がされたルールがこのように並んでいる場合、 「203.0.113.0/24」のIPからアクセスするとどうなるでしょうか。 14
  • 15. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは 答えは「拒否(403)でアクセスが制限される」です。 優先度の高い順に判定され、条件に一致した場合はそのアクションが実行されます。 よって、以下の場合は逆に「許可」されます。 15
  • 16. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. CloudArmorとは 『ルール』は『プレビュー』としてアクションはせずに、 判定結果だけをログとして残すことも出来ます。 上の図で設定されている場合だと、「拒否( 403)」の判定がアクセスログに記録されつつ、 「許可」のアクションが実行されます。 16
  • 17. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. ● CloudArmorはロードバランサのアクセス時点で防御を行う仕組み ● アプリケーションはVMグループだけではなく CloudRunやGKEも利用できる ● ルールは優先度の高い順で評価し、 アクションが決まればそれ以降は評価されない CloudArmorとは まとめ 17
  • 18. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限 UA制限 & 条件組み合わせによる制限 18
  • 19. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(UA制限) 『ルール』は大きく『基本モード』と『詳細モード』のふた つがあります。 IP制限だけであれば基本モードですが、詳細モードを 使いこなすことが、CloudArmorを利用するにあたっ て重要になります。 詳細モードではテキストエリアの記述欄が表示され、 そこに構文を設定します。 ※ルール編集の条件設定部分 19
  • 20. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(UA制限) User-Agentによる識別を行う構文です。 上記の例ではInternet Explorerでのアクセスを検知します。 Internet Explorerは基本的に「MSIE」の文字列が含まれるため、 この構文でアクセス検知が可能です。 request.headers['user-agent'].contains('MSIE') 20
  • 21. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(UA制限) しかし、この場合だと Internet Explorer 11のケースがカバーできません。 Windows10のIE11は「MSIE」という文字列がなく、 「Trident」という文字列で判別できるようになっています。 どちらかの条件で検知するにはどうすればよいでしょうか。 request.headers['user-agent'].contains('MSIE') 21
  • 22. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(条件組み合わせによる制限) 詳細モードでは「 || 」や「 && 」の論理演算子が使えます。 この場合はUserAgentに『MSIE』または『Trident』の文字が含まれるとき request.headers['user-agent'].contains('MSIE') || request.headers['user-agent'].contains('Trident') request.headers['user-agent'].contains('MSIE') && inIpRange(origin.ip, '203.0.113.0/24') この場合はUserAgentに『MSIE』が含まれ、かつIPが『203.0.113.0/24』のとき となります。 22
  • 23. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(条件組み合わせによる制限) 論理演算子は様々な種類があります。 x == ”hoge” 文字列hogeと一致する x != ”hoge” 文字列hogeと一致しない x && y x かつ y がtrueである x || y x または y がtrueである !x x がfalseである x.contains(‘hoge’) 文字列xに部分文字列hogeが含まれている inIpRange(x, y) IPアドレスxがIPアドレス範囲yに含まれている これ以外にも数種、論理演算が存在します 23
  • 24. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(様々な構文による制限) 『origin』と『request』の変数を使うことで、様々なリクエスト元の情報を取得し、 判別に利用することが出来ます。 origin.region_code == ‘JP’ && request.path.contains('/test/') && request.method == POST (例)送信元IPが日本かつ、URLのpathに「/test/」が含まれるPOSTメソッド request.method HTTPリクエストメソッド request.path HTTP URLのパス request.query 「name1=hoge」などのURLクエリ request.headers リクエストのヘッダー情報 origin.ip 送信元IP origin.region_code 送信元IPの国コード origin.asn 送信元IPアドレスの自律システム番号 24
  • 25. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限 事前構成されたWAFルール & 最近追加されたルールについて 25
  • 26. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(事前構成されたWAFルール) SQLインジェクションなどの攻撃に対しての WAFルールの設定も可能です。 evaluatePreconfiguredExpr('sqli-stable', []) 構文はこのようになります。 『evaluatePreconfiguredExpr』というメソッドを使うことで CloudArmorが 事前に用意している WAFルールを適用することができます。 ひとつめの引数は対象となるルールを、 ふたつ目の引数はルールの中でも限定的に除外したい詳細ルールを設定できます。 26
  • 27. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(事前構成されたWAFルール) それぞれのWAFルールには、いくつかの詳細ルールがあります。 除外したい詳細ルールが設定できるのは、 正しい動作でも対象のプロジェクトで検知されてしまう場合に対応するためです。 evaluatePreconfiguredExpr('sqli-stable', [ 'owasp-crs-v030001-id942421-sqli', 'owasp-crs-v030001-id942432-sqli' ]) この場合はSQL文字がcookieやパラメータから検出され、 特殊文字数の検知が一定以上確認された場合の詳細ルールを除外しています。 「SELECT」や「FROM」などよく使われやすかったり、暗号鍵で含まれることもあるので 適応しづらいルールです。 27
  • 28. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(事前構成されたWAFルール) 事前に正常なアクセスに詳細ルールの検知が含まれているかを知りたい場合は プレビューモードを使います。 28
  • 29. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(事前構成されたWAFルール) 検知した場合はロギングで上記のような検索方法で見つけることができます。 こちらは設定した優先度「5」のルールでプレビュー検知されたアクセスを見つけるものです。 29
  • 30. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(事前構成されたWAFルール) 検索結果のログでは 右画像のような形式で記録されます。 『previewSecurityPolicy』 の中身がプレビューで検知した 内容の詳細となり 『preconfiguredExprIds』 が実際に検知した詳細 ルールです。 30
  • 31. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(事前構成されたWAFルール) SQLインジェクション以外には以下のようなルールもあります。 ◆CloudArmor公式WAF一覧 https://cloud.google.com/armor/docs/rule-tuning?hl=ja sqli-stable SQLインジェクション xss-stable クロスサイト スクリプティング lfi-stable ローカル ファイル インクルード rfi-stable リモート ファイル インクルード protocolattack-stable プロトコル攻撃 php-stable PHP インジェクション攻撃 31
  • 32. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 詳細モードによるアクセス制限(最近追加されたルールについて) 最近では『cve-canary』という『log4j攻撃』に対応したWAFルールも追加されました。 詳細ルールも4つほど設定されており、 近年の脆弱性のニュースも踏まえながらアップデートされ続けています。 気がつけば新しいWAFルールが追加されているということはよくあるので、 GCPとしても意欲的かつ継続的にアップデートする機能として捉えていそうです。 evaluatePreconfiguredExpr('cve-canary',[ 'owasp-crs-v030001-id244228-cve', 'owasp-crs-v030001-id344228-cve' ]) 32
  • 33. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. ● 詳細モードではUAや国コード指定など、IP以外での検知方法がある ● 論理演算子による条件の組み合わせがあり、 柔軟性の高いルールを独自に設定可能 ● 事前構成されたWAFルールがいくつもあり、 今後も継続的にアップデートされてゆく 詳細モードによるアクセス制限 まとめ 33
  • 34. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. まとめ 34
  • 35. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. ● CloudArmorはGCPが提供する高機能なWAF機能 ● 様々な構文や条件を組み合わせて、柔軟な設定が可能 ● 事前構成ルールを使って一般的な攻撃への 防御を任意に設定可能 まとめ 35
  • 36. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. ご清聴ありがとうございました 36