🌊

Google Cloud SQL の特定のアカウントに DB へのアクセス権限を制限してみた

2025/04/15に公開

SQL よく分かってなかったので、今までほぼ root 同等のアカウントで DB にアクセスしていたのですが、やはり危険なので、ちゃんと調べてみました。って言っても、 DB 触っている人にとっては当たり前の常識の範疇だと思われます。

Google Cloud SQL の Web インターフェースでユーザーアカウントを作成すると、もれなく cloudsqlsuperuser 権限が付いているので、ほぼ root 同等にどのデーターベースでもアクセス出来てしまいます。これは事故ったときにとても危ない。

まずは、登録されているユーザー一覧を出力。

SELECT user, host FROM mysql.user;

登録されているユーザーの権限を出力。

SHOW GRANTS FOR user1@localhost;

で、 cloudsqlsuperuser 権限を剥奪するには、

REVOKE 'cloudsqlsuperuser' FROM user1;

とします。 Web インターフェースを使わずに SQL を直接叩けば、あまり権限の付いてないユーザーアカウントを作成できるので、私はこちらを推したい所存。

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

そして、ユーザーアカウントに特定のデーターベースのみフルアクセス権限を付与するには、

GRANT ALL PRIVILEGES ON database.* TO newuser@localhost;

とします。正しくアクセス権限が付与できていることを確認したら、

FLUSH PRIVILEGES;

として、権限を反映させます。試しに、作ったユーザーアカウントでアクセスしてみると、フルアクセス権限を与えたデーターベース以外にはアクセス出来なくなっていました。

Discussion