temporal 테이블 보안
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance
temporal 테이블에 적용되는 보안을 이해하려면 temporal 테이블에 적용되는 보안 원칙을 이해해야 합니다. 이러한 보안 원칙을 이해한 이후에 CREATE TABLE
, ALTER TABLE
및 SELECT
문에 대한 보안을 자세히 파악할 수 있습니다.
보안 원칙
다음 표는 temporal 테이블에 적용되는 보안 원칙에 대해 설명합니다.
원칙 | 설명 |
---|---|
시스템 버전 관리를 사용/사용 중지하려면 영향을 받는 개체에 대한 가장 높은 권한이 필요합니다. | SYSTEM_VERSIONING 을 사용 및 사용 중지하려면 현재 테이블과 기록 테이블 모두에 대한 CONTROL 권한이 필요합니다. |
기록 데이터를 직접 수정할 수 없습니다. | SYSTEM_VERSIONING 이 ON 일 경우 사용자가 현재 또는 기록 테이블에 대해 가지고 있는 실제 권한과 상관없이 기록 데이터를 수정할 수 없습니다. 이러한 제한에는 데이터와 스키마 수정이 모두 포함됩니다. 1 |
기록 데이터를 쿼리하려면 기록 테이블에 대해 SELECT 권한이 있어야 합니다. |
현재 테이블에 대한 SELECT 권한이 있는 사용자에게는 기록 테이블에 대한 SELECT 권한이 자동으로 부여되지 않습니다. |
감사에서 특정 방식으로 기록 테이블에 영향을 미치는 작업이 드러났습니다. | 현재 테이블의 감사 설정은 자동으로 기록 테이블에 적용되지 않습니다. 감사는 기록 테이블에 대해 명시적으로 사용하도록 설정해야 합니다. 이를 사용하면 기록 테이블에 대한 감사는 성공 여부에 관계없이 데이터에 액세스하려는 모든 직접 시도를 정기적으로 캡처합니다. temporal 쿼리 확장이 있는 SELECT 에서는 기록 테이블이 해당 작업에 영향을 받았음을 보여줍니다.CREATE/ALTER temporal 테이블에는 권한 검사가 기록 테이블에서도 발생하는 정보가 표시됩니다. 감사 파일에는 기록 테이블의 추가 레코드가 포함됩니다.현재 테이블에 대한 DML 작업은 기록 테이블이 영향을 받았음을 보여주지만 additional_information 은 필요한 컨텍스트를 제공합니다(DML은 SYSTEM_VERSIONING 의 결과임). |
1 현재 테이블과 기록 테이블에 ALTER 권한이 있는 경우 현재 테이블에서 열을 삭제하면 SYSTEM_VERSIONING
이 ON
인 경우에도 기록 테이블의 관련 열도 삭제됩니다.
스키마 작업 수행
SYSTEM_VERSIONING
이 ON
으로 설정되면 스키마 수정 작업이 제한됩니다.
허용되지 않는 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
권한이 필요합니다.