DBAtlas · データベース運用アトラス

ユーザーを作成して権限を付与

Oracle

CREATE USER app IDENTIFIED BY "Strong#Pass1";
GRANT CREATE SESSION TO app;
GRANT SELECT, INSERT, UPDATE ON hr.employee TO app;

CREATE SESSION がないとユーザーは接続できない。クォータの設定: ALTER USER app QUOTA 100M ON users;

PostgreSQL

CREATE ROLE app LOGIN PASSWORD 'Strong#Pass1';
GRANT CONNECT ON DATABASE mydb TO app;
GRANT USAGE ON SCHEMA public TO app;
GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA public TO app;

今後作成されるテーブルの場合: ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO app;

MySQL

CREATE USER 'app'@'%' IDENTIFIED BY 'Strong#Pass1';
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app'@'%';

'%' は任意のホストからの接続を許可する。セキュリティのため、可能な限り特定の IP/ホストを指定する。CREATE USER/GRANT は即座に反映される。FLUSH PRIVILEGES が必要なのは権限テーブルに直接 DML を実行した場合のみ。

SQL Server

CREATE LOGIN app WITH PASSWORD = 'Strong#Pass1';
USE mydb;
CREATE USER app FOR LOGIN app;
GRANT SELECT, INSERT, UPDATE ON SCHEMA::dbo TO app;

ログインはサーバー全体で有効、ユーザーは各データベースで個別に作成する。ロールの場合: ALTER ROLE db_datareader ADD MEMBER app;

MongoDB

db.createUser({
  user: "app",
  pwd: "Strong#Pass1",
  roles: [ { role: "readWrite", db: "mydb" } ]
})

ユーザーを作成した db がその認証 db になる。組み込みロール: read、readWrite、dbAdmin、clusterAdmin...

Redis

ACL SETUSER app on >Strong#Pass1 ~app:* +@read +@write
# To persist: ACL SAVE if an aclfile is defined, otherwise CONFIG REWRITE (users are written to redis.conf)

on = 有効、>password はパスワードを追加、~app:* はキーパターン、+@read/+@write はコマンドカテゴリ。永続化しないと再起動で失われる。ACL SAVE は aclfile が設定されている場合のみ動作し、それ以外はエラーを返す。その場合は CONFIG REWRITE を使用する。

DBAtlas で開く →