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가 해당 사용자의 auth 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에서 열기 →