KR102209451B1 - 데이터베이스 보안 - Google Patents

데이터베이스 보안 Download PDF

Info

Publication number
KR102209451B1
KR102209451B1 KR1020177013940A KR20177013940A KR102209451B1 KR 102209451 B1 KR102209451 B1 KR 102209451B1 KR 1020177013940 A KR1020177013940 A KR 1020177013940A KR 20177013940 A KR20177013940 A KR 20177013940A KR 102209451 B1 KR102209451 B1 KR 102209451B1
Authority
KR
South Korea
Prior art keywords
record
security label
component
security
foreign key
Prior art date
Application number
KR1020177013940A
Other languages
English (en)
Other versions
KR20170078714A (ko
Inventor
크리스토퍼 제이. 윈터스
Original Assignee
아브 이니티오 테크놀로지 엘엘시
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아브 이니티오 테크놀로지 엘엘시 filed Critical 아브 이니티오 테크놀로지 엘엘시
Publication of KR20170078714A publication Critical patent/KR20170078714A/ko
Application granted granted Critical
Publication of KR102209451B1 publication Critical patent/KR102209451B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems

Abstract

본 발명의 방법은, 다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내의 각각의 제 1 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 단계로서: 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 2 레코드를 식별하는 것; 상기 제 2 레코드에 대한 보안 라벨의 성분을 식별하는 것; 및 상기 제 2 레코드에 대한 보안 라벨의 식별된 성분에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 것을 포함하는, 결정하는 단계를 포함한다. 이러한 방법은 결정된 보안 라벨을 레코드 내에 저장하는 것을 포함한다.

Description

데이터베이스 보안{DATABASE SECURITY}
관련 출원에 대한 상호참조
본 출원은 2014 년 11 월 5 일에 출원된 미국 가출원 번호 제 62/075,593 호에 대한 우선권을 주장하는데, 그 전체 내용은 원용에 의하여 본 명세서에 통합된다.
본 발명은 데이터베이스 보안에 관한 것이다. 데이터베이스는 각각 다수의 행을 포함할 수 있는 다수의 테이블을 포함할 수 있다. 데이터베이스에 저장된 데이터 레코드에 액세스하는 것은, 테이블 각각으로의 액세스를 제어하거나 한 테이블 내의 각각의 행으로의 액세스를 제어함으로써 제어될 수 있다. 행 수준에서의 보안은 각각의 오브젝트, 예컨대 각각의 행과 연관된 보안 라벨을 사용함으로써 제공될 수 있다.
일 양태에서, 본 발명의 방법은, 다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내의 각각의 제 1 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 단계로서: 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 2 레코드를 식별하는 것; 상기 제 2 레코드에 대한 보안 라벨의 성분을 식별하는 것; 및 상기 제 2 레코드에 대한 보안 라벨의 식별된 성분에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 것을 포함하는, 결정하는 단계를 포함한다. 이러한 방법은 결정된 보안 라벨을 레코드 내에 저장하는 것을 포함한다.
실시예들은 후속하는 피쳐들 중 하나 이상을 포함할 수 있다.
이러한 방법은, 각각의 외부키 관련성에 따라 상기 제 1 레코드에 각각 관련된 다수의 제 2 레코드들을 식별하는 단계; 상기 제 2 레코드들 각각에 대한 보안 라벨의 성분을 식별하는 단계; 및 상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들 각각에 대한 값에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 단계를 포함한다.
제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 단계는, 상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들에 대한 다수의 별개의 값들을 연쇄시키는(concatenating) 것을 포함한다.
보안 라벨의 성분에 대한 값을 할당하는 단계는, 상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들에 대한 값들 중에서 최고 우선순위 값을 식별하는 것; 및 상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값으로서 상기 최고 우선순위 값을 할당하는 것을 포함한다.
이러한 방법은, 레코드의 속성에 기초하여, 상기 데이터베이스의 제 3 테이블 내의 각각의 제 3 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 단계로서, 상기 레코드의 속성은 상기 레코드에 저장된 값인, 단계를 포함한다.
이러한 방법은, 상기 제 3 테이블과 연관된 값에 기초하여, 상기 데이터베이스의 제 3 테이블 내의 각각의 제 3 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 단계를 포함한다.
제 2 레코드는 상기 제 1 테이블이 아닌 테이블 내에 있다.
이러한 성분은 상기 레코드에 대한 보안 라벨의 제 1 성분이고, 본 발명의 방법은 상기 보안 라벨의 제 2 성분을 결정하는 단계를 포함한다.
이러한 방법은, 트리거 이벤트에 응답하여, 특정한 제 1 레코드에 대한 보안 라벨의 성분을 업데이트하는 단계를 포함한다.
트리거 이벤트는, 상기 외부키 관련성의 변경을 포함한다.
트리거 이벤트는 상기 특정한 제 1 레코드에 관련된 제 2 레코드에 대한 보안 라벨의 성분의 변경을 포함한다.
이러한 방법은, 트리거 이벤트를 검출하는 단계를 포함한다.
본 발명의 방법은, 상기 트리거 이벤트의 통지를 수신하는 단계를 포함한다.
본 발명의 방법은, 사용자로부터 특정한 제 1 레코드로의 액세스를 위한 요청을 수신하는 단계로서, 상기 사용자는 사용자 보안 코드와 연관되는, 단계를 포함한다.
본 발명의 방법은, 상기 사용자와 연관된 사용자 보안 코드의 성분과 상기 특정한 제 1 레코드에 대한 보안 라벨의 성분의 비교에 기초하여, 상기 사용자에 의한 상기 특정한 제 1 레코드로의 액세스를 제한하는 단계를 포함한다.
이러한 방법은, 상기 액세스를 위한 요청을 수신하기 이전에, 상기 레코드에 대한 보안 라벨을 결정하는 단계를 포함한다.
이러한 방법은, 특정한 제 1 레코드가 상기 데이터베이스에 저장되기 위해 수신되면, 상기 제 1 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 단계를 포함한다.
일 양태에서, 비-일시적 컴퓨터-판독가능 매체는, 컴퓨팅 시스템이: 다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내의 각각의 제 1 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 동작으로서: 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 2 레코드를 식별하는 것; 상기 제 2 레코드에 대한 보안 라벨의 성분을 식별하는 것; 및 상기 제 2 레코드에 대한 보안 라벨의 식별된 성분에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 것을 포함하는, 동작; 및 결정된 보안 라벨을 상기 레코드에 저장하는 동작을 수행하게 하는 명령을 저장한다.
일 양태에서, 컴퓨팅 시스템은 메모리에 연결된 프로세서를 포함하고, 상기 프로세서 및 메모리는: 다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내의 각각의 제 1 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 동작으로서: 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 2 레코드를 식별하는 것; 상기 제 2 레코드에 대한 보안 라벨의 성분을 식별하는 것; 및 상기 제 2 레코드에 대한 보안 라벨의 식별된 성분에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 것을 포함하는, 동작; 및 결정된 보안 라벨을 상기 레코드에 저장하는 동작을 수행하도록 구성된다.
일 양태에서, 컴퓨팅 시스템은, 다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내의 각각의 제 1 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 동작으로서: 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 2 레코드를 식별하는 것; 상기 제 2 레코드에 대한 보안 라벨의 성분을 식별하는 것; 및 상기 제 2 레코드에 대한 보안 라벨의 식별된 성분에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 것을 포함하는, 동작을 수행하기 위한 수단; 및 결정된 보안 라벨을 상기 레코드에 저장하는 동작을 수행하기 위한 수단을 포함한다.
일 양태에서, 본 발명의 방법은 다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내에 저장된 제 1 레코드가 업데이트되었다고 결정하는 단계; 상기 제 1 레코드에 대한 제 1 보안 라벨을 자동으로 업데이트하는 단계; 상기 레코드 내에 상기 업데이트된 보안 라벨을 저장하는 단계; 및 상기 데이터베이스의 제 2 테이블 내에 저장된 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하는 단계로서, 상기 제 2 레코드는 외부키 관련성에 따라 상기 제 1 레코드에 관련되는, 단계를 포함한다.
실시예들은 후속하는 피쳐들 중 하나 이상을 포함할 수 있다.
본 발명의 방법은, 상기 제 1 레코드에 대한 업데이트가 상기 제 1 레코드에 대한 제 1 보안 라벨에 영향을 주는지 여부를 결정하는 단계를 포함한다.
본 발명의 방법은, 상기 제 1 보안 라벨의 다수의 성분 중 하나 이상의 어떤 성분이 상기 제 1 레코드에 대한 업데이트에 의해 영향받는지 결정하는 단계; 및 상기 제 1 보안 라벨의 하나 이상의 영향받은 성분을 자동으로 업데이트하는 단계를 포함한다.
제 2 테이블은 상기 제 1 테이블의 자식(child)이다.
본 발명의 방법은, 상기 제 1 레코드에 대한 업데이트가 상기 외부키 관련성에 영향을 주는지 여부를 결정하는 단계를 포함한다.
본 발명의 방법은, 다수의 외부키 관련성 중 하나 이상의 어떤 외부키 관련성이 상기 제 1 레코드에 대한 업데이트에 의해 영향받는지 결정하는 단계; 및 상기 영향받은 외부키 관련성에 따라, 상기 제 1 레코드에 관련된 각각의 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하는 단계를 포함한다.
일 양태에서, 비-일시적 컴퓨터-판독가능 저장 매체는, 컴퓨팅 시스템이: 다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내에 저장된 제 1 레코드가 업데이트되었다고 결정하고; 상기 제 1 레코드에 대한 제 1 보안 라벨을 자동으로 업데이트하며; 상기 레코드 내에 상기 업데이트된 보안 라벨을 저장하고; 상기 데이터베이스의 제 2 테이블 내에 저장된 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하게 하는 명령을 저장하고, 상기 제 2 레코드는 외부키 관련성에 따라 상기 제 1 레코드에 관련된다.
일 양태에서, 컴퓨팅 시스템은 메모리에 연결된 프로세서를 포함하고, 상기 프로세서 및 메모리는: 다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내에 저장된 제 1 레코드가 업데이트되었다고 결정하고; 상기 제 1 레코드에 대한 제 1 보안 라벨을 자동으로 업데이트하며; 상기 레코드 내에 상기 업데이트된 보안 라벨을 저장하고; 상기 데이터베이스의 제 2 테이블 내에 저장된 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하도록 구성되고, 상기 제 2 레코드는 외부키 관련성에 따라 상기 제 1 레코드에 관련된다.
일 양태에서, 컴퓨팅 시스템은, 다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내에 저장된 제 1 레코드가 업데이트되었다고 결정하기 위한 수단; 상기 제 1 레코드에 대한 제 1 보안 라벨을 자동으로 업데이트하기 위한 수단; 상기 레코드 내에 상기 업데이트된 보안 라벨을 저장하기 위한 수단; 및 상기 데이터베이스의 제 2 테이블 내에 저장된 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하기 위한 수단으로서, 상기 제 2 레코드는 외부키 관련성에 따라 상기 제 1 레코드에 관련되는, 수단을 포함한다.
다른 특징들, 및 이점들은 후속하는 상세한 설명 및 청구항들로부터 명확해질 것이다.
도 1 은 블록도이다.
도 2a 는 데이터베이스 시스템의 일 예이다.
도 2b 는 사용자 액세스 제한의 일 예이다.
도 3 및 도 4 는 블록도들이다.
도 5 내지 도 8 은 흐름도들이다.
도 9 는 블록도이다.
데이터베이스의 테이블 내의 행들에게 행-레벨 보안을 제공하기 위한 접근법이 설명된다. 테이블 내의 각각의 행은 데이터 레코드를 나타낸다. 보안 라벨이 각각의 행에 저장되고, 행으로의 액세스를 제어하기 위해, 예를 들어 어떤 사용자가 해당 행에 의해 표현되는 데이터 레코드로 액세스하도록 허용되고, 어떤 사용자에게 해당 행에 의해 표현되는 데이터 레코드로의 액세스가 제한되는지를 표시하기 위해 사용될 수 있다. 어떤 테이블 내의 행에 대한 보안 라벨은, 해당 행 외부의 정보, 해당 행 내부의 정보, 및 해당 테이블에 고유한 정보 중 하나 이상에 기초하여 결정될 수 있다. 가끔 상속(inheritance)라고도 불리는 보안 라벨의 전달은, 적어도 부분적으로 하나 이상의 관련된 행의 보안 라벨에 기초하여 어떤 행의 보안 라벨을 결정하기 위한 메커니즘이다. 예를 들면, 데이터베이스의 테이블에 있는 행은 자신의 보안 라벨의 성분을 동일한 테이블 또는 외부키 관련성을 통해 해당 행에 관련된 다른 테이블에 있는 다른 행으로부터 상속할 수 있다. 보안 라벨의 상속은, 예를 들면 어떤 사용자가 주어진 데이터 레코드에 액세스가 제한되면, 그 사용자는 주어진 데이터 레코드에 의존하는 임의의 다른 데이터 레코드에 액세스하는 것도 제한되게 보장하도록 도울 수 있다.
한 행의 보안 라벨은 다수의 성분을 가질 수 있다. 테이블에 있는 행에 대한 보안 라벨의 성분 중 하나 이상은 해당 행 외부의 정보, 예컨대 동일한 테이블의 관련된 행에 있는 정보 또는 다른 테이블의 관련된 행에 있는 정보에 기초하여 결정될 수 있다. 어떤 행에 대한 보안 라벨의 성분 중 하나 이상은 해당 행 내부의 정보, 예컨대 행의 속성에 기초하여 결정될 수 있다. 어떤 테이블에 있는 행에 대한 보안 라벨의 성분 중 하나 이상은 테이블-고유 정보, 예컨대 해당 테이블과 연관된 상수 값에 기초하여 결정될 수 있다.
어떤 데이터 레코드(가끔 행 및 데이터 레코드라는 용어가 상호교환가능하도록 사용됨)에 대한 보안 라벨은 해당 데이터 레코드가 데이터베이스에 입력될 때에 결정될 수 있다. 데이터 레코드에 대한 보안 라벨은 트리거링 이벤트, 예컨대 데이터 레코드의 변경, 관련된 데이터 레코드의 변경, 또는 테이블-고유 정보의 변경에 응답하여 업데이트될 수 있다. 보안 라벨은 데이터 레코드에 저장되어, 해당 열로의 액세스에 대한 임의의 요청이 수신되기 전에 보안 라벨이 이미 계산되고 이용가능하게 한다. 행으로의 액세스를 위한 임의의 요청이 수신되기 이전에 그리고 수신되는 것과 무관하게 보안 라벨을 계산하는 것은 가끔 보안 라벨의 사전-계산이라고 불린다. 보안 라벨의 사전-계산은 장점들을 가질 수 있다. 예를 들면, 어떤 행에 대한 보안 라벨이 사전-계산되면, 사용자가 해당 행에 액세스하는 것이 제한되는지 여부에 대한 결정이, 해당 액세스 요청에 응답하여 실시간으로 보안 라벨을 계산하는 계산이 많이 소요되는 프로세스를 수행할 필요가 없이 신속하게 이루어질 수 있다.
여기에서 설명된 행-레벨 보안법에 의해, 데이터는 다수의 상호관련된 테이블을 가지는 데이터베이스 내에서 보안화된다. 이러한 데이터베이스에서, 하나의 테이블 내의 행들에 대한 보안 라벨은 관련된 다른 테이블에 있는 행들에 대한 보안 라벨에 적어도 부분적으로 기초하여 결정될 수 있다. 예를 들면, 사용자가 프로젝트 요약을 나타내는 데이터 레코드를 보지 못하게 제한된다면, 프로젝트 요약과 프로젝트 파이넨스를 나타내는 데이터 레코드들 사이의 관련성 때문에 그는 자동적으로 프로젝트 파이넨스를 나타내는 데이터 레코드로 볼 수 없게 될 수 있다. 데이터베이스에 보안화되어야 할 많은 행들이 있지만 보안성의 많은 부분이 다른 관련된 행들로부터 유추될 수 있다면, 이러한 관련성에 기초하여 보안 라벨을 결정하면 보안이 개선되고 유지보수 비용이 감소될 수 있다.
보안 라벨을 사전-계산하고 데이터 레코드 내에 보안 라벨을 저장하면, 데이터 레코드의 보안성이 쉽게 이해될 수 있고 효율적으로 액세스할 수 있게 된다. 이처럼 용이하게 보안 정보에 액세스할 수 있으면, 데이터베이스 시스템을 쉽게 감사(audit)할 수 있고, 보안 또는 정보 기술 전문가가 문제를 해결하는 것을 도울 수 있으며, 데이터베이스 내의 개개의 데이터 레코드와 연관된 승인 또는 제한을 이해하는 것을 수반하는 다른 활동을 쉽게 수행할 수 있다. 예를 들면, 어떤 데이터 레코드에 대한 보안 라벨을 해당 데이터 레코드 자체에 저장함으로써, 감사자(auditor) 또는 보안 전문가는 어떤 사용자가 그 데이터 레코드에 액세스하도록 승인되거나 액세스가 제한되는지를, 복잡한 계산을 수행하지 않고 별개의 보안 파일 또는 테이블을 참조하지 않고서도 해당 레코드를 검사함으로써 결정할 수 있다.
도 1 을 참조하면, 서버(101)에 호스팅된 데이터베이스(100)는 각각 하나 이상의 데이터 레코드를 포함하는 하나 이상의 테이블(50, 52, 54, 56)을 포함할 수 있다. 하나의 테이블은, 예를 들어 계층적 관련성 또는 다른 타입의 관련성으로 데이터베이스(100)내의 하나 이상의 다른 테이블에 관련될 수 있다. 두 개의 테이블들 사이의 관련성은, 예를 들어 자식 테이블이 하나 이상의 부모 테이블에 의존하는 부모-자식 관련성일 수 있다. 예를 들면, 도 1 의 예에서, 부서 테이블(52)은 화살표(62)로 표시된 바와 같이 디비전(division) 테이블(54)의 자식이다. 프로젝트 테이블(50)은, 예를 들어 화살표(64 및 66)로 표시되는 바와 같이 디비전 테이블(54) 및 지역 테이블(56) 모두의 자식이다. 부모 테이블은 가끔 업스트림 테이블이라고 불리고, 자식 테이블은 다운스트림 테이블이라고 불린다. 테이블들 사이에 다른 타입의 관련성이 있을 수도 있다.
보안 모듈(520)은 사용자(10)가 데이터베이스(100) 내의 데이터 레코드에 액세스하도록 허락되거나 액세스하지 못하도록 제한되는지를 결정한다. 사용자(10)라는 의미는, 데이터베이스(100) 내의 데이터 레코드에 액세스하고자 하는 임의의 사람 또는 엔티티를 가리킨다. 도 1 은 특정한 세 명의 사용자(10a, 10b, 10c)를 보여준다. 사용자 보안 코드(18)는, 예를 들어 사용자의 역할(예를 들어, 프로젝트 관리자, 부서 관리자, 중역, 또는 다른 역할), 사용자의 위치(예를 들어, 동북 디비전, 서방 디비전, 또는 다른 위치), 사용자의 보안 클리어런스(예를 들어, 최고급 비밀, 비밀, 공용, 또는 다른 클리어런스), 사용자의 부서(예를 들어, 인사부, 엔지니어링부, 마케팅부, 또는 다른 부서), 또는 다른 특성에 기초하여, 각각의 사용자(10)와 연관될 수 있다. 사용자(10)가 데이터베이스(100)에 있는 특정 데이터 레코드에 액세스하려고 요청하면, 보안 모듈(520)은 사용자의 사용자 보안 코드(18)와 특정 데이터 레코드의 보안 라벨의 비교에 기초하여 해당 사용자(10)가 특정 데이터 레코드에 액세스하도록 허락되거나 액세스하지 못하도록 제한되는지를 결정한다. 특정 데이터 레코드의 보안 라벨이 사용자의 액세스를 위한 요청을 수신하기 이전에 이미 결정되었기 때문에, 보안 모듈(520)은 해당 행에 대한 보안 라벨을 결정하는 많은 연산이 소요될 수 있는 과정을 수행하지 않고서, 사용자가 해당 데이터 레코드에 액세스하는 것이 제한되어야 한다고 신속하게 결정할 수 있다.
데이터베이스(100)에 액세스하는 것은 행 단위로 제한될 수 있다. 예를 들면, 테이블 내의 각각의 행은 동일한 테이블 내의 다른 행들 각각에 대한 보안 라벨로부터 그리고 데이터베이스(100) 내의 다른 테이블에 있는 행들 각각에 대한 보안 라벨로부터 독립적인, 자기 자신의 개별화된 보안 라벨을 가질 수 있다. 어떤 행에 대한 보안 라벨은, 해당 행 내부의 정보, 해당 행 외부의 정보, 테이블에 특정한 정보, 또는 이들 중 두 개 이상의 임의의 조합에 기초하여 독립적으로 각각 결정되는 하나 이상의 성분을 가지는 통합(consolidated) 보안 라벨일 수 있다. 각각의 행에 대한 보안 라벨은 그 행 자체에 있는 필드에 저장될 수 있다. 어떤 데이터 레코드에 대한 보안 라벨의 각각의 성분은 데이터 레코드로의 사용자 액세스의 제한 또는 데이터 레코드로의 사용자 액세스에 대한 승인을 나타낼 수 있다. 보안 모듈(520)은 특정 데이터 레코드에 저장된 하나 이상의 보안 라벨의 성분이, 특정 사용자 보안 코드(18)를 가진 사용자가 그러한 특정 데이터 레코드에 액세스하지 못하게 제한된다고 결정할 수 있다.
몇 가지 예들에서, 어떤 데이터 레코드의 보안 라벨의 성분은 데이터 레코드 내부의 정보, 예컨대 데이터 레코드의 하나 이상의 속성에 기초하여 결정된다. 데이터 레코드의 속성은 데이터 레코드의 필드에 저장된 수치와 같은 값, 문자열, 또는 다른 타입의 값이다. 속성은 역할(후술됨), 사용자, 사용자의 그룹, 비즈니스 라벨, 함수로의 입력, 또는 다른 정보와 같은 정보를 나타낼 수 있다. 일 예에서, 데이터 레코드의 속성은 데이터 레코드로 표현되는 회사 디비전의 식별자일 수 있고, 데이터 레코드에 대한 보안 라벨의 성분은 회사 디비전의 식별자에 기초하여 결정될 수 있다. 일 예에서, 데이터 레코드의 속성은 클리어런스 값일 수 있는데 이것은 해당 데이터 레코드가 극비(TS), 비밀(S), 또는 공용(P)인지 여부를 표시하고, 데이터 레코드에 대한 보안 라벨의 성분은 클리어런스 값에 기초하여 결정될 수 있다. 몇 가지 예들에서, 어떤 데이터 레코드에 대한 보안 라벨의 하나의 성분은 다수의 속성, 예컨대 기초하여 해당 데이터 레코드로 표현되는 회사 디비전의 식별자와 해당 데이터 레코드에 대한 클리어런스 값 양자 모두에 기초하여 결정될 수 있다. 몇 가지 예들에서, 어떤 데이터 레코드의 보안 라벨의 다수의 성분은 대응하는 속성에 기초하여 각각 결정될 수 있다.
몇 가지 예들에서, 어떤 데이터 레코드의 보안 라벨의 성분은 데이터 레코드 외부의 정보, 예컨대 동일한 테이블 또는 다른 테이블에 있는 관련된 데이터 레코드에 대한 보안 라벨의 성분에 기초하여 결정된다. 하나의 테이블에 있는 데이터 레코드는 외부키 관련성을 통해 동일한 테이블 또는 다른 테이블에 있는 행에 관련될 수 있다. 외부키는 제 2 데이터 레코드를 고유하게 식별함으로써 제 1 데이터 레코드와 제 2 데이터 레코드 사이에 링크를 구축하는 제 1 데이터 레코드에 저장된 값이다. 제 1 및 제 2 데이터 레코드는 동일한 테이블 또는 다른 테이블에 있을 수 있다. 가끔, 예를 들어 외부키 관련성 또는 다른 타입의 관련성을 통해 관련되는 행들이 관련된 행들이라고 불리고, 보안 라벨의 성분을 다른 테이블의 관련된 행에 있는 정보에 기초하여 결정하는 것은 보안 라벨의 성분의 상속이라고 불린다. 일 예에서, 자식 테이블 내의 각각의 데이터 레코드는 프로젝트를 나타내고, 외부키 관련성을 통해 회사 디비전을 나타내는 부모 테이블 내의 데이터 레코드와 관련된다. 프로젝트 테이블 내의 각각의 데이터 레코드는 자신의 보안 라벨의 성분을 회사 디비전 테이블 내의 관련된 데이터 레코드의 보안 라벨의 대응하는 성분으로부터 상속한다. 보안 라벨이 상속되면 고수준 액세스 제한이 저수준 테이블로 전파될 수 있다. 예를 들면, 보안 라벨이 상속되면, 사용자가 회사 디비전 테이블 내의 엔지니어링 디비전을 나타내는 데이터 레코드에 액세스하는 것이 제한된다, 사용자는 엔지니어링 디비전에 관련된 프로젝트 테이블 내의 프로젝트 데이터 레코드를 나타내는 임의의 데이터 레코드에 액세스하는 것이 역시 제한된다.
몇 가지 예들에서, 어떤 데이터 레코드에 대한 보안 라벨의 성분은 주어진 테이블에 속하는 모든 데이터 레코드에 대해서 일정하다. 예를 들면, 어떤 테이블 내의 모든 데이터 레코드는 보안 라벨의 성분으로서 상수 값을 가질 수 있고, 이러한 상수 값은 테이블의 속성이다. 일 예에서, 근로자의 임금을 나타내는 데이터 레코드를 포함하는 테이블에서, 모든 데이터 레코드는 보안 라벨의 "기밀(confidential)" 성분을 가질 수 있다.
어떤 행에 대한 보안 라벨의 성분은 다수의 다른 행들로부터 상속된 값들에 기초할 수 있다. 몇 가지 예들에서, 다른 행으로부터 얻어진 다수의 값들은 연쇄적으로 연결되어 해당 행에 대한 보안 라벨의 성분을 형성한다. 여러 값들은 알파벳 순서, 숫자 순서, 해당 행과 각각의 다른 행 사이의 관련성에 기초한 순서, 또는 다른 순서로 연결될 수 있다. 몇 가지 예들에서, 다수의 값들은 정렬되거나 계층적인 목록의 일부일 수 있고, 여러 값들 중에서 최고 우선순위의 하나의 값만이 해당 행에 대한 보안 라벨의 성분으로서 사용된다. 예를 들면, 하나의 관련된 행이 높은 우선순위 값(예를 들어, "TS")이 있는 성분을 가지고 다른 관련된 행이 더 낮은 우선순위 값(예를 들어, "S")이 있는 성분을 가지면, 이러한 두 행들에 기초한 상속된 성분은 높은 우선순위 값("TS")을 취할 것이다.
어떤 행에 대한 보안 라벨의 성분은 여러 인자들에 기초할 수 있다. 일 예에서, 어떤 행에 대한 보안 라벨의 성분은 행의 속성과 관련된 행으로부터 상속된 값 양자 모두에 기초할 수 있다. 보안 라벨의 성분은 이러한 속성과 상속된 값의 연쇄연결일 수 있고, 속성 및 상속된 값 중에서 더 높은 우선순위 값을 취할 수 있으며, 또는 다른 방식으로 결합될 수 있다.
어떤 행에 대한 보안 라벨은 다수의 성분(가끔 통합 보안 라벨이라고 불림)을 가질 수 있고, 각각의 성분은 각각의 다른 성분으로부터 독립적으로 결정된다. 어떤 행에 대한 보안 라벨은 행의 속성에 기초하여 결정된 하나 이상의 성분, 상속에 의해 결정된 하나 이상의 성분, 테이블-고유 정보에 기초하여 결정된 하나 이상의 성분, 또는 이들 중 임의의 두 개 이상의 결합을 포함할 수 있다.
몇 가지 외부키 관련성은 무효화될 수 있는데(nullable), 이것은 해당 외부키가 오류를 일으키지 않고 어떤 데이터 레코드에 대해서는 누락될 수 있다는 것을 의미한다. 보안 라벨의 성분이 무효가능 외부키를 통해 상속에 의해 결정된다면, 해당 성분에 대한 디폴트 옵션이 규정될 수 있다. 디폴트 옵션은 해당 보안 라벨의 성분에 디폴트 값을 할당하는 것; 외부키 관련성을 무시하고 해당 보안 라벨의 성분을 빈 상태로 놓아두는 것; 또는 해당 성분에 대한 값을 다른 인자에 기초하여 결정하는 것일 수 있다. 몇 가지 외부키 관련성은 무효화될 수 없는데(non-nullable), 이것은 해당 외부키에 대해 아무 값이 없으면 오류가 생긴다는 것을 의미한다. 어떤 보안 라벨의 성분이 비-무효가능 외부키를 통해 상속에 의해 결정되면, 디폴트는 규정되지 않는다.
하나 이상의 테이블-고유 규칙이 보안 라벨의 각각의 성분이 테이블 내의 각각의 레코드에 대해 어떻게 결정되는지를 규정한다. 테이블-고유 규칙은 테이블 내의 각각의 데이터 레코드의 보안 라벨의 각각의 성분에 대하여, 해당 보안 라벨의 성분을 결정하는 데에 사용될 속성, 외부키, 및 상수 중 하나 이상을 규정할 수 있다. 테이블-고유 규칙은 여러 값들이 연쇄돼야 하는지, 계층성 또는 정렬된 목록으로서 취급돼야 하는지, 또는 그렇지 않는지를 규정할 수 있다. 테이블-고유 규칙은 어떤 외부키 관련성이 널(null)인 경우 디폴트를 규정할 수 있다. 다른 규칙도 역시 규정될 수 있다.
몇 가지 예들에서, 보안 라벨의 성분을 단순화하기 위해서 전환 테이블, 예컨대 룩업 테이블이 사용될 수 있다. 전환 테이블은 값들의 세트 또는 값들의 조합의 각각을 값들의 다른 세트의 대응하는 값으로 매핑한다. 예를 들어 보안 라벨의 단일 성분이 많은 연쇄된 값들을 포함할 수 있다면 전환 테이블은 유용할 수 있다. 이러한 성분은 복잡해지고 너무 길어질 수 있다. 전환 테이블은 연쇄된 값들의 각각의 가능한 조합을 더 간단한 표현, 예컨대 단일 값으로 매핑할 수 있으며, 이러한 단일 값은 보안 라벨에 있는 대용 값으로서 사용될 수 있다.
몇 가지 예들에서, 어떤 데이터 레코드에 대한 보안 라벨은 해당 데이터 레코드가 데이터베이스(100)에 입력될 때에 결정된다. 몇 가지 예들에서, 어떤 데이터 레코드에 대한 보안 라벨의 하나 이상의 성분은 해당 데이터 레코드 또는 관련된 데이터 레코드에 해당 데이터 레코드에 대한 보안 라벨의 성분이 변경되게 할 수 있는 변경이 이루어진 경우에 업데이트된다. 예를 들면, 데이터 레코드의 속성이 변경되면, 해당 속성에 기초하여 결정되는 보안 라벨의 성분이 업데이트될 수 있다. 어떤 외부키가 변경되면, 해당 외부키를 통해 상속에 의하여 결정되는 보안 라벨의 성분이 업데이트될 수 있다. 외부키를 통해 다운스트림 데이터 레코드에 관련되는 업스트림 데이터 레코드가 변경되면, 해당 외부키를 통해 상속에 의하여 결정되는 다운스트림 데이터 레코드의 보안 라벨의 성분이 업데이트될 수 있다. 외부키를 통해 다운스트림 데이터 레코드에 관련되는 업스트림 데이터 레코드가 삭제되면, 해당 외부키를 통해 상속에 의하여 결정되는 다운스트림 데이터 레코드의 보안 라벨의 성분이 업데이트될 수 있다. 다른 상황도 데이터 레코드에 대한 보안 라벨의 업데이트를 트리거링할 수 있다.
어떤 행에 대한 보안 라벨은 해당 행으로의 액세스를 제한하기 위해 사용될 수 있다. 데이터베이스 시스템의 각각의 사용자는 사용자 보안 코드를 가지고 있으며, 이것은 데이터베이스 내의 어떤 데이터 레코드에 대한 보안 라벨과 같은 성분을 포함할 수 있다. 사용자가 어떤 행에 액세스하려고 시도하면, 사용자의 사용자 보안 코드의 각각의 성분이 해당 행의 보안 라벨의 대응하는 성분과 비교된다. 성분들 중 임의의 것이 해당 사용자에 의한 해당 행으로의 액세스를 금지한다면, 사용자는 해당 행에 액세스하는 것이 제한된다.
몇 가지 예들에서, 어떤 행의 보안 라벨의 성분은 하나 이상의 값들을 연쇄적으로 연결함으로써 형성된다. 사용자는, 그 보안 라벨이 사용자의 사용자 보안 코드에 포함되지 않는 하나 이상의 값을 포함하는 행에 액세스하는 것이 제한된다. 예를 들면, 특정 행은 연쇄된 값 "A,B,C"를 포함하는 성분이 있는 보안 라벨을 가질 수 있다. 자신의 사용자 보안 코드가 대응하는 성분에 대해 값 "A,B"를 포함하는 사용자는 해당 행에 액세스하는 것이 제한된다. 자신의 사용자 보안 코드가 대응하는 성분에 대해 값 "A,B,C,D"를 포함하는 사용자는, 사용자 보안 코드의 각각의 다른 성분과 해당 행의 보안 라벨의 대응하는 성분 사이의 비교의 결과에 따라서 해당 행에 액세스하도록 허가될 수 있다.
몇 가지 예들에서, 어떤 행의 보안 라벨의 성분을 형성할 수 있는 값들은 정렬되거나 또는 계층적인 목록의 일부이다. 사용자의 사용자 보안 코드의 대응하는 성분에 대해 주어진 값을 가지는 사용자는 사용자의 값보다 더 높은 우선순위 값을 가지는 임의의 행에 액세스하는 것이 제한된다. 예를 들면, 보안 라벨의 성분의 값은 정렬된 목록 "TS", "S", "P"로부터 선택될 수 있는데, "TS"는 최고 우선순위 값이고 "P"는 최저 우선순위 값이다. 특정 행은 값 "S"가 있는 성분을 가지는 보안 라벨을 가질 수 있다. 자신의 사용자 보안 코드가 대응하는 성분에 대해 값 "P"를 가지는 사용자는 해당 행에 액세스하는 것이 제한된다. 자신의 사용자 보안 코드가 값 "TS" 또는 "S"를 포함하는 사용자는, 사용자 보안 코드의 각각의 다른 성분과 해당 행의 보안 라벨의 대응하는 성분 사이의 비교의 결과에 따라서 해당 행에 액세스하도록 허가될 수 있다.
몇 가지 예들에서, 사용자(10)에 대한 사용자 보안 코드(18)의 성분 중 하나 이상은 사용자의 역할에 기초할 수 있다. 역할이란, 해당 사용자가 가지는 지위, 예컨대 업무 지위, 책임의 세트, 다른 이들에 대한 지위, 또는 다른 타입의 지위를 의미한다. 예시적인 역할은 중역 역할, 관리 역할, 전문 스탭(staff) 역할, 지원 역할, 또는 다른 역할을 포함할 수 있다. 예를 들면, 도 1 의 예에서와 같이, 디비전 중역(10a), 생산 작업자(10b), 및 부서 관리자(10c)는 회사 안에서의 각각의 사용자의 역할에 기초하는 사용자 보안 코드(18)의 하나 이상의 성분들 각각에 대해 상이한 값을 각각 가진다.
몇 가지 예들에서, 제 1 역할은 하나 이상의 다른 역할을 암시할 수 있는데, 이것은 사용자에게 제 1 역할이 할당되면, 해당 사용자에게 하나 이상의 다른 역할이 자동으로 할당된다는 것을 의미한다. 그러면 사용자는 그러한 하나 이상의 다른 역할들에 대한 임의의 사용자 보안 코드와도 연관된다. 예를 들면, 디비전 중역 역할은 부서 관리자 역할을 암시할 수 있다. 결과적으로, 디비전 중역 역할을 가지는 임의의 사용자(예를 들어, 사용자(10a))에게는 부서 관리자 역할이 자동으로 할당될 수 있고, 따라서 부서 관리자 역할에 대한 임의의 사용자 보안 코드와 연관될 수 있다.
도 2a 를 참조하면, 예시적인 데이터베이스 시스템(950)의 엔트리는 별개인 두 성분을 가지는 보안 라벨을 가진다. 데이터베이스 시스템(950)은 베리 스페셜 딜리버리스(Very Special Deliveries), 아이앤씨에 의해 관리되는 각각의 배송에 대한 출발지, 목적지, 및 운송 수단을 나타내는 데이터를 저장한다. 데이터베이스 시스템(950)은 외부키를 이용하여 계층적 관련성으로 관련되는 다수의 테이블들을 포함한다. 배송 테이블(910) 내의 데이터 레코드는 각각의 배송에 대한 출발지, 목적지, 운송 수단, 및 스폰서를 나타내는 데이터를 저장한다. 배송 테이블(910) 내의 각각의 레코드에 있는 출발지 및 목적지 필드는 외부키 관련성에 의해 사이트 테이블(920) 내의 레코드와 각각 관련되고, 사이트 테이블 내의 레코드들은 외부키 관련성에 의해 지역 테이블(930) 내의 레코드와 각각 관련된다. 배송 테이블(910) 내의 각각의 레코드에 있는 운송 필드는 외부키 관련성에 의해 운송 테이블(940)에 관련된다. 배송 테이블(910) 내의 각각의 레코드에 있는 스폰서 필드는 외부키 관련성에 의해 스폰서 테이블(960)에 관련된다. 이러한 예에서, 보안에 수반되는 필드만이 보여진다. 데이터 레코드는, 보안 라벨을 결정하는데 수반되지 않고 도 2a 에 도시되지 않는 추가적 속성, 외부키, 또는 양자 모두를 가질 수 있다.
데이터베이스 시스템(950)에서의 허가는 두 개의 별개의 독립 성분인 분류 성분 및 위치 성분(분류:위치의 형식으로 표현됨)을 가지는 통합 보안 라벨에 의해 제한된다. 이러한 예에서, 분류 성분은 낮은-우선순위 값(U)과 높은-우선순위 값(들)을 가지는 정렬된 목록으로부터 선택된 단일 값을 취한다. 위치 성분은 하나 이상의 값(NA 또는 EU)을 취할 수 있다; 위치 성분이 여러 값을 가진다면, 이러한 값들은 알파벳 목록에서 연쇄적으로 연결된다.
운송 테이블(940)에서, 각각의 레코드에 대한 보안 라벨의 분류 성분은 레코드의 "classification" 속성에 기초하여 결정된다. "classification" 속성이 "U"라면, 보안 라벨의 분류 성분은 값 "U"를 취하고, "classification" 속성이 "S"라면 보안 라벨의 분류 성분은 값 "S"를 취한다. 운송 테이블(940) 내의 레코드는 보안 라벨의 위치 성분에 대한 값을 가지지 않는다. 운송 테이블(940)에 대해 보안 라벨을 결정하는 것은, 보안 모듈(520)에 의해 실행되는 코드, 예를 들어 "classification" 필드에 있는 값이 운송 테이블(940) 내의 데이터 레코드들에 대한 보안 라벨의 분류 성분에 포함돼야 한다는 것을 표시하는 코드를 이용해 구현될 수 있다.
지역 테이블(930)에서, 각각의 레코드에 대한 보안 라벨의 위치 성분은 레코드의 "region_code" 속성에 기초하여 결정된다. "region_code" 속성이 "NA"라면, 보안 라벨의 위치 성분은 값 "NA"를 취하고, "region_code" 속성이 "EU"라면 보안 라벨의 위치 성분은 값 "EU"를 취한다. 지역 테이블(930) 내의 레코드는 보안 라벨의 분류 성분에 대한 값을 가지지 않는다. 지역 테이블(930)에 대해 보안 라벨을 결정하는 것은, 보안 모듈(520)에 의해 실행되는 코드, 예를 들어 "region_code" 필드에 있는 값이 지역 테이블(930) 내의 데이터 레코드들에 대한 보안 라벨의 분류 성분에 포함돼야 한다는 것을 표시하는 코드를 이용해 구현될 수 있다.
스폰서 테이블(960) 내의 모든 레코드에 대한 보안 라벨의 분류 성분은 값 "S"를 가진다. 값 "S"는 레코드의 속성 또는 레코드들에 대한 외부키 관련성과 무관하게 스폰서 테이블(960)내의 모든 레코드에 적용되는 테이블-고유 상수이다. 스폰서 테이블(960)에 대해 보안 라벨을 결정하는 것은, 보안 모듈(520)에 의해 실행되는 코드, 예를 들어 값 "S"가 스폰서 테이블(960) 내의 데이터 레코드들에 대한 보안 라벨의 분류 성분에 포함돼야 한다는 것을 표시하는 코드를 이용해 구현될 수 있다.
사이트 테이블(920) 내의 레코드는 보안 라벨의 분류 성분 및 위치 성분 양자 모두를 가진다. 각각의 레코드에 대한 보안 라벨의 분류 성분은 "classification" 레코드의 속성에 기초하여 결정된다. 사이트 테이블(920) 내의 각각의 데이터 레코드에 대해 분류 성분을 결정하는 것은, 보안 모듈(520)에 의해 실행되는 코드, 예를 들어 "classification" 필드에 있는 값이 사이트 테이블(920) 내의 데이터 레코드들에 대한 보안 라벨의 분류 성분에 포함돼야 한다는 것을 표시하는 코드를 이용해 구현될 수 있다.
사이트 테이블(920) 내의 각각의 레코드에 대한 보안 라벨의 위치 성분은 상속에 의해 결정된다. 사이트 테이블(920) 내의 각각의 레코드는 "region" 필드 내의 값을 통한 외부키 관련성을 통해 지역 테이블(930) 내의 레코드에 관한 것이다. 각각의 사이트 레코드는 자신의 보안 라벨의 위치 성분을 관련된 지역 레코드의 보안 라벨의 위치 성분으로부터 상속한다. 예를 들면, New York, Chicago, 및 White Sands 사이트 레코드는 "NA" 위치 성분을 North America 지역 레코드로부터 상속하고, London 사이트 레코드는 "EU" 위치 성분을 Europe 지역 레코드로부터 상속한다. 사이트 테이블(920) 내의 각각의 데이터 레코드에 대한 유럽 지역을 결정하는 것은, 보안 모듈(520)에 의해 실행되는 코드, 예를 들어 지역 테이블(930)로의 외부키가 참조돼야 한다는 것을 표시하는 코드에 의해 구현될 수 있다.
지역 테이블(930)로의 외부키 관련성은 무효가능하고, 이것은 "region" 필드가 오류가 없이 비워질 수 있다는 것을 의미한다. 이러한 예에서, 외부키 관련성이 주어진 데이터 레코드에 대해 널(null)이라면(예를 들어, 해당 데이터 레코드에 대한 "region" 필드에 아무 값이 없다면), 보안 라벨은 디폴트로 분류 성분에서 "S"가 되도록 결정되고 위치 성분에는 아무런 값이 존재하지 않는다. "S"가 분류 성분에 대해서 높은 우선순위 값이기 때문에, 디폴트로 설정되면 해당 데이터 레코드에 대한 분류 속성의 값과 무관하게 분류 성분이 값 "S" 를 갖게 될 것이다. 무효가능 외부키의 디폴트 거동(behavior)은 보안 모듈(520)에 의해 실행되는 코드, 예를 들어 해당 지역 테이블(930)로의 외부키 관련성이 널이라면 해당 보안 라벨이 "S:-"가 되어야 한다는 것을 표시하는 코드에 의해 구현될 수 있다.
배송 테이블(910) 내의 데이터 레코드에 대한 위치 보안 라벨의 분류 성분 및 성분 양자 모두는 상속에 의해 결정된다. 배송 테이블(910) 내의 각각의 레코드는 외부키 관련성을 통해 사이트 테이블(920)(외부키로서 "origin" 및 "destination" 필드를 통해), 운송 테이블(940)(외부키로서 "transport" 필드를 통해), 및 스폰서 테이블(960)(외부키로서 "sponsor" 필드를 통해)을 포함하는 다른 테이블내의 하나 이상의 다른 레코드로 관련된다.
분류 성분은 "U"가 낮은-우선순위 값이고 "S"가 높은-우선순위 값인 정렬된 목록에 기초하여 하나의 값을 가진다. 주어진 데이터 레코드에 대한 분류 성분에는 관련된 데이터 레코드의 각각에 있는 분류 성분에 대한 최고 우선순위 값인 값이 할당된다. 따라서, 주어진 데이터 레코드에 대해, 관련된 데이터 레코드 중 임의의 것이 "S"의 값인 분류 성분을 가진다면, 주어진 데이터 레코드에는 해당 분류 성분에 대해 "S" 의 값이 할당된다.
위치 성분은, 알파벳 순서로 연쇄된, 관련된 데이터 레코드에 대한 위치 성분의 값들 전부를 가진다. 따라서, 주어진 데이터 레코드에 대해, 관련된 데이터 레코드들 중 하나가 "NA"의 값인 위치 성분을 가지고 관련된 데이터 레코드들 중 다른 하나가 "EU"의 값인 위치 성분을 가지면, 주어진 데이터 레코드에는 위치 성분에 대해 "EU,NA" 의 값이 할당된다.
이러한 예에서, 운송 테이블(940) 및 스폰서 테이블(960)로의 외부키는 무효가능하다(nullable). 디폴트가 각각의 무효가능 외부키에 대해 제공된다. 운송 테이블(940)로의 외부키가 주어진 데이터 레코드에 대해 널이라면(예를 들어, 해당 데이터 레코드에 대한 "transport" 필드에 아무 값이 없다면), 보안 라벨은 디폴트로 분류 성분에서 "S"가 되도록 결정되고 위치 성분에는 아무런 값이 존재하지 않는다. 사이트 테이블(920)로의 외부키는 무효가능하지 않다. 사이트 테이블(920)로의 어떤 외부키가 주어진 데이터 레코드에 대해 널이라면(예를 들어, 해당 데이터 레코드에 대한 "origin" 또는 "destination" 필드에 대해 아무 값도 존재하지 않으면), 에러가 발생된다.
배송 테이블(910) 내의 각각의 데이터 레코드에 대한 보안 라벨을 결정하는 것은, 참조될 각각의 외부키 관련성을 식별하고 널(null)의 처리를 규정하는 보안 모듈(520)에 의해 실행되는 코드에 의해 구현될 수 있다:
respect FK to origin Site(non-nullable)
respect FK to destination Site(non-nullable)
respect FK to Transport(use "S:-" if null)
respect FK to Sponsor(ignore if null)
구체적으로 설명하면, D1 배달 레코드에 대한 분류 성분에는 관련된 레코드에 대한 분류 성분들 New York("U"), Chicago("U"), 및 plane("U") 중 최고 우선순위 값이 할당된다. "sponsor" 필드는 널이고 따라서 스폰서 테이블(960)로의 외부키 관련성은 무시된다. 따라서 D1 레코드에 대한 분류 성분에는 값 "U"가 할당된다. D1 배달 레코드에 대한 위치 성분은 관련된 레코드의 위치 성분들에 대한 각각의 별개의 값 New York("NA") 및 Chicago("NA")을 연쇄적으로 연결함으로써 결정된다. 위치 성분에 대한 값이 모든 관련된 레코드에 대해 동일하기 때문에, 연쇄가 필요하지 않고, D1 배달 레코드에 대한 위치 성분에는 값 "NA"가 할당된다. D1 배달 레코드에 대한 통합 보안 라벨은 "U:NA"이다.
D2 배달 레코드에 대한 분류 성분에는 관련된 레코드에 대한 분류 성분들 New York("U"), White Sands("S"), 및 plane("U") 중 최고 우선순위 값이 할당된다. "sponsor" 필드는 널이고 따라서 스폰서 테이블(960)로의 외부키 관련성은 무시된다. "S"는 "U"보다 높은 우선순위 값이기 때문에 D2 레코드에 대한 분류 성분에는 값 "S"가 할당된다. D2 배달 레코드에 대한 위치 성분은 관련된 레코드의 위치 성분들에 대한 각각의 별개의 값 New York("NA") 및 White Sands("NA")를 연쇄적으로 연결함으로써 결정된다. 따라서 D2 배달 레코드에 대한 통합 라벨은 "S:NA"이다.
D3 배달 레코드에 대한 분류 성분에는 관련된 레코드에 대한 분류 성분들 New York("U"), London("U"), 및 plane("U") 중 최고 우선순위 값이 할당된다. "sponsor" 필드는 널이고 따라서 스폰서 테이블(960)로의 외부키 관련성은 무시된다. 따라서 D3 에 대한 분류 성분에는 값 "U"가 할당된다. D3 배달 레코드에 대한 위치 성분은 관련된 레코드의 위치 성분들에 대한 각각의 별개의 값 New York("NA") 및 London("EU")을 연쇄적으로 연결함으로써 결정된다. 두 개의 위치 성분 값들이 알파벳 순서로 연결되어 D3 배달 레코드에 대한 위치 성분 값"EU,NA"을 형성한다. 따라서 D3 배달 레코드에 대한 통합 라벨은 "U:EU,NA"이다. 이와 유사하게, D4 배달 레코드에 대한 통합 라벨도 "U:EU,NA"이다.
D5 배달 레코드에 대한 분류 성분에는 관련된 레코드에 대한 분류 성분들 New York("U"), London("U"), 및 submarine("S") 중 최고 우선순위 값이 할당된다. "sponsor" 필드는 널이고 따라서 스폰서 테이블(960)로의 외부키 관련성은 무시된다. "S"는 "U"보다 높은 우선순위 값이기 때문에 D5 레코드에 대한 분류 성분에는 값 "S"가 할당된다. D5 배달 레코드에 대한 위치 성분은 관련된 레코드의 위치 성분들에 대한 각각의 별개의 값 New York("NA") 및 London("EU")을 연쇄적으로 연결함으로써 결정된다. 따라서 D5 배달 레코드에 대한 통합 라벨은 "S:EU,NA"이다.
D6 배달 레코드는 운송 필드에 대해 널(null) 외부키 관련성을 가지고, 따라서 D6 레코드에 대한 분류 성분은 관련된 레코드에 대한 분류 성분의 값들과 무관하게 디폴트로 "S"이다. D6 배달 레코드에 대한 위치 성분은 관련된 레코드의 위치 성분들에 대한 각각의 별개의 값 New York("NA") 및 London("EU")을 연쇄적으로 연결함으로써 결정된다. 따라서 D6 배달 레코드에 대한 통합 라벨은 "S:EU,NA"이다.
D7 배달 레코드에 대한 분류 성분은 분류 성분: New York("U"), London("U"), plane("U"), 및 sponsor("S")를 가지는 관련된 레코드들 내의 가장 높은 우선순위 분류 성분 값을 선택함으로써 결정된다. 따라서 D7 에 대한 분류 성분에는 값 "S"가 할당된다. D7 배달 레코드에 대한 위치 성분은 관련된 레코드의 위치 성분들에 대한 각각의 별개의 값 New York("NA") 및 London("EU")을 연쇄적으로 연결함으로써 결정된다. New York("NA") 및 London("EU"). 따라서 D7 배달 레코드에 대한 통합 라벨은 "S:EU,NA"이다.
도 2b 를 참조하면, 도 2a 에 도시된 데이터베이스 시스템(950)의 각각의 사용자는 두 개의 별개의 독립 성분인 분류 성분 및 위치 성분(분류:위치의 형식으로 표현됨)을 가지는 사용자 보안 코드를 가진다. 어떤 사용자가 데이터베이스 시스템(950) 내의 어떤 데이터 레코드에 액세스하려고 하면, 해당 사용자의 사용자 보안 코드의 분류 성분에 대한 값이 해당 데이터 레코드의 보안 라벨의 성분의 분류 성분에 대한 값과 비교되고, 해당 사용자의 사용자 보안 코드의 위치 성분에 대한 값이 해당 데이터 레코드의 보안 라벨의 위치 성분에 대한 값과 비교된다. 분류 성분 또는 위치 성분 중 어느 것이 해당 사용자에 의한 해당 행으로의 액세스를 금지한다면, 사용자는 해당 행에 액세스하는 것이 제한된다.
사용자 보안 코드의 분류 성분 및 위치 성분은, 한 데이터 레코드의 보안 라벨의 분류 성분 및 위치 성분 각각에 이용될 수 있는 동일한 값을 각각 가질 수 있다. 예를 들면, 사용자 보안 코드의 분류 성분에는 "S"의 높은 우선순위 값 또는 "U"의 낮은 우선순위 값 중 하나가 할당될 수 있다. 사용자 보안 코드의 위치 성분에는 "NA", "EU", 또는 "NA,EU"가 할당될 수 있다.
어떤 사용자의 사용자 보안 코드의 분류 성분이 값 "U"를 가진다면, 사용자 보안 코드의 위치 성분에 대한 값과 해당 데이터 레코드의 보안 라벨과 무관하게, 사용자가 그 보안 라벨이 분류 성분에 대해 더 높은 우선순위 값(예를 들어, "S")을 가지는 임의의 데이터 레코드에 액세스하는 것이 제한된다. 어떤 사용자의 사용자 보안 코드의 분류 성분이 값 "S"를 가진다면, 사용자 보안 코드의 위치 성분에 대한 값과 데이터 레코드의 보안 라벨에 따라서, 해당 사용자는 자신의 보안 라벨의 분류 성분에 대해 "U" 또는 "S" 중 하나를 가지는 데이터 레코드에 액세스하도록 허락될 수 있다. 데이터 레코드의 보안 라벨의 분류 성분이 비어있다면, 해당 분류 성분에 의해 부과되는 제한이 없으며, 해당 데이터 레코드로의 사용자의 액세스는 위치 성분에 의해 제어된다.
어떤 사용자의 사용자 보안 코드의 위치 성분이 값 "NA"를 가진다면, 해당 사용자가 그 보안 라벨이 "NA"가 아닌 임의의 값인 위치 성분을 가지는 임의의 데이터 레코드에 액세스하는 것이 제한된다. 따라서, 예를 들면, 그 사용자는 그 보안 라벨이 값 "EU" 또는 "EU,NA"인 위치 성분을 가지는 데이터 레코드에 액세스하는 것이 제한될 것이다. 어떤 사용자의 사용자 보안 코드의 위치 성분이 값 "EU,NA"를 가진다면, 사용자 보안 코드의 분류 성분에 대한 값과 데이터 레코드의 보안 라벨에 따라서, 해당 사용자는 자신의 보안 라벨의 위치 성분에 대해"NA", "EU", 또는 "EU,NA"를 가지는 데이터 레코드에 액세스하도록 허락될 수 있다. 보안 라벨의 위치 성분이 비어있다면, 해당 위치 성분에 의해 부과되는 제한이 없으며, 해당 데이터 레코드로의 사용자의 액세스는 분류 성분에 의해 제어된다.
분류 성분 또는 위치 성분이 사용자에 의한 어떤 데이터 레코드로의 액세스를 제한다면, 그 사용자는 그 데이터 레코드에 액세스하는 것이 제한된다. 예를 들면, "U:NA"의 사용자 보안 코드를 가진 User1 은 그 보안 라벨이 분류 성분에 대해 "S"를 가지는 임의의 데이터 레코드 및 그 보안 라벨이 위치 성분에 "NA"가 아닌 임의의 값을 포함하는 임의의 데이터 레코드에 액세스하는 것이 제한된다. "U:EU,NA"의 사용자 보안 코드를 가진 User2 는 그 보안 라벨이 분류 성분에 대해 "S"를 가지는 임의의 데이터 레코드에 액세스하는 것이 제한되지만, 위치 성분의 값에는 제한이 없다. "S:NA"의 사용자 보안 코드를 가진 User3 는 분류 성분의 값에 제한이 없지만, 그 보안 라벨이 위치 성분에 "NA"가 아닌 임의의 값을 포함하는 임의의 데이터 레코드에 액세스하는 것이 제한된다. "S:EU,NA"의 사용자 보안 코드를 가진 User4 는 데이터 레코드로의 액세스에 제한이 없다.
이러한 예에서, 각각의 엔트리에 대한 보안 라벨은 하나의 정렬된 성분(분류 성분) 및 하나의 비-정렬된 성분(위치 성분)을 가진다. 몇 가지 예들에서, 보안 라벨은 다수의 정렬되거나 계층적인 성분, 다수의 비-정렬된 성분, 또는 양자 모두를 가질 수 있다.
이러한 예에서, 보안 라벨의 성분의 상속이 테이블 계층성의 여러 세대에 걸쳐서 계속된다. 추가적으로 설명하면, 배송 테이블(910)이 그 엔트리가 배송 테이블(910)의 엔트리로의 외부키 관련성에 의해 관련되는 DeliveryItem 테이블과 같은 자식 테이블을 가진다면, 라벨 상속은 위에서 설명된 것과 유사한 방식으로 DeliveryItem 테이블까지 계속될 것이다.
어떤 행에 대한 보안 라벨을 해당 행 자체 내에 저장하면 해당 행에 대한 액세스 제한이 신속하고 용이하게 결정될 수 있다. 예를 들면, 어떤 사용자가 어떤 행에 액세스하고자 시도하면, 특정 행에 액세스할 수 있는 그 사용자의 권한은 관련된 행들을 식별하고 실시간으로(예를 들어, 그 사용자가 해당 행에 액세스하고자 시도하는 동안) 보안 라벨을 계산할 필요 없이, 해당 행에 대한 보안 라벨과 그 사용자의 사용자 보안 코드를 직접적으로 비교함으로써 결정될 수 있다. 따라서, 이러한 접근법은 데이터베이스 내의 보안으로 보호되는 행들에 대한 더 빠르고 더 신뢰가능한 액세스를 제공한다. 또한, 어떤 행에 대한 보안 라벨을 해당 행 자체 내에 저장하면, 다른 테이블을 참조하거나 복잡한 논리 판정을 수행할 필요가 없이 보안 라벨이 가시적(visible)이 되고 쉽게 이해가능하기 때문에 보안 감사 또는 보안 세팅의 유지보수가 용이해진다.
도 3 을 참조하면, 시스템(500)은 예를 들어 컴퓨터(506)에 의해 데이터베이스(90)로 입력되는 데이터 레코드(504)에 대한 보안 라벨(502)을 결정할 수 있다. 데이터 레코드(504)는 데이터베이스(90)에 추가되는 새로운 데이터 레코드일 수 있고, 또는 데이터베이스(90) 내에 이미 저장된 데이터 레코드로의 업데이트일 수 있다.
검출 모듈(510)은, 데이터베이스(90) 내의 하나 이상의 데이터 레코드의 보안 라벨(502)의 성분에 영향을 줄 수 있는 속성 및 외부키 관련성의 변경을 검출한다. 검출 모듈(510)은 인입하는 데이터 레코드(504)를 검출하고, 해당 데이터 레코드(504)에 대한 보안 라벨(502)을 계산하기 위해 데이터 레코드(504)를 보안 모듈(520)로 라우팅할지 여부를 결정한다. 예를 들면, 데이터 레코드(504)가 새로운 데이터 레코드라면, 검출 모듈(510)은 그 데이터 레코드(504)를 보안 모듈(520)로 자동으로 라우팅한다. 데이터 레코드(504)가 이전에 저장된 데이터 레코드에 대한 업데이트라면, 검출 모듈(510)은 해당 데이터 레코드로의 업데이트가 데이터 레코드(504)의 보안 라벨의 하나 이상의 성분에 영향을 줄 수 있는지 여부를 결정한다. 보안 라벨의 하나 이상의 성분에 영향을 줄 수 있는 업데이트는, 예를 들면 보안 라벨의 성분을 결정할 때 사용되는 데이터 레코드의 속성에 대한 업데이트; 보안 라벨의 성분을 결정하는 기준이 되는 외부키 관련성에 대한 업데이트; 또는 다른 업데이트를 포함한다. 보안 라벨의 임의의 성분에 영향을 주지 않는 업데이트는, 예를 들면 보안 라벨을 결정하는 데에 사용되지 않는 속성 또는 외부키 관련성에 대한 업데이트를 포함한다. 검출 모듈(510)이, 해당 업데이트가 데이터 레코드(504)의 보안 라벨에 영향을 줄 수 있다고 결정하면, 검출 모듈(510)은 업데이트된 데이터 레코드(504)를 보안 모듈(520)로 라우팅한다. 업데이트가 데이터 레코드의 보안 라벨에 영향을 주지 않는다고 검출 모듈(510)이 결정하면, 검출 모듈(510)은 해당 데이터 레코드(504)를 예를 들어 보안 모듈(520)을 우회하여 케스케이딩 모듈(550)(이하 설명된다)로 직접적으로 라우팅할 수 있다.
몇 가지 예들에서, 검출 모듈(510)은 규칙 데이터베이스(530), 규칙 파일에 저장되거나 다른 방법으로 저장된 하나 이상의 규칙(532)에 따라서 인입하는 데이터 레코드(504)를 보안 모듈(520)로 라우팅할지 여부를 결정할 수 있다. 하나의 예시적인 규칙(532)은, 새로운 데이터 레코드(504)가 보안 모듈(520)을 통해 라우팅되어야 한다는 것을 표시할 수 있다. 하나의 예시적인 규칙은, 데이터 레코드의 속성을 데이터 레코드에 대한 보안 라벨의 성분을 결정하는 데에 사용되는 데이터베이스(90)의 특정 테이블(예를 들어, 데이터 레코드(504)가 저장될 테이블) 내에 특정하고, 특정된 속성 중 하나 이상에 대한 변경을 포함하는 업데이트된 데이터 레코드(504)가 보안 모듈(520)을 통해서 라우팅돼야 한다고 표시할 수 있다. 하나의 예시적인 규칙은, 데이터베이스(90)의 특정 테이블(예를 들어, 데이터 레코드(504)가 저장될 테이블) 내의 데이터 레코드의 어떤 필드 또는 필드들이 업데이트된 데이터 레코드(504)를 다른 데이터 레코드로 관련시키는 외부키 값을 포함하는지 특정하고, 특정된 외부키 필드 중 하나 이상에 대한 변경을 가지는 업데이트된 데이터 레코드(504)가 보안 모듈(520)을 통해서 라우팅돼야 한다고 표시할 수 있다. 예를 들면, 이러한 규칙(532)은, 데이터 레코드(504)가 다른 업스트림 데이터 레코드와 관련되게 할 수 있는 외부키 값의 변경은 보안 모듈(520)을 통한 라우팅을 트리거링하는 반면에, 데이터 레코드(504)가 다른 다운스트림 데이터 레코드에 관련되게 하는 외부키 값의 변경은 해당 데이터 레코드(504)가 케스케이딩 모듈(550)로 직접적으로 라우팅되게 할 수 있다는 것을 표시할 수 있다.
보안 모듈(520)은 인입하거나 업데이트된 데이터 레코드(504)에 대한 보안 라벨(502)을 결정한다. 보안 모듈(520)은 규칙 데이터베이스(530)에 저장된 규칙(532)에 기초하여 보안 라벨(502)을 결정할 수 있다. 데이터베이스(90) 내의 각각의 테이블은 각각의 세트의 하나 이상의 규칙(532)을 가질 수 있다. 주어진 테이블에 대한 규칙은 보안 라벨의 각각의 성분이 해당 테이블 내의 각각의 레코드에 대해 어떻게 결정되는지를 규정한다. 규칙은, 보안 라벨의 각각의 성분에 대하여, 보안 라벨의 성분을 결정하는 데에 사용돼야 하는 속성, 외부키, 및 상수 중 하나 이상을 식별할 수 있다. 규칙은 주어진 성분을 결정하는 데에 사용될 다수의 값들이 계층적인 목록 또는 정렬된 목록으로서 연쇄되거나 처리돼야 하는지 여부를 규정할 수 있다. 규칙은, 무효가능 외부키 관련성이 널인 경우 디폴트, 예컨대 보안 라벨의 성분에 대한 디폴트 값의 사양(specification) 또는 널 외부키를 무시하라는 표시를 규정할 수 있다. 규칙(532)에 따라 보안 라벨(502)이 인입하는 또는 업데이트된 데이터 레코드(504)에 대해 결정되면, 보안 라벨(502)은 데이터 레코드(504)에 추가되고, 보안 라벨(502)을 포함하는 데이터 레코드(504)는 데이터베이스(90)에 저장된다.
데이터 레코드(504)는 케스케이딩 모듈(550)로도 라우팅된다. 케스케이딩 모듈(550)은 다른 어떤 레코드, 예컨대 다운스트림 레코드가, 데이터 레코드(504)에 대한 업데이트의 결과로서 재계산된 보안 라벨을 가질 필요가 있을 수 있는지를 결정한다. 예를 들면, 케스케이딩 모듈(550)은, 예를 들어 외부키 관련성을 통해 데이터 레코드(504)에 관련된 다운스트림 레코드(514)를 식별하고, 예를 들어 전술된 바와 같이 각각의 보안 라벨의 재계산을 위해서 그러한 다운스트림 레코드(514)를 보안 모듈(520)로 라우팅한다. 몇 가지 예들에서, 케스케이딩 모듈(550)은, 데이터 레코드(504)를 다른 다운스트림 데이터 레코드에 관련시키는 외부키를 식별하는 하나 이상의 규칙(532)에 따라 다운스트림 관련 레코드(514)를 식별할 수 있다.
다운스트림 데이터 레코드(514)가 보안 모듈(520)에 의해 처리되면, 그 보안 라벨이 데이터베이스(90) 내에서 업데이트되고, 다운스트림 데이터 레코드(514)는 케스케이딩 모듈(550)로 라우팅되어 해당 데이터 레코드(514)의 다운스트림 데이터 레코드의 보안 라벨이 재계산될 수 있게 한다. 이처럼 보안 라벨 재계산이 케스케이드되는 것은, 예를 들어 더 이상의 다운스트림 데이터 레코드가 이용될 수 없을 때까지 계속될 수 있다.
시스템(500)은 데이터 레코드가 데이터베이스(90)에서 삭제되면 보안 라벨 재계산을 수행할 수 있다. 검출 모듈(510)은 데이터 레코드가 데이터베이스(90)에서 삭제될 것이라는 것을 검출하고, 이러한 데이터 레코드를 케스케이딩 모듈(550)로 라우팅한다. 케스케이딩 모듈(550)은 다른 어떤 레코드, 예컨대 다운스트림 레코드가, 데이터 레코드의 삭제의 결과로서 재계산된 보안 라벨을 가질 필요가 있을 수 있는지를 결정한다. 예를 들면, 케스케이딩 모듈(550)은, 예를 들어 외부키 관련성을 통해 데이터 레코드에 관련된 다운스트림 레코드(514)를 식별하고, 예를 들어 전술된 바와 같이 각각의 보안 라벨의 재계산을 위해서 그러한 다운스트림 레코드(514)를 보안 모듈(520)로 라우팅한다.
몇 가지 예들에서, 보안 모듈(520)은 보안 라벨 계산의 로그(518)를 유지할 수 있다. 예를 들면, 로그(518)는 그 보안 라벨이 계산되거나 재계산된 데이터 레코드의 식별자, 변경 날짜, 변경 시간, 보안 라벨의 이전의 값, 변경 이유(예를 들어, 재계산을 트리거링했던 업스트림 관련 레코드의 식별자 또는 데이터 레코드가 새로운 것이었거나 업데이트되었다는 표시), 또는 다른 정보, 또는 이들 중 임의의 두 개 이상의 조합을 포함할 수 있다.
도 4 를 참조하면, 시스템(500)은 데이터베이스(90)에 저장된 데이터 레코드(602)에 액세스하려는 사용자(600)로부터의 요청에 응답할 수 있다. 사용자는 사용자 보안 코드(604)를 가진다. 사용자(600)가 데이터 레코드(602)로의 액세스를 요청하면, 보안 모듈(520)은 해당 데이터 레코드(602)에 대한 보안 라벨(606)을 데이터베이스(90)로부터 취출한다. 그러면, 보안 모듈(520)은 해당 데이터 레코드(602)에 대한 보안 라벨(606)의 성분들 각각을 규칙(532)에 따라 사용자의 사용자 보안 코드(604)의 대응하는 성분과 비교할 수 있다. 사용자의 사용자 보안 코드(604)의 성분들 각각이 보안 라벨(606)의 대응하는 성분을 만족시키면, 해당 사용자(600)는 데이터 레코드(602)에 액세스할 수 있다. 사용자의 사용자 보안 코드(604)의 성분 중 하나 이상이 보안 라벨(606)의 대응하는 성분을 만족시키지 않으면, 해당 사용자는 레코드에 액세스하는 것이 제한된다. 사용자(600)에게 그가 액세스할 수 있는 하나 이상의 데이터 레코드(602)에 액세스하게 하는 뷰(610)가 사용자(600)에게 제공될 수 있다.
도 5 를 참조하면, 인입하는 데이터 레코드에 대한 보안 라벨을 결정하기 위한 일반적 접근법에서, 데이터 레코드는 데이터베이스의 테이블 내에 저장되도록 수신된다(800). 보안 라벨이 해당 데이터 레코드에 대해 어떻게 결정되어야 하는지를 나타내는 하나 이상의 규칙이 취출된다(802). 보안 라벨의 각각의 성분이 규칙에 따라 결정된다(804). 보안 라벨의 성분을 결정하는 것은, 데이터 레코드의 속성에 기초하여 보안 라벨의 성분을 결정하는 것을 포함할 수 있다(806). 보안 라벨의 성분을 결정하는 것은, 외부키 관련성을 통해 관련된 다른 데이터 레코드로부터의 값의 상속에 기초하여 보안 라벨의 성분을 결정하는 것을 포함할 수 있다(808). 보안 라벨의 성분을 결정하는 것은, 테이블과 연관된 상수 값에 기초하여 보안 라벨의 성분을 결정하는 것을 포함할 수 있다(810). 보안 라벨은 데이터 레코드 내의 필드에 저장된다(812).
도 6 을 참조하면, 업데이트된 데이터 레코드에 대한 보안 라벨을 업데이트하기 위한 일반적 접근법에서, 데이터베이스에 저장된 데이터 레코드에 대한 업데이트가 수신된다(600). 데이터 레코드에 대해 보안 라벨이 어떻게 결정돼야 하는지를 표시하는 하나 이상의 규칙이 취출된다(602). 업데이트가 해당 데이터 레코드에 대한 보안 라벨의 성분을 결정하는 데에 사용되는 속성에 영향을 준다면, 또는 업데이트가 업데이트된 데이터 레코드와 업스트림 데이터 레코드 사이의 외부키 관련성에 영향을 준다면, 또는 이들 모두라면(604), 해당 데이터 레코드에 대한 보안 라벨의 영향받은 성분이 예를 들어 전술된 바와 같이 재계산된다(606). 업데이트가 보안 라벨을 결정하는 데에 사용되는 데이터 레코드의 임의의 요소에 영향을 주지 않는다면(604), 해당 데이터 레코드에 대한 보안 라벨은 재계산되지 않는다(608). 다운스트림 관련 데이터 레코드가 식별된다(610). 데이터 레코드에 대한 보안 라벨이 재계산되었거나 업데이트가 업데이트된 데이터 레코드와 다운스트림 데이터 레코드 사이의 외부키 관련성에 영향을 준다면, 다운스트림 관련 레코드의 각각에 대해 보안 계산 프로세스가 수행된다(612). 더 이상의 다운스트림 레코드가 존재하지 않으면, 프로세스는 끝난다(614).
도 7 을 참조하면, 데이터베이스에서 데이터 레코드를 삭제하는 일반적 접근법에서, 어떤 데이터 레코드가 삭제된다(900). 다운스트림 관련 데이터 레코드가 식별된다(902). 해당 보안 라벨의 성분이 예를 들어 전술된 것처럼 다운스트림 관련 레코드의 각각에 대해 재계산된다(904). 다른 다운스트림 레코드가 존재하지 않으면, 프로세스는 끝난다(906).
몇 가지 경우에, 어떤 행에 대한 보안 라벨은 어떤 사용자가 해당 행을 읽도록 허용되거나 읽지 못하도록 제한되는지를 제어한다. 몇 가지 경우에, 어떤 행에 대한 보안 라벨은 어떤 사용자가 해당 행에 기록하도록 허용되거나 기록하지 못하도록 제한되는지를 제어한다. 몇 가지 경우에, 각각의 행은, 어떤 사용자가 해당 행을 읽을 수 수 있는지를 제어하는 하나의 라벨과 어떤 사용자가 해당 행에 기록할 수 있는지를 제어하는 하나의 라벨인 두 개의 보안 라벨을 가질 수 있다.
전술된 것과 같은 몇 가지 예들에서, 어떤 테이블 내의 한 행에 대한 보안 라벨의 성분은 다른 테이블 내의 하나 이상의 관련된 행들 각각에 있는 정보에 기초하여 결정된다. 몇 가지 예들에서, 어떤 테이블 내의 한 행에 대한 보안 라벨의 성분은 동일한 테이블 내의 하나 이상의 관련된 행들 각각에 있는 정보에 기초하여 결정될 수 있다. 어떤 행에 대한 보안 라벨의 성분을 동일한 테이블 내의 관련된 행에 있는 정보에 기초하여 결정하는 것은, 테이블 내의 행들 사이의 관련성이 순환적이지 않은 경우, 예컨대 행들 사이의 관련성이 계층적인 경우에 수행될 수 있다.
몇 가지 예들에서, 테이블 내의 특정 행에 대한 보안 라벨의 성분은 다수의 레퍼런스의 체인을 통해 특정 행에 관련된 행에 있는 정보에 기초하지만, 레퍼런스의 체인의 하나 이상의 중간 행에 있는 정보에 기초하지 않고 결정될 수 있다. 예를 들면, 테이블 A 내의 각각의 행은 테이블 B 내의 한 행에 관련될 수 있고, 테이블 B 내의 각각의 행은 테이블 C 내의 한 행에 관련될 수 있다. 테이블 A 내의 각각의 행에 대한 보안 라벨의 성분은 테이블 C 내의 관련된 행에 있는 정보에 기초하되, 테이블 B 내의 관련된 행에 있는 정보에는 기초하지 않고 결정될 수 있다.
몇 가지 예들에서, 어떤 테이블 내의 각각의 행에 대한 보안 라벨은 디폴트로, 동일한 테이블 또는 다른 테이블 내의 임의의 관련된 행에 있는 정보에 기초하여 결정될 수 있다. 몇 가지 경우에, 사용자는, 어떤 행에 대한 보안 라벨이 임의의 외부키 관련성을 따르지 않도록, 또는 하나 이상의 특정 외부키 관련성을 따르지 않도록 디폴트 설정을 무시할 수 있다. 몇 가지 예들에서, 테이블 내의 각각의 행에 대한 보안 라벨은 디폴트로 임의의 외부키 관련성을 따르지 않을 수 있다. 몇 가지 경우에, 사용자는 테이블 내의 각각의 행에 대한 보안 라벨이 하나 이상의 특정 외부키 관련성을 따르거나, 모든 외부키 관련성을 따르도록 디폴트 설정을 무시할 수 있다.
몇 가지 예들에서, 외부키 관련성에 대한 디폴트 접근법은 외부키의 속성에 따라 달라질 수 있다. 예를 들면, 특정 외부키가 무효가능하다면, 디폴트는 보안 라벨을 결정할 때 해당 외부키 관련성을 따르지 않는 것일 수 있는 반면에, 특정 외부키가 무효가능하지 않다면, 디폴트 설정은 보안 라벨을 결정할 때에 해당 외부키 관련성을 따르는 것일 수 있다. 특정 외부키가 무효가능하지 않지만 그럼에도 불구하고 널이라면, 가장 제한적인 보안 라벨, 가장 빈번하게 사용되는 보안 라벨, 사용자 규정된 보안 라벨, 또는 다른 보안 라벨과 같은 폴백(fallback) 보안 라벨이 규정될 수 있다.
몇 가지 예들에서, 데이터베이스 내의 모든 테이블은 행-레벨 보안, 예를 들어 테이블 외부의 정보에 기초하는 행-레벨 보안에 속한다. 몇 가지 예들에서, 데이터베이스 내의 테이블 중 일부만이 행-레벨 보안에 속한다.
몇 가지 예들에서, 열-레벨 보안은 행-레벨 보안과 유사한 방식으로 위에서 설명된 바와 같이 제공될 수 있다. 예를 들면, 열-레벨 보안 라벨을 포함하기 위해서 추가 행이 테이블에 제공될 수 있다. 열-레벨 보안 행 내의 필드에 대한 값은 테이블 외부의 정보, 테이블 내부의 정보, 또는 양자 모두에 기초할 수 있다.
몇 가지 예들에서, 행-레벨 보안은 다양한 오브젝트 클래스, 예컨대 데이터베이스 내의 계층적 오브젝트 클래스들에 걸쳐서 전파될 수 있다. 예를 들면, 행-레벨 보안은 데이터베이스 레벨, 스키마 레벨, 또는 테이블 레벨, 또는 다른 레벨에서 적용될 수 있다.
도 8 을 참조하면, 사용자가 레코드에 액세스하는 것이 제한되는지 여부를 결정하는 일반적 접근법에서, 데이터 레코드에 액세스하려는 요청이 사용자로부터 또는 그에 대해 수신된다(850). 하나 이상의 성분을 포함할 수 있는 사용자의 사용자 보안 코드가 수신된다(852). 요청된 데이터 레코드에 대한 보안 라벨이 취출된다(854). 사용자 액세스 제한을 관장하는 하나 이상의 규칙이 취출되고(856) 및 사용자의 사용자 보안 코드의 각각의 성분이 데이터 레코드의 보안 라벨의 대응하는 성분과 비교된다(858). 사용자의 사용자 보안 코드의 임의의 성분이 데이터 레코드로의 사용자에 의한 액세스를 금지한다면(860), 해당 데이터 레코드로의 액세스는 부인된다(862). 사용자의 사용자 보안 코드의 어떤 성분도 데이터 레코드로의 사용자에 의한 액세스를 금지하지 않는다면(860), 사용자는 데이터 레코드에 액세스할 수 있다(864).
도 9 를 참조하면, 몇 가지 예들에서, 위에서 설명된 기법은 데이터 소스(102) 및 실행 환경(104)을 포함하는 데이터 처리 시스템(150)에서 구현될 수 있다. 데이터 소스(102)는 스토리지 디바이스와 같은 데이터의 하나 이상의 소스 또는 온라인 데이터 스트림으로의 접속을 포함할 수도 있는데, 이들 각각은 데이터를 다양한 포맷(예를 들어, 데이터베이스 표, 스프레드쉬트 파일, 평텍스트(flat text) 파일, 또는 메인프레임에 의하여 사용되는 네이티브 포맷) 중 임의의 것 내에 저장하거나 제공할 수도 있다. 실행 환경(104)은 전-처리 모듈(106)과 실행 모듈(112)을 포함한다. 실행 환경(104)은, 예를 들어 UNIX 운영 체제의 일 버전과 같은 적합한 운영 체제에 의해 제어되는 하나 이상의 범용 컴퓨터에 호스팅될 수 있다. 예를 들어, 실행 환경(104)은, 국지적이거나(예를 들어, SMP(symmetric multi-processing) 컴퓨터와 같은 다중프로세서 시스템), 국지적으로 분산되거나(예를 들어, 클러스터로서 커플링되는 다중 프로세서이거나, 원격이거나, 원격으로 분산되거나(예를 들어, 근거리 네트워크(LAN) 및/또는 광역 네트워크(WAN)를 통해 커플링되는 다중 프로세서), 또는 이들의 임의의 조합인, 다수의 중앙 처리 유닛(CPU) 또는 프로세서 코어를 사용하는 컴퓨터 시스템의 구성을 포함하는 다중-노드 병렬 컴퓨팅 환경을 포함할 수 있다.
전-처리 모듈(106)은 데이터 소스(102)로부터 데이터를 읽어서, 데이터의 임의의 적합한 처리를 수행하고, 처리된 데이터를 저장한다. 데이터 소스(102)를 제공하는 스토리지 디바이스는 실행 환경(104)에 대해 국지적일 수 있는데, 예를 들어 데이터는 실행 환경(104)을 호스팅하는 컴퓨터에 연결된 저장 매체(예를 들어, 하드 드라이브(108))에 저장될 수 있다. 저장 디바이스는 실행 환경(104)에 대해 원격일 수도 있는데, 예를 들어 실행 환경(104)을 호스팅하는 컴퓨터와 원격 접속(예를 들어, 클라우드 컴퓨팅 기반구조에 의해 제공됨)을 거쳐 통신하는 원격 시스템(예를 들어, 메인프레임(110))에 호스팅된다.
실행 모듈(112)은 전-처리 모듈(106)에 의해 생성된 처리된 데이터를 사용하여 규정된 프로세스를 실행한다. 처리 모듈(106)은 실행 환경(104)에 액세스가능한 데이터 소스(102) 내에 또는 데이터 저장 시스템(116) 내에 다시 저장되거나 다르게 사용될 수도 있는 데이터(114)를 출력할 수 있다. 또한 데이터 저장 시스템(116)은, 개발자(120)가 데이터 처리 애플리케이션을 개발할 수 있는 개발 환경(118)에 액세스가능할 수도 있다. 몇 가지 구현형태들에서, 개발 환경(118)은 애플리케이션을 꼭지점들 사이의 방향성 링크(작업 엘리먼트, 즉 컴퓨터 그래프 또는 데이터흐름 그래프를 나타냄)에 의하여 연결되는 꼭지점들(데이터 처리 성분 또는 데이터셋을 나타냄)을 포함하는 데이터흐름 그래프로서 개발하기 위한 시스템이다. 예를 들어, 이러한 환경은 발명의 명칭이 "Managing Parameters for Graph-Based Applications"인 미국 공개 특허 번호 제 2007/0011668 호에 더욱 상세하게 설명된다. 이러한 그래프-기초 계산을 실행하기 위한 시스템은 미국 특허 제 5,966,072 호인 "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS"에서 설명된다. 본 시스템에 따라서 만들어진 데이터흐름 그래프는 정보를 프로세스들 사이에서 이동시키기 위하여, 그리고 그 프로세스에 대한 실행 순서를 규정하기 위하여, 정보를 그래프 성분에 의하여 표현되는 개개의 프로세스 내에 집어넣고 그리고 그 밖으로 끄집어내기 위한 방법을 제공한다. 이러한 시스템은 임의의 가능한 방법 중 인터프로세스 통신 방법을 선택하는 알고리즘을 포함한다(예를 들어, 그래프의 링크에 따르는 통신 경로는 TCP/IP 또는 UNIX 도메인 소켓을 사용할 수 있거나 공유 메모리를 사용하여 데이터를 프로세스들 사이에서 전달할 수 있음).
개발 환경(118)을 사용하여 개발된 데이터흐름 그래프는, 예를 들어 데이터 스토리지(116)에 저장될 수 있고 실행 환경(104)에 의해 액세스될 수 있다. 실행 환경(104)은 데이터흐름 그래프를 실행하여 데이터흐름 그래프의 성분과 연관된 프로세스를 처리하여, 데이터 소스(102)로부터 수신된 데이터를 처리한다.
접속을 생성하기 위한 전술된 접근법은 적합한 소프트웨어를 실행하는 컴퓨팅 시스템을 사용하여 구현될 수 있다. 예를 들어, 데이터 처리 시스템(100)은 명령들을 실행하는 하나 이상의 데이터 프로세서를 가지는 컴퓨팅 시스템을 사용하여 구현될 수 있다. 예를 들어, 소프트웨어는, 각각 적어도 하나의 프로세서, 적어도 하나의 데이터 저장 시스템(휘발성 및 비-휘발성 메모리 및/또는 저장 소자를 포함), 적어도 하나의 사용자 인터페이스(적어도 하나의 입력 디바이스 또는 포트를 사용하여 입력을 수신하고, 적어도 하나의 출력 디바이스 또는 포트를 사용하여 출력을 제공하기 위함)를 포함하는 하나 이상의 프로그래밍된 또는 프로그래밍가능한 컴퓨팅 시스템(분산형, 클라이언트/서버, 또는 그리드와 같은 다양한 아키텍처일 수 있음)에서 실행되는 하나 이상의 컴퓨터 프로그램 내의 프로시저를 포함할 수도 있다. 소프트웨어는, 예를 들어 데이터흐름 그래프의 디자인, 구성, 및 실행과 관련된 서비스를 제공하는 더 큰 프로그램의 하나 이상의 모듈을 포함할 수도 있다. 프로그램의 모듈(예를 들어, 데이터흐름 그래프의 엘리먼트)은 데이터 저장소 내에 저장되는 데이터 모델에 따르는 데이터 구조 또는 다른 조직된 데이터로서 구현될 수 있다.
소프트웨어는 유형의(tangible) 비-일시적 매체, 예컨대 CD-ROM 또는 컴퓨터-판독가능 매체(범용 또는 특수 목적 컴퓨팅 시스템 또는 디바이스에 의하여 독출가능함)에 제공되거나, 네트워크의 통신 매체를 거쳐 이것이 실행되는 컴퓨팅 시스템의 비일시적 매체로 전송(전파되는 신호로 인코딩)될 수 있다. 처리의 일부 또는 전부는 특수 목적 컴퓨터에서, 또는 특수-목적 하드웨어, 예컨대 코프로세서 또는 필드-프로그래밍가능한 게이트 어레이(FPGAs) 또는 전용의 주문형 집적회로(ASICs)를 사용하여 수행될 수 있다. 처리는 소프트웨어에 의하여 특정된 계산의 상이한 부분들이 상이한 컴퓨팅 엘리먼트에 의하여 수행되는 방식인 분산 방식으로 구현될 수도 있다. 각각의 이러한 컴퓨터 프로그램은 바람직하게는 저장 디바이스 매체가 본 명세서에서 설명되는 프로시저를 수행하기 위하여 컴퓨터에 의해 판독될 때 컴퓨터를 구성하고 작동시키기 위하여, 범용 또는 특수 목적 프로그래밍가능 컴퓨터에 의하여 저장 디바이스의 컴퓨터-판독가능 스토리지 매체(예를 들어, 매체의 고상 메모리(solid state memory) 또는 자기적 또는 광학적 매체)에 저장되거나 다운로드된다. 진보적인 시스템은 또한 컴퓨터 프로그램으로써 구성된 유형의 비일시적 매체로서 구현될 수 있는 것으로 볼 수도 있는데, 이와 같이 구성된 매체는 컴퓨터가 본 명세서에서 설명된 처리 단계 중 하나 이상을 수행하기 위하여 특정하고 선정의된 방식으로 작동하도록 한다.
여러 실시예들이 설명되었다. 그럼에도 불구하고, 앞선 설명이 예시하기 위하여 의도되고 후속하는 특허청구범위에 의하여 정의되는 본 발명의 범위를 한정하기 위한 것이 아님이 이해되어야 한다. 이에 상응하여, 다른 실시예들도 역시 후속하는 청구항들의 범위 내에 있다. 예를 들어, 다양한 변형이 본 발명의 범위로부터 벗어나지 않고서도 이루어질 수도 있다. 추가적으로, 위에서 설명된 단계들 중 일부는 순서 독립적일 수도 있고, 따라서 설명된 것과 상이한 순서로 수행될 수 있다.

Claims (71)

  1. 컴퓨터에 의해 수행되는 방법으로서,
    다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내의 제 1 레코드에 대한 보안 라벨의 제 1 성분을 자동으로 결정하는 단계로서,
    제 1 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 2 레코드를 식별하는 단계 - 상기 제 1 외부키 관련성은 상기 제 2 레코드를 식별하는 제 1 레코드 내의 값을 포함함 -,
    상기 제 2 레코드에 대한 보안 라벨의 성분을 식별하는 단계, 및
    상기 제 2 레코드에 대한 보안 라벨의 식별된 성분에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 제 1 성분에 대한 값을 할당하는 단계를 포함하는, 결정하는 단계;
    보안 라벨의 제 1 성분과 보안 라벨의 제 2 성분을 제 1 성분과 제 2 성분을 포함하는 하나의 요소로 조합하여 보안 라벨을 형성하는 단계 - 상기 보안 라벨의 제 2 성분은 (1) 상기 제 1 레코드의 속성, (2) 상기 제 1 테이블의 속성, 및 (3) 제 2 외부키 관련성에 의해 상기 제 1 레코드에 관련된 제 3 레코드에 대한 보안 라벨의 성분 중 하나 이상에 기초하여 결정되었던 것임 -; 및
    상기 보안 라벨을 상기 제 1 레코드에 저장하는 단계 - 상기 보안 라벨은 상기 제 1 레코드로의 액세스를 관리하기 위한 것임 -
    를 포함하는, 컴퓨터에 의해 수행되는 방법.
  2. 제 1 항에 있어서,
    상기 방법은,
    각각의 외부키 관련성에 따라 상기 제 1 레코드에 각각 관련된 다수의 제 2 레코드들을 식별하는 단계;
    상기 제 2 레코드들 각각에 대한 보안 라벨의 성분을 식별하는 단계; 및
    상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들 각각에 대한 값에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  3. 제 2 항에 있어서,
    상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 단계는, 상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들에 대한 다수의 별개의 값들을 연쇄시키는(concatenating) 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  4. 제 2 항에 있어서,
    상기 보안 라벨의 성분에 대한 값을 할당하는 단계는,
    상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들에 대한 값들 중에서 최고 우선순위 값을 식별하는 단계; 및
    상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값으로서 상기 최고 우선순위 값을 할당하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  5. 제 1 항에 있어서,
    상기 방법은,
    상기 제 3 레코드의 속성에 기초하여, 상기 데이터베이스의 제 3 테이블 내의 각각의 제 3 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 단계를 포함하고, 상기 제 3 레코드의 속성은 상기 제 3 레코드에 저장된 값인, 컴퓨터에 의해 수행되는 방법.
  6. 제 1 항에 있어서,
    상기 방법은,
    상기 데이터베이스의 제 3 테이블 내의 각각의 제 3 레코드에 대한 보안 라벨의 성분을, 상기 제 3 테이블과 연관된 값에 기초하여 자동으로 결정하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  7. 제 1 항에 있어서,
    상기 제 2 레코드는 상기 제 1 테이블이 아닌 테이블 내에 있는, 컴퓨터에 의해 수행되는 방법.
  8. 제 1 항에 있어서,
    상기 성분은 상기 제 1 레코드에 대한 보안 라벨의 제 1 성분이고,
    상기 방법은 상기 보안 라벨의 제 2 성분을 결정하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  9. 제 1 항에 있어서,
    상기 방법은, 트리거 이벤트에 응답하여, 특정한 제 1 레코드에 대한 보안 라벨의 성분을 업데이트하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  10. 제 9 항에 있어서,
    상기 트리거 이벤트는, 상기 외부키 관련성의 변경을 포함하는, 컴퓨터에 의해 수행되는 방법.
  11. 제 9 항에 있어서,
    상기 트리거 이벤트는 상기 특정한 제 1 레코드에 관련된 제 2 레코드에 대한 보안 라벨의 성분의 변경을 포함하는, 컴퓨터에 의해 수행되는 방법.
  12. 제 9 항에 있어서,
    상기 방법은, 상기 트리거 이벤트를 검출하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  13. 제 9 항에 있어서,
    상기 방법은, 상기 트리거 이벤트의 통지를 수신하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  14. 제 1 항에 있어서,
    상기 방법은, 사용자로부터 특정한 제 1 레코드로의 액세스를 위한 요청을 수신하는 단계를 포함하고, 상기 사용자는 사용자 보안 코드와 연관되는, 컴퓨터에 의해 수행되는 방법.
  15. 제 14 항에 있어서,
    상기 방법은,
    상기 사용자와 연관된 사용자 보안 코드의 성분과 상기 특정한 제 1 레코드에 대한 보안 라벨의 성분의 비교에 기초하여, 상기 사용자에 의한 상기 특정한 제 1 레코드로의 액세스를 제한하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  16. 제 15 항에 있어서,
    상기 방법은, 상기 액세스를 위한 요청을 수신하기 이전에, 상기 제 1 레코드에 대한 보안 라벨을 결정하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  17. 제 1 항에 있어서,
    상기 방법은, 특정한 제 1 레코드가 상기 데이터베이스에 저장되기 위해 수신되면, 상기 제 1 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  18. 비-일시적 컴퓨터-판독가능 저장 매체로서,
    컴퓨팅 시스템으로 하여금:
    다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내의 제 1 레코드에 대한 보안 라벨의 제 1 성분을 자동으로 결정하는 동작으로서,
    제 1 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 2 레코드를 식별하는 것 - 상기 제 1 외부키 관련성은 상기 제 2 레코드를 식별하는 제 1 레코드 내의 값을 포함함 -,
    상기 제 2 레코드에 대한 보안 라벨의 성분을 식별하는 것, 및
    상기 제 2 레코드에 대한 보안 라벨의 식별된 성분에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 제 1 성분에 대한 값을 할당하는 것을 포함하는, 결정하는 동작;
    보안 라벨의 제 1 성분과 보안 라벨의 제 2 성분을 제 1 성분과 제 2 성분을 포함하는 하나의 요소로 조합하여 보안 라벨을 형성하는 동작 - 상기 보안 라벨의 제 2 성분은 (1) 상기 제 1 레코드의 속성, (2) 상기 제 1 테이블의 속성, 및 (3) 제 2 외부키 관련성에 의해 상기 제 1 레코드에 관련된 제 3 레코드에 대한 보안 라벨의 성분 중 하나 이상에 기초하여 결정되었던 것임 -; 및
    상기 보안 라벨을 상기 제 1 레코드에 저장하는 동작 - 상기 보안 라벨은 상기 제 1 레코드로의 액세스를 관리하기 위한 것임 -
    을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  19. 메모리에 연결된 프로세서를 포함하는 컴퓨팅 시스템으로서,
    상기 프로세서 및 메모리는:
    다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내의 제 1 레코드에 대한 보안 라벨의 제 1 성분을 자동으로 결정하는 동작으로서,
    제 1 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 2 레코드를 식별하는 것 - 상기 제 1 외부키 관련성은 상기 제 2 레코드를 식별하는 제 1 레코드 내의 값을 포함함 -,
    상기 제 2 레코드에 대한 보안 라벨의 성분을 식별하는 것, 및
    상기 제 2 레코드에 대한 보안 라벨의 식별된 성분에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 제 1 성분에 대한 값을 할당하는 것을 포함하는, 결정하는 동작;
    보안 라벨의 제 1 성분과 보안 라벨의 제 2 성분을 제 1 성분과 제 2 성분을 포함하는 하나의 요소로 조합하여 보안 라벨을 형성하는 동작 - 상기 보안 라벨의 제 2 성분은 (1) 상기 제 1 레코드의 속성, (2) 상기 제 1 테이블의 속성, 및 (3) 제 2 외부키 관련성에 의해 상기 제 1 레코드에 관련된 제 3 레코드에 대한 보안 라벨의 성분 중 하나 이상에 기초하여 결정되었던 것임 -; 및
    상기 보안 라벨을 상기 제 1 레코드에 저장하는 동작 - 상기 보안 라벨은 상기 제 1 레코드로의 액세스를 관리하기 위한 것임 -
    을 수행하도록 구성되는, 컴퓨팅 시스템.
  20. 컴퓨팅 시스템으로서,
    다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내의 제 1 레코드에 대한 보안 라벨의 제 1 성분을 자동으로 결정하기 위한 수단으로서, 상기 결정하는 것은,
    제 1 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 2 레코드를 식별하는 것 - 상기 제 1 외부키 관련성은 상기 제 2 레코드를 식별하는 제 1 레코드 내의 값을 포함함 -,
    상기 제 2 레코드에 대한 보안 라벨의 성분을 식별하는 것, 및
    상기 제 2 레코드에 대한 보안 라벨의 식별된 성분에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 제 1 성분에 대한 값을 할당하는 것을 포함하는, 결정하기 위한 수단;
    보안 라벨의 제 1 성분과 보안 라벨의 제 2 성분을 제 1 성분과 제 2 성분을 포함하는 하나의 요소로 조합하여 보안 라벨을 형성하기 위한 수단 - 상기 보안 라벨의 제 2 성분은 (1) 상기 제 1 레코드의 속성, (2) 상기 제 1 테이블의 속성, 및 (3) 제 2 외부키 관련성에 의해 상기 제 1 레코드에 관련된 제 3 레코드에 대한 보안 라벨의 성분 중 하나 이상에 기초하여 결정되었던 것임 -; 및
    상기 보안 라벨을 상기 제 1 레코드에 저장하기 위한 수단 - 상기 보안 라벨은 상기 제 1 레코드로의 액세스를 관리하기 위한 것임 -
    을 포함하는, 컴퓨팅 시스템.
  21. 컴퓨터에 의해 수행되는 방법으로서,
    다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내에 저장된 제 1 레코드가 업데이트되었다고 결정하는 단계;
    상기 제 1 레코드의 업데이트에 기초하여 상기 제 1 레코드에 대한 제 1 보안 라벨의 제 1 성분을 자동으로 업데이트하는 단계;
    상기 제 1 레코드 내에 업데이트된 제 1 보안 라벨을 저장하는 단계 - 상기 제 1 보안 라벨은 상기 제 1 레코드로의 액세스를 관리하기 위한 것임 -; 및
    상기 데이터베이스의 제 2 테이블 내에 저장된 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하는 단계 - 상기 제 2 레코드는 제 1 외부키 관련성에 따라 상기 제 1 레코드에 관련되고, 상기 제 1 외부키 관련성은 상기 제 2 레코드를 식별하는 제 1 레코드 내의 값을 포함함 -
    를 포함하고,
    상기 제 1 레코드에 대한 제 1 보안 라벨의 제 2 성분은 (1) 상기 제 1 테이블의 속성 및 (2) 제 2 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 3 레코드에 대한 제 3 보안 라벨의 성분 중 하나 이상에 기초하고, 상기 제 1 보안 라벨은 상기 제 1 성분 및 상기 제 2 성분을 포함하는 단일 요소인, 컴퓨터에 의해 수행되는 방법.
  22. 제 21 항에 있어서,
    상기 방법은,
    상기 제 1 레코드에 대한 업데이트가 상기 제 1 레코드에 대한 제 1 보안 라벨에 영향을 주는지 여부를 결정하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  23. 제 21 항에 있어서,
    상기 방법은,
    상기 제 1 보안 라벨의 다수의 성분 중 하나 이상의 어떤 성분이 상기 제 1 레코드에 대한 업데이트에 의해 영향받는지 결정하는 단계; 및
    상기 제 1 보안 라벨의 하나 이상의 영향받은 성분을 자동으로 업데이트하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  24. 제 21 항에 있어서,
    상기 제 2 테이블은 상기 제 1 테이블의 자식(child)인, 컴퓨터에 의해 수행되는 방법.
  25. 제 21 항에 있어서,
    상기 방법은,
    상기 제 1 레코드에 대한 업데이트가 상기 외부키 관련성에 영향을 주는지 여부를 결정하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  26. 제 21 항에 있어서,
    상기 방법은,
    다수의 외부키 관련성 중 하나 이상의 어떤 외부키 관련성이 상기 제 1 레코드에 대한 업데이트에 의해 영향받는지 결정하는 단계; 및
    상기 영향받은 외부키 관련성에 따라, 상기 제 1 레코드에 관련된 각각의 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하는 단계를 포함하는, 컴퓨터에 의해 수행되는 방법.
  27. 비-일시적 컴퓨터-판독가능 저장 매체로서,
    컴퓨팅 시스템으로 하여금:
    다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내에 저장된 제 1 레코드가 업데이트되었다고 결정하고;
    상기 제 1 레코드의 업데이트에 기초하여 상기 제 1 레코드에 대한 제 1 보안 라벨의 제 1 성분을 자동으로 업데이트하며;
    상기 제 1 레코드 내에 업데이트된 제 1 보안 라벨을 저장하고 - 상기 제 1 보안 라벨은 상기 제 1 레코드로의 액세스를 관리하기 위한 것임 -;
    상기 데이터베이스의 제 2 테이블 내에 저장된 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하게 하는 - 상기 제 2 레코드는 제 1 외부키 관련성에 따라 상기 제 1 레코드에 관련되고, 상기 제 1 외부키 관련성은 상기 제 2 레코드를 식별하는 제 1 레코드 내의 값을 포함함 -
    명령이 저장되고,
    상기 제 1 레코드에 대한 제 1 보안 라벨의 제 2 성분은 (1) 상기 제 1 테이블의 속성 및 (2) 제 2 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 3 레코드에 대한 제 3 보안 라벨의 성분 중 하나 이상에 기초하고, 상기 제 1 보안 라벨은 상기 제 1 성분 및 상기 제 2 성분을 포함하는 단일 요소인, 비-일시적 컴퓨터-판독가능 저장 매체.
  28. 메모리에 연결된 프로세서를 포함하는 컴퓨팅 시스템으로서,
    상기 프로세서 및 메모리는:
    다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내에 저장된 제 1 레코드가 업데이트되었다고 결정하고;
    상기 제 1 레코드의 업데이트에 기초하여 상기 제 1 레코드에 대한 제 1 보안 라벨의 제 1 성분을 자동으로 업데이트하며;
    상기 제 1 레코드 내에 업데이트된 제 1 보안 라벨을 저장하고 - 상기 제 1 보안 라벨은 상기 제 1 레코드로의 액세스를 관리하기 위한 것임 -;
    상기 데이터베이스의 제 2 테이블 내에 저장된 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하도록 - 상기 제 2 레코드는 제 1 외부키 관련성에 따라 상기 제 1 레코드에 관련되고, 상기 제 1 외부키 관련성은 상기 제 2 레코드를 식별하는 제 1 레코드 내의 값을 포함함 -
    구성되고,
    상기 제 1 레코드에 대한 제 1 보안 라벨의 제 2 성분은 (1) 상기 제 1 테이블의 속성 및 (2) 제 2 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 3 레코드에 대한 제 3 보안 라벨의 성분 중 하나 이상에 기초하고, 상기 제 1 보안 라벨은 상기 제 1 성분 및 상기 제 2 성분을 포함하는 단일 요소인, 컴퓨팅 시스템.
  29. 컴퓨팅 시스템으로서,
    다수의 테이블을 포함하는 데이터베이스의 제 1 테이블 내에 저장된 제 1 레코드가 업데이트되었다고 결정하기 위한 수단;
    상기 제 1 레코드의 업데이트에 기초하여 상기 제 1 레코드에 대한 제 1 보안 라벨의 제 1 성분을 자동으로 업데이트하기 위한 수단;
    상기 제 1 레코드 내에 업데이트된 제 1 보안 라벨을 저장하기 위한 수단 - 상기 제 1 보안 라벨은 상기 제 1 레코드로의 액세스를 관리하기 위한 것임 -; 및
    상기 데이터베이스의 제 2 테이블 내에 저장된 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하기 위한 수단 - 상기 제 2 레코드는 제 1 외부키 관련성에 따라 상기 제 1 레코드에 관련되고, 상기 제 1 외부키 관련성은 상기 제 2 레코드를 식별하는 제 1 레코드 내의 값을 포함함 -
    을 포함하고,
    상기 제 1 레코드에 대한 제 1 보안 라벨의 제 2 성분은 (1) 상기 제 1 테이블의 속성 및 (2) 제 2 외부키 관련성에 따라 상기 제 1 레코드에 관련된 제 3 레코드에 대한 제 3 보안 라벨의 성분 중 하나 이상에 기초하고, 상기 제 1 보안 라벨은 상기 제 1 성분 및 상기 제 2 성분을 포함하는 단일 요소인, 컴퓨팅 시스템.
  30. 제 18 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금,
    각각의 외부키 관련성에 따라 상기 제 1 레코드에 각각 관련된 다수의 제 2 레코드들을 식별하는 동작;
    상기 제 2 레코드들 각각에 대한 보안 라벨의 성분을 식별하는 동작; 및
    상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들 각각에 대한 값에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  31. 제 30 항에 있어서,
    상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 동작은, 상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들에 대한 다수의 별개의 값들을 연쇄시키는 것을 포함하는, 비-일시적 컴퓨터-판독가능 저장 매체.
  32. 제 30 항에 있어서,
    상기 보안 라벨의 성분에 대한 값을 할당하는 동작은,
    상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들에 대한 값들 중에서 최고 우선순위 값을 식별하는 것, 및
    상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값으로서 상기 최고 우선순위 값을 할당하는 것을 포함하는, 비-일시적 컴퓨터-판독가능 저장 매체.
  33. 제 18 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금,
    상기 제 3 레코드의 속성에 기초하여, 상기 데이터베이스의 제 3 테이블 내의 각각의 제 3 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 동작을 수행하게 하는 명령이 저장되고, 상기 제 3 레코드의 속성은 상기 제 3 레코드에 저장된 값인, 비-일시적 컴퓨터-판독가능 저장 매체.
  34. 제 18 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금,
    상기 데이터베이스의 제 3 테이블 내의 각각의 제 3 레코드에 대한 보안 라벨의 성분을, 상기 제 3 테이블과 연관된 값에 기초하여 자동으로 결정하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  35. 제 18 항에 있어서,
    상기 제 2 레코드는 상기 제 1 테이블이 아닌 테이블 내에 있는, 비-일시적 컴퓨터-판독가능 저장 매체.
  36. 제 18 항에 있어서,
    상기 성분은 상기 제 1 레코드에 대한 보안 라벨의 제 1 성분이고,
    상기 컴퓨팅 시스템으로 하여금, 상기 보안 라벨의 제 2 성분을 결정하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  37. 제 18 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금, 트리거 이벤트에 응답하여, 특정한 제 1 레코드에 대한 보안 라벨의 성분을 업데이트하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  38. 제 37 항에 있어서,
    상기 트리거 이벤트는, 상기 외부키 관련성의 변경을 포함하는, 비-일시적 컴퓨터-판독가능 저장 매체.
  39. 제 37 항에 있어서,
    상기 트리거 이벤트는 상기 특정한 제 1 레코드에 관련된 제 2 레코드에 대한 보안 라벨의 성분의 변경을 포함하는, 비-일시적 컴퓨터-판독가능 저장 매체.
  40. 제 37 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금, 상기 트리거 이벤트를 검출하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  41. 제 37 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금, 상기 트리거 이벤트의 통지를 수신하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  42. 제 18 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금, 사용자로부터 특정한 제 1 레코드로의 액세스를 위한 요청을 수신하는 동작을 수행하게 하는 명령이 저장되고, 상기 사용자는 사용자 보안 코드와 연관되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  43. 제 42 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금, 상기 사용자와 연관된 사용자 보안 코드의 성분과 상기 특정한 제 1 레코드에 대한 보안 라벨의 성분의 비교에 기초하여, 상기 사용자에 의한 상기 특정한 제 1 레코드로의 액세스를 제한하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  44. 제 43 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금, 상기 액세스를 위한 요청을 수신하기 이전에, 상기 제 1 레코드에 대한 보안 라벨을 결정하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  45. 제 18 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금, 특정한 제 1 레코드가 상기 데이터베이스에 저장되기 위해 수신되면, 상기 제 1 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  46. 제 19 항에 있어서,
    상기 프로세서 및 메모리는,
    각각의 외부키 관련성에 따라 상기 제 1 레코드에 각각 관련된 다수의 제 2 레코드들을 식별하는 동작;
    상기 제 2 레코드들 각각에 대한 보안 라벨의 성분을 식별하는 동작; 및
    상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들 각각에 대한 값에 기초하여, 상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  47. 제 46 항에 있어서,
    상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값을 할당하는 동작은, 상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들에 대한 다수의 별개의 값들을 연쇄시키는 것을 포함하는, 컴퓨팅 시스템.
  48. 제 46 항에 있어서,
    상기 보안 라벨의 성분에 대한 값을 할당하는 동작은,
    상기 제 2 레코드들에 대한 보안 라벨의 식별된 성분들에 대한 값들 중에서 최고 우선순위 값을 식별하는 것, 및
    상기 제 1 레코드에 대한 보안 라벨의 성분에 대한 값으로서 상기 최고 우선순위 값을 할당하는 것을 포함하는, 컴퓨팅 시스템.
  49. 제 19 항에 있어서,
    상기 프로세서 및 메모리는,
    제 3 레코드의 속성에 기초하여, 상기 데이터베이스의 제 3 테이블 내의 각각의 제 3 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 동작을 수행하도록 구성되고, 상기 제 3 레코드의 속성은 상기 제 3 레코드에 저장된 값인, 컴퓨팅 시스템.
  50. 제 19 항에 있어서,
    상기 프로세서 및 메모리는,
    상기 데이터베이스의 제 3 테이블 내의 각각의 제 3 레코드에 대한 보안 라벨의 성분을, 상기 제 3 테이블과 연관된 값에 기초하여 자동으로 결정하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  51. 제 19 항에 있어서,
    상기 제 2 레코드는 상기 제 1 테이블이 아닌 테이블 내에 있는, 컴퓨팅 시스템.
  52. 제 19 항에 있어서,
    상기 성분은 상기 제 1 레코드에 대한 보안 라벨의 제 1 성분이고,
    상기 프로세서 및 메모리는, 상기 보안 라벨의 제 2 성분을 결정하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  53. 제 19 항에 있어서,
    상기 프로세서 및 메모리는, 트리거 이벤트에 응답하여, 특정한 제 1 레코드에 대한 보안 라벨의 성분을 업데이트하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  54. 제 53 항에 있어서,
    상기 트리거 이벤트는, 상기 외부키 관련성의 변경을 포함하는, 컴퓨팅 시스템.
  55. 제 53 항에 있어서,
    상기 트리거 이벤트는 상기 특정한 제 1 레코드에 관련된 제 2 레코드에 대한 보안 라벨의 성분의 변경을 포함하는, 컴퓨팅 시스템.
  56. 제 53 항에 있어서,
    상기 프로세서 및 메모리는, 상기 트리거 이벤트를 검출하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  57. 제 53 항에 있어서,
    상기 프로세서 및 메모리는, 상기 트리거 이벤트의 통지를 수신하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  58. 제 19 항에 있어서,
    상기 프로세서 및 메모리는, 사용자로부터 특정한 제 1 레코드로의 액세스를 위한 요청을 수신하는 동작을 수행하도록 구성되고, 상기 사용자는 사용자 보안 코드와 연관되는, 컴퓨팅 시스템.
  59. 제 58 항에 있어서,
    상기 프로세서 및 메모리는, 상기 사용자와 연관된 사용자 보안 코드의 성분과 상기 특정한 제 1 레코드에 대한 보안 라벨의 성분의 비교에 기초하여, 상기 사용자에 의한 상기 특정한 제 1 레코드로의 액세스를 제한하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  60. 제 59 항에 있어서,
    상기 프로세서 및 메모리는, 상기 액세스를 위한 요청을 수신하기 이전에, 상기 제 1 레코드에 대한 보안 라벨을 결정하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  61. 제 19 항에 있어서,
    상기 프로세서 및 메모리는, 특정한 제 1 레코드가 상기 데이터베이스에 저장되기 위해 수신되면, 상기 제 1 레코드에 대한 보안 라벨의 성분을 자동으로 결정하는 동작을 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  62. 제 27 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금, 상기 제 1 레코드에 대한 업데이트가 상기 제 1 레코드에 대한 제 1 보안 라벨에 영향을 주는지 여부를 결정하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  63. 제 27 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금,
    상기 제 1 보안 라벨의 다수의 성분 중 하나 이상의 어떤 성분이 상기 제 1 레코드에 대한 업데이트에 의해 영향받는지 결정하는 동작; 및
    상기 제 1 보안 라벨의 하나 이상의 영향받은 성분을 자동으로 업데이트하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  64. 제 27 항에 있어서,
    상기 제 2 테이블은 상기 제 1 테이블의 자식인, 비-일시적 컴퓨터-판독가능 저장 매체.
  65. 제 27 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금, 상기 제 1 레코드에 대한 업데이트가 상기 외부키 관련성에 영향을 주는지 여부를 결정하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  66. 제 27 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금,
    다수의 외부키 관련성 중 하나 이상의 어떤 외부키 관련성이 상기 제 1 레코드에 대한 업데이트에 의해 영향받는지 결정하는 동작; 및
    상기 영향받은 외부키 관련성에 따라, 상기 제 1 레코드에 관련된 각각의 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하는 동작을 수행하게 하는 명령이 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체.
  67. 제 28 항에 있어서,
    상기 프로세서 및 메모리는, 상기 제 1 레코드에 대한 업데이트가 상기 제 1 레코드에 대한 제 1 보안 라벨에 영향을 주는지 여부를 결정하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  68. 제 28 항에 있어서,
    상기 프로세서 및 메모리는,
    상기 제 1 보안 라벨의 다수의 성분 중 하나 이상의 어떤 성분이 상기 제 1 레코드에 대한 업데이트에 의해 영향받는지 결정하는 동작; 및
    상기 제 1 보안 라벨의 하나 이상의 영향받은 성분을 자동으로 업데이트하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  69. 제 28 항에 있어서,
    상기 제 2 테이블은 상기 제 1 테이블의 자식인, 컴퓨팅 시스템.
  70. 제 28 항에 있어서,
    상기 프로세서 및 메모리는, 상기 제 1 레코드에 대한 업데이트가 상기 외부키 관련성에 영향을 주는지 여부를 결정하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
  71. 제 28 항에 있어서,
    상기 프로세서 및 메모리는,
    다수의 외부키 관련성 중 하나 이상의 어떤 외부키 관련성이 상기 제 1 레코드에 대한 업데이트에 의해 영향받는지 결정하는 동작; 및
    상기 영향받은 외부키 관련성에 따라, 상기 제 1 레코드에 관련된 각각의 제 2 레코드에 대한 제 2 보안 라벨을 자동으로 업데이트하는 동작을 수행하도록 구성되는, 컴퓨팅 시스템.
KR1020177013940A 2014-11-05 2015-11-05 데이터베이스 보안 KR102209451B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462075593P 2014-11-05 2014-11-05
US62/075,593 2014-11-05
PCT/US2015/059213 WO2016073701A1 (en) 2014-11-05 2015-11-05 Database security

Publications (2)

Publication Number Publication Date
KR20170078714A KR20170078714A (ko) 2017-07-07
KR102209451B1 true KR102209451B1 (ko) 2021-01-28

Family

ID=54602030

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177013940A KR102209451B1 (ko) 2014-11-05 2015-11-05 데이터베이스 보안

Country Status (9)

Country Link
US (2) US11531775B2 (ko)
EP (1) EP3215976B1 (ko)
JP (1) JP6755864B2 (ko)
KR (1) KR102209451B1 (ko)
CN (1) CN107111722B (ko)
AU (3) AU2015343045A1 (ko)
CA (1) CA2966537C (ko)
SG (1) SG11201703004XA (ko)
WO (1) WO2016073701A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101905771B1 (ko) * 2016-01-29 2018-10-11 주식회사 엔오디비즈웨어 시스템 환경 및 사용자 행동 분석 기반의 자기 방어 보안 서버와 이의 작동 방법
US11138370B1 (en) 2016-09-23 2021-10-05 Massachusetts Mututal Life Insurance Company Modifying and using spreadsheets to create a GUI on another device
US10540152B1 (en) 2016-09-23 2020-01-21 Massachusetts Mutual Life Insurance Company Systems, devices, and methods for software coding
US11210459B1 (en) 2016-09-23 2021-12-28 Massachusetts Mutual Life Insurance Company Systems, devices, and methods for software coding
US10817549B2 (en) * 2016-12-09 2020-10-27 Salesforce.Com, Inc. Augmenting match indices
US10817465B2 (en) * 2016-12-09 2020-10-27 Salesforce.Com, Inc. Match index creation
US10496737B1 (en) 2017-01-05 2019-12-03 Massachusetts Mutual Life Insurance Company Systems, devices, and methods for software coding
US20190147182A1 (en) * 2017-11-15 2019-05-16 American Express Travel Related Services Company, Inc. Data Access System
US11140174B2 (en) * 2017-12-13 2021-10-05 Jpmorgan Chase Bank, N.A. Time and location controlled centralized access management system
CN110427770B (zh) * 2019-06-20 2021-04-20 中国科学院信息工程研究所 一种支持业务安全标记的数据库访问控制方法及系统
US11360990B2 (en) 2019-06-21 2022-06-14 Salesforce.Com, Inc. Method and a system for fuzzy matching of entities in a database system based on machine learning
JP2023005647A (ja) * 2021-06-29 2023-01-18 株式会社日立製作所 個人情報管理システムおよび個人情報管理方法
US11789911B1 (en) * 2021-07-27 2023-10-17 Amazon Technologies, Inc. Scalable permissions management for granular levels of database access

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060059567A1 (en) * 2004-02-20 2006-03-16 International Business Machines Corporation System and method for controlling data access using security label components
US20090063490A1 (en) * 2007-08-27 2009-03-05 Karl Fuerst Authorization controlled searching
WO2010106679A1 (ja) * 2009-03-19 2010-09-23 富士通株式会社 アクセス制御装置、情報管理装置およびアクセス制御方法

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US6446077B2 (en) * 1998-09-21 2002-09-03 Microsoft Corporation Inherited information propagator for objects
TW451143B (en) * 1998-11-05 2001-08-21 Ecomagents Inc Method for controlling access to information
US8316051B1 (en) * 2001-11-30 2012-11-20 Oralce International Corporation Techniques for adding multiple security policies to a database system
JP2004021449A (ja) 2002-06-14 2004-01-22 Fuji Xerox Co Ltd データ管理システム、データ管理方法及びデータ管理プログラム
US7134022B2 (en) * 2002-07-16 2006-11-07 Flyntz Terence T Multi-level and multi-category data labeling system
US7240046B2 (en) * 2002-09-04 2007-07-03 International Business Machines Corporation Row-level security in a relational database management system
US7216125B2 (en) * 2002-09-17 2007-05-08 International Business Machines Corporation Methods and apparatus for pre-filtered access control in computing systems
US7200595B2 (en) * 2004-03-29 2007-04-03 Microsoft Corporation Systems and methods for fine grained access control of data stored in relational databases
US20050289342A1 (en) * 2004-06-28 2005-12-29 Oracle International Corporation Column relevant data security label
US7599937B2 (en) * 2004-06-28 2009-10-06 Microsoft Corporation Systems and methods for fine grained access control of data stored in relational databases
JP2006106986A (ja) 2004-10-01 2006-04-20 Canon Inc アクセス管理方法及び情報処理装置
US7725501B1 (en) 2004-11-12 2010-05-25 Northrop Grumman Corporation System and method for rapid database application deployment and use
US7831570B2 (en) * 2004-12-30 2010-11-09 Oracle International Corporation Mandatory access control label security
US8732856B2 (en) * 2004-12-30 2014-05-20 Oracle International Corporation Cross-domain security for data vault
US7539682B2 (en) * 2005-03-14 2009-05-26 Microsoft Corporation Multilevel secure database
US7613711B2 (en) * 2005-06-14 2009-11-03 Microsoft Corporation Specification of a hierarchical authorization model for a DBMS—SQL language extensions
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7512792B2 (en) * 2005-12-15 2009-03-31 International Business Machines Corporation Reference monitor method for enforcing information flow policies
US7933282B1 (en) * 2007-02-08 2011-04-26 Netlogic Microsystems, Inc. Packet classification device for storing groups of rules
US8306999B2 (en) * 2007-03-23 2012-11-06 Sas Institute Inc. Computer-implemented systems, methods, and computer program product for providing row-level security in a database network
US20090050695A1 (en) * 2007-08-20 2009-02-26 International Business Machines Corporation Efficient access rules enforcement mechanism for label-based access control
US8566909B2 (en) * 2008-02-01 2013-10-22 Oracle International Corporation Row-level security with expression data type
CN101571858B (zh) 2008-04-28 2013-06-19 国际商业机器公司 多个对象的安全性设定及检查的方法和装置
US8869299B2 (en) * 2009-03-04 2014-10-21 Titus Inc. Method and system for generating trusted security labels for electronic documents
US8745747B2 (en) 2009-12-31 2014-06-03 Fujitsu Limited Data protecting device
US20110231889A1 (en) * 2010-03-22 2011-09-22 International Business Machines Corporation Security policy as query predicate
US9378387B2 (en) * 2010-03-24 2016-06-28 Oracle International Corporation Multi-level security cluster
US8510335B2 (en) * 2011-02-14 2013-08-13 Protegrity Corporation Database and method for controlling access to a database
US20120246150A1 (en) * 2011-03-23 2012-09-27 Raytheon Company System and Method for Storing Data and Providing Multi-Level Access Thereto
US20120330925A1 (en) * 2011-06-23 2012-12-27 Microsoft Corporation Optimizing fine grained access control using authorization indexes
US9208343B2 (en) * 2011-08-18 2015-12-08 Hewlett-Packard Development Company, L.P. Transitive closure security
US8930413B2 (en) * 2012-01-03 2015-01-06 International Business Machines Corporation Dynamic structure for a multi-tenant database
US9043309B2 (en) * 2012-06-05 2015-05-26 Oracle International Corporation SQL transformation-based optimization techniques for enforcement of data access control
US8893288B2 (en) * 2012-07-02 2014-11-18 International Business Machines Corporation Prevention of information leakage from a document based on dynamic database label based access control (LBAC) policies
KR20140051487A (ko) * 2012-10-08 2014-05-02 삼성전자주식회사 단말기의 데이터보호 장치 및 방법
CN103560994A (zh) * 2013-08-16 2014-02-05 中山大学 用于rfid系统的基于上下文相关的安全访问控制方法
US10242222B2 (en) * 2014-01-14 2019-03-26 Baker Hughes, A Ge Company, Llc Compartment-based data security
GB2509032A (en) * 2014-03-31 2014-06-18 Perform Media Services Ltd Authority maps for access to a database using a client device
US9600548B2 (en) * 2014-10-10 2017-03-21 Salesforce.Com Row level security integration of analytical data store with cloud architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060059567A1 (en) * 2004-02-20 2006-03-16 International Business Machines Corporation System and method for controlling data access using security label components
US20090063490A1 (en) * 2007-08-27 2009-03-05 Karl Fuerst Authorization controlled searching
WO2010106679A1 (ja) * 2009-03-19 2010-09-23 富士通株式会社 アクセス制御装置、情報管理装置およびアクセス制御方法

Also Published As

Publication number Publication date
CA2966537A1 (en) 2016-05-12
EP3215976B1 (en) 2021-10-20
JP2018503154A (ja) 2018-02-01
AU2022203757B2 (en) 2023-06-15
US20230075240A1 (en) 2023-03-09
SG11201703004XA (en) 2017-05-30
AU2015343045A1 (en) 2017-05-04
EP3215976A1 (en) 2017-09-13
AU2022203757A1 (en) 2022-06-23
US20160125197A1 (en) 2016-05-05
CN107111722B (zh) 2021-06-11
AU2020203287A1 (en) 2020-06-11
WO2016073701A1 (en) 2016-05-12
JP6755864B2 (ja) 2020-09-16
US11531775B2 (en) 2022-12-20
CA2966537C (en) 2022-05-24
KR20170078714A (ko) 2017-07-07
CN107111722A (zh) 2017-08-29

Similar Documents

Publication Publication Date Title
KR102209451B1 (ko) 데이터베이스 보안
US9514318B2 (en) Dynamic access control for documents in electronic communications within a networked computing environment
US11886507B2 (en) Multi-tenant knowledge graph databases with dynamic specification and enforcement of ontological data models
US7613726B1 (en) Framework for defining and implementing behaviors across and within content object types
US20150026208A1 (en) Dynamic authorization to features and data in java-based enterprise applications
US11822543B2 (en) Composite views in a master data management system
US11119749B2 (en) Architectures and techniques for record protection and field management
AU2017214759B2 (en) Graph-based operations on an entity-relationship database
US11475151B2 (en) Security policy management for database
US11423127B2 (en) Resilient watermarking
US20140189889A1 (en) Managing authorization of actions associated with data objects
US10331478B2 (en) Secure data onboarding agent network
US20210026851A1 (en) Dynamically Managing Predicate Expression Columns in an Encrypted Database
US8930363B2 (en) Efficient handling of address data in business transaction documents
US11853452B2 (en) Keeping databases compliant with data protection regulations by sensing the presence of sensitive data and transferring the data to compliant geographies
US20220050912A1 (en) Security semantics for database queries
CN115618387A (zh) 基于abac的鉴权方法、装置、设备及计算机可读介质
WO2023192085A1 (en) Constructing vehicle shadows using disaggregated streaming data

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant