허가: GRANT, , DENYREVOKE

적용 대상:Azure Synapse AnalyticsAnalytics Platform System(PDW)Microsoft Fabric의 SQL 분석 엔드포인트Microsoft Fabric의 Warehouse

보안 원칙(로그인, 데이터베이스 사용자 또는 데이터베이스 역할 등)에 대해 보안 원칙(로그인, 데이터베이스 사용자 또는 데이터베이스 역할)에게 권한(예: UPDATE)을 부여하거나 거부하는 문장을 사용합니다.GRANTDENY 허가 또는 허가 거부를 해제하는 데 사용 REVOKE 하세요.

서버 수준 사용 권한은 로그인에 적용됩니다. 데이터베이스 수준 사용 권한은 데이터베이스 사용자 및 데이터베이스 역할에 적용됩니다.

어떤 사용 권한이 부여 및 거부되었는지 보려면 sys.server_permissions 및 sys.database_permissions 뷰를 쿼리합니다. 보안 주체에 명시적으로 부여되거나 거부되지 않은 사용 권한은 사용 권한이 있는 역할의 멤버 자격을 가짐으로써 상속될 수 있습니다. 고정 데이터베이스 역할의 사용 권한은 변경할 수 없으며 sys.server_permissions 및 sys.database_permissions 뷰에 표시되지 않습니다.

  • GRANT 명시적으로 하나 이상의 권한을 부여합니다.

  • DENY 명시적으로 주체가 하나 이상의 권한을 가질 수 없도록 부인합니다.

  • REVOKE 기존 GRANT 또는 DENY 권한을 제거합니다.

Transact-SQL 구문 표기 규칙

구문

-- Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
GRANT   
    <permission> [ ,...n ]  
    [ ON [ <class_type> :: ] securable ]   
    TO principal [ ,...n ]  
    [ WITH GRANT OPTION ]  
[;]  
  
DENY   
    <permission> [ ,...n ]  
    [ ON [ <class_type> :: ] securable ]   
    TO principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
REVOKE   
    <permission> [ ,...n ]  
    [ ON [ <class_type> :: ] securable ]   
    [ FROM | TO ] principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class_type> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

인수

<허가[>,... n ]
부여, 거부 또는 취소할 수있는 하나 이상의 사용 권한.

ON [ <class_type> :: ] securableON 절은 사용 권한을 부여, 거부 또는 취소하는 보안 개체 매개 변수를 설명합니다.

<class_type> 보안 개체의 클래스 형식입니다. 이는 , DATABASE, 객체, SCHEMA, ROLE, 일 등이 USERLOGIN수 있습니다. 사용 권한은 또한 SERVERclass_type에 부여될 수 있지만, 그런 사용 권한에는 SERVER가 지정되지 않습니다. DATABASE 권한이 단어를 포함할 DATABASE 때 명시되지 않습니다(예: ALTER ANY DATABASE). class_type이 지정되지 권한 유형이 서버 또는 데이터베이스 클래스에 제한되지 않는 경우 클래스는 OBJECT로 간주됩니다.

securable
사용 권한을 부여, 거부 또는 취소 할 로그인, 데이터베이스, 테이블, 뷰, 스키마, 프로시저, 역할 또는 사용자의 이름입니다. 개체 이름은 Transact-SQL 구문 규칙에서 설명된 세 부분 명명 규칙을 사용하여 지정할 수 있습니다.

TO principal [ , ...n ]
사용 권한이 부여, 거부 또는 취소된 하나 이상의 보안 주체입니다. 보안 주체는 로그인, 데이터베이스 사용자 또는 데이터베이스 역할의 이름입니다.

FROM principal [ , ...n ]
사용 권한을 해지할 하나 이상의 보안 주체입니다. 보안 주체는 로그인, 데이터베이스 사용자 또는 데이터베이스 역할의 이름입니다. FROM 은 문장과 함께 REVOKE 사용할 수 있습니다. TO는 , , DENY또는 REVOKE와 함께 GRANT사용할 수 있습니다.

옵션 포함 GRANT
지정된 사용 권한을 다른 보안 주체에게 부여할 수 있는 권한도 피부여자에게 제공됨을 나타냅니다.

CASCADE
지정된 보안 주체와 이 보안 주체가 사용 권한을 부여한 다른 모든 보안 주체에 대해 사용 권한이 거부됨 또는 취소됨을 나타냅니다. 교장이 OPTION과 함께 허가GRANT를 받을 때 필요합니다.

GRANT 옵션
지정된 사용 권한을 부여할 수 있는 권한이 취소됨을 나타냅니다. CASCADE 인수를 사용할 경우 이 인수가 필요합니다.

중요

만약 주인이 해당 권한이 GRANT 있지만 옵션이 없다면, 그 권한 자체가 취소됩니다.

사용 권한

허가를 부여하려면, 부여자는 WITH GRANT 옵션을 가진 허가 자체를 갖고 있거나, 허가가 부여된다는 것을 암시하는 더 높은 권한을 가져야 합니다. 개체 소유자는 소유하고 있는 개체에 대한 사용 권한을 부여할 수 있습니다. 보안 개체에 대한 CONTROL 사용 권한을 가진 보안 주체는 해당 보안 개체에 대한 사용 권한을 부여할 수 있습니다. db_ownerdb_ddlowner 고정 데이터베이스 역할의 멤버는 데이터베이스에서 어떤 사용 권한도 부여할 수 있습니다.

일반적인 주의 사항

보안 주체에 대한 사용 권한을 거부하거나 취소해도 권한 부여를 통과했고 현재 실행중인 요청에는 영향을 주지 않습니다. 액세스를 즉시 제한하려면 활성 요청을 취소하거나 현재 세션을 종료해야합니다.

참고

이 릴리스에서는 대부분의 고정 서버 역할을 사용할 수 없습니다. 사용자 정의 데이터베이스 역할을 대신 사용합니다. 로그인은 sysadmin 고정 서버 역할에 추가될 수 없습니다. CONTROL SERVER 사용 권한 부여는 sysadmin 고정 서버 역할의 멤버 자격을 갖는 것과 비슷합니다.

일부 문은 여러 사용 권한을 필요로 합니다. 예를 들어, 테이블을 생성하려면 데이터베이스의 권한이 필요하고ALTER SCHEMA, 그 테이블이 포함된 테이블에 대한 권한이 필요합니다CREATE TABLE.

분석 플랫폼 시스템(PDW)은 때때로 저장 프로시저를 실행하여 사용자 작업을 컴퓨팅 노드에 배포합니다. 따라서 전체 데이터베이스에 대한 실행 권한을 거부 할 수 없습니다. (예를 들어 DENY EXECUTE ON DATABASE::<name> TO <user>;은 오류가 발생합니다.) 해결 방법으로 사용자 스키마 또는 특정 개체(프로시저)에 대한 실행 권한을 거부합니다.

현재 Microsoft Fabric에서는 명 CREATE USER 시적으로 실행할 수 없습니다. 또는 실행되면 GRANTDENY 사용자가 자동으로 생성됩니다.

Microsoft Fabric에서는 서버 수준 권한을 관리할 수 없습니다.

암시적 및 명시적 사용 권한

명시적 사용 권한GRANT 보안 주체에 지정된 사용 권한 또는 DENYGRANT 명령문입니다DENY.

암묵적 권한은 주체(로그인, 사용자 또는 데이터베이스 역할)가 다른 데이터베이스 역할로부터 상속받은 권한을 의미합니다 GRANTDENY.

암시적 권한은 또한 포괄적 또는 상위 권한을 상속할 수도 있습니다. 예를 들어, 테이블에 대한 권한은 UPDATE 테이블을 포함하는 스키마에 대한 권한이나 테이블에 대한 CONTROL 권한으로 UPDATE 상속될 수 있습니다.

소유권 체인

여러 데이터베이스 개체가 서로를 순차적으로 액세스하는 경우 이러한 시퀀스를 체인이라고 합니다. 이러한 체인이 독립적으로 존재하지는 않지만 SQL Server가 체인에 있는 링크를 통과할 때 SQL Server는 개체를 개별적으로 액세스할 때와는 달리 구성된 개체에 대한 사용 권한을 평가합니다. 소유권 체인은 보안 관리에 중요한 영향을 줍니다. 소유권 체인에 대한 자세한 내용은 소유권 체인자습서: 소유권 체인 및 컨텍스트 전환을 참조하세요.

허가 목록

서버 수준 사용 권한

서버 수준 권한은 로그인에서 부여, 거부 및 취소할 수 있습니다.

서버에 적용되는 사용 권한

  • 제어 서버

  • 대량 작업 관리

  • 모든 연결 변경

  • 모든 DATABASE 수정

  • 아무거나 만들어 DATABASE

  • 모든 EXTERNAL DATA SOURCE 수정

  • 모든 EXTERNAL FILE FORMAT 수정

  • 모든 LOGIN 수정

  • 서버 상태 변경

  • SQL 연결

  • VIEW 모든 정의

  • VIEW 아무 이유 없이요 DATABASE

  • VIEW 서버 상태

로그인에 적용되는 권한

  • 조종 켜짐 LOGIN

  • 알터 온 LOGIN

  • 사칭해 LOGIN

  • VIEW 정의(DEFINITION)

데이터베이스 수준 사용 권한

데이터베이스 수준 사용 권한은 데이터베이스 사용자 및 사용자 정의 데이터베이스 역할에서 부여, 거부 및 취소할 수 있습니다.

모든 데이터베이스 클래스에 적용되는 권한

  • CONTROL

  • ALTER

  • VIEW 정의(DEFINITION)

사용자를 제외한 모든 데이터베이스 클래스에 적용되는 권한

  • 소유권 획득

데이터베이스에만 적용되는 권한

  • 모든 DATABASE 수정

  • 알터 온 DATABASE

  • 모든 DATASPACE 변경

  • 모든 ROLE 수정

  • 모든 SCHEMA 수정

  • 모든 USER 수정

  • BACKUP DATABASE

  • 연결하세요 DATABASE

  • CREATE PROCEDURE

  • CREATE ROLE

  • CREATE SCHEMA

  • CREATE TABLE

  • CREATE VIEW

  • SHOWPLAN

사용자에게만 적용되는 권한

  • IMPERSONATE

데이터베이스, 스키마 및 개체에 적용되는 권한

  • ALTER

  • DELETE

  • CREATE 문을 실행하기 전에

  • INSERT

  • SELECT

  • UPDATE

  • REFERENCES

각 사용 권한 유형에 대한 정의는 사용 권한(데이터베이스 엔진)을 참조하세요.

기본 사용 권한

다음 목록에서는 기본 사용 권한을 설명합니다.

  • 문장을 사용하여 CREATE LOGIN 로그인이 생성되면 새 로그인은 CONNECT SQL 권한을 받습니다.

  • 모든 로그인은 public 서버 역할의 멤버이며 public에서 제거할 수 없습니다.

  • 권한을 사용하여 CREATE USER 데이터베이스 사용자가 생성되면, 데이터베이스 사용자는 데이터베이스에서 CONNECT 권한을 받게 됩니다.

  • public 역할을 포함하여 모든 보안 주체는 기본적으로 명시적 또는 암시적 사용 권한이 없습니다.

  • 로그인 또는 사용자가 데이터베이스 또는 개체의 소유자가 되면 로그인 또는 사용자는 항상 데이터베이스 또는 개체에 대한 모든 사용 권한을 가집니다. 소유권 사용 권한은 변경할 수 없으며 명시적 사용 권한으로 표시되지 않습니다. GRANT DENY, , 그리고 REVOKE 진술은 소유자에게 영향을 미치지 않습니다.

  • sa 로그인은 어플라이언스에 대한 모든 사용 권한을 가집니다. 소유권 사용 권한과 마찬가지로 sa 사용 권한도 변경할 수 없으며 명시적 사용 권한으로 표시되지 않습니다. , , 그리고 REVOKE 문장은 SA 로그인에 영향을 미치지 않습니다.GRANTDENY sa 로그인은 이름을 바꿀 수 없습니다.

  • USE 문은 사용 권한이 필요하지 않습니다. 모든 보안 주체는 모든 데이터베이스에서 USE 문을 실행할 수 있습니다.

예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)

A. 로그인에 서버 수준 사용 권한 부여

다음 두 문은 로그인에 서버 수준 사용 권한을 부여합니다.

GRANT CONTROL SERVER TO [Ted];  
GRANT ALTER ANY DATABASE TO Mary;  

B. 로그인에 서버 수준 사용 권한 부여

다음 예에서는 서버 보안 주체(다른 로그인)에 하는 로그인에 서버 수준 사용 권한을 부여합니다.

GRANT  VIEW DEFINITION ON LOGIN::Ted TO Mary;  

C. 사용자에게 데이터베이스 수준 사용 권한 부여

다음 예에서는 데이터베이스 보안 주체(다른 사용자)의 사용자에게 데이터베이스 수준 사용 권한을 부여합니다.

GRANT VIEW DEFINITION ON USER::[Ted] TO Mary;  

D. 스키마 사용 권한 부여, 거부 및 취소

다음 GRANT 문장은 Yuen이 dbo 스키마 내 어떤 테이블이나 뷰에서도 데이터를 선택할 수 있는 권한을 부여합니다.

GRANT SELECT ON SCHEMA::dbo TO [Yuen];  

다음 DENY 문장은 위엔이 DBO 스키마 내 어떤 테이블이나 뷰에서도 데이터를 선택할 수 없도록 막습니다. Yuen은 역할 멤버 자격과 같은 일부 다른 방법으로 사용 권한을 가졌다 하더라도 데이터를 읽을 수 없습니다.

DENY SELECT ON SCHEMA::dbo TO [Yuen];  

다음 REVOKE 문장은 권한을 제거합니다 DENY . 현재 Yuen의 명시적 사용 권한은 중립적입니다. Yuen은 역할 멤버 자격과 같은 일부 다른 암시적 사용 권한을 통해 모든 테이블에서 데이터를 선택할 수 있습니다.

REVOKE SELECT ON SCHEMA::dbo TO [Yuen];  

E. 선택적 OBJECT :: 절 표시

OBJECT는 사용 권한 문에 대한 기본 클래스이므로 다음 두 명령문은 동일합니다. OBJECT:: 절은 선택 사항입니다.

GRANT UPDATE ON OBJECT::dbo.StatusTable TO [Ted];  
GRANT UPDATE ON dbo.StatusTable TO [Ted];