사용자 관리

Machbase에서 사용자를 생성하고 권한을 부여하며 데이터베이스 보안을 관리하는 방법을 학습합니다.

사용자 관리 개요

기본 사용자

Machbase는 기본 관리자와 함께 제공됩니다:

  • 사용자명: SYS
  • 비밀번호: MANAGER
  • 권한: 전체 관리 권한

중요: 즉시 기본 비밀번호를 변경하세요!

ALTER USER SYS IDENTIFIED BY 'NewStr0ng!Password';

사용자 생성

기본 사용자 생성

-- 사용자 생성
CREATE USER analyst IDENTIFIED BY 'password123';

-- 강력한 비밀번호로 생성
CREATE USER dataeng IDENTIFIED BY 'Str0ng!P@ss2025';

사용자 이름 규칙

  • 1-128자
  • 문자, 숫자, 언더스코어
  • 대소문자 구분 안 함
  • 숫자로 시작할 수 없음

권한 부여

테이블 권한

-- SELECT 부여
GRANT SELECT ON sensors TO analyst;

-- INSERT 부여
GRANT INSERT ON sensors TO dataeng;

-- 여러 권한 부여
GRANT SELECT, INSERT ON sensors TO dataeng;

-- 테이블의 모든 권한 부여
GRANT ALL ON sensors TO admin_user;

데이터베이스 수준 권한

-- 모든 테이블에 SELECT 부여
GRANT SELECT ON DATABASE TO readonly_user;

-- 모든 권한 부여
GRANT ALL ON DATABASE TO admin_user;

시스템 권한

-- 사용자 관리 권한 부여
GRANT CREATE USER TO admin_user;

-- 테이블 생성 권한 부여
GRANT CREATE TABLE TO developer;

권한 취소

-- 특정 권한 취소
REVOKE SELECT ON sensors FROM analyst;

-- 여러 권한 취소
REVOKE INSERT, UPDATE ON sensors FROM dataeng;

-- 모든 권한 취소
REVOKE ALL ON sensors FROM old_user;

사용자 관리

사용자 보기

-- 모든 사용자 나열
SHOW USERS;

-- 사용자 권한 보기
SELECT * FROM SYSTEM_.SYS_USERS_;

비밀번호 변경

-- 자신의 비밀번호 변경
ALTER USER analyst IDENTIFIED BY 'NewPassword2025';

-- SYS는 모든 사용자의 비밀번호 변경 가능
ALTER USER dataeng IDENTIFIED BY 'ResetPassword';

사용자 삭제

-- 사용자 삭제
DROP USER analyst;

-- CASCADE와 함께 사용자 삭제 (모든 권한 제거)
DROP USER analyst CASCADE;

권한 수준

권한 매트릭스

권한SELECTINSERTUPDATEDELETECREATE TABLEDROP TABLE
READ_ONLY
DATA_WRITER
TABLE_ADMIN
SYS (Admin)

일반 사용자 역할

읽기 전용 사용자

CREATE USER readonly IDENTIFIED BY 'password';
GRANT SELECT ON DATABASE TO readonly;

데이터 분석가

CREATE USER analyst IDENTIFIED BY 'password';
GRANT SELECT ON sensors TO analyst;
GRANT SELECT ON logs TO analyst;
GRANT SELECT ON devices TO analyst;

애플리케이션 사용자

CREATE USER app_user IDENTIFIED BY 'password';
GRANT SELECT, INSERT ON sensors TO app_user;
GRANT SELECT, INSERT ON logs TO app_user;

관리자

CREATE USER admin IDENTIFIED BY 'password';
GRANT ALL ON DATABASE TO admin;
GRANT CREATE USER TO admin;

보안 모범 사례

1. 강력한 비밀번호

-- 좋음: 강력한 비밀번호
CREATE USER secure_user IDENTIFIED BY 'Tr0ng!P@ssw0rd#2025';

-- 나쁨: 약한 비밀번호
CREATE USER weak_user IDENTIFIED BY 'password';  -- 이렇게 하지 마세요!

비밀번호 요구사항:

  • 최소 8자
  • 대소문자 혼합
  • 숫자 포함
  • 특수 문자 포함

2. 최소 권한 원칙

-- 필요한 권한만 부여
CREATE USER report_user IDENTIFIED BY 'password';
GRANT SELECT ON sensors TO report_user;  -- INSERT/UPDATE/DELETE 권한 없음

3. 정기적인 비밀번호 변경

# 분기별 비밀번호 변경 정책
*/
ALTER USER analyst IDENTIFIED BY 'NewPasswordQ42025';

4. 비활성 사용자 제거

-- 정기적으로 감사 및 제거
DROP USER inactive_user;

5. 애플리케이션 사용자 분리

-- 애플리케이션에 SYS 사용 금지
-- 전용 앱 사용자 생성
CREATE USER sensor_app IDENTIFIED BY 'password';
GRANT SELECT, INSERT ON sensors TO sensor_app;

연결 예제

특정 사용자로 연결

# machsql
machsql -s localhost -u analyst -p password

# JDBC
jdbc:machbase://localhost:5656/MACHBASE?user=analyst&password=password

# Python
conn = machbase.connect('127.0.0.1', 5656, 'analyst', 'password')

감사

사용자 활동 모니터링

-- 활성 세션 확인
SHOW STATEMENTS;

-- 연결 이력 보기 (로그 확인)
-- $MACHBASE_HOME/trc/machbase.log

로그 분석

# 최근 로그인 보기
grep "LOGIN" $MACHBASE_HOME/trc/machbase.log | tail -20

# 로그인 실패 시도 확인
grep "LOGIN FAILED" $MACHBASE_HOME/trc/machbase.log

문제 해결

로그인 실패

# 사용자명 존재 확인
machsql -u SYS -p MANAGER -f - <<EOF
SHOW USERS;
EOF

# 비밀번호 재설정
machsql -u SYS -p MANAGER -f - <<EOF
ALTER USER analyst IDENTIFIED BY 'newpassword';
EOF

권한 거부

-- 사용자 권한 확인
-- (SYS로 연결)
SELECT * FROM SYSTEM_.SYS_USERS_ WHERE name = 'ANALYST';

-- 누락된 권한 부여
GRANT SELECT ON tablename TO analyst;

사용자 이미 존재

-- 삭제 후 재생성
DROP USER analyst;
CREATE USER analyst IDENTIFIED BY 'password';

완전한 예제

예제 1: 분석 팀

-- 분석가 생성
CREATE USER analyst1 IDENTIFIED BY 'Pass#2025!A1';
CREATE USER analyst2 IDENTIFIED BY 'Pass#2025!A2';

-- 읽기 전용 접근 권한 부여
GRANT SELECT ON sensors TO analyst1;
GRANT SELECT ON sensors TO analyst2;
GRANT SELECT ON logs TO analyst1;
GRANT SELECT ON logs TO analyst2;
GRANT SELECT ON devices TO analyst1;
GRANT SELECT ON devices TO analyst2;

예제 2: 애플리케이션 사용자

-- 센서 데이터 수집기
CREATE USER sensor_app IDENTIFIED BY 'SensApp#2025!';
GRANT INSERT ON sensors TO sensor_app;

-- 로그 수집기
CREATE USER log_app IDENTIFIED BY 'LogApp#2025!';
GRANT INSERT ON logs TO log_app;

-- 대시보드 애플리케이션
CREATE USER dashboard IDENTIFIED BY 'Dash#2025!';
GRANT SELECT ON sensors TO dashboard;
GRANT SELECT ON logs TO dashboard;
GRANT SELECT ON devices TO dashboard;

예제 3: 외부 파트너

-- 파트너를 위한 제한된 접근
CREATE USER partner IDENTIFIED BY 'Partner#2025!';

-- 특정 테이블과 시간 범위만
GRANT SELECT ON public_sensors TO partner;

-- 애플리케이션 로직으로 제한 (SQL이 아님)
-- 애플리케이션이 강제: DURATION 7 DAY만

사용자 관리 스크립트

#!/bin/bash
# user_management.sh

# 새 사용자 생성
create_user() {
    local username=$1
    local password=$2

    machsql -u SYS -p MANAGER -f - <<EOF
CREATE USER $username IDENTIFIED BY '$password';
EOF
}

# 권한 부여
grant_select() {
    local username=$1
    local table=$2

    machsql -u SYS -p MANAGER -f - <<EOF
GRANT SELECT ON $table TO $username;
EOF
}

# 사용법
create_user "newanalyst" "SecurePass#2025"
grant_select "newanalyst" "sensors"
grant_select "newanalyst" "logs"

다음 단계


적절한 사용자 관리로 Machbase 데이터에 대한 안전하고 제어된 접근을 보장하세요!

최근 업데이트