권한 부여, 거부 및 거부 데이터베이스 사용 권한
DCL (Data Control Language)은 SQL ( Structured Query Language )의 서브 세트이며 데이터베이스 관리자가 관계형 데이터베이스에 대한 보안 액세스를 구성 할 수 있도록합니다. 데이터베이스 오브젝트를 추가 및 삭제하는 데 사용되는 DDL (Data Definition Language)과 데이터베이스 컨텐츠를 검색, 삽입 및 수정하는 데 사용되는 DML (Data Manipulation Language)을 보완합니다.
DCL은 GRANT, REVOKE 및 DENY의 세 가지 명령으로 구성되므로 SQL 하위 집합 중 가장 단순합니다. 이러한 세 가지 명령을 결합하여 관리자는 데이터베이스 권한을 매우 세밀하게 설정하고 제거 할 수있는 유연성을 제공합니다.
GRANT 명령을 사용하여 권한 추가
GRANT 명령은 관리자가 데이터베이스 사용자 에게 새 권한을 추가하는 데 사용됩니다. 다음과 같이 정의되는 매우 간단한 구문을가집니다.
부여 [권한] ON [개체] TO [사용자] [WITH GRANT OPTION]이 명령으로 제공 할 수있는 각 매개 변수의 개요는 다음과 같습니다.
- 권한 은 키워드 ALL (다양한 사용 권한 부여) 또는 특정 데이터베이스 사용 권한 또는 사용 권한 집합 중 하나 일 수 있습니다. 예를 들면 CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE 및 CREATE VIEW가 있습니다.
- Object 는 모든 데이터베이스 객체가 될 수 있습니다. 유효한 특권 옵션은이 절에 포함 된 데이터베이스 오브젝트의 유형에 따라 다릅니다. 일반적으로 개체는 데이터베이스, 함수, 저장 프로 시저 , 테이블 또는 뷰입니다.
- 사용자 는 모든 데이터베이스 사용자 가 될 수 있습니다. 역할 기반 데이터베이스 보안을 사용하려는 경우이 절에서 사용자 역할을 대체 할 수도 있습니다.
- GRANT 명령의 끝에 선택적 WITH GRANT OPTION 절을 포함하면 지정된 사용자에게 SQL 문에 정의 된 권한을 부여 할뿐만 아니라 사용자에게 다른 데이터베이스 사용자에게 동일한 권한을 부여 할 수있는 권한도 부여합니다. 이러한 이유로이 절을주의해서 사용하십시오.
예를 들어, 사용자 Joe에게 HR이라는 데이터베이스의 employees 테이블에서 정보를 검색 할 권한을 부여한다고 가정합니다. 다음 SQL 명령을 사용할 수 있습니다.
Joe에게 HR.employees를 부여합니다.이제 Joe는 employees 테이블에서 정보를 검색 할 수 있습니다. 그러나 GRANT 문에 WITH GRANT OPTION 절을 포함하지 않았으므로 다른 사용자에게 해당 테이블의 정보를 검색 할 수있는 권한을 부여 할 수 없습니다.
데이터베이스 액세스 취소
REVOKE 명령은 이전에 그러한 액세스 권한이 부여 된 사용자로부터 데이터베이스 액세스를 제거하는 데 사용됩니다. 이 명령의 구문은 다음과 같이 정의됩니다.
REVOKE [GRANT OPTION FOR] [권한] ON [개체] FROM [사용자] [CASCADE]다음은 REVOKE 명령의 매개 변수에 대한 설명입니다.
- 사용 권한 은 식별 된 사용자로부터 제거 할 데이터베이스 사용 권한을 지정합니다. 이 명령은 식별 된 권한에 대해 이전에 작성된 GRANT 및 DENY 어설 션을 모두 취소합니다.
- Object 는 모든 데이터베이스 객체가 될 수 있습니다. 유효한 특권 옵션은이 절에 포함 된 데이터베이스 오브젝트의 유형에 따라 다릅니다. 일반적으로 개체는 데이터베이스, 함수, 저장 프로 시저, 테이블 또는 뷰입니다.
- 사용자 는 모든 데이터베이스 사용자 가 될 수 있습니다. 역할 기반 데이터베이스 보안을 사용하려는 경우이 절에서 사용자 역할을 대체 할 수도 있습니다.
- GRANT OPTION FOR 절은 지정된 사용자에게 지정된 권한을 다른 사용자에게 부여하는 기능을 제거합니다. 주 : REVOKE 문에 GRANT OPTION FOR 절을 포함하면 기본 사용 권한이 취소 되지 않습니다 . 이 조항은 권한 부여 기능 만 취소합니다.
- CASCADE 옵션은 또한 지정된 사용자가 권한을 부여한 모든 사용자로부터 지정된 권한을 취소합니다.
예를 들어, 다음 명령은 이전 예에서 Joe에 부여 된 권한을 취소합니다.
조 (Joe)의 HR.employees에 대한 선택 취소명시 적으로 데이터베이스 액세스 거부
DENY 명령은 사용자가 특정 권한을 수신하지 못하게하는 데 사용됩니다. 사용자가 권한을 부여받은 역할 또는 그룹의 구성원이고 예외를 작성하여 해당 개별 사용자가 권한을 상속하지 못하도록하려는 경우 유용합니다. 이 명령의 구문은 다음과 같습니다.
DENY [권한] ON [개체] TO [사용자] DENY 명령의 매개 변수는 GRANT 명령에 사용 된 것과 동일합니다.
예를 들어, Matthew가 employees 테이블에서 정보를 삭제할 수 없도록하려면 다음 명령을 실행하십시오.