DENY 개체 사용 권한(Transact-SQL)
적용 대상: Microsoft Fabric의 SQL ServerAzure SQL Database Azure SQL Managed Instance SQL 데이터베이스
보안 개체의 OBJECT 클래스 멤버에 대한 사용 권한을 거부합니다. OBJECT 클래스의 멤버에는 테이블, 뷰, 테이블 반환 함수, 저장 프로시저, 확장 저장 프로시저, 스칼라 함수, 집계 함수, 서비스 큐 및 동의어에 대한 사용 권한이 있습니다.
구문
DENY <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO <database_principal> [ ,...n ]
[ CASCADE ]
[ AS <database_principal> ]
<permission> ::=
ALL [ PRIVILEGES ] | permission [ ( column [ ,...n ] ) ]
<database_principal> ::=
Database_user
| Database_role
| Application_role
| Database_user_mapped_to_Windows_User
| Database_user_mapped_to_Windows_Group
| Database_user_mapped_to_certificate
| Database_user_mapped_to_asymmetric_key
| Database_user_with_no_login
인수
permission
스키마 포함 개체에 대해 거부할 수 있는 사용 권한을 지정합니다. 사용 권한 목록은 이 항목의 뒤에 나오는 주의 섹션을 참조하세요.
ALL
ALL을 거부하더라도 일부 가능한 사용 권한은 거부되지 않습니다. ALL을 거부하는 것은 지정된 개체에 적용할 수 있는 모든 ANSI-92 사용 권한을 거부하는 것과 동일합니다. ALL의 의미는 다음과 같이 달라집니다.
- 스칼라 함수 사용 권한: EXECUTE, REFERENCES
- 테이블 반환 함수 사용 권한: DELETE, INSERT, REFERENCES, SELECT, UPDATE
- 저장 프로시저 사용 권한: EXECUTE
- 테이블 사용 권한: DELETE, INSERT, REFERENCES, SELECT, UPDATE
- 뷰 사용 권한: DELETE, INSERT, REFERENCES, SELECT, UPDATE
PRIVILEGES
ANSI-92 호환성을 위해 포함되었습니다. ALL의 동작을 변경하지 않습니다.
column
사용 권한을 거부할 테이블, 뷰 또는 테이블 반환 함수의 열 이름을 지정합니다. 괄호 ( ) 가 필요합니다. SELECT, REFERENCES 및 UPDATE 권한만 열에 정의할 수 있습니다. column은 권한 절에 지정하거나 보안 이름 뒤에 지정할 수 있습니다.
주의
테이블 수준의 DENY는 열 수준의 GRANT보다 우선하지 않습니다. 사용 권한 계층에서의 이러한 불일치는 이전 버전과의 호환성을 위해 유지되었습니다. SQL Server 서버에서 서버가 Common Criteria Compliance Enabled 서버 구성으로 실행되도록 구성된 경우에는 이 동작이 다릅니다. 그러나 일반적으로는 특별히 주의를 기울인 경우에 한해 사용되어야 하며 일반적인 경우에는 사용하지 않아야 합니다.
ON [ OBJECT :: ] [ schema_name ] . object_name
사용 권한을 거부할 개체를 지정합니다. schema_name을 지정한 경우 OBJECT 구는 선택 사항입니다. OBJECT 구가 사용된 경우 범위 한정자( :: )가 필요합니다. schema_name을 지정하지 않은 경우 기본 스키마가 사용됩니다. schema_name을 지정한 경우 스키마 범위 한정자( . )가 필요합니다.
TO <database_principal>
사용 권한을 거부할 보안 주체를 지정합니다.
CASCADE
사용 권한이 거부된 보안 주체에게 사용 권한을 부여 받은 다른 보안 주체의 사용 권한도 거부됨을 나타냅니다.
AS <database_principal>
이 쿼리를 실행하는 보안 주체가 사용 권한을 거부하는 권한을 부여할 수 있는 다른 보안 주체를 지정합니다.
Database_user
데이터베이스 사용자를 지정합니다.
Database_role
데이터베이스 역할을 지정합니다.
Application_role
애플리케이션 역할을 지정합니다.
Database_user_mapped_to_Windows_User
Windows 사용자로 매핑된 데이터베이스 사용자를 지정합니다.
Database_user_mapped_to_Windows_Group
Windows 그룹으로 매핑된 데이터베이스 사용자를 지정합니다.
Database_user_mapped_to_certificate
인증서로 매핑된 데이터베이스 사용자를 지정합니다.
Database_user_mapped_to_asymmetric_key
비대칭 키로 매핑된 데이터베이스 사용자를 지정합니다.
Database_user_with_no_login
해당 서버 수준의 보안 주체가 없는 데이터베이스 사용자를 지정합니다.
설명
개체에 대한 정보는 다양한 카탈로그 뷰에 표시됩니다. 자세한 내용은 Object Catalog Views (Transact-SQL)을 참조하세요.
개체는 사용 권한 계층에서 해당 개체의 부모인 스키마에 포함된 스키마 수준 보안 개체입니다. 다음 표에는 개체에 대해 거부할 수 있는 가장 제한적인 특정 사용 권한이 의미상 이러한 사용 권한을 포함하는 보다 일반적인 사용 권한과 함께 나열되어 있습니다.
개체 사용 권한 | 개체 사용 권한에 포함된 사용 권한 | 스키마 사용 권한에 포함된 사용 권한 |
---|---|---|
ALTER | CONTROL | ALTER |
CONTROL | CONTROL | CONTROL |
Delete | CONTROL | Delete |
CREATE 문을 실행하기 전에 | CONTROL | CREATE 문을 실행하기 전에 |
INSERT | CONTROL | INSERT |
RECEIVE | CONTROL | CONTROL |
REFERENCES | CONTROL | REFERENCES |
SELECT | RECEIVE | SELECT |
TAKE OWNERSHIP | CONTROL | CONTROL |
UPDATE | CONTROL | UPDATE |
VIEW CHANGE TRACKING | CONTROL | VIEW CHANGE TRACKING |
VIEW DEFINITION | CONTROL | VIEW DEFINITION |
사용 권한
개체에 대한 CONTROL 권한이 필요합니다.
AS 절을 사용하는 경우 지정된 보안 주체가 사용 권한을 거부할 개체를 소유해야 합니다.
예제
다음 예에서는 모두 AdventureWorks 데이터베이스를 사용합니다.
A. 테이블에 대한 SELECT 권한 거부
다음 예에서는 Person.Address
테이블에 대해 사용자 RosaQdM
의 SELECT
권한을 거부합니다.
DENY SELECT ON OBJECT::Person.Address TO RosaQdM;
GO
B. 저장 프로시저에 대한 EXECUTE 권한 거부
다음 예에서는 EXECUTE
이라는 애플리케이션 역할에 대해 저장 프로시저 HumanResources.uspUpdateEmployeeHireInfo
에 대한 Recruiting11
권한을 거부합니다.
DENY EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
TO Recruiting11;
GO
C. CASCADE를 지정하여 뷰에 대한 REFERENCES 권한 거부
다음 예에서는 REFERENCES
를 지정하여 사용자 BusinessEntityID
에 대해 HumanResources.vEmployee
뷰의 Wanida
열에 대한 CASCADE
권한을 거부합니다.
DENY REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee
TO Wanida CASCADE;
GO
참고 항목
개체 사용 권한(Transact-SQL)
REVOKE 개체 사용 권한(Transact-SQL)
개체 카탈로그 뷰(Transact-SQL)
사용 권한(데이터베이스 엔진)
보안 주체(데이터베이스 엔진)
보안 개체
sys.fn_builtin_permissions(Transact-SQL)
HAS_PERMS_BY_NAME(Transact-SQL)
sys.fn_my_permissions(Transact-SQL)