Stackdriver Uptimeチェックのアクセス元IPアドレス取得と、ファイアウォールルールの更新
聞かれたので少し整理してメモを残しとく。
(2018/09時点で) Stackdriver Uptimeチェック のアクセス元IPを取得するには2通りの方法がある。
- GCPコンソールで確認
- GCPコンソール > Stackdriver Alerting > Uptime Checks > Add Uptime Checks >
…
をクリックして確認
- GCPコンソール > Stackdriver Alerting > Uptime Checks > Add Uptime Checks >
- API で取得
- ドキュメントの通り 現時点ではベータでSLA対象外、GAで変わるかも
- GitHub に サンプルのPythonのコード があったけど、 Python の Google Cloud ライブラリ は
firewall-rules
の更新には対応してないっぽい?
IPリスト自体は四半期に1度の更新頻度というのをドキュメントで見たけど、一々手でやるのは面倒なので結局こんな感じのスクリプトをサクッと作って確認した。
- Python で Stackdriver Uptimeチェック の IP取得
- "1" で取得したIPリストを元に、シェルスクリプト (
gcloud
コマンド) でファイアウォールルールを更新
以下、やったことのメモ
Stackdriver IPアドレスの取得スクリプト
pip
で google-cloud-monitoring
を入れて、とりあえず Github のコードを参考にIPリストだけ返すスクリプトを作った。
$ pip install google-cloud-monitoring $ vi iplist.py
#!/usr/bin/env python from google.cloud import monitoring_v3 client = monitoring_v3.UptimeCheckServiceClient() ips = client.list_uptime_check_ips() iplist = [] iplist_str = '' for ip in ips: iplist.append(ip.ip_address) iplist_str = ','.join(iplist) print(iplist_str)
んで、実行して IPアドレスのリスト が取得できた事を確認
$ chmod +x iplist.py $ ./iplist.py 104.155.77.122,104.155.110.139,146.148.119.250,146.148.59.114,23.251.144.62,146.148.41.163,35.197.117.125,35.203.157.42,35.199.157.7,35.186.164.184,35.188.230.101,35.199.27.30,35.187.242.246,35.186.144.97,35.198.221.49,35.199.66.47,35.198.18.224,35.199.67.79
ファイアウォールルールの作成
IPアドレスのリストが取得出来たので、gcloud
コマンドで更新対象となるファイアウォールルールを作成
$ gcloud compute firewall-rules create default-allow-uptimecheck \ --allow=tcp \ --description="Allow stackdriver uptime check" \ --network=default \ --source-ranges="104.155.77.122,104.155.110.139,146.148.119.250,146.148.59.114,23.251.144.62,146.148.41.163,35.197.117.125,35.203.157.42,35.199.157.7,35.186.164.184,35.188.230.101,35.199.27.30,35.187.242.246,35.186.144.97,35.198.221.49,35.199.66.47,35.198.18.224,35.199.67.79"
ファイアウォールルールの更新
今度はシェルスクリプトでサクッとルールを更新するようなスクリプトを作成
$ vi stackdriver.sh
#!/bin/bash IPLIST=`./iplist.py` gcloud compute firewall-rules update default-allow-uptimecheck \ --allow=tcp \ --description="Allow stackdriver uptime check" \ --source-ranges="${IPLIST}"
$ chmod +x stackdriver.sh $ ./stackdriver.sh Updated [https://www.googleapis.com/compute/v1/projects/xxxxxxxx/global/firewalls/default-allow-uptimecheck].
これでIPアドレスの取得〜更新までの流れは出来た。 実際には更新(差分)の確認とかエラー処理とか色々足さないとダメだけどね(;^ω^)
とりあえずこんな感じで出来るよーと返したとこまで c⌒っ゚д゚)っφ メモメモ...