Cloud SQL の Cloud SQL Studio が便利
こんにちは。すらぼです。好きな言葉は「ブラウザ完結」です。
Google Cloud でデータベースを作る場合、多くのケースでは Cloud SQL が選択肢に上がると思います。
Cloud SQL には多くの機能が存在しますが、中でも Cloud SQL Studio が便利だったので紹介します。
とはいっても、ユーザーとパスワードがあれば即座に使い始められてしまいます。
そこで今回は IAM 認証を設定して、自分のユーザーアカウントでログインできるように設定してみます。
Cloud SQL Studio とは
本題に入る前に、Cloud SQL Studio のうれしいポイントを説明します。
- Cloud Console 上から、ネットワークなどの追加設定なしでインスタンスに接続できる。
- クエリの実行や、実行結果のエクスポートができる。
- IAM ユーザー・IAM グループでの認証も設定でき、パスワード無しでのアクセスが可能。
これらによって、日々の運用が劇的に改善されるか?というとそうでもないと思います。
しかし、以下のようなケースでは非常に便利なツールになります。
- プライベートなインスタンスに、とりあえず接続したいとき
- ちょっとした調査で READ 系のクエリを叩きたいとき
- たまに発生する業務で、データベースに接続したいとき
データベースは、基本的にパブリックIPを持たせません。
そのため、従来はこれらのケースでは踏み台サーバーを立て、そこからアクセスする必要がありました。
しかし、ちょっとした検証やたまに発生する程度の業務では作成・メンテナンスが地味につらいポイントでした。
Cloud SQL Studio を使うことで、それらのちょっとしたつらみが解消されます。
早速やってみる
Cloud SQL Studio に接続してみる
では、早速使ってみます。まず、Cloud Console で、接続したいインスタンスの画面を開きます。
すると、一番わかりやすいところに「Cloud SQL Studio」のボタンがあるのでクリックしてみます。

クリックすると、以下のようなログイン画面が表示されます。
今回は、PostgreSQL のデフォルトのデータベース/ユーザーと、作成時に設定したパスワードでログインしてみます。

すると、もうクエリが打ち込める画面になりました。本当に簡単です。

流石にこれだけでは味気ないので、今回は自身のIAMユーザーで Cloud SQL Studio にログインするところまで試してみます。
IAM ユーザーを作る
Cloud SQL は、データベースのユーザーも Cloud Console 上から作成することができます。
左の「ユーザー」から「ユーザーアカウントを追加」ボタンをクリックします。

すると、次のような画面が出てきて、組み込み認証(ユーザー・パスワードの認証)に加え「Cloud IAM」が選択できます。
今回はこの「Cloud IAM」を選択し、自分の現在ログインしているメールアドレスを入力します。

追加が完了すると、一覧画面には「IAM(ユーザー)」としてユーザーが追加されたことが確認できます。

ただし、これだけでは完了しません。
IAM として作成したユーザーには、 初期状態で何も権限がない状態 です。なので、権限を付与してあげる必要があります。
でも、その権限付与も実はとっても簡単です。Cloud SQL Studio でサクッと付与しちゃいましょう。
作成したIAMユーザーに権限を付与する
Cloud SQL Studio に、もう一度デフォルトのユーザー(今回は postgres)でログインします。
まず、自分のユーザー名を確認するために以下のクエリを実行してみます。
SELECT * FROM pg_user WHERE usename LIKE '%@%';
実行すると、以下のように実際に内部で使用されているユーザー名が確認できます。
今回は IAM ユーザーなので、入力した通りに表示されていました。(サービスアカウントの場合はプリンシパルとユーザー名が一致しないため注意してください)

では、このユーザーに権限を付与します。今回は検証目的なので、データベースに対して ALL 権限を付与しています。
本番環境のような誤操作を防ぎたい環境では SELECT 権限のみ付与するなど、このタイミングで権限を調整してください。
-- 制限が少なく、いろいろやりたいとき(開発環境など)
GRANT ALL PRIVILEGES ON DATABASE postgres TO "YOUR_PRINCIPAL";
-- SELECTだけを許可する場合(本番環境など)
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO "YOUR_PRINCIPAL";
クエリが完了すると、以下のように「ステートメントは正常に実行されました」と表示されます。これで権限付与が完了です。

IAMユーザーでログインしてみる
では、今設定したIAMユーザーでログインしてみます。
ページをリロードするか、以下の「ユーザー/データベースを切り替える」ボタンからIAMユーザーでのログインに切り替えてみましょう。

すると、IAM データベース認証が選択できるようになっていることがわかります。
IAM データベース認証は、現在ログインしている Cloud IAM ユーザーでの認証を行います。他のユーザープリンシパルやサービスアカウントを選択することはできません。

実際にログインしているユーザーが変わったことと、SELECT 権限があることを確認するために以下のクエリを実行してみます。
select * from pg_user where usename = CURRENT_USER;
クエリを実行してみると、スクリーンショットではモザイクをかけているためわかりにくいですが、無事IAMユーザーでログインできることが確認できました。

便利だけど、なんでもできるわけではない
ここまで紹介した Cloud SQL Studio ですが、もちろん向いていないケースもあります。
例えば、データベースのマイグレーション(スキーマ管理)はこの Cloud SQL Studio 上ではできません。クエリの実行環境に過ぎず、外部ツールの実行環境ではないからです。
このようなケースでは、 Cloud Run jobs などの別サービスから接続・実行したり、Compute Engine など踏み台を用意して手動で実行したりといった対応が必要になります。
あくまで、「ちょっとした作業に嬉しい」くらいのツールとして捉え、本格的な運用をこのツールで行うことは避けるようにしましょう。
世の中には先人達が築き上げた、素晴らしいデータベースの管理ツールがたくさんあります。
終わりに
ちょっと便利なツール Cloud SQL Studio の紹介でした。
私はブログを書く都合でよくインスタンスを立てたり消したりする必要があり、この辺りの設定が非常に億劫で困っていました。
「踏み台を用意したりしない良い方法ないですかね?」と相談したところ、同じコンサル部のメンバーの 渡邉 光 さんに Cloud SQL Studio を紹介してもらい、とてもとても感動したのでブログにさせてもらいました。
光さんも Google Cloud に精通していて、たくさんブログを書いているのでぜひ読んでみてください。
話が逸れてしまいましたが、今回は以上です。みなさんも Cloud SQL Studio で良き Cloud SQL ライフをお送りください!
関連リンク
Cloud SQL Studio を使用してデータを管理する | Cloud SQL for MySQL | Google Cloud Documentation











