はじめに
GoogleCloudに対してのIP開放したところ、思った箇所以外に変更が必要な箇所があり、App Engineに対するIPアドレス制限について記載する。
今回の問題が発生した構成
構成補足
- サーバレスの構成でLB配下にCloudStorage、App Engine、CloudFunctionsをぶら下げている。
- App Engine、CloudFunctionsに対するCloudArmorの設定は可能だが、CloudStorageに対するCloudArmorの適用はできない(※)。
- LB配下にぶら下げたCloudStorageにコンテンツを配置した場合、アクセス制限をかけたかったので、リバプロとして動作させるApp Engineを作成し、間にかませる構成にし、App Engineに紐付けたCloudArmorでアクセス制限した。
※なお、2022/6にCloudStorageへのCloudArmorでのアクセス制限が可能になった!個人的にこのことがあったので熱いアプデ
https://cloud.google.com/blog/ja/products/identity-security/cloud-armor-adds-more-edge-security-policies-proxy-load-balancers
発生した事象
事象内容
App Engineに紐付いているCloudArmorにてIPアドレスを許可しても、アクセス可能にならなかった
一次対応を受けて調査
- LBのログの出力内容確認(500エラーであることしか記録されず、、、)
- CloudArmorのルール制限に抵触していないか確認するも抵触していない(※1)
- CloudArmorがちゃんと適用されていないのでは?と思い、新たにCloudArmorを作成し、同じルールで適用するもNG
※1 https://cloud.google.com/armor/quotas?hl=ja#limits
ここでの中間の感想
- 他に思い当たる制限箇所もこの時ありませんでしたので、問い合わせることに
サポートからの回答
- App Engineのファイアウォールによりアクセス制限されており、そこで対象IPアドレスを許可してください。
回答を受けての調査
- App Engineの画面を開いたところ、App Engineの設定にFW設定があり、そこでIPアドレス制限がされていました
原因
- App Engineのサービス自体でFW機能があり、そこでIP制限しており、CloudArmorでも制限しており、2箇所でIPアドレス制限をしていた。
対応
Ingress設定
すべてのトラフィックを許可する設定になっていたが、LB経由ないし内部トラフィックのみに制限した(App Engine側で制御するなら変えなくてもよかったと思います)。
ファイアウォールルール設定
App Engineのファイアウォールでの制限はせずに基本的にすべて許可とした。
App Engineが関連するIP制限まとめ
- CloudArmor
- 今やLBにぶら下がる、CloudStorage、CDNに対しても制限可能であり、App Engine、Cloud Run、Cloud Functionsなど(サーバーレス ネットワーク エンドポイント グループ)に対してWAF機能を提供することができる
- App EngineのINGRESS設定
- ここはIP制限とは少し違うがパブリックで受けるのかLB経由のみ受けるのか、内部通信のみ受けるのか、を選択することが可能
- App Engineのファイアウォール
- App Engineに対するアクセス制限をIPアドレスですることが可能
感想
AWSのEC2でいうと、ただOS上のfirewalldで制限してて、インスタンスのSGでIP許可しても駄目だったみたいな感じと思うと情けないです。。
近々App EngineをやめてCloudStorageに対してCloudArmorをかけるかたちに変えたいと思います。