動かざることバグの如し

近づきたいよ 君の理想に

GCP Cloud SQLでIP制限をなんとかする

経緯

Googleが出しているMySQLライクなDBクラウドサービスこと、Cloud SQLがあるが、IP制限が必須である。

もちろんセキュリティ的には重要なのだが、自宅のIPがしょっちゅう変わる身としては毎回設定し直さないといけないので面倒だったりする。

仕方ないなぁと思ってたらどうやら公式で出しているプロキシ機能を使うと簡単にIP制限を回避できるらしい ってことで試してみた

準備

認証

当然どのサーバーからも接続させるわけにはいかないので何らかで許可されたものか確認を担保する必要がある。Cloud SQLではgcloudコマンドで認証できる

すでにインストール&認証済みならスキップ

Macなら以下でインストールできる

curl https://sdk.cloud.google.com | bash

で、初回のみ認証

gcloud auth login

プロキシのインストール

curl -L https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64 > /usr/local/bin/cloud_sql_proxy

M1Macの場合

curl -L https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.arm64 /usr/local/bin/cloud_sql_proxy

実行権限の付加

chmod +x /usr/local/bin/cloud_sql_proxy

これで cloud_sql_proxy -h とかするとコマンドが叩けることが確認できるはず

やり方

プロキシを起動する際は以下のコマンド

cloud_sql_proxy -dir ~/ -instances <プロジェクトID>:<リージョン>:<データベースのインスタンスID>

以下のように表示されれば成功 Macだと /Users/thr3a/my-project:asia-northeast1:my-database にソケットファイルが作成されている

2019/10/15 08:36:53 current FDs rlimit set to 12800, wanted limit is 8500. Nothing to do here.
2019/10/15 08:36:54 Listening on /Users/thr3a/my-project:asia-northeast1:my-database for my-project:asia-northeast1:my-database
2019/10/15 08:36:54 Ready for new connections

で、接続 ここではSequel Proでの設定例を教示

コマンドで接続したい場合はソケットを -S で指定する。

mysql -u thr3a -p -S /Users/thr3a/my-project:asia-northeast1:my-database

あとはSQLの接続前にこのプロキシを起動しておけば、どこからでもSQLに接続できる やったね

参考サイト