仕事で困ったのでメモしておきます。
事象
下記のような、redirect actionをdefault ruleに設定したCloud Armor Security Policyを作成します。
$ gcloud compute security-policies create sample-policy
$ gcloud compute security-policies rules update 2147483647 \
--security-policy sample-policy \
--action "redirect" \
--redirect-type "external-302" \
--redirect-target "https://example.com"
Webコンソールだとこんな感じになります。
で、この状態でdefault ruleのactionをdeny(403)にしてみます。
$ gcloud compute security-policies rules update 2147483647 \
--security-policy sample-policy \
--action "deny-403"
すると、下記のエラーで失敗します。
ERROR: (gcloud.compute.security-policies.rules.update) Could not fetch resource:
- Invalid value for field 'resource.redirectOptions': ''. Redirect options can only be specified if the action is redirect.
続いて、Webコンソールで編集してみます。
「デフォルトのルールアクション」>「許可しない」>「更新」
????
多分
多分APIかgcloud CLI側のバグな気がしてます。多分。redirect actionのルールを変更する際に、自動的にredirectOptions
に空文字渡ってしまう実装になってるとか。
(変更用のAPIなので、デフォルト値に空文字入っちゃってるとか・・・)
暇があったらissue trackerに投げてみます。