메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Authorization: 두 판 사이의 차이

noriwiki
Pinkgo (토론 | 기여)
새 문서: 상위 문서: SQL ==개요== 사용자에게 부여할 수 있는 데이터에 대한 권한(authorization)에는 다음과 같은 것들이 포함된다: * 데이터를 '''읽을(read) 수 있는''' 권한 * 새로운 데이터를 '''삽입(insert) 할 수 있는''' 권한 * 데이터를 '''갱신(update) 할 수 있는''' 권한 * 데이터를 '''삭제(delete) 할 수 있는''' 권한 이러한 각 유형의 권한은 privilege(특권) 라고 불린다. 또한 '''all pr...
 
Pinkgo (토론 | 기여)
38번째 줄: 38번째 줄:
'''public이라는 사용자 이름은 모든 현재 및 미래의 사용자'''를 의미하며, public에게 부여된 권한은 모든 사용자에게 암묵적으로 부여된 것으로 간주된다.
'''public이라는 사용자 이름은 모든 현재 및 미래의 사용자'''를 의미하며, public에게 부여된 권한은 모든 사용자에게 암묵적으로 부여된 것으로 간주된다.


==
==Revoking Authorization in SQL==
권한을 회수(revoke)하려면 revoke 문을 사용하며, 그 형식은 grant 문과 거의 동일하다:
<syntaxhighlight lang="sql">
revoke <privilege list>
on <relation name or view name>
from <user/role list>;
</syntaxhighlight>
따라서 이전에 부여한 권한을 회수하기 위해서는 다음과 같이 작성할 수 있다.
<syntaxhighlight lang="sql">revoke <privilege list>
revoke select on department from Amit, Satoshi;
revoke update (budget) on department from Amit, Satoshi;
</syntaxhighlight>


==각주==
==각주==

2025년 4월 16일 (수) 19:06 판

상위 문서: SQL

개요

사용자에게 부여할 수 있는 데이터에 대한 권한(authorization)에는 다음과 같은 것들이 포함된다:

  • 데이터를 읽을(read) 수 있는 권한
  • 새로운 데이터를 삽입(insert) 할 수 있는 권한
  • 데이터를 갱신(update) 할 수 있는 권한
  • 데이터를 삭제(delete) 할 수 있는 권한

이러한 각 유형의 권한은 privilege(특권) 라고 불린다. 또한 all privileges는 허용 가능한 모든 권한을 간략하게 나타낸다. 이때 사용자에게 데이터베이스의 특정 부분[1]에 대해 사용자가 질의(query)나 갱신(update)을 제출하면, SQL 구현체는 먼저 해당 질의나 갱신이 허가된 것인지(authorized)를 사용자가 가진 권한을 기준으로 검사한다. 만약 허가되지 않은 작업이라면 거부된다.

데이터에 대한 권한 외에도, 사용자는 데이터베이스 스키마(schema) 에 대한 권한을 부여받을 수도 있다. 예를 들어, 사용자가 릴레이션을 생성(create), 수정(modify), 삭제(drop) 하는 것이 가능하게 된다. 어떤 형태로든 권한을 부여받은 사용자는, 이 권한을 다른 사용자에게 넘겨주거나(grant), 이전에 부여했던 권한을 회수(revoke) 할 수도 있다.

Granting and Revoking of Privileges

Authorization Specification in SQL

grant 문은 사용자에게 권한을 부여하기 위해 사용되며 기본적인 형태는 다음과 같다:

grant <privilege list> --privilege list를 통해 하나의 명령문으로 여러 권한을 동시에 부여할 수 있다.
on <relation/view name>
to <user/role list>;

select 권한은 릴레이션의 튜플을 읽기(read) 위해 필요하다. 예를 들어, 다음 grant 문은 데이터베이스 사용자 Amit와 Satoshi에게 department 릴레이션에 대한 select 권한을 부여한다:

grant select on department to Amit, Satoshi;

이 명령어는 해당 사용자들이 department 릴레이션에 대해 질의를 수행할 수 있도록 권한을 부여한다. update 권한은 사용자가 릴레이션의 어떤 튜플이든 갱신(update) 할 수 있도록 허용한다.

update 권한은 릴레이션의 모든 속성에 대해 부여할 수도 있고, 일부 속성에만 부여할 수도 있다. update 권한이 grant 문에 포함될 경우, 권한을 부여할 속성들의 목록은 update 키워드 바로 뒤에 괄호 안에 선택적으로 나타날 수 있다. 속성 목록이 생략되면, 해당 릴레이션의 모든 속성에 대해 update 권한이 부여된다. 다음 grant 문은 Amit와 Satoshi에게 department 릴레이션의 budget 속성에 대한 update 권한을 부여한다:

grant update (budget) on department to Amit, Satoshi;

insert 권한은 사용자가 릴레이션에 새로운 튜플을 삽입(insert) 할 수 있도록 허용한다. insert 권한도 속성 목록을 명시할 수 있는데, 이 경우 해당 릴레이션에 삽입되는 튜플은 반드시 이 속성들만 지정해야 하며, 나머지 속성은 기본값(default) 을 가지거나, 기본값이 정의되지 않은 경우에는 null로 설정된다.

delete 권한은 사용자가 릴레이션에서 튜플을 삭제(delete) 할 수 있도록 허용한다.

public이라는 사용자 이름은 모든 현재 및 미래의 사용자를 의미하며, public에게 부여된 권한은 모든 사용자에게 암묵적으로 부여된 것으로 간주된다.

Revoking Authorization in SQL

권한을 회수(revoke)하려면 revoke 문을 사용하며, 그 형식은 grant 문과 거의 동일하다:

revoke <privilege list>
on <relation name or view name>
from <user/role list>;

따라서 이전에 부여한 권한을 회수하기 위해서는 다음과 같이 작성할 수 있다.

revoke <privilege list>
revoke select on department from Amit, Satoshi;
revoke update (budget) on department from Amit, Satoshi;

각주

  1. 예를 들면 릴레이션(relation)이나 뷰(view)가 있다.