다음을 통해 공유


temporal 테이블 보안

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance

temporal 테이블에 적용되는 보안을 이해하려면 temporal 테이블에 적용되는 보안 원칙을 이해해야 합니다. 이러한 보안 원칙을 이해한 이후에 CREATE TABLE, ALTER TABLESELECT 문에 대한 보안을 자세히 파악할 수 있습니다.

보안 원칙

다음 표는 temporal 테이블에 적용되는 보안 원칙에 대해 설명합니다.

원칙 설명
시스템 버전 관리를 사용/사용 중지하려면 영향을 받는 개체에 대한 가장 높은 권한이 필요합니다. SYSTEM_VERSIONING을 사용 및 사용 중지하려면 현재 테이블과 기록 테이블 모두에 대한 CONTROL 권한이 필요합니다.
기록 데이터를 직접 수정할 수 없습니다. SYSTEM_VERSIONINGON일 경우 사용자가 현재 또는 기록 테이블에 대해 가지고 있는 실제 권한과 상관없이 기록 데이터를 수정할 수 없습니다. 이러한 제한에는 데이터와 스키마 수정이 모두 포함됩니다. 1
기록 데이터를 쿼리하려면 기록 테이블에 대해 SELECT 권한이 있어야 합니다. 현재 테이블에 대한 SELECT 권한이 있는 사용자에게는 기록 테이블에 대한 SELECT 권한이 자동으로 부여되지 않습니다.
감사에서 특정 방식으로 기록 테이블에 영향을 미치는 작업이 드러났습니다. 현재 테이블의 감사 설정은 자동으로 기록 테이블에 적용되지 않습니다. 감사는 기록 테이블에 대해 명시적으로 사용하도록 설정해야 합니다. 이를 사용하면 기록 테이블에 대한 감사는 성공 여부에 관계없이 데이터에 액세스하려는 모든 직접 시도를 정기적으로 캡처합니다.

temporal 쿼리 확장이 있는 SELECT에서는 기록 테이블이 해당 작업에 영향을 받았음을 보여줍니다.

CREATE/ALTER temporal 테이블에는 권한 검사가 기록 테이블에서도 발생하는 정보가 표시됩니다. 감사 파일에는 기록 테이블의 추가 레코드가 포함됩니다.

현재 테이블에 대한 DML 작업은 기록 테이블이 영향을 받았음을 보여주지만 additional_information은 필요한 컨텍스트를 제공합니다(DML은 SYSTEM_VERSIONING의 결과임).

1 현재 테이블과 기록 테이블에 ALTER 권한이 있는 경우 현재 테이블에서 열을 삭제하면 SYSTEM_VERSIONINGON인 경우에도 기록 테이블의 관련 열도 삭제됩니다.

스키마 작업 수행

SYSTEM_VERSIONINGON으로 설정되면 스키마 수정 작업이 제한됩니다.

허용되지 않는 ALTER 스키마 작업

연산 현재 테이블 기록 테이블
DROP TABLE 허용되지 않음 허용되지 않음
ALTER TABLE...SWITCH PARTITION SWITCH IN만(temporal 테이블을 사용한 파티션 참조) SWITCH OUT만(temporal 테이블을 사용한 파티션 참조)
ALTER TABLE...DROP PERIOD 허용되지 않음 해당 없음
ALTER TABLE...ADD PERIOD 해당 없음 허용되지 않음

허용되는 ALTER TABLE 작업

연산 현재 기록
ALTER TABLE...REBUILD 허용됨(독립적) 허용됨(독립적)
CREATE INDEX 허용됨(독립적) 허용됨(독립적)
CREATE STATISTICS 허용됨(독립적) 허용됨(독립적)

CREATE temporal 테이블 문의 보안

기능 새 기록 테이블 만들기 기존 기록 테이블 다시 사용
필요한 권한 데이터베이스의 CREATE TABLE 권한

현재 및 기록 테이블을 만들고 있는 스키마에 대한 ALTER 권한
데이터베이스의 CREATE TABLE 권한

현재 및 기록 테이블을 만드는 스키마에 대한 ALTER 권한

temporal 테이블을 만드는 CREATE TABLE 문의 일부로 지정된 기록 테이블에 대한 CONTROL 권한
감사 감사를 실행할 경우 사용자가 두 개의 개체를 만들려는 시도를 했음이 표시됩니다. 데이터베이스에 테이블을 만들 수 있는 권한이 없거나, 두 테이블의 스키마를 변경할 수 있는 권한이 없어 작업이 실패할 수 있습니다. 감사는 temporal 테이블이 생성되었음을 보여줍니다. 데이터베이스에 테이블을 생성할 수 있는 권한이 없거나, temporal 테이블의 스키마를 변경할 수 있는 권한이 없거나, 기록 테이블에 대한 권한이 없어서 작업이 실패할 수 있습니다.

ALTER temporal 테이블 SET(SYSTEM_VERSIONING ON/OFF) 문의 보안

기능 새 기록 테이블 만들기 기존 기록 테이블 다시 사용
필요한 권한 데이터베이스의 CONTROL 권한.

데이터베이스의 CREATE TABLE 권한.

기록 테이블을 만들고 있는 스키마에 대한 ALTER 권한
변경된 원래 테이블에 대한 CONTROL 권한

ALTER TABLE 문의 일부로 지정된 기록 테이블에 대한 CONTROL 권한
감사 감사 시 temporal 테이블이 수정되었으며 그와 동시에 기록 테이블이 생성되었다는 내용이 표시됩니다. 이 작업은 데이터베이스에 테이블을 생성할 수 있는 권한이 없거나, 기록 테이블의 스키마를 변경할 수 있는 권한이 없거나, temporal 테이블을 수정할 수 있는 권한이 없어서 실패할 수 있습니다. 감사 시 temporal 테이블이 수정되었지만 해당 작업에서 기록 테이블에 대한 액세스가 필요하다는 내용이 표시됩니다. 작업은 기록 테이블에 대한 권한이 없거나, 현재 테이블에 대한 권한이 없어 실패할 수 있습니다.

SELECT 문의 보안

기록 테이블에 영향을 미치지 않는SELECT 문에 대한 SELECT 권한은 변경되지 않습니다. 기록 테이블에 영향을 미치는 SELECT 문의 경우 현재 테이블과 기록 테이블에 대한 SELECT 권한이 필요합니다.