[SQL응용]사용자권한, 롤 관리

예지성준·2024년 5월 17일

DB

목록 보기
14/19
post-thumbnail

제약조건

  1. CHECK 제약 조건 확인하기
    ex) age: 14세 이상

참고) DEFAULT 기본값, 회원 가입일자(SYSDATE)

  1. 제약 조건 비활성화, 활성화
  • 비활성화
    ALTER TABLE 테이블명 DISABLE CONSTRAINT 제약조건명;

  • 활성화
    ALTER TABLE 테이블명 ENABLE CONSTRAINT 제약조건명;

예시에
제약조건명 -> MEM_AGE_CK

사용자, 권한, 롤 관리

사용자 관리

  1. 사용자란?
  • 데이터베이스에 접속하여 데이터를 관리하는 계정
  1. 데이터베이스 스키마란?
    1) 데이터베이스에서 데이터 간 관계, 데이터 구조, 제약 조건 등 데이터를 저장 및 관리하기 위해 정의한 데이터베이스 구조의 범위
    2) 오라클 데이터베이스에서는 스키마와 사용자를 구분하지 않고 사용하기도 합니다.
    3) 사용자 : 데이터를 사용 및 관리하기 위해 오라클 데이터베이스에 접속하는 개체를 뜻
    4) 스키마 : 오라클 데이터베이스에 접속한 사용자와 연결된 객체
  1. 사용자 생성
    CREATE USER
CREATE USER 사용자 이름(필수) 
IDENTIFIED BY 패스워드(필수)
DEFAULT TABLESPACE 테이블 스페이스 이름(선택)
TEMPORARY TABLESPACE 테이블 스페이스(그룹) 이름(선택)
QUOTA 테이블 스페이스크기 ON 테이블 스페이스 이름(선택)
PROFILE 프로파일 이름(선택)
PASSWORD EXPIRE(선택)
ACCOUNT [LOCK/UNLOCK](선택);
  • SYSTEM 사용자로 접속 후 사용자 생성하기(SQL*PLUS)

CONN DBSTUDY/ORACLE

  • 하지만 CONN 명령어를 사용해 새로 생성한 DBSTUDY 사용자로 접속을 시도하면 접속이 되지 않는다.
    이는 사용자가 생성되긴 했지만 데이터베이스 연결을 위한 권한, 즉 CREATE SESSION 권한을 부여받지 못했기 때문

  • SYSTEM 사용자로 접속 후 DBSTUDY 사용자에게 권한 부여하기
    CONN system/oracle

    👩‍🏫참고)
    GRANT: 권한 부여
    REVOKE: 권한 철회

GRANT 시스템권한 TO 사용자

  1. 사용자 정보 조회

  2. 오라클 사용자의 변경과 삭제
    ALTER USER
    DROP USER

사용자 비번 변경해보기 -> 시스템 계정 접속 CONN system/oracle

시스템계정으로 이동하고 비번만료되게 수정해보기 CONN system/oracle

비번 변경 완!

다시 원래 비번으로 돌려뒀음!


DROP USER 사용자명; -> 스키마는 삭제가 되지 않는다
DROP USER 사용자명 CASCADE; -> 스키마도 함께 삭제 (사용자 관련 모든 데이터 삭제)


로그인 못하게 계정 잠굼도 가능

잠금 다시 풀기!

다시 접근 가능해짐!

권한 관리하기

💌시스템 권한

1) 사용자 생성과 정보 수정 및 삭제, 데이터베이스의 접근, 오라클 데이터베이스의 여러 자원과 객체 생성 및 관리 등의 권한을 포함
2) 데이터베이스의 관리 권한이 있는 사용자가 부여할 수 있는 권한
3) 소유자 ANY 키워드가 들어 있는 권한은 소유자에 상관없이 사용 가능한 권한

USER(사용자)
1) CREATE USER
2) ALTER USER
3) DROP USER

SESSION(사용자)
1) CREATE SESSION
2) ALTER SESSION

TABLE(테이블)
1) CREATE TABLE

INDEX(인덱스)

VIEW(뷰)

SEQUENCE(시퀀스)

SYNONYM(동의어)

PROFILE(프로파일)

ROLE(롤)

시스텀 권한 부여

DBSTUDY계정에서 테이블을 만들려고 하는데...

CREATE TABLE권한이 필요하다 !!!

📌1. GRANT 시스템 권한(시스템 권한 ROLE..), ...TO사용자;

권한부여를 위해서는 system계정으로 이동필요
테이블 만드는 권한을 줘보자!

세미콜론을 입력하지 않으면 문장이 아직 끝나지 않은거라 밑줄로 이어진다.

테이블 생성에 성공했다능!

📌2. GRANT 시스템 권한, ... TO 사용자 WITH ADMIN OPTION;
-> 사용자가 가지고 있는 권한을 다른 사용자에게 부여할 수 있다.

위에 명령어를 보면 DBSTUDY에게 5개의 권한을 줬는데 WITH ADMIN OPTION을 추가해줌으로써 DBSTUDY는 작은 관리자가 된것이다. 부여해준 5개의 권한만 사용할 수 있는데, DBSTUDY가 다른 사용자에게 권한을 부여하게 된다면 부여받은 쪽에서도 저 5개 권한 내에서만 부여받고 사용할 수 있다. 그외는 불가능하다.

관리자가 되었다 -> 권한부여 가능해짐

연결완룡

시스템 권한 취소

REVOKE 시스템권한[시스템 권한 ROLE],... FROM 사용자;


💌객체 권한

특정 사용자가 생성한 테이블,인덱스,뷰,시퀀스 등과 관련된 권한

  1. 객체 권한 분류

1) TABLE(테이블)
ALTER, DELETE, INDEX, INSERT, REFERENCES, SELECT, UPDATE

2) VIEW(뷰)
3) SEQUENCE(시퀀스)
4) PROCEDURE(프로시저)
5) FUNCTION(함수)
6) PACKAGE(패키지)

  1. 객체 권한 부여
  • DML관련 권한: INSERT, UPDATE, DELETE, SELECT 권한

GRANT 객체 권한/ALL PRIVILEGES ON 스키마.객체이름 TO 사용자 또는 ROLE/PUBLIC - 모든 사용자

GRANT 객체 권한/ALL PRIVILEGES ON 스키마.객체이름 TO 사용자 또는 ROLE/PUBLIC- 모든 사용자 WITH GRANT OPTION;

WITH GRANT OPTION: 사용자가 소유하고있는 권한을 부여할 수 있는 권한

ALL PRIVILEGES: 모든 권한

🔸 다른 스키마쪽 테이블 접근하기

  • 시스템쪽이나 스콧(권한있을때)쪽에서 권한을 부여해줘야 한다.
    • 스키마명.테이블 or 스키마명.객체이름

DBSTUDY3가 부여받을 뿐 아니라 다른 사용자에게 해당 권한 부여해줄수 있게 WITH GRANT OPTION;도 추가해줬다.

접근되었당구리 ~~!

DBSTUDY3가 DBSTUDY2에게 조회 기능만 주었다.

🔼CONNECT, RESOURCE롤로 권한추가 해줘야함

  1. 객체 권한 취소

REVOKE 객체 권한, ... ON 스키마.객체이름 FROM 사용자명;

객체권한에서 Revoke를 해주려면 해당 권한이 있어야 하기때문에 시스템 계정에서도 권한을 주지 않으면 철회가 불가능하다.

롤 관리

1. 롤이란?

1) 여러 종류의 권한을 묶어 놓은 그룹
2) 오라클 데이터베이스를 설치할 때 기본으로 제공되는 사전 정의된 롤(predefined roles)과 사용자 정의 롤(user roles)로 나뉩니다.

CREATE ROLE 롤명칭;

CREATE 시스템 권한, ...TO ROLE 명칭;

  • SYSTEM 계정으로 ROLE1 롤 생성 및 권한 부여하기
  • DBSTUDY2 사용자에게 롤(ROLESTUDY) 부여하기

권한부여 후 시퀀스 생성

2. 🌷사전 정의된 롤

1) CONNECT롤

  • 사용자가 데이터베이스에 접속하는 데 필요한 CREATE SESSION 권한을 가지고 있다.
ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW

2) RESOURCE 롤

  • 사용자가 테이블, 시퀀스를 비롯한 여러 객체를 생성할 수 있는 기본 시스템 권한을 묶어 놓은 롤
CREATE TRIGGER, CREATE SEQUENCE, CREATE TYPE, CREATE PROCEDURE, CREATE CLUSTER, CREATE OPERATOR, CREATE INDEXTYPE, CREATE TABLE

3) 보통 새로운 사용자를 생성하면 CONNECT롤과 RESOURCE롤을 부여하는 경우가 많습니다

  • CONNECT 롤에서 뷰를 생성하는 CREATE VIEW 권한과 동의어를 생성하는 CREATE SYNONYM 권한이 제외되었기 때문에 뷰와 동의어 생성 권한을 사용자에게 부여하려면 이 두 권한을 따로 부여해 주어야 한다.

🌟🌟 CONNECT롤과 RESOURCE롤을 부여하면 바로 사용할 수 있다.
시험 ~~

3. 사용자 정의 롤

1) 롤 생성
2) 부여된 롤과 권환 확인

  • USER_SYS_PRIVIS;
  • USER_ROLE_PRIVIS;

3) 롤 취소
3) 롤 삭제
DROP ROLE 롤명칭;

profile
꽁꽁 얼어붙은 한강 위로 😺

0개의 댓글