KR101120814B1 - 로우 레벨 데이터베이스 보안을 최적화하는 시스템 및 방법 - Google Patents

로우 레벨 데이터베이스 보안을 최적화하는 시스템 및 방법 Download PDF

Info

Publication number
KR101120814B1
KR101120814B1 KR1020050002218A KR20050002218A KR101120814B1 KR 101120814 B1 KR101120814 B1 KR 101120814B1 KR 1020050002218 A KR1020050002218 A KR 1020050002218A KR 20050002218 A KR20050002218 A KR 20050002218A KR 101120814 B1 KR101120814 B1 KR 101120814B1
Authority
KR
South Korea
Prior art keywords
query
expressions
security
expression
level security
Prior art date
Application number
KR1020050002218A
Other languages
English (en)
Other versions
KR20050081164A (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 KR20050081164A publication Critical patent/KR20050081164A/ko
Application granted granted Critical
Publication of KR101120814B1 publication Critical patent/KR101120814B1/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
    • 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
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16KVALVES; TAPS; COCKS; ACTUATING-FLOATS; DEVICES FOR VENTING OR AERATING
    • F16K15/00Check valves
    • F16K15/02Check valves with guided rigid valve members
    • F16K15/06Check valves with guided rigid valve members with guided stems
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16KVALVES; TAPS; COCKS; ACTUATING-FLOATS; DEVICES FOR VENTING OR AERATING
    • F16K27/00Construction of housing; Use of materials therefor
    • F16K27/02Construction of housing; Use of materials therefor of lift valves
    • F16K27/0209Check valves or pivoted valves

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Mechanical Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명의 시스템 및 방법은 SQL 확장명(extensions)을 이용하여 지명된 보안식들(named security expressions)을 생성하고 이들을 쿼리 개시자(들)와 관련시킴으로써 데이터베이스 로우 레벨 보안(row-level security)을 용이하게 한다. 그러한 식들은 부울 식들을 포함하고, 이 식들은 데이터 로우가 쿼리 개시자에게 액세스 가능하도록 하기 위하여 그 데이터 로우에 의해 만족되어야 한다. 일반적으로, 쿼리는 보안식들로써 오그멘트(augment)되고, 이 식들은 데이터 로우들을 쿼리하는 동안에 집결되어 사용된다. 본 시스템 및 방법은 쿼리 성능을 최적화하면서 정보 누설을 완화시키기 위하여 쿼리 내에 보안식들을 다양하게 위치시킨다. 이것은 보안식들을 특별한 것으로 태그(tag)하고, 정적 및/또는 동적 분석을 통하여 결정되는, 비보안식들이 안전한지의 가능성에 따라서, 술어 규칙들(rules of predicate)을 이용하여 비보안식들을 보안식들 위쪽 또는 아래쪽으로 끌어당기거나 밀어냄으로써 성취된다.
보안식(security expression), 로우 레벨 보안(row-level security), 술어 규칙들(rules of predicates), SQL 구문(SQL syntax)

Description

로우 레벨 데이터베이스 보안을 최적화하는 시스템 및 방법{SYSTEMS AND METHODS THAT OPTIMIZE ROW LEVEL DATABASE SECURITY}
도 1은 쿼리에 보안식을 오그멘트(augment)하여 데이터 액세스 보안을 용이하게 하는 시스템을 도시한다.
도 2는 성능에 대해 보안-오그멘트된 쿼리를 최적화하는 데이터 보안 시스템을 도시한다.
도 3은 데이터 관리자에 의해 식 뱅크(expression bank)에 저장된 보안식을 쿼리에 오그멘트하는 데이터 보안 시스템을 도시한다.
도 4는 데이터베이스를 쿼리하기 위해 보안-오그멘트된 쿼리들을 사용하는 시스템을 도시한다.
도 5는 로우(row) 레벨의 데이터베이스 보안을 구현하는 방법을 도시한다.
도 6은 표의 로우들에 대해 로우-레벨의 보안 허가를 승인하는 방법을 도시한다.
도 7은 표의 로우들에 대해 로우-레벨의 보안 허가를 거절하는 방법을 도시한다.
도 8은 표의 로우들에 대해 로우-레벨 보안 허가의 승인 및/또는 거절을 취소시키는 방법을 도시한다.
도 9는 SQL 쿼리 관리 시스템의 예를 도시한다.
도 10은 통신망 환경의 예를 도시하고, 여기서 본 발명의 새로운 양태들이 채택될 수 있다.
도 11은 운영 환경의 예를 도시하고, 여기서 본 발명의 새로운 양태들이 채택될 수 있다.
<도면의 주요 부분에 대한 부호 설명>
420 사용자
210 최적화기
110 쿼리 관리자
310 식 뱅크
430 데이타베이스(들)
440 표
450 표 외부에 상주하는 데이타
<관련 출원(들)으로의 참조>
본 출원은 본 명세서에 전체 내용이 참조되는 "데이터베이스 표의 로우에 대한 로우 레벨 보안을 제공하는 시스템 및 방법(SYSTEMS AND METHODS THAT PROVIDE ROW LEVEL SECURITY FOR DATABASE TABLE ROW)"의 표제의, 2004년 2월 11일에 출원 된 미국 가출원번호 60/543,855의 권리를 주장한다.
이 출원서는 ________에 출원된 "로우 레벨 데이타베이스 보안을 명시하는 시스템 및 방법(SYSTEMS AND METHODS THAT SPECIFY ROW LEVEL DATABASE SECURITY)"의 표제의, 계류중인 미국 특허출원번호________(대리인 서류번호 MS308288.02/MSFTP647USA)와 관련이 있다.
본 발명은 일반적으로 데이터베이스에 관한 것이고, 더 구체적으로는 쿼리들에 로우-레벨 보안식들을 오그멘트하여 성능을 최적화하고 데이터 누설을 완화시키는 시스템 및 방법에 관한 것이다.
컴퓨터 하드웨어, 소프트웨어, 및 통신에서의 기술 발전은, 예를 들어, 종이 및 전화 통화와 같은 종래 기술들을 통해서 보다 전자 정보 교환에 대한 증대된 요구를 가져왔다. 그런 전자 통신은 전세계의 기본적으로 임의의 2개의 위치들 간에 몇 분의 1초의 신뢰성 있는 데이터 전송을 제공할 수 있다. 다수의 산업들과 소비자들은 웹-기반(즉, 온라인) 서비스들을 통해 효율성을 향상시키고 비용을 감소시키기 위해 그런 기술을 사용하고 있다. 예를 들어, 소비자들은 편리하게 가정에서 마우스 클릭으로 물품을 구매하고, 은행 명세서를 리뷰할 수 있고, 제품들과 회사들을 검색하고, 실시간 주가 정보를 얻고, 팜플렛(brochure)을 다운로드하고, 기타등등을 할 수 있다.
이용가능 전자 데이터의 양이 증가함에 따라, 사용자 친화적이고 신속한 데이터 검색 및 수취를 용이하게 하는 관리가능한 방식으로 그런 데이터를 저장하는 것은 더욱 중요하게 되었다. 오늘날, 한 개 이상의 데이터베이스에 전자 데이터를 저장하는 것은 일반적 접근법이다. 일반적으로, 통상적 데이터베이스는, 예를 들어, 컴퓨터 프로그램이 데이터를 신속하게 검색하고 선택할 수 있도록 구조화된 정보의 조직화된 수집이다. 통상적으로, 데이터베이스 내에 저장된 데이터는 한 개 이상의 표들을 통해 조직화되고, 여기서 각각의 표는 레코드들의 세트로 구성되고 레코드는 필드들의 세트를 포함한다. 로우/컬럼(row/column) 쌍이 표 내에 특정 데이터를 참조할 수 있도록, 레코드는 일반적으로 표 내의 로우로서 인덱스되고, 레코드 필드는 일반적으로 컬럼으로서 인덱스된다.
데이터베이스에 저장된 데이터는 종종 개인적(예를 들어, 은행 계좌, 주민번호)이고 민감한 정보(예를 들어, 의료 기록)를 포함하고, 서류로 백업되지 않을 수 있다. 그러므로, 데이터베이스에 관련된 보안 및 거기에 저장된 데이터의 중요성이 증대한다. 그러나 다수의 현재 데이터베이스 보안 기술들은, 예를 들어, 소프트웨어 약점을 통해 및/또는 악의를 갖는 소프트웨어 해커들에 의해 붕괴될 수 있거나, 포괄적 레벨의 보안을 제공하지 않을 수 있다.
다음은 본 발명의 일부 양태들의 기본 이해를 제공하기 위한 본 발명의 개요를 제공한다. 이 개요는 본 발명의 광범위한 고찰이 아니다. 본 발명의 키 또는 중요 요소들을 식별하거나 본 발명의 범위를 지정하기 위한 의도가 아니다. 단지 한 가지 목적은 나중에 제공되는 더 상세한 설명에 앞서 단순화된 형태로 본 발명의 일부 개념들을 제공하는 것이다.
지명된 보안식들을 생성하고 한 개 이상의 쿼리 개시자들과 연계시키기 위해 사용될 수 있는 향상된 구문을 제공하여 데이터베이스 로우-레벨 보안을 용이하게 한다. 그런 표현들은 쿼리 개시자에게 데이터가 액세스가능하도록 데이터의 로우에 의해 만족되어야 하는 임의의 부울 식으로서 표현되는 술어들(predicates)을 포함할 수 있다. 일반적으로, 로우 레벨 보안이 활성화될 때, 수신된 쿼리에 쿼리 개시자와 연계된 보안식들이 오그멘트된다. 이들 식들은 데이터 로우들을 쿼링하는 중에 사용되고, 여기서 보안식들을 만족시키는(또는 "참"으로의 평가) 로우들은 쿼리 개시자로 액세스가 가능하도록 만들어진다. 일 특정 예에서, 만족될 때 로우 액세스를 승인하는 부울 식들의 논리합(disjunction)과 만족될 때 로우 액세스를 거절하는 부울 식들의 보수연산(complement)의 논리곱(conjunction)의 논리곱으로 구성된 식을 결합시켜서 수신된 쿼리에 오그멘트된다. 부언하면, 적어도 한 개의 승인식(grant expression)이 만족되고 아무런 거절식(deny expression)이 만족되지 않을 때, 로우 데이터가 집결된 보안식을 만족시키도록 쿼리에 오그멘트된다.
시스템 및 방법은 쿼리 성능을 최적화하기 위해 쿼리 내에 보안식들을 포함하는 식들을 다양하게 배치하고 이동시킬 수 있다. 종래 기술들은 한 개 이상의 보안식이 다른 식들 이전에 평가되어야 하는지를 고려하지 않는다. 그러므로, 종래 시스템들은 누설되기 쉽고, 여기서 사용자에게 가시적이어서는 안되는 데이터로의 액세스를 사용자가 얻을 수 있다. 본 발명은 그런 누설을 완화시킨다. 통상적으로, 이것은 보안식과 비보안식 간에 구별하기 위해 보안식을 특별하게 태그하여 성취된다. 그 다음, 술어 이동의 규칙들(rules of predicate movement)은 데이터 누설의 완화를 용이하게 하기 위해 사용될 수 있다. 이들 규칙들은 단지 제한된 상황에서만 비보안식을 보안식의 위쪽에 끌어당기거나 아래쪽에 밀어넣도록 한다. 다수의 예들에서, 정적 분석은 식이 "안전" 식이거나, 정보 개시의 위험 없이 실행될 수 있는지를 판정하기 위해 컴파일 시간에 수행될 수 있다. 다른 예들에서, 대체로(alternatively) 또는 추가로 동적 분석은 식이 "안전" 식인지를 판정하기 위해 실행 시간에 수행될 수 있다. 동적 분석으로, 결과는 통상적으로 리턴되지 않고, 보안 술어들이 성공적으로 실행되고 그리고/또는 아무런 안전 위반(예를 들어, 오류 조건, 인터럽트, 이벤트 등)이 발생되지 않을 때까지 통상적으로 변경은 되지 않는다. 정적 및 동적 분석 모두로, 아무런 안전 위반이 발견되지 않으면, 식들이 배치된 순서는 성능을 향상시키기 위해 결정될 수 있다. 그러나, 안전 위반이 검출되면, 쿼리는 취소되거나 "안전" 모드로 실행될 수 있고, 여기서 보안식은 비보안식을 실행시키기 전에 평가된다. 일반적으로, 논리적 연산들은 "안전"하다고 고려된다.
보안식은 SQL과 같은 데이터베이스 언어를 통해 쿼리 개시자와 연계될 수 있다. 예를 들어, 보안식은 SQL CREATE 유틸리티를 사용하여 생성될 수 있다. 생성된 보안식은 SQL GRANT 또는 SQL DENY 유틸리티를 통해 쿼리 개시자와 연계될 수 있다. 승인 및/또는 거절 보안식은 SQL REVOKE 유틸리티를 통해 취소될 수 있고, 보안식은 SQL DROP 유틸리티를 통해 드롭(drop)될 수 있다. 그런 보안식은 통상적으로 쿼리에 병합되고, 데이터를 쿼링할 때 사용된다. 일반적으로, 승인 보안식은 로우가 승인 보안식을 만족시킬 때 데이터의 로우로의 액세스를 제공하고, 거절 보안식은 로우가 거절 보안식을 만족시킬 때 데이터의 로우로의 액세스를 방해한다. 상술된 바와 같이, 다수의 보안식은 쿼리 개시자와 연계될 수 있다. 그러므로, 승인 및 거절 보안식 모두는 사용자와 연계될 수 있다. 통상적으로, 두 가지 타입의 식 모두를 만족시키는 로우는 쿼리 개시자에게 이용가능하게 만들어지지 않도록 거절 보안식은 승인을 대신한다. 추가로, 적어도 한 개의 승인 보안식이 만족되고 아무런 거절 보안식이 만족되지 않을 때 "참"을 만드는 복수의 보안식으로 데이터 로우를 평가하여 결과적으로 집결(aggregate)되도록, 거절 보안식의 보수연산이 사용될 수 있다.
종래에는, 로우에 보안을 연계시키기 위해, 각각의 로우는 식별될 필요가 있었다. 그러나, 다수의 데이터베이스 프로그래밍 언어들은 주소로 표의 각각의 로우를 식별하지 않는다. 일부 경우들에서, 제1 키는 표에 대한 주소로서 사용될 수 있다. 그러나, 모든 표가 연계된 제1 키를 갖는 것은 아니다. 더욱이, 표의 각각의 로우가 개별적으로 식별되도록 연계하는 보안은 표에 다수의 로우들이 있을 수 있으므로 데이터 관리 문제를 일으킬 수 있다. 게다가, 각각의 로우 내의 보안 정보의 저장은 특히 각각의 로우에 저장된 값들이 매우 크지 않으면 비효율적이고 공간을 차지할 수 있다. 추가로, 다수의 데이터베이스 프로그래밍 언어들은 표에 또는 그것을 구성하는 한 개 이상의 컬럼에, 하지만 각각의 로우에는 아닌, 보안이 명시될 수 있는 구문을 규정한다. 본 발명의 새로운 시스템 및 방법은 향상된 SQL 구문을 통해 언급된 단점들을 완화시키기 위해 사용될 수 있다.
다음 설명과 연결된 도면들은 본 발명의 특정 설명적 양태들을 상세히 기재한다. 그러나, 이들 양태들은 본 발명의 원칙들이 채택될 수 있는 다양한 방식들 중의 몇 가지만을 지시하고, 본 발명은 모든 그런 양태들과 그들의 동격들을 포함하려고 의도된다. 본 발명의 다른 장점들 및 새로운 특징들은 도면들과 연결하여 고려될 때 다음의 본 발명의 상세한 설명으로부터 명백해질 것이다.
이 출원서에서 사용된 바와 같이, "콤포넌트", "시스템", "관리자" 등의 용어들은 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행의 소프트웨어와 같은 컴퓨터 관련 개체를 참조하도록 의도된다. 예를 들어, 콤포넌트는 프로세서에서 실행하는 프로세스, 프로세서, 객체, 실행파일, 실행 쓰레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 거기에 제한적이 아니다. 설명의 방식으로, 서버에서 실행하는 응용 프로그램 및 서버 모두는 콤포넌트일 수 있다. 한 개 이상의 콤포넌트는 프로세스 및/또는 실행 쓰레드에 상주할 수 있고, 콤포넌트는 일 컴퓨터 상에 국지화될 수 있고 그리고/또는 2 개 이상의 컴퓨터에 분산될 수 있다.
본 발명은 로우-레벨 데이터베이스 보안을 구현하는 시스템 및 방법에 관한 것이다. 그런 보안은 표 및/또는 컨텍스트 데이터에 대해 정의되지만 거기에 제한적이지 않은 부울 식과 같은 한 개 이상의 프로그래밍 스테이트먼트를 갖는 지명된 식으로서 유사 보안 특성을 갖는 한 개 이상의 로우들의 세트가 논리적으로 군집화되고 함께 다루어지도록 한다. 보안식은 쿼리의 술어들을 배치하기 위해 쿼리에 다양하게 오그멘트되어 성능을 최적화하고 보안 누설을 완화시킬 수 있다. 집결(aggregate)의 만족(즉, "참"의 리턴)은 데이터 로우(들)로의 액세스를 제공하는 한편, 집결의 불만족(즉, "거짓"의 리턴)은 데이터의 로우(들)로의 액세스를 제한 하도록, 보안식이 집결될 수 있다.
본 발명은 도면들을 참조하여 설명되고, 여기서 유사 참조 부호는 도면 전체에서 유사 소자들을 참조하기 위해 사용된다. 다음 기재에서, 설명 목적으로, 다수의 특정 세부사항들이 본 발명의 철저한 이해를 위해 제공하기 위해 기재된다. 그러나, 본 발명은 이들 특정 세부사항 없이도 실시될 수 있슴은 명백할 것이다. 다른 예들에서, 잘 공지된 구조 및 디바이스가 본 발명의 설명을 용이하게 하기 위해 블럭도 형태로 도시된다.
도 1은 데이터를 쿼링할 때 데이터 액세스 보안을 용이하게 하는 시스템(100)을 도시한다. 시스템(100)은 입력 콤포넌트(110), 쿼리 관리자(120), 및 출력 콤포넌트(130)를 포함한다. 입력 콤포넌트(110)는 쿼리를 수신한다. 그런 쿼리는, 예를 들어, SQL과 같은 기본적으로 임의의 데이터베이스 프로그래밍 언어로부터 시작될 수 있고, 한 개 이상의 데이터베이스, 표, 컨텍스트 정보 등을 포함하는 데이터 저장소가 지정될 수 있다.
쿼리 관리자(120)는 데이터 보안을 포함하기 위해 수신된 쿼리를 오그멘트할 수 있다. 그런 보안은 데이터 저장소 내의 데이터 소유주에 의해 생성될 수 있고, 여기서 생성된 보안은 그 소유주의 데이터에 대해 보안을 제공한다. 보안은 데이터의 다양한 형식 또는 구조에 적용될 수 있다. 예를 들어, 데이터가 로우, 표, 및/또는 컬럼과 연계되면, 보안이 전혀 적용이 안되거나, 모두에게 적용되거나, 또는 그들의 임의의 조합에 적용될 수 있다. 추가로, 보안의 만족이 데이터로의 액세스를 제공하거나 보안의 만족이 그 데이터로의 액세스를 금지하도록 보안이 구성 될 수 있다. 보안은 복수의 상이한 보안으로 구성될 수 있고, 그들의 일부는 액세스를 제공할 수 있고 다른 일부는 액세스를 금지시킬 수 있슴을 이해할 것이다.
게다가, 표의 생성자는 한 개 이상의 보안식과 한 개 이상의 쿼리자를 연결할 수 있다. 일반적으로, 보안이 연결되지 않으면, 쿼리자는 데이터를 전혀 볼 수없을 것이다. 보안이 쿼리자와 연결될 때, 데이타가 데이터로의 액세스를 제공하는 적어도 한 개의 보안식을 만족하고 그 데이터로의 액세스를 거절하는 보안을 모두 만족시키지 않을 때만 쿼리자는 그 데이터로의 액세스가 가능할 것이다. 통상적으로, 데이터가 양쪽 타입의 보안을 모두 만족시키면 액세스가 거절되도록, 거절 액세스 보안은 승인 액세스 보안을 대신한다. 추가로, 승인과 거절 보안 모두는 취소될 수 있다. 상술한 바는 데이터의 소유주가 누가 그의 데이터 중의 어떤 부분을 액세스할 수 있는지를 선택적으로 결정할 수 있도록 한다. 추가로, 보안이 쿼리자에 적용되지 않고 쿼리자는 기본적으로 모든 데이터를 액세스할 수 있도록, 쿼리자는 면제 지위의 속성을 가질 수 있다. 통상적으로, 표의 소유주는 이 방식으로 모든 로우 레벨 보안 제한으로부터 면제된다.
오그멘트된 쿼리는 출력 콤포넌트(130)로 전달될 수 있다. 출력 콤포넌트(130)는 그 데이터를 쿼링하는 추가 프로세싱 또는, 그 자신를 포함한, 일 콤포넌트에 그런 쿼리를 제공할 수 있다.
도 2는 입력 콤포넌트(110), 쿼리 관리자(120), 출력 콤포넌트(130), 및 추가로, 최적화기(210)를 갖춘 데이터 보안 시스템(100)을 도시한다. 상술된 바와 같이, 입력 콤포넌트(110)는 다양하게 구조화된 데이터의 데이터 저장소에 대한 쿼 리의 요구를 수신한다. 쿼리 관리자(120)는 데이터 보안식을 포함하기 위해 요구를 오그멘트한다. 그런 보안은 데이터 저장소 내에 데이터 소유주에 의해 생성될 수 있고, 여기서 생성된 보안은 그 소유주의 데이터에 대한 보안을 제공한다. 보안 점검 및 제한된 액세스를 지시하기 위해 정의될 수 있는, "참"과 "거짓", 또는 "1"과 "0"과 같은, 이진값으로 평가하는 부울 식과 같은 식을 통해 보안이 정의될 수 있다.
한 개 이상의 식이 사용될 때, 각각의 식은 직렬이나 동시에 평가될 수 있고, 개별적 결과는 결정을 하기 위해 집결될 수 있다(즉, 함께 AND되고 OR됨). 위에서 간단하게 지시된 바와 같이, 만족되었을 때 데이터로의 액세스를 표현상으로 허용(즉, 승인)하거나 금지(즉, 거절)하는 식이 생성될 수 있다. 그런 식을 금지하는 데이터의 만족은 "참"에 귀결되므로, 그런 식의 만족이 "거짓"에 귀결하도록 보수연산이 사용될 수 있다. 그러므로, 적어도 한 개의 승인식이 만족되고 거절식 중에 "참"으로 평가하는 식이 없을 때 "참"을 리턴하는 집결된 식이 생성될 수 있다. 부울 식이 채택될 수 있지만, 다른 기술들도 본 발명의 일 양태에 따라 사용될 수 있슴을 이해할 것이다. 그런 기술들은 확률 및/또는 신뢰 레벨을 제공할 수 있고, 단절(cut-off) 포인트를 정의하기 위해 조절가능한 임계를 포함할 수 있다.
최적화기(210)는 쿼리를 최적화하기 위해 쿼리 내에 보안식을 포함한 식들을 포함하거나 이동할 수 있다. 종래 기술들은 한 개 이상의 적절히 결합된 보안식이 다른 식들 이전에 평가되어야 하는지를 고려하지 않는다. 그러므로, 종래 시스템들은 누설에 취약하고, 여기서 사용자는 사용자에게 가시적이지 말아야 하는 데이 터로의 액세스를 얻는다. 본 발명은 그런 누설을 완화시킨다. 통상적으로, 이것은 쿼리에 결합될 때 보안식을 태깅하여 보안식과 비보안식을 구별하여 성취된다. 그 다음 술어 이동의 규칙들은 최적화기(210)에 의해 사용되어 정보 누설의 완화를 용이하게 할 수 있다. 이들 규칙들은 최적화기(210)가 보안식 위쪽에 비보안식의 제한된 클래스만을 당겨놓거나 보안식 아래쪽에 비보안식의 제한된 클래스만을 밀어넣도록 한다.
다수의 예들에서, 정적 분석은 컴파일 시간에 수행되어 식이 "안전" 식인지 또는 정보 공개의 위험없이 실행될 수 있는 식인지를 판정할 수 있다. 다른 예들에서, 동적 분석은 대체로(alternatively) 또는 추가로 실행 시간에 수행되어 식이 실제로 "안전" 식인지를 판정할 수 있다. 동적 분석으로, 통상적으로 결과는 리턴되지 않고, 쿼리가 실행 중에 발생하는 안전 위반(예를 들어, 오류 조건, 인터럽트, 이벤트 등)이 전혀 없이 성공적으로 완료될 때까지는 변경이 통상적으로 안된다. 정적 및 동적 분석으로, 안전 위반이 전혀 발견되지 않으면, 식이 배치되는 순서는 성능을 향상시키기 위해 최적화기(210)에 의해 결정될 수 있다. 그러나, 안전 위반이 검출되면, 쿼리는 취소되거나 "안전" 모드로 실행될 수 있고, 보안식은 비보안식을 실행하기 전에 평가된다. 쿼리에서의 특별한 보안 술어의 태깅은 그런 실행 계획을 허용한다. 정적 분석에서, 일반적으로, 논리 연산들은 "안전"한 것으로 보통 고려된다. 보안식을 쿼리에 오그멘트하고 쿼리 내에 식을 최적화할 때, 쿼리는 출력 콤포넌트(130)에 전달될 수 있다. 출력 콤포넌트(130)는 데이터의 추가 프로세싱 또는 쿼링을 위해 오그멘트된 쿼리를 제공할 수 있다.
도 3은 입력 콤포넌트(110), 쿼리 관리자(120), 출력 콤포넌트(130), 최적화기(210), 및, 추가로, 식 뱅크(310)를 포함하는 데이터 보안 시스템(100)을 도시한다. 입력 콤포넌트(110)는 직렬로 및/또는 동시에 한 개 이상의 쿼리자들로부터 데이터에 대한 요구를 수신할 수 있고, 여기서 복수 요구들은 데이터 저장소 내의 유사한 그리고/또는 분리된 데이터와 연계될 수 있다. 추가로, 복수 요구들은 직렬로 및/또는 동시에 핸들링될 수 있다. 다수의 예들에서, 버퍼(도시 안됨)와 같은 메모리는 요구들을 큐잉(queuing)하기 위해 요구 관련 정보를 임시 저장하기 위해 사용될 수 있다. 예를 들어, 낮은 우선순위 요구가 처리되는 동안 높은 우선순위로 라벨화된 요구가 수신될 수 있고, 여기서 높은 우선순위 요구가 서비스될 때까지 낮은 우선순위 요구는 캐싱(caching)될 수 있다.
식 뱅크(310)는 한 개 이상의 보안식과 비보안식을 저장하기 위해 사용될 수 있다. 그런 식은 한 개 이상의 요구자들 및/또는 한 개 이상의 요구자들의 그룹과 연계될 수 있다. 식은 요구자를 식별할 때 식 뱅크(310)로부터 검색수취될 수 있다. 예를 들어, 수신된 쿼리는 요구자(즉, 사용자, 응용 프로그램 등)와 연계된 고유의 식별자 또는 그 요구를 전송한 기계를 포함할 수 있다. 다른 예에서, 쿼리는 그런 정보 다음에 또는 이전에 있을 수 있다. 다른 예들에서, 요구자 및/또는 보안식의 적절한 세트를 결정하기 위해 지능(intelligence)이 채택될 수 있다. 요구에 대한 검색수취된 보안식(들)은 데이터 저장소를 검색하는 동안 채택될 수 있다.
응용 프로그램 인터페이스(API)(도시 안됨)는 데이터 관리자에 의해 사용되 어 식 뱅크(310)의 그들의 데이터와 관련된 보안식을 생성할 수 있슴을 이해할 것이다. 예로써, SQL 프로그래밍 언어의 CREATE 유틸리티는 보안식을 생성하기 위해 사용될 수 있다. 예를 들어, 다음 SQL 구문은 보안식을 생성하기 위해 사용될 수 있다:
Figure 112005001305952-pat00001
여기서 <expression_name>은 식명을 명시하고, <data_name>은 소스(즉, 한 개 이상의 테이블명 또는 그것의 서브세트)를 명시하고, <expression>은 로우(들) 내의 데이터로의 액세스를 얻기 위해 로우(들)에 의해 만족되어야 하는 보안식이다. 상술된 바와 같이, 그런 식은 특정 요구자들 및/또는 요구자들의 그룹들로 연결될 수 있다. 예를 들어, SQL을 사용할 때, 데이터 관리자는 GRANT, REVOKE, 및 DENY 유틸리티들을 통해 데이터의 특정 소스에 대해 생성된 보안식을 사용자 및/또는 사용자들의 그룹에 연결할 수 있고, 그리고/또는, 아래 상세히 기재되는 바와 같이, DROP 유틸리티를 통해 보안식을 제거할 수 있다.
일 특정 예에서, 쿼리 관리자(120)는 승인된 부울 식의 논리합(즉, OR함)으로 구성된 식을 결합하고 -각각의 식은 승인된 연계된 보안 원칙(즉, 보안 신원(security identity))과 논리곱이 됨(AND함)-, 그 결과적 논리합과 거절된 각각의 부울 식의 보수연산의 논리곱(즉, AND함)을 논리곱하여 -각각이 식은 거절된 보안 원칙과 논리곱이 됨-, 쿼리에 오그멘트할 수 있다. 부언하면, 적어도 한 개의 승인된 식이 만족되고 거절식이 전혀 만족되지 않을 때 데이터가 쿼리를 만족시키도 록, 쿼리 관리자는 쿼리에 오그멘트할 수 있다. 그런 오그멘트된 쿼리들은 출력 콤포넌트(130)로 전달될 수 있고, 데이터 쿼링을 용이하게 하기 위해 사용될 수 있다.
도 4는 데이터베이스 보안을 용이하게 하는 시스템(400)을 도시한다. 시스템(400)은 데이터베이스로의 사용자 액세스 포인트(405)를 포함한다. 도시된 바와 같이, 사용자 액세스 포인트(405)는 데스크톱 컴퓨터이다. 그러나, 본 발명의 일 양태에 따라, 휴대형 컴퓨터(즉, 랩톱, 태블릿 PC 등), 핸드-헬드 컴퓨터(즉, PDA), 워크스테이션, 셀폰 등과 같은 임의의 마이크로프로세서-기반 디바이스가 채택될 수 있슴을 이해할 수 있을 것이다.
다수의 예들에서, 사용자 액세스 포인트(405)는 더 큰 통신망 버스(즉, 공장이나 기업기반) 내에 서브-통신망/버스로 접속되고, 여기서 서브-통신망/버스에 계좌를 갖는 사용자는 사용자 액세스 포인트(405)에 로그인할 수 있고, 사용자가 가질 수 있는 권한 범위 내에(예를 들어, 권리, 속성 등) 거기에 상주하는 개체와 응용 프로그램을 액세스할 수 있다. 통상적으로, 각각이 다른 권한들과 연계될 수 있는 도메인, 그룹, 프로젝트, 작업 설명, 워크그룹(workgroup), 부(division), 부서(department), 지위 등으로 통신망과 연계된 사용자가 지정되는 더 세밀한 레벨의 식별이 사용된다. 추가로, 임의의 유사 지정 내의 사용자들은 다른 권한들과 연계될 수 있다. 예를 들어, 복수 사용자들은 그룹화될 수 있고, 사용자들 중의 한 명은 나머지 사용자들에 대해 상위자 지위가 승인될 수 있다. 그런 사용자들은 보통 다른 사용자들을 제한하기 위한 권한을 갖는다. 예를 들어, 상위자는 다른 사용자의 읽기, 쓰기, 및 실행 권한, 특정 정보를 볼 수 있는 능력, 및/또는 인터넷 능력을 변경할 수 있다.
현재 예에서, 사용자는 L 그런 그룹으로 지정되고, 여기서 L은 1과 같거나 큰 정수이다. L 그룹은 집합적으로 그룹(410)으로서 참조될 수 있는 그룹1(4101), 그룹2(4102), 그룹L(4103)까지를 포함한다. 그룹(410)은 다른 및/또는 유사한 사용자들을 포함할 수 있다. 그러므로, 특정 사용자는 복수 그룹들과 연계될 수 있다. 그룹(410)은 M 사용자들을 포함하기 위해 도시되고, 여기서 M은 1과 같거나 큰 정수이다. M 사용자는 사용자1(4201), 사용자2(4202), 사용자 M(4203)까지를 포함한다. 그런 사용자들은 집합적으로 사용자(420)로서 참조될 수 있다. 사용자(420) 중의 한 명이 액세스 포인트(405)에 로그인할 때, 사용자 신원(예를 들어, 고유의 ID, 알리아스(alias) 등), 그룹명, 도메인명, 워크그룹 등은 사용자를 위한 환경을 구성하기 위해 결정되고 사용될 수 있다. 그런 구성은 맞춤형 인터페이스의 실행, 데이터의 숨김, 데이터 공개, 읽기, 쓰기, 및/또는 실행 권한의 세팅 등을 포함할 수 있다.
이 사용자는 쿼리 관리자(110)를 통해 데이터베이스(들)(430)와 통신할 수 있다. 예를 들어, 데이터베이스(들)(430)에 대한 쿼리를 전송할 때, 쿼리의 소스 및/또는 사용자 및/또는 그룹 신원과 같은 다양한 다른 특성들을 얻을 수 있는 쿼리 관리자(110)에 의해 쿼리가 수신될 수 있다. 쿼리 관리자(110)는 이 정보를 사용하여 적절한 보안식을 얻고 적용할 수 있다. 상술한 바와 같이, 그런 보안은 한 개 이상의 부울 식을 포함할 수 있고, 여기서 이들 식은 데이터가 기준들을 만족시킬 때 데이터 액세스를 가능하게 하는 기준들, 또는 데이터가 기준들을 만족시킬 때 데이터 액세스를 완화시키는 기준들에 관련될 수 있다.
보안식은 식 뱅크(310)로부터 얻을 수 있다. 그런 식은 한 개 이상의 요구자들 및/또는 한 개 이상의 요구자들의 그룹과 연계될 수 있고, 요구와 식을 연계시킬 때 검색수취된다. 예를 들어, 수신된 쿼리는 요구자(예를 들어, 사용자, 응용 프로그램 등)와 연계된 고유의 식별자 또는 그 요구를 전송한 기계를 포함할 수 있다. 다른 예에서, 쿼리는 그런 정보 전에 및/또는 후에 나올 수 있다. 다른 예들에서, 요구자들 및/또는 보안식들의 적합한 세트를 결정하기 위해 지능이 채용될 수 있다.
보안식은 SQL 프로그래밍 언어를 통해 생성될 수 있다. 예를 들어, SQL CREATE 유틸리티는 표에 대해 지명된 식을 생성하기 위해 사용될 수 있고, 여기서 지명된 식은 데이터로의 액세스를 얻기 위해 데이터에 의해 만족되어야 하는 부울 식을 명시한다. 그런 식은 데이터 보안을 사용하기 위해 특정 요구자들 및/또는 요구자들의 그룹에 연결될 수 있다. 예를 들어, SQL을 사용할 때, 데이터 관리자는 GRANT, REVOKE, 및 DENY 유틸리티를 통해 데이터 특정 소스에 대한 보안식과 사용자 및/또는 사용자들의 그룹을 연결할 수 있고, 그리고/또는, 아래 상세히 기재되는 바와 같이, DROP 유틸리티를 통해 보안식을 제거할 수 있다. 일반적으로, 지명된 식은 기본적으로 그 식을 만족시키는 모든 로우들에 대해 대행자로서 동작한다. 그러므로, 이 기술을 사용하여, 제1 키가 표에 존재할 때 표의 전체 로우 및/ 또는 각각의 개별 로우를 표현할 수 있다. 추가로, 사실상 임의의 수의 보안식이 표에 정의될 수 있고, 단일 로우는 표에 정의된 한 개 이상의 식에 의해 만족될 수 있다. 상술한 바는 유사한 보안 특성들로 로우들의 세트를 논리적으로 집결시키고 지명된 식으로서 그 세트를 다루는 메카니즘을 제공한다.
쿼리 관리자(210)는 승인된 부울 식의 논리합으로 구성된 식을 결합하고 -각각의 식은 승인되는 연계된 보안 프린서펄과 결합됨-, 그 결과적 논리합과 거절된 각각의 부울 식의 보수연산의 논리곱을 -각각의 식은 거절된 보안 프린서펄과 결합됨- 논리곱하여 쿼리에 오그멘트할 수 있다. 부언하면, 적어도 한 개의 승인된 식이 만족되고 거절식이 모두 만족되지 않을 때 데이터가 쿼리를 만족시키도록 쿼리 관리자는 쿼리를 오그멘트할 수 있다.
데이터베이스(430)의 데이터에 대한 보안식은 데이터의 소유주나 관리자에 의해 생성될 수 있고 한 명 이상의 사용자들로 연결될 수 있슴을 이해할 것이다. 이 연결은 사용자로의 직접 승인 또는 한 개 이상의 사용자 역할, 서버, 그룹 등으로의 승인을 통해 간접적인 사용자로의 승인의 결과로서 확립될 수 있다. 예로써, 표는 다음과 같이 정의될 수 있다:
Figure 112005001305952-pat00002
여기서, Emp는 표 이름이고, id는 정수 타입의 변수, salary는 소수 타입의 변수이다. 표에 대한 식은 SQL Create 식을 통해 생성될 수 있다. 예를 들어, 다음은 이 표에 대한 식을 생성하기 위해 실행될 수 있다:
Figure 112005001305952-pat00003
여기서, SalLimit은 식명이고, salary는 테스트할 필드이고, X(예를 들어, 100000)는 로우 데이터가 보안식을 만족시키는지를 판정하는 변수이다. 거절 및/또는 취소 스테이트먼트과 같은 다양한 다른 스테이트먼트들은 대응하는 식들을 통해 유사하게 채택될 수 있슴을 주목한다.
SalLimit 보안식은 다음의 승인식 구문을 통해 사용자와 연결될 수 있다:
Figure 112005001305952-pat00004
여기서, User1은 SalLimit를 만족시키는 표의 로우들에서 데이터로의 사용자 승인된 허가이다. 그런 스테이트먼트는 User1이 SalLimit 식을 만족시키는 Emp 표에서 로우들을 보도록 허용함을 내포할 수 있다.
상기 예와 같이 승인된 보안식의 부재시에, 로우의 데이터는 식을 만족시킬 수 없고, 그러므로, 사용자는 임의의 로우에서의 데이터로의 액세스가 제공되지 않을 것이다. 추가로, 그런 조건을 만족시키지 않는 임의의 로우는 사용자에게 비가시적이도록 만들어진다. 게다가, 거절 보안식이 만족되면, 사용자는 데이터를 보는것이 금지된다.
상술된 바와 같이, 보안은 추가적으로 컬럼에 기초할 수 있다. 예를 들어, 다음 스테이트먼트는 로우 레벨 및 컬럼 레벨 보안을 모두 승인할 수 있다.
Figure 112005001305952-pat00005
여기서, 추가적 인자 Col1는 표 Emp 내에 컬럼을 명시하기 위해 사용된다. 게다 가, 동일 표에 복수 승인, 거절, 및/또는 취소 스테이트먼트들이 있을 수 있다. 통상적으로, 거절 스테이트먼트는 승인 스테이트먼트를 대신하지만, 시스템은 대체적으로(alternatively) 구성될 수 있다. 그런 스테이트먼트의 양수자(grantee)는, 예를 들어, 명시에 의해 정의되는 바와 같이 데이터베이스 시스템에서 승인되는 임의의 프린서펄일 수 있다.
유사하게, 로우, 컬럼, 및/또는 표 레벨 보안에 대한 거절식, 및 승인 또는 거절을 취소하는 취소식이 제공된다. SQL 거절 구문의 예가 다음을 통해 설명된다:
Figure 112005001305952-pat00006
여기서, <expression_name>은 보안식을 명시하고, <data_name>은 보안식에 대해 평가하기 위해 소스 데이터를 명시하고, <user_name>은 지명된 보안식과 연계시키기 위해 사용자 또는 사용자 그룹을 명시하고, SQL 취소 구문의 예는 다음을 통해 설명된다:
Figure 112005001305952-pat00007
여기서, <expression_name>은 취소할 보안식을 명시하고, <data_name>은 소스 데이터를 명시하고, <user_name>은 지명된 보안식과 분리하기 위한 사용자 또는 사용자 그룹을 명시한다.
최적화기(210)는 성능을 최적화하기 위해 수신된 쿼리 내에 보안식을 포함하 는 식들을 이동할 수 있다. 일반적으로, 보안식은 보안식과 비보안식 간의 구별을 위해 태그되고, 술어 규칙들은 쿼리 내에 보안식을 어떻게 포함시키는지의 범위를 정의하기 위해 사용될 수 있다. 보안식을 실행시키기 전에 비안전 식이 데이터를 리턴하기 위해 사용될 수 없슴을 확인한 후에만, 술어 규칙들은 최적화기(210)가 보안식 위쪽에 비보안식을 끌어당기거나 보안식 아래쪽에 비보안식을 밀어넣도록 한다. 통상적으로, 논리 연산들은 보통 "안전"하다고 고려되고, 최적화기(210)는 보안식 위쪽나 아래쪽에 그런 연산들을 순서화할 수 있다.
다수의 예들에서, 사용자 정의된 식과 같은 식은 안전한지를 판정하기 위해 분석된다. 일반적으로, 논리 연산은 보통 "안전"하다고 고려된다. 그런 분석은 정적으로 수행될 수 있다. 상술된 바와 같이, 정적 분석은 컴파일 시간에 수행된다. 비교해서, 동적 분석은 실행 시간에 수행된다. 동적 분석으로, 안전 위반이 검출되면, 쿼리는 취소되거나 "안전" 모드로 실행될 수 있고, 여기서 보안식은 비보안식을 실행시키기 전에 평가된다.
쿼리 관리자(110)는 보안식을 적용하고 기준을 만족시키는 데이터만을 리턴하여 쿼리를 용이하게 할 수 있다. 설명된 바와 같이, N 표들, 표1(4401), 표2(4402), 표N(4403)까지와 -N은 1과 같거나 큰 정수임- 데이터(450)를 포함하는 데이터베이스(들)(430)에 대해 쿼리가 수행된다. 표1(4401), 표2(4402 ),및 표N(4403)는 표(440)으로서 집합적으로 참조될 수 있슴을 주목한다. 일반적으로, 표(440)는 구조화된 형식으로 데이터를 저장할 수 있다. 그런 구조화된 형식은 유사 구조를 갖 는 한 개 이상의 개체 세트를 포함할 수 있고, 여기서 각각의 개체는 로우로서 참조될 수 있다. 각각의 로우는 컬럼으로서 참조될 수 있는 필드들과 연계될 수 있다.
도 5 내지 도 8은 본 발명에 따른 방법들을 도시한다. 설명의 단순성을 위해, 방법들은 일련의 동작으로 도시되고 설명된다. 본 발명은 설명된 동작들 및/또는 동작들의 순서에 의해 제한되지 않음 -예를 들어, 동작들은 본 명세서에 제공되지 않고 설명되지 않은 다른 동작들과 함께 다양한 순서 및/또는 동시에 발생할 수 있슴- 을 이해할 것이다. 게다가, 모든 설명된 동작들이 본 발명에 따라 방법을 구현하기 위해 요구되지는 않을 것이다. 추가로, 당업자는 다른 경우에 방법들이 상태 다이어그램이나 이벤트들을 통해 일련의 상관된 상태들로서 표현될 수 있슴을 이해할 것이다.
도 5로 진행해서, 로우 레벨 데이터베이스 보안을 구현하는 방법(500)이 도시된다. 참조 번호(510)에서, 한 명 이상 사용자들로부터의 한 개 이상의 쿼리들이 수신된다. 그런 쿼리들은 직렬로 및/또는 동시에 수신될 수 있고, 데이터베이스 내에 유사한 및/또는 분리된 데이터와 연계될 수 있다. 추가로, 쿼리들은 데스크톱 컴퓨터, 휴대형 컴퓨터, 핸드-헬드 컴퓨터, 워크스테이션, 셀폰 등과 같은 데이터베이스 액세스 포인트로부터 전송될 수 있다. 쿼리를 수신할 때, 쿼리의 소스가 결정될 수 있다. 다수의 예들에서, 소스는 사용자를 식별하기 위해 사용될 수 있는 사용자명, 주소, 통신망, 서브-통신망, 도메인, 그룹, 프로젝트, 작업 설명, 워크그룹, 부, 부서, 지위 등과 연계되고, 여기서 개별 사용자는 상이한 권한과 연 계될 수 있다. 유사 지정 내의 사용자들은 유사한 또는 상이한 권한과 연계될 수 있슴을 주목한다.
참조 번호(520)에서, 사용자에 대한 보안식(들)이 얻어질 수 있다. 예를 들어, 데이터베이스의 데이터 소유주는 소유주의 데이터에 대해 한 개 이상의 보안식을 생성할 수 있고, 그런 식과 사용자를 연결한다. 한 개 이상의 보안식은 한 개 이상의 표에 대해 생성될 수 있고, 한 명 이상의 사용자들에게 제공될 수 있다. 그러므로, 데이터는 데이터로의 동시 액세스를 허용하기 위해 복수 사용자들을 위해 복수 보안식을 동시에 만족시킬 수 있다. 소스가 식별될 수 없는 상황에서, 보안식을 추론하기 위해 지능이 사용될 수 있고, 그리고/또는 디폴트 보안식이 적용될 수 있다.
(530)에서, 쿼리에 보안식이 오그멘트될 수 있다. 한 개 이상의 식이 사용될 때, 각각의 식은 결정을 제공하기 위해 논리 AND 및/또는 OR를 통해 논리 스테이트먼트로 집결될 수 있다. 만족되었을 때 데이터로의 액세스를 표현적으로 허용하거나(즉, 승인) 금지하는(즉, 거절)그런 식이 생성될 수 있다. 그런 식을 금지하는 데이터의 만족은 "참"으로 귀결하므로, 그런 식의 만족이 "거짓"으로 귀결하도록 보수연산이 사용될 수 있다. 그러므로, 적어도 한 개의 승인식이 만족되고 "참"으로 평가되는 거절식이 없을 때 "참"을 리턴하는 집결된 식이 생성될 수 있다. 부울 식이 채택될 수 있지만, 다른 기술이 본 발명의 일 양태에 따라 사용될 수 있슴을 이해할 수 있다.
예로써, 승인된 부울 식의 논리합을 논리곱하여 쿼리에 오그멘트될 수 있다. 여기서 각각의 식은, 각각의 식이 거절된 보안 프린서펄과 논리곱된 거절된 각각의 부울 식의 보수연산의 논리곱으로 승인된 연계된 보안 프린서펄과 결합한다. 그러므로, 적어도 한 개의 승인식이 만족되고 만족되는 거절식이 없을 때 데이터가 쿼리를 만족시킬 수 있도록 쿼리에 오그멘트될 수 있다.
참조 번호(540)에서, 쿼리는 최적화될 수 있고, 보안식은 성능을 최적화하기 위해 쿼리 내에서 이동될 수 있다. 그런 최적화는 메모리 누설의 완화를 용이하도록 하는 술어 규칙들을 통해 가이드된다. 비보안식이 "안전"한지에 따라, 이들 규칙들은 비보안식이 보안식 위로 당겨지거나 아래에 밀어넣어지도록 한다. 다수의 예들에서, 정적 분석은 컴파일 시간에 수행되어 식이 "안전"한 식인지 또는 정보 공개의 위험없이 실행될 수 있는 식인지를 판정할 수 있다. 다른 예들에서, 동적 분석은 대체로 또는 추가로 실행 시간에 수행되어 식이 "안전"한 식인지를 판정할 수 있다. 동적 분석으로, 결과는 통상적으로 리턴되지 않고, 보안 술어들이 성공적으로 실행되고 그리고/또는 안전 위반(예를 들어, 오류 조건, 인터럽트, 이벤트 등)이 발생하지 않을 때까지 변경은 통상적으로 되어지지 않는다. 정적 및 동적 분석 모두에서, 안전 위반이 발견되지 않으면, 식들이 배치되는 순서는 성능을 향상시키기 위해 정의될 수 있다. 그러나, 안전 위반이 검출되면, 쿼리는 취소되거나 "안전" 모드로 실행될 수 있고, 여기서 보안식은 비보안식의 실행 전에 평가된다. 일반적으로, 논리 연산은 보통 "안전"하다고 고려된다.
오그멘트된 쿼리는 데이터베이스에 대해 쿼링하는 동안 사용될 수 있다. 예를 들어, 데이터베이스 데이터는 데이터가 보안을 만족시키는지를 판정하기 위해 쿼리를 수행하는 동안 평가될 수 있다. 데이터가 보안을 만족시키면, 데이터는 요구자에게 이용가능하도록 만들어져서, 예를 들어, 요구자는 그 데이터를 보고, 다운로드하고, 그리고/또는 조작할 수 있다.
도 6은 로우 레벨 액세스를 제공하기 위해 로우 레벨 데이터베이스 보안을 인에이블 하는 방법(600)을 도시한다. 참조 번호(610)에서. 로우 레벨 보안이 인에이블된다. 예를 들어, 다음 SQL 스테이크먼트는 표의 로우 레벨 액세스를 활성화하기 위해 사용될 수 있다: ALTER TABLE Order SET ROW_SECURITY = ON. 통상적으로, 로우 레벨 액세스를 활성화시키지 않고, 0 로우 또는 전체 로우들을 사용자가 액세스할 수 있다. 참조 번호(620)에서, GRANT SELECT 명령을 통해 새용자에게 승인이 주어진다. (630)에서, 사용자 제한은 CREATE EXPRESSION 명령을 통해 사용자와 연계된다. (640)에서, 술어들은 GRANT "where" 스테이트먼트를 통해 한 개 이상의 표에 관련된 역할들과 연계된다. (650)에서, 쿼리에 술어들이 오그멘트될 수 있고, 오그멘트된 쿼리는 채택될 수 있고, 여기서 보안식을 만족시키는 데이터가 사용자에게 제공된다. 본 명세서에 설명된 바와 같이, 복수의 승인 보안식들 및 거절 보안식들은 쿼리 내에 결합될 수 있고, 데이터 쿼링을 하는 중에 사용될 수 있슴을 이해할 것이다.
도 7은 로우 레벨의 액세스를 거절하기 위해 로우 레벨의 데이터베이스 보안을 인에이블하는 방법(700)을 도시한다. 참조 번호(710)에서, 로우 레벨 보안은 인에이블된다(즉, ALTER TABLE Order SET ROW_SECURITY =ON). (720)에서, SQL DENY EXPRESSION 명령은 사용자에게 데이터로의 허가를 거절하기 위해 사용될 수 있다. 참조 번호(730)에서, 보안 스테이트먼트(즉, 부울 식)은 한 개 이상의 표에서 관련 역할들과 연계된다. (740)에서, 보안식이 쿼리에 삽입되고, 쿼링 중에 사용된다. 보안 스테이트먼트와 평가된 데이터가 거절식을 만족시키면, 데이터는 사용자로부터 숨겨진다. 일반적으로, 데이터가 양쪽 타입의 식들을 모두 만족시켜서 승인식 및 거절식과 연계된 데이터를 사용자가 액세스할 수 없도록, 거절 보안식은 승인 보안식을 대신한다. 보통, 집결된 식의 만족은 데이터로의 액세스를 제공하도록 거절식의 보수연산은 승인식과 집결될 것이다.
도 8은 로우 레벨의 데이터베이스 보안을 취소하는 방법(800)을 도시한다. 참조 번호(810)에서, 쿼리가 수신되고, 쿼리 개시자가 식별된다. 참조 번호(920)에서, 데이터 관리자는 사용자와 연계된 보안식을 확인하고, 사용자가 더 이상 그 사용자와 연계되기를 원하지 않는 보안식을 선택한다. 상술된 바와 같이, 승인 및 거절 보안식 모두는 사용자와 연계될 수 있다. (930)에서, REVOKE 명령은 서버에 사용될 수 있거나, 사용자와의 선택된 승인 및/또는 거절 보안식 연계를 종결할 수 있다.
도 9는 SQL 쿼리 관리 시스템(900)의 예를 도시한다. SQL 쿼리 관리자(900)는 데이터에 대한 쿼리를 수용하는 입력 콤포넌트(910), 그런 쿼리에 보안식의 오그멘트를 용이하게 하는 SQL 쿼리 관리자(920), 및 사용자들에게 결과를 제공하는 출력 콤포넌트(930)를 포함한다. 시스템(900)은 CREATE;DROP;GRANT;REVOKE; 및 DENY와 같은 SQL 유틸리티를 사용하여 로우 레벨에 액세스 제어를 용이하게 할 수 있고, 표에서 SELECT, UPDATE, DELETE, 및/또는 INSERT 동작 중에 채택할 때 장점 이 있다. 다음은 본 발명의 일 양태에 따라 CREATE;DROP;GRANT;REVOKE; 및 DENY 구문의 예 및 대응하는 설명과 예들, 그리고 SELECT, UPDATE, DELETE, 및 INSERT 예들을 제공한다.
CREATE
표에 적용되어 로우 레벨의 액세스 제어(즉 보안)를 활성화시키는 술어들은 DDL CREATE EXPRESSION을 사용하여 생성될 수 있다. 그런 술어들은 이름이 주어지고, 식의 이름으로 구문(예를 들어, GDR)을 사용하여 표에 적용될 수 있다.
구문:
Figure 112005001305952-pat00008
CREATE 유틸리티는 <expression>에 규정된 바와 같이 표<tablename>에 식을 생성할 수 있고, 그것에 <expression_name>라는 이름을 할당할 수 있다.
제한점들:
Figure 112005001305952-pat00009
서브-쿼리는 통상적으로 포함될 수 없다.
Figure 112005001305952-pat00010
함수 호출은 식이 함수들로의 참조 및 이들 함수들에의 생성자 참조 허가를 포함하면 포함될 수 있다.
Figure 112005001305952-pat00011
식에 이름이 주어져야 한다(expression_name).
Figure 112005001305952-pat00012
expression_name은 고유해야 한다.
승인들:
db_ddladmin, db_owner 역할, sysadmin 역할, 표 소유주의 멤버들, 및 데이 터베이스, 스키마, 및/또는 표 레벨에 FULL CONTROL 허가를 갖는 사용자는 그 표에 식을 생성하는 허가를 가질 수 있다. 추가로, 표에 ALTER ANY TABLE 및/또는 ALTER를 갖는 사용자는 표에 식을 생성하는 허가를 갖는다.
예:
Figure 112005001305952-pat00013
DROP
CREATE EXPRESSION 스테이트먼트를 사용하여 생성된 술어들은 DROP EXPRESSION 스테이트먼트를 사용하여 후속적으로 드롭(drop)될 수 있다.
구문:
Figure 112005001305952-pat00014
제한점들:
Figure 112005001305952-pat00015
명시된 expression_name은 통상적으로 이미 존재해야 한다.
Figure 112005001305952-pat00016
현재 사용자는 통상적으로 db_ddladmin, db_owner, 및/또는 sysadmin 역할, 식이 식별되는 표의 소유주의 멤버일 필요가 있고, 그리고/또는 식을 드롭시키기 위해 표에 FULL CONTROL 및/또는 ALTER 허가를 갖는다.
Figure 112005001305952-pat00017
식은 일반적으로 표에서 현재 로우 레벨 보안을 확립시키기 위해 사용되고 있지 않으면 드롭만 될 수 있다.
Figure 112005001305952-pat00018
임의의 제한점이 위반되면, 오류(예를 들어, "식이 존재하지 않음 또는 사용중임 또는 당신은 이 스테이트먼트를 실행시킬 허가를 갖지 않음")가 리턴될 수 있다.
GRANT
구문:
Figure 112005001305952-pat00019
UPDATE 승인은 BEFORE 또는 AFTER가 접두어로 쓰일 수 있다. BEFORE 또는 AFTER는 통상적으로 단지 로우 레벨 보안이 명시되면 명시될 수 있다. 일반적으로, BEFORE는 술어가 로우의 이전 이미지에 적용됨을 내포한다. 보안은 로우의 현재값에 기초된다. AFTER는 보안이 이후 이미지에 기초됨을 내포한다. <expression_name>은 보안 제한점들을 시작하기 위해 사용되는 식명이다(즉, CREATE EXPRESSION 구문을 통해 초기에 생성됨).
제한점들:
Figure 112005001305952-pat00020
GRANT는 통상적으로 표에 있어야 한다.
Figure 112005001305952-pat00021
승인은 통상적으로 표 레벨에 적용된다.
Figure 112005001305952-pat00022
WITH GRANT OPTION은 통상적으로 로우 레벨의 제한점들을 명시할 때 허용될 것이다. 추가 승인은 일반적으로 양수자에 의해 이 식에 만들어질 수 있다.
Figure 112005001305952-pat00023
<expression_name>은 통상적으로 CREATE EXPRESSION 스테이트먼트를 통해 이미 명시된 유효 식명이어야 한다.
Figure 112005001305952-pat00024
GRANT를 발행하는(issue) 사용자는 통상적으로 표의 소유주이거나, 그 표에 대해 전체 제어 허가를 갖거나, db_owner, db_securityadmin, 및/또는 sysadmin 역할의 멤버일 필요가 있다.
예:
Figure 112005001305952-pat00025
REVOKE
구문:
Figure 112005001305952-pat00026
REVOKE는 GRANT 또는 DENY를 통해 이미 적용된 보안 허가를 취소하기 위해 사용될 수 있다.
제한점들:
Figure 112005001305952-pat00027
<expression_name>은 통상적으로 취소되는 특정 허가를 위해 초기 GRANT 또는 DENY를 사용하여 표에 이미 명시된 유효 식명이어야 한다.
Figure 112005001305952-pat00028
취소되는 컬럼명(column name)이나 식은 통상적으로 명시될 수 있다.
Figure 112005001305952-pat00029
CASCADE 옵션은 통상적으로 GRANTS 또는 DENYS에 기초하여 REVOKE의 식에 적용될 것이다. 이것은 통상적으로 초기의 GRANT 또는 DENY에 명시된 동일 식이어야 할 것이고, 식에 의해 정의되고 이미 승인된 로우들의 서브세트는 취소될 수 없다.
Figure 112005001305952-pat00030
REVOKE가 성공하기 위해, 사용자는 통상적으로 표의 소유주일 필요가 있거나, 표에 FULL CONTROL 허가를 가져야 하거나, db_securityadmin, db_owner, 및/또는 sysadmin 역할의 멤버이어야 한다.
예:
Figure 112005001305952-pat00031
DENY
구문:
Figure 112005001305952-pat00032
<expression_name>은 보안 제한점을 불러오기 위해 사용되는 식명(초기의 CREATE EXPRESSION 구문을 통해 생성됨)이다.
제한점들:
Figure 112005001305952-pat00033
DENY는 통상적으로 표에 있다.
Figure 112005001305952-pat00034
승인은 통상적으로 표 레벨에 적용된다.
Figure 112005001305952-pat00035
CASCADE 옵션은 통상적으로 로우 레벨 제한점들을 명시할 때 허용되고, 이것은 제1 레벨에서 거절할 것이고, 승인되면 그 동일 식을 더 하위 레벨에서 취소시킬 것이지만, 그것의 임의의 서브세트는 아니다.
Figure 112005001305952-pat00036
<expression_name>은 통상적으로 CREATE EXPRESSION 스테이트먼트를 통해 이미 명시된 유효 식명이어야 한다.
Figure 112005001305952-pat00037
DENY를 발행하는 사용자는 통상적으로 표의 소유주일 필요가 있거나, db_owner, db_securityadmin, 및/또는 sysadmin 역할의 멤버이어야 한다.
예:
Figure 112005001305952-pat00038
이들 식은 sysobject 객체에 포함될 수 있다. 추가로, 대응하는 목록 보기는 sys.objects에 있을 수 있다. FULL CONTROL 및/또는 VIEW DEFINITION 허가를 갖는 표 소유주(들) 및 사용자(들)은 표에 적용된 식을 볼 수 있다.
쿼리가 표에 대해 발행될 때, 표 레벨에 적용되어 필요한 보안 제한점들을 호출하는 술어가 오그멘트된다. SELECT가 표에 대해 발행될 때, 쿼리는 GRANT SELECT 또는 DENY SELECT 스테이트먼트로 표에 적용되는 모든 술어들이 내부적으로 쿼리에 오그멘트된다. UPDATE가 표에 대해 발행될 때, GRANT/DENY, UPDATE For BEFORE, 및 SELECT 스테이트먼트로 표에 적용되는 모든 BEFORE와 UPDATE 술어가 내부적으로 쿼리에 오그멘트된다. BEFORE UPDATES에 대해, 술어에 명시된 제한점들은 로우의 현재값에 기초되고, 갱신된 값에 기초되지 않는다. AFTER, UPDATE, 및 INSERT 제한점은 제약조건으로 작용한다. 그들은 갱신의 이후 이미지에 동작한다. 사용자가 현재 선택하기 위해 액세스를 갖는 로우를 갱신하는 것만이 가능하다. DELETE가 발행될 때, 쿼리는 GRANT/DENY SELECT 및 DELETE 스테이트먼트로 표에 적용되는 술어들이 쿼리에 오그멘트된다. 사용자는 현재 선택된 로우만을 삭제할 수 있다. 표에 정의된 보안식은 임의의 다른 술어가 적용되기 전에 적용된다. 사용자 술어는 평가 트리(evaluation tree)에서 모든 보안 술어 아래에 밀어넣어진다.
복수의 보안 술어들이 있으면, GRANTS에 명시된 술어는 OR되고, DENY로 명시된 각각의 술어의 부정(negative)은 이들에 AND된다. 추가로, 표 레벨 또는 컬럼 레벨 승인은 로우 레벨의 보안 없이 세트될 수 있다. 로우 레벨의 보안의 개시로, 사용자는 명백한 액세스가 승인되는 그런 로우들로의 액세스를 갖는다. 그러므로, 특정 표에서 사용자가 보는 것은 컬럼 레벨과 로우 레벨 허가의 교집합이다. 로우 레벨 보안을 허용하기 위해, 표는 처음에 그렇게 표시되어야 한다. 이것은 CREATE/ALTER TABLE 구문에 ROW_SECURITY를 사용하여 이루어질 수 있다(즉, ALTER TABLE SET ROW_SECURITY = ON).
표에 로우 레벨 보안이 인에이블될 때, 소유주는 로우 레벨 보안이 특정 개별 로우들에 적용되는지를 판정할 수 있다. 이것은 한 개 이상의 로우에 액세스를 승인하는 술어를 사용하여 이루어질 수 있다. Exempt Row Security 허가는 또한 동일 효과를 성취하기 위해 사용될 수 있다. 로우 레벨 보안이 술어를 통해서만 적용되므로, 양수자가 표에 대해 로우 레벨 보안을 적용하지 않는 효과를 성취하는 술어를 발행할 때 보안 술어는 쿼리에 적용되지 않음을 이 허가는 보장할 수 있다. Exempt Row Security 승인은 또한, 그것이 누가 로우 레벨의 보안을 수신해야 하는지를 소유주가 선택적으로 결정하도록 한다는 점에서 유용하다. 술어는 임의의 시간에 표에 적용될 수 있슴을 이해할 것이다. 그러나, 이들은 ExemptRowSec 허가를 갖지 않는 사용자의 쿼리들에만 오그멘트될 것이다.
상술된 바와 같이, 술어를 쿼리에 오그멘트하지 않고 표를 쿼리하는 능력을 특정 사용자들에게 승인하는 것은 유용할 수 있다. 추가로, 일부 또는 전체 술어를 추가하고, 삭제하고, 및/또는 변경할 필요 없이 로우 레벨 보안을 임시 디세이블시키는 것은 유용할 수 있다. 이것은 ExemptRowSec 허가를 승인하여 이루어질 수 있다. 표 소유주, db_owner와 sysadmin 역할의 멤버, 및 CONTROL 허가를 갖는 사용자는 디폴트로 이 허가를 갖는다. 예를 들어, 사용자1(user1)를 표 T에 로우 레벨 보안 검사로부터 제외시키기 위해, 다음이 사용될 수 있다:
Figure 112005001305952-pat00039
이 스테이트먼트가 발행될 때, 표 T로의 사용자1의 쿼리에 술어가 오그멘트되지 않는다. 이 승인은 표 레벨에서만 승인될 수 있고, 컬럼 레벨은 아니다.
술어는 표에 정의된 술어를 또한 가질 수 있는 다른 표를 교대로 호출하는 함수들로의 호출을 포함할 수 있기 때문에, 써클형 루프(loop)가 있을 수 있는 경우들을 트래핑(trapping)하는 것은 중요하다. 예를 들어, 교대로 표 T와 표 S를 쿼링하는 기본적으로 함수 F로의 호출인, 표 T에 정의된 술어를 표 T가 가지면, 그 술어는 표 S에 적용될 수 있지만, 그 술어가 표 T에 적용되는 것은 아니고(그렇지 않으면 후자가 무한 루프를 발생시키므로), 그러므로 써클의 홉(hop)의 수가 n보다 적을 때만 -n은 보기 위해 써클의 종속물들을 트래핑하기 위해 사용되는 동일 수임-, 그런 써클형 술어들의 경우들을 트래핑한다. 검사 트레일(audit trail)에서, 권한이 있는 사용자는 오그멘트된 쿼리를 볼 수 있다.
다음은 SQL CREATE TABLE 및 ALTER TABLE 유틸리티의 예들을 설명한다.



CREATE TABLE
구문:
Figure 112005001305952-pat00040

ALTER TABLE
구문:
Figure 112005001305952-pat00041

Figure 112005001305952-pat00042
표 1 및 다음의 예는 본 발명의 다양한 양태들의 예를 설명하기 위해 사용된다.
OrderID EmployeeID OrderDate ShipCountry ShipAddress ShipcityCode
123 ABC123 4/3/2002 프랑스 주소 67854
789 EFG789 8/25/2001 스페인 주소 43674
456 XYZ980 3/3/2002 독일 주소 56373
234 SGC007 6/7/2001 프랑스 주소 67443
890 RST678 4/4/2002 스페인 주소 43576
이 예의 목적은 다음 제한점들을 갖고 주문 표에 승인 선택하는 것이다: FranceMgr 역할의 멤버인 사용자는 그 나라로의 주문만을 볼 수 있다; SpainMgr 역할의 멤버인 사용자는 그 나라로의 주문만을 볼 수 있다; Director 역할의 멤버인 사용자는 전체 로우들을 볼 수 있다.
표 1에 대한 로우 레벨 보안은 다음을 통해 인에이블된다: ALTER TABLE Orders SET ROW_SECURITY = ON. 다음을 통해 Director, FranceMgr, 및 SpainMgr 각각에 허가가 승인된다: GRANT SELECT ON Orders TO directors; GRANT SELECT ON Orders TO FranceMgr; 및 GRANT SELECT ON Orders TO SpainMgr. 다음을 통해 Director, FranceMgr, 및 SpainMgr 각각에 제한점들이 연계된다: CREATE EXPRESSION SeeAll ON Orders AS 1=1; CREATE EXPRESSION SpainFilter ON Orders AS(Orders.ShipCountry = 'Spain'); 및 CREATE EXPRESSION FranceFilter ON Orders AS(Orders.ShipCountry = 'France'). 다음을 통해 Order 표의 관련된 역할에 술어가 연계된다: GRANT SELECT ON Order TO Directors Where SeeAll; GRANT SELECT WHERE(SpainFilter) ON Orders to SpainMgrs; 및 GRANT SELECT WHERE(FranceFilter) ON Orders TO FranceMgrs. 다른 경우에, Grant ExemptRowSec to Directors는 로우 레벨의 술어들의 임의의 오그멘트로부터 Directors 역할의 멤버를 제외하기 위해 사용될 수 있어서, Directors 역할의 멤버가 표를 쿼링할 때, 술어가 쿼리에 오그멘트되지 않는다.
술어들은 쿼리될 수 있고, 여기서 다음의 술어들이 표와 관련된다: Directors; SpainFilter; 및 FranceFilter. 쿼리 시에, 쿼리는 상기 술어들로써 오그멘트(augment)될 수 있고, SELECT*FROM Orders에 의해 정의된 오리지널 쿼리가 SELECT*FROM Orders WHERE ((IS_MEMBER('Directors') = 1 AND 1 = 1) OR (IS_MEMBER('SpainMgrs') = 1 AND Orders.Shipcountry = 'Spain') OR (IS_MEMBER('FranceMgrs') = 1 AND Orders.Shipcountry = 'France'))에 오그멘트된다.
이 오그멘트된 쿼리는 필요한 보안 제한을 야기할 것이다. 그러므로 이제, Directors, FranceMgrs 또는 SpainMgrs 역할의 멤버가 다음의 쿼리를 행하는 것이 라면 그녀는 2002년 1월 1일 후에 주문되고 AND 선적 국가(ship Country)가 각각 프랑스 및 스페인의 어느 한 국가인 주문들(Orders)만 받을 것이다.
오리지널 쿼리:
Figure 112005001305952-pat00043
오그멘트된 쿼리:
Figure 112005001305952-pat00044
본 발명의 각종 양태들을 구현하기 위한 부가적인 컨텍스트를 제공하기 위하여, 도 10-11 및 이하의 논의는 본 발명의 각종 양태들이 구현될 수 있는 적당한 컴퓨팅 환경에 대한 간략하고 일반적인 설명을 제공하려는 것이다. 이상에서는 로컬 컴퓨터 및/또는 원격 컴퓨터에서 실행되는 컴퓨터 프로그램의 컴퓨터 실행 가능 명령들의 일반적인 컨텍스트에서 본 발명을 설명하였지만, 숙련된 당업자라면 본 발명이 다른 프로그램 모듈들과 결합하여 구현될 수도 있다는 것을 인지할 것이다. 일반적으로, 프로그램 모듈들은 특정 태스크를 수행하고 및/또는 특정 추상 데이터 타입들을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 등을 포함한다.
더욱이, 숙련된 당업자라면 단일 프로세서 또는 멀티프로세서 컴퓨터 시스템, 미니컴퓨터, 메인프레임 컴퓨터는 물론, 퍼스널 컴퓨터, 핸드헬드 컴퓨팅 디바이스, 마이크로프로세서 기반 및/또는 프로그램 가능한 소비자 전자 기기 등을 포 함하고, 이들 각각이 하나 이상의 관련 디바이스들과 동작적으로 통신할 수 있는, 그러한 다른 컴퓨터 시스템 구성들에 의해 본 발명의 방법들이 실시될 수 있다는 것을 알 것이다. 본 발명의 예시된 양태들은 또한 통신 네트워크를 통하여 링크되어 있는 원격 프로세싱 디바이스들에 의해 특정 태스크들이 수행되는 분산 컴퓨팅 환경에서 실시될 수도 있다. 그러나, 본 발명의 일부(전부는 아니더라도) 양태들은 독립형(stand-alone) 컴퓨터 상에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및/또는 원격 메모리 기억 디바이스들에 위치할 수 있다.
도 10은 본 발명과 상호 작용할 수 있는 샘플 컴퓨팅 환경(1000)의 개략 블록도이다. 시스템(1000)은 하나 이상의 클라이언트(들)(1010)를 포함한다. 클라이언트(들)(1010)는 하드웨어 및/또는 소프트웨어(예를 들면, 스레드(threads), 프로세스, 컴퓨팅 디바이스)일 수 있다. 시스템(1000)은 또한 하나 이상의 서버(들)(1020)를 포함한다. 서버들(1020)은 예를 들면 본 발명을 이용하여 변환을 수행하는 스레드들을 수용할 수 있다.
클라이언트(1010)와 서버(1020)간의 하나의 가능한 통신은 2 이상의 컴퓨터 프로세스들 사이에서 전송되도록 구성된 데이터 패킷의 형태를 취할 수 있다. 시스템(1000)은 클라이언트(들)(1010)와 서버(들)(1020)간의 통신을 용이하게 하기 위해 이용될 수 있는 통신 프레임워크(1040)를 포함한다. 클라이언트(들)(1010)는 클라이언트(들)(1010)에 로컬인 정보를 저장하기 위해 이용될 수 있는 하나 이상의 클라이언트 데이터 스토어(들)(1050)에 동작적으로 접속된다. 마찬가지로, 서버(들)(1020)는 서버(들)(1020)에 로컬인 정보를 저장하기 위해 이용될 수 있는 하나 이상의 서버 데이터 스토어(들)(1030)에 동작적으로 접속된다.
도 11을 참조하면, 본 발명의 각종 양태들을 구현하기 위한 예시적인 환경(1100)이 컴퓨터(1112)를 포함한다. 컴퓨터(1112)는 프로세싱 유닛(1114), 시스템 메모리(1116), 및 시스템 버스(1118)를 포함한다. 시스템 버스(1118)는 시스템 메모리(1116)를 포함하는, 그러나 이것에 한정되지 않는, 시스템 컴포넌트들을 프로세싱 유닛(1114)에 연결한다. 프로세싱 유닛(1114)은 각종 이용 가능한 프로세서들 중 어느 하나일 수 있다. 듀얼 마이크로프로세서 및 다른 멀티프로세서 아키텍처들이 또한 프로세싱 유닛(1114)으로서 이용될 수 있다.
시스템 버스(1118)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스 또는 외부 버스, 및/또는 로컬 버스를 포함하는 몇몇 타입의 버스 구조(들) 중 어느 하나일 수 있고, ISA(Industrial Standard Architecture), MSA(Micro-Channel Architecture), EISA(Extended ISA), IDE(Intelligent Drive Electronics), VLB(VESA Local Bus), PCI(Peripheral Component Interconnect), 카드 버스, USB(Universal Serial Bus), AGP(Advanced Graphics Port), PCMCIA(Personal Computer Memory Card International Association bus), 파이어와이어(IEEE 1394), 및 SCSI(Small Computer Systems Interface)를 포함하지만, 이들에 한정되지 않는, 임의의 각종 이용 가능한 버스 아키텍처들을 이용한다.
시스템 메모리(1116)는 휘발성 메모리(1120) 및 비휘발성 메모리(1122)를 포함한다. 시동(start-up) 중과 같이, 컴퓨터(1112) 내의 엘리먼트들 간에 정보를 전송하는 기본 루틴을 포함하는 기본 입출력 시스템(BIOS)은 비휘발성 메모리 (1122)에 저장된다. 한정이 아니라, 예로서, 비휘발성 메모리(1122)는, 읽기 전용 메모리(ROM), 프로그램 가능 ROM(PROM), 전기적 프로그램 가능 ROM(EPROM), 전기적 소거 가능 ROM(EEPROM), 또는 플래시 메모리를 포함할 수 있다. 휘발성 메모리(1120)는 외부 캐시 메모리로서 기능하는 랜덤 액세스 메모리(RAM)를 포함한다. 한정이 아니라 예로서, RAM은 동기식 RAM(SRAM), 다이내믹 RAM(DRAM), 동기식 DRAM(SDRAM), 더블 데이터 레이트 SDRAM(DDR SDRAM), 인핸스드 SDRAM(ESDRAM), 싱크링크 DRAM(SLDRAM), 및 다이렉트 램버스 RAM(DRRAM)과 같은 여러 형태로 이용 가능하다.
컴퓨터(1112)는 또한 분리형/비분리형, 휘발성/비휘발성 컴퓨터 기억 매체를 포함한다. 도 11은 예를 들면 디스크 기억 장치(1124)를 예시한다. 디스크 기억 장치(1124)는 자기 디스크 드라이브, 플로피 디스크 드라이브, 테이프 드라이브, 재즈(Jaz) 드라이브, 집(Zip) 드라이브, LS-100 드라이브, 플래시 메모리 카드, 또는 메모리 스틱과 같은 디바이스들을 포함하지만, 이들에 한정되지 않는다. 게다가, 디스크 기억 장치(1124)는 콤팩트 디스크 ROM(CD-ROM), CD 레코드 가능 드라이브(CD-R 드라이브), CD 재기입 가능 드라이브(CD-RW 드라이브) 또는 디지털 비디오 디스크(digital versatile disk) ROM 드라이브(DVD-ROM)와 같은 광 디스크 드라이브를 포함하는, 그러나 이들에 한정되지 않는, 다른 기억 매체와 별도로 또는 그런 다른 기억 매체와 조합하여 기억 매체를 포함할 수 있다. 디스크 기억 장치들(1124)의 시스템 버스(1118)에의 접속을 용이하게 하기 위하여, 전형적으로 인터페이스(1126)와 같은 분리형 또는 비분리형 인터페이스가 사용된다.
도 11은 적당한 오퍼레이팅 환경에서 기술된 사용자들과 기본 컴퓨터 자원들 간의 매개물로서 기능하는 소프트웨어를 기술한다는 것을 알아야 할 것이다. 그러한 소프트웨어는 오퍼레이팅 시스템(1128)을 포함한다. 디스크 기억 장치(1124)에 저장될 수 있는 오퍼레이팅 시스템(1128)은 컴퓨터 시스템(1112)의 자원들을 제어 및 할당하도록 기능한다. 시스템 애플리케이션들(1130)은 시스템 메모리(1116) 내에 또는 디스크 기억 장치(1124) 상에 저장된 프로그램 모듈들(1132) 및 프로그램 데이터(1134)를 통하여 오퍼레이팅 시스템(1128)에 의한 자원들의 관리를 이용한다. 본 발명은 각종 오퍼레이팅 시스템들 또는 오퍼레이팅 시스템들의 조합으로써 구현될 수 있다는 것을 알아야 할 것이다.
사용자는 입력 디바이스(들)(1136)를 통하여 컴퓨터(1112)에 명령 또는 정보를 입력한다. 입력 디바이스(들)(1136)는 마우스와 같은 포인팅 디바이스, 트랙볼, 스타일러스, 터치 패드, 마이크, 조이스틱, 게임 패드, 위성 안테나(satellite dish), 스캐너, TV 튜너 카드, 디지털 카메라, 디지털 비디오 카메라, 웹 카메라 등을 포함하지만, 이들에 한정되지 않는다. 이들 및 다른 입력 디바이스들은 인터페이스 포트(들)(1138)를 경유하여 시스템 버스(1118)를 통하여 프로세싱 유닛(1114)에 접속된다. 인터페이스 포트(들)(1138)는 예를 들면 직렬 포트, 병렬 포트, 게임 포트, 및 USB(universal serial bus)를 포함한다. 출력 디바이스(들)(1140)는 입력 디바이스(들)(1136)와 동일 타입의 포트들 중 일부를 사용한다. 따라서, 예를 들면, USB 포트는 컴퓨터(1112)에 입력을 제공하기 위해, 그리고 컴퓨터(1112)로부터 출력 디바이스(1140)로 정보를 출력하기 위해 사용될 수 있다. 출력 어댑터(1142)는 여러 출력 디바이스들(1140) 가운데서도 특별한 어댑터를 필요로 하는 모니터, 스피커, 및 프린터와 같은 일부 출력 디바이스들(1140)이 있다는 것을 예시하기 위해 제공되어 있다. 출력 어댑터들(1142)은, 한정이 아니라 예로서, 출력 디바이스(1140)와 시스템 버스(1118) 사이의 접속 수단을 제공하는 비디오 및 사운드 카드들을 포함한다. 원격 컴퓨터(들)(1144)와 같은 다른 디바이스들 및/또는 디바이스들의 시스템들이 입력 및 출력의 양쪽 능력들을 제공한다는 것에 주의해야 할 것이다.
컴퓨터(1112)는 원격 컴퓨터(들)(1144)와 같은 하나 이상의 원격 컴퓨터들에의 논리적 접속들을 이용한 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(들)(1144)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 워크스테이션, 마이크로프로세서 기반 전기 기구, 피어 디바이스 도는 다른 공통 네트워크 노드 등일 수 있고, 전형적으로 컴퓨터(1112)와 관련하여 설명한 엘리먼트들의 다수 또는 전부를 포함한다. 간결한 설명을 위하여, 원격 컴퓨터(들)(1144)와 함께 메모리 기억 장치(1146)만이 예시되어 있다. 원격 컴퓨터(들)(1144)는 네트워크 인터페이스(1148)를 통하여 컴퓨터(1112)에 논리적으로 접속되고 그 후 통신 접속(1150)을 경유하여 물리적으로 접속된다. 네트워크 인터페이스(1148)는 근거리 통신망(LAN) 및 광역 통신망(WAN)과 같은 통신 네트워크들을 두루 포함한다. LAN 기술은 FDDI(Fiber Distributed Data Interface), CDDI(Copper Distributed Data Interface), 이더넷, 토큰 링 등을 포함한다. WAN 기술은 포인트 투 포인트 링크, ISDN(Integrated Services Digital Networks) 및 그 변형들과 같은 회로 스위칭 네 트워크, 패킷 스위칭 네트워크, 및 DSL(Digital Subscriber Lines)을 포함하지만, 이들에 한정되지 않는다.
통신 접속(들)(1150)은 네트워크 인터페이스(1148)를 버스(1118)에 접속시키기 위해 사용되는 하드웨어/소프트웨어를 일컫는다. 명료한 예시를 위하여 통신 접속(1150)은 컴퓨터(1112) 내부에 있는 것으로 도시되어 있지만, 그것은 컴퓨터(1112) 외부에 있을 수도 있다. 네트워크 인터페이스(1148)에의 접속에 필요한 하드웨어/소프트웨어는, 단지 예시 목적으로, 통상의 전화 등급 모뎀, 케이블 모뎀 및 DSL 모뎀을 포함하는 모뎀들, ISDN 어댑터들, 및 이더넷 카드들과 같은 내부 및 외부 기술들을 포함한다.
이상에서 설명한 것은 본 발명의 예들을 포함한다. 물론, 본 발명을 설명할 목적으로 생각할 수 있는 모든 컴포넌트들 또는 방법들의 조합을 설명하는 것은 불가능하지만, 통상의 기술을 가진 당업자라면 다수의 추가적인 본 발명의 조합들 및 치환들이 가능하다는 것을 인지할 것이다. 따라서, 본 발명은 첨부된 청구항들의 의미 및 범위 내에 속하는 모든 그러한 변경, 수정, 및 변형들을 포함하도록 의도된다.
특히 위에서 설명한 컴포넌트, 디바이스, 회로들 시스템 등에 의해 수행되는 각종 기능들과 관련하여, 그러한 컴포넌트들을 설명하기 위해 사용된 용어들("수단"에 대한 언급을 포함)은, 달리 지적되지 않는 한은, 비록 여기서 예시된 본 발명의 양태들에서의 기능을 수행하는 개시된 구조와 구조적으로 동등하지는 않더라도, 설명된 컴포넌트의 특정 기능을 수행하는 임의의 컴포넌트(예를 들면, 기능적 등가물)에 대응하는 것으로 의도된다. 이와 관련하여, 본 발명은 시스템은 물론 본 발명의 각종 방법들의 동작들 및/또는 이벤트들을 수행하기 위한 컴퓨터 실행 가능 명령들을 갖는 컴퓨터 판독 가능 매체를 포함한다.
게다가, 몇몇 실시예들 중 단지 하나의 실시예와 관련하여 본 발명의 특정 특징을 개시하였으나, 그러한 특징은 임의의 정해진 또는 특정한 응용을 위하여 요구되고 유익할 수 있듯이 다른 실시예들의 하나 이상의 다른 특징들과 조합될 수도 있다. 더욱이, "포함한다"(includes), 및 "포함하는"(including)이라는 용어들 및 그 변형 용어들이 상세한 설명 또는 청구항들에서 사용될 때는, 이들 용어는 "포함하는"(comprising)이라는 용어와 유사하게 일체를 포함하는 것으로 의도된다.
임의의 부울 식으로 표현되는 술어를 포함하는 보안식이 생성되어, 표 테이터의 로우에 의해 만족되면 쿼리 개시자가 그 데이타를 액세스할 수 있게 하는 데이타베이스 로우 레벨 보안을 제공하는 시스템 및 방법의 개시이다. 방법은 보안식을 포함하는 식들을 다양하게 배치하여 쿼리 성능의 최적화를 수행한다. 보안식을 비보안식과 구별하기 위해 특별히 태깅되고(tagged), 술어 이동 규칙들(rules fo predicate movement)을 사용하여 정보 누설을 완화시킨다. 또한, 식이 "안전"식인지를 판정하기 위해 컴파일 시간에의 정적 분석 및 실행 시간에의 동적 분석을 수행한다. 안전 위반이 검출되면, 쿼리는 취소되거나 "안전" 모드로 실행된다.

Claims (28)

  1. 데이터베이스 보안을 용이하게 하는 시스템으로서,
    쿼리(query)를 수신하는 입력 컴포넌트 - 상기 쿼리는 상기 쿼리를 생성하는 사용자를 특정하는 고유 식별자를 포함함 - ;
    데이터베이스의 관리자에 의해 정의되는 복수의 로우 레벨 보안식(row-level security expressions)을 수신하는 식 뱅크(expression bank) - 상기 복수의 로우 레벨 보안식은 상기 데이터베이스의 하나의 데이터베이스 테이블에 정렬되는 데이터의 함수들이고 상기 하나의 데이터베이스 테이블에 저장된 하나 이상의 데이터 로우(rows of data)에 대한 액세스를 정의하고, 각각의 로우 레벨 보안식은 하나 이상의 고유 식별자를 포함하여 각각의 로우 레벨 보안식이 각각의 로우 레벨 보안식의 상기 하나 이상의 고유 식별자 중 하나와 일치하는 고유 식별자를 갖는 쿼리들에 대해서만 액세스 가능하도록 하며, 상기 복수의 로우 레벨 보안식 중 적어도 하나는 상기 하나의 데이터베이스 테이블에 저장된 상기 데이터에 대한 사용자 액세스를 승인하고 상기 복수의 로우 레벨 보안식 중 적어도 하나는 상기 하나의 데이터베이스 테이블에 저장된 상기 데이터에 대한 사용자 액세스를 거절함 - ;
    상기 로우 레벨 보안식들 중 하나 이상을 상기 수신된 쿼리에 삽입하여 오그멘트(augment)된 쿼리를 생성하여, 상기 오그멘트된 쿼리가 상기 수신된 쿼리 및 상기 삽입된 하나 이상의 로우 레벨 보안식에 포함된 모든 정보를 포함하도록 하는 쿼리 관리 컴포넌트 - 상기 오그멘트된 쿼리는 데이터를 검색하고 적어도 상기 오그멘트된 쿼리에 삽입된 상기 로우 레벨 보안식들의 집합(aggregate)을 만족시켜 액세스를 승인하는 상기 적어도 하나의 로우 레벨 보안식이 만족되고 액세스를 거절하는 상기 적어도 하나의 로우 레벨 보안식이 만족되지 않도록 하는 상기 하나의 데이터베이스 테이블의 데이터 로우들을 리턴하기 위해 상기 데이터베이스에 의해 이용됨 - ; 및
    정보 누설을 방지하기 위해 데이터 로우 평가 동안 상기 쿼리의 비보안식들(non-security expressions)의 실행에 앞서 상기 쿼리의 상기 로우 레벨 보안식들의 실행을 보증하기 위해 술어(predicate)의 규칙들을 이용하여 상기 쿼리의 상기 로우 레벨 보안식들 및 상기 쿼리의 상기 비보안식들을 순서화하는(order) 최적화기
    를 포함하는 데이터베이스 보안을 용이하게 하는 시스템.
  2. 제1항에 있어서, 상기 오그멘트된 쿼리는,
    만족되는 경우 로우 액세스(row access)를 승인하는 부울 식들(Boolean expressions)의 논리합(disjunction)과,
    만족되는 경우 로우 액세스를 거절하는 부울 식들의 보수연산들(complements)의 논리곱(conjunction)
    의 논리곱을 포함하는 로우 레벨 보안식들을 포함하는, 데이터베이스 보안을 용이하게 하는 시스템.
  3. 제1항에 있어서, 상기 로우 레벨 보안식들은, 상기 로우 레벨 보안식들을 비보안식들과 구별하는 특별한 태그를 포함하는, 데이터베이스 보안을 용이하게 하는 시스템.
  4. 제1항에 있어서, 상기 최적화기는 상기 술어의 규칙들을 이용하여 비보안식들을 보안식들 위쪽으로 풀(pull)하는 것 또는 비보안식들을 보안식들 아래쪽으로 푸시하는 것 중 적어도 하나를 행하는, 데이터베이스 보안을 용이하게 하는 시스템.
  5. 제1항에 있어서, 컴파일 시에 상기 오그멘트된 쿼리 상에 정적 분석(static analysis)을 수행하는 컴포넌트 - 상기 컴포넌트는 상기 오그멘트된 쿼리 내의 비보안식들이 안전한지 여부를 결정하되, 안전한 식은 보안 침해로부터의 정보 노출의 위험 없이 실행됨 - 를 더 포함하는 데이터베이스 보안을 용이하게 하는 시스템.
  6. 제1항에 있어서, 실행 시에 상기 오그멘트된 쿼리 상에 동적 분석을 수행하는 컴포넌트 - 상기 컴포넌트는 비보안식들이 안전한지 여부를 결정하되, 안전한 식은 보안 침해로부터의 정보 노출의 위험 없이 실행됨 - 를 더 포함하는 데이터베이스 보안을 용이하게 하는 시스템.
  7. 제6항에 있어서, 상기 컴포넌트는 상기 오그멘트된 쿼리의 모든 보안식들의 성공적인 실행에 이어 상기 동적 분석의 결론을 내리는, 데이터베이스 보안을 용이하게 하는 시스템.
  8. 제1항에 있어서, 안전 침해를 검출하는 컴포넌트 - 상기 컴포넌트는 상기 쿼리를 중지하는 것 또는 안전 모드에서 상기 쿼리를 다시 시작하는 것 중 적어도 하나를 행함 - 를 더 포함하는 데이터베이스 보안을 용이하게 하는 시스템.
  9. 제8항에 있어서, 상기 안전 모드는 비보안식들을 이용하기 전에 데이터 로우들을 평가하기 위해 보안식들이 이용되는 것을 보증하는, 데이터베이스 보안을 용이하게 하는 시스템.
  10. 제1항에 있어서, 상기 보안식들은 부울 식들인, 데이터베이스 보안을 용이하게 하는 시스템.
  11. 제1항에 있어서, 하나 이상의 보안식은 상기 데이터의 관리자에 의해 데이터 로우에 대한 SQL 스테이트먼트들(statements)을 통하여 생성되는, 데이터베이스 보안을 용이하게 하는 시스템.
  12. 로우 레벨 데이터베이스 보안을 이용하는 방법으로서,
    쿼리에 대한 복수의 로우 레벨 보안식을 획득하는 단계 - 상기 쿼리는 상기 쿼리를 생성하는 사용자를 특정하는 고유 식별자를 포함하고, 상기 복수의 로우 레벨 보안식은 데이터베이스의 관리자에 의해 정의되며, 상기 복수의 로우 레벨 보안식은 상기 데이터베이스의 하나의 데이터베이스 테이블에 정렬되는 데이터의 함수들이고 상기 하나의 데이터베이스 테이블에 저장된 하나 이상의 데이터 로우에 대한 액세스를 정의하고, 각각의 로우 레벨 보안식은 하나 이상의 고유 식별자를 포함하여 각각의 로우 레벨 보안식이 각각의 로우 레벨 보안식의 상기 하나 이상의 고유 식별자 중 하나와 일치하는 고유 식별자를 갖는 쿼리들에 대해서만 액세스 가능하도록 함 - ;
    만족되는 경우 로우 액세스를 승인하는 부울 로우 레벨 보안식들의 논리합과, 만족되는 경우 로우 액세스를 거절하는 부울 로우 레벨 보안식들의 보수연산들의 논리곱의 논리곱을 포함하는 식을 생성하기 위해 프로세서를 이용하는 단계 - 상기 부울 로우 레벨 보안식들은 상기 쿼리에 대한 하나 이상의 상기 로우 레벨 보안식으로부터 정의되며, 상기 생성된 식은 승인 로우 액세스 식 및 거절 로우 액세스 스테이트먼트를 논리합으로 조합하여 적어도 하나의 승인 로우 액세스 식이 만족되고 어떠한 거절 로우 액세스 식도 만족되지 않을 때 액세스를 가능하게 함 - ; 및
    상기 쿼리가 오리지널 쿼리의 모든 정보를 포함하도록 상기 쿼리에 상기 생성된 식을 삽입하여, 상기 보안 식들이 상기 쿼리의 비보안 식의 실행에 앞서 상기 하나의 데이터베이스 테이블의 데이터 로우를 평가하기 위해 이용되도록 상기 프로세서를 이용하는 단계
    를 포함하는 로우 레벨 데이터베이스 보안을 이용하는 방법.
  13. 제12항에 있어서, 보안식들의 생성(create), 결합(associate), 또는 취소(revoke) 중 적어도 하나를 위한 SQL 스테이트먼트들을 이용하는 단계를 더 포함하는 로우 레벨 데이터베이스 보안을 이용하는 방법.
  14. 제12항에 있어서, 사용자에게 데이터 로우(들)에 대한 허가를 승인 또는 거절 중 적어도 하나를 행하기 위한 SQL 스테이트먼트들을 이용하는 단계를 더 포함하는 로우 레벨 데이터베이스 보안을 이용하는 방법.
  15. 제12항에 있어서, 상기 쿼리가 안전하지 않은 비보안식을 포함하지 않을 경우 성능을 최적화하기 위하여 상기 쿼리에 상기 하나 이상의 로우 레벨 보안식을 삽입하는 단계를 더 포함하는 로우 레벨 데이터베이스 보안을 이용하는 방법.
  16. 제12항에 있어서, 상기 쿼리 내의 상기 보안식들의 순서화를 용이하게 하기 위하여 이동에 관한 술어 규칙들(predicate rules of movement)을 이용하는 단계를 더 포함하는 로우 레벨 데이터베이스 보안을 이용하는 방법.
  17. 제16항에 있어서, 상기 술어 규칙들은 성능을 향상시키고 데이터 누설을 완화시키기 위해 비보안식을 보안식 위쪽으로 풀할 것인지 또는 보안식 아래쪽으로 푸시할 것인지를 정의하는 로우 레벨 데이터베이스 보안을 이용하는 방법.
  18. 제12항에 있어서, 비보안식이 안전하지 않은지 여부를 결정하기 위해 정적 분석을 수행하는 단계를 더 포함하는 로우 레벨 데이터베이스 보안을 이용하는 방법.
  19. 제12항에 있어서, 비보안식이 안전하지 않은지 여부를 결정하기 위해 동적 분석을 수행하는 단계를 더 포함하는 로우 레벨 데이터베이스 보안을 이용하는 방법.
  20. 제12항에 있어서, 논리적 비보안식들을 안전한 식들로서 정의하는 단계를 더 포함하는 로우 레벨 데이터베이스 보안을 이용하는 방법.
  21. 제12항에 있어서, 보안 침해가 검출되는 경우 안전 모드에서 쿼리를 다시 시작하는 단계를 더 포함하고, 상기 안전 모드는 비보안식들에 앞서서 데이터 로우를 평가하기 위해 보안식들이 이용되는 것을 보증하는 로우 레벨 데이터베이스 보안을 이용하는 방법.
  22. 로우 레벨 데이터베이스 보안을 용이하게 하는 시스템으로서,
    사용자로부터 쿼리를 획득하는 입력 컴포넌트 - 상기 쿼리는 데이터베이스의 테이블의 데이터에 관련된 것이고, 상기 쿼리는 상기 사용자를 특정하는 고유 식별자를 포함함 - ; 및
    상기 사용자의 고유 식별자에 적어도 부분적으로 기초하여 식 뱅크로부터 하나 이상의 로우 레벨 보안식을 획득하는 쿼리 관리 컴포넌트 - 상기 식 뱅크는 상기 데이터베이스의 상기 데이터베이스 테이블에 정렬된 상기 데이터의 함수로서 정의되고 상기 데이터베이스 테이블에 저장된 하나 이상의 데이터 로우에 대한 액세스를 정의하는 복수의 로우 레벨 보안식을 보유하고, 각각의 로우 레벨 보안식은 하나 이상의 고유 식별자를 포함하여 각각의 로우 레벨 보안식이 각각의 로우 레벨 보안식의 상기 하나 이상의 고유 식별자 중 하나와 일치하는 고유 식별자를 갖는 쿼리들에 대해서만 액세스 가능하도록 하며, 상기 복수의 로우 레벨 보안식 중 적어도 하나는 상기 데이터베이스 테이블에 저장된 상기 데이터에 대한 사용자 액세스를 승인하고 상기 복수의 로우 레벨 보안식 중 적어도 하나는 상기 데이터베이스 테이블에 저장된 상기 데이터에 대한 사용자 액세스를 거절함 -
    를 포함하고,
    상기 쿼리 관리 컴포넌트는 획득된 상기 하나 이상의 로우 레벨 보안식들을 상기 사용자로부터의 상기 쿼리에 삽입하여 상기 수신된 쿼리 및 상기 삽입된 하나 이상의 로우 레벨 보안식에 포함된 모든 정보를 포함하는 오그멘트된 쿼리를 생성하고, 상기 오그멘트된 쿼리는 상기 하나 이상의 로우 레벨 보안식에 따라 데이터의 서브셋을 회수하기 위해 상기 데이터베이스에 대해 적용될 수 있는, 로우 레벨 데이터베이스 보안을 용이하게 하는 시스템.
  23. 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품을 구성하는 하나 이상의 컴퓨터 판독가능 기록 매체로서,
    상기 컴퓨터 프로그램 제품은 로우 레벨 데이터베이스 보안을 이용하는 방법을 구현하기 위한 것이고,
    상기 하나 이상의 컴퓨터 판독가능 기록 매체에는 컴퓨터 판독가능 명령어들이 저장되어 있고,
    상기 컴퓨터 판독가능 명령어들은 프로세서에 의해 실행되는 경우 상기 컴퓨터 시스템으로 하여금,
    쿼리를 수신하고 - 상기 쿼리는 상기 쿼리를 생성하는 사용자를 특정하는 고유의 식별자를 포함함 - ,
    데이터베이스 관리자에 의해 정의되는 복수의 로우 레벨 보안식을 수신하며 - 상기 복수의 로우 레벨 보안식은 상기 데이터베이스의 하나의 데이터베이스 테이블에 정렬되는 데이터의 함수들이고 상기 하나의 데이터베이스 테이블에 저장된 하나 이상의 데이터 로우에 대한 액세스를 정의하고, 각각의 로우 레벨 보안식은 하나 이상의 고유 식별자를 포함하여 각각의 로우 레벨 보안식이 각각의 로우 레벨 보안식의 상기 하나 이상의 고유 식별자 중 하나와 일치하는 고유 식별자를 갖는 쿼리들에 대해서만 액세스 가능하도록 하며, 상기 복수의 로우 레벨 보안식 중 적어도 하나는 상기 하나의 데이터베이스 테이블에 저장된 상기 데이터에 대한 사용자 액세스를 승인하고 상기 복수의 로우 레벨 보안식 중 적어도 하나는 상기 하나의 데이터베이스 테이블에 저장된 상기 데이터에 대한 사용자 액세스를 거절함 - ,
    상기 로우 레벨 보안식들 중 하나 이상을 상기 수신된 쿼리에 삽입하여 오그멘트된 쿼리를 생성하여, 상기 오그멘트된 쿼리가 상기 수신된 쿼리 및 상기 삽입된 하나 이상의 로우 레벨 보안식에 포함된 모든 정보를 포함하도록 하고 - 상기 오그멘트된 쿼리는 데이터를 검색하고 적어도 상기 오그멘트된 쿼리에 삽입된 상기 로우 레벨 보안식들의 집합을 만족시켜 액세스를 승인하는 상기 적어도 하나의 로우 레벨 보안식이 만족되고 액세스를 거절하는 상기 적어도 하나의 로우 레벨 보안식이 만족되지 않도록 하는 상기 하나의 데이터베이스 테이블의 데이터 로우들을 리턴하기 위해 상기 데이터베이스에 의해 이용됨 - ,
    정보 누설을 방지하기 위해 데이터 로우 평가 동안 상기 쿼리의 비보안식들의 실행에 앞서 상기 쿼리의 상기 로우 레벨 보안식들의 실행을 보증하기 위해 술어의 규칙들을 이용하여 상기 쿼리의 상기 로우 레벨 보안식들 및 상기 쿼리의 상기 비보안식들을 순서화하도록 하는
    하나 이상의 컴퓨터 판독가능 기록 매체.
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020050002218A 2004-02-11 2005-01-10 로우 레벨 데이터베이스 보안을 최적화하는 시스템 및 방법 KR101120814B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US54385504P 2004-02-11 2004-02-11
US60/543,855 2004-02-11
US10/885,815 US7661141B2 (en) 2004-02-11 2004-07-07 Systems and methods that optimize row level database security
US10/885,815 2004-07-07

Publications (2)

Publication Number Publication Date
KR20050081164A KR20050081164A (ko) 2005-08-18
KR101120814B1 true KR101120814B1 (ko) 2012-03-23

Family

ID=34704406

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050002218A KR101120814B1 (ko) 2004-02-11 2005-01-10 로우 레벨 데이터베이스 보안을 최적화하는 시스템 및 방법

Country Status (5)

Country Link
US (1) US7661141B2 (ko)
EP (1) EP1564620A1 (ko)
JP (1) JP4698243B2 (ko)
KR (1) KR101120814B1 (ko)
CN (1) CN100492357C (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109442265A (zh) * 2018-10-24 2019-03-08 欧普照明股份有限公司 一种照明灯具
US10885134B2 (en) 2017-05-12 2021-01-05 International Business Machines Corporation Controlling access to protected information

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281003B2 (en) * 1998-10-05 2007-10-09 Oracle International Corporation Database fine-grained access control
US20040139043A1 (en) * 2003-01-13 2004-07-15 Oracle International Corporation Attribute relevant access control policies
US7873660B1 (en) 2003-02-27 2011-01-18 Oracle International Corporation Enforcing data privacy aggregations
US7249120B2 (en) * 2003-06-27 2007-07-24 Microsoft Corporation Method and apparatus for selecting candidate statistics to estimate the selectivity value of the conditional selectivity expression in optimize queries based on a set of predicates that each reference a set of relational database tables
US7310647B2 (en) * 2003-12-24 2007-12-18 Oracle International Corporation Column masking of tables
US20130179949A1 (en) 2004-01-22 2013-07-11 Jpay, Inc. Secure exchange of digital content
US20100299761A1 (en) * 2004-01-22 2010-11-25 Jpay, Inc. System and method for sending electronic data to inmates
US8825702B2 (en) * 2004-02-24 2014-09-02 Oracle International Corporation Sending control information with database statement
US7308411B2 (en) * 2004-04-01 2007-12-11 Leo Software, Inc. Method of presenting leasing arrangements
US8271463B2 (en) * 2004-12-28 2012-09-18 International Business Machines Corporation System and method for providing access to data with user defined table functions
US8438141B2 (en) * 2005-01-27 2013-05-07 International Business Machines Corporation System and method for providing secure access to data with user defined table functions
US7505985B2 (en) * 2005-02-25 2009-03-17 International Business Machines Corporation System and method of generating string-based search expressions using templates
US8326877B2 (en) * 2005-05-04 2012-12-04 Microsoft Corporation Region-based security
US7580958B2 (en) * 2005-06-17 2009-08-25 International Business Machines Corporation Supporting multiple versions of a routine
US7899817B2 (en) * 2005-10-05 2011-03-01 Microsoft Corporation Safe mode for inverse query evaluations
US8069153B2 (en) * 2005-12-02 2011-11-29 Salesforce.Com, Inc. Systems and methods for securing customer data in a multi-tenant environment
US10318752B2 (en) * 2006-05-26 2019-06-11 Oracle International Corporation Techniques for efficient access control in a database system
US8676845B2 (en) * 2006-08-22 2014-03-18 International Business Machines Corporation Database entitlement
US7685194B2 (en) * 2006-08-31 2010-03-23 Microsoft Corporation Fine-grained access control in a database by preventing information leakage and removing redundancy
KR100803357B1 (ko) * 2006-09-28 2008-02-13 알투웨어 주식회사 데이터베이스 보안 장치 및 방법
US8402017B2 (en) * 2006-12-08 2013-03-19 International Business Machines Corporation Method for altering database views dependent on rules
US8027993B2 (en) 2006-12-28 2011-09-27 Teradota Us, Inc. Techniques for establishing and enforcing row level database security
US20090024570A1 (en) * 2007-07-20 2009-01-22 Oracle Internatonal Corporation User defined query rewrite mechanism
US8078595B2 (en) * 2007-10-09 2011-12-13 Oracle International Corporation Secure normal forms
US8819066B2 (en) 2007-12-21 2014-08-26 International Business Machines Corporation Employing organizational context within a collaborative tagging system
US8234299B2 (en) * 2008-01-11 2012-07-31 International Business Machines Corporation Method and system for using fine-grained access control (FGAC) to control access to data in a database
US8566909B2 (en) * 2008-02-01 2013-10-22 Oracle International Corporation Row-level security with expression data type
US7958105B2 (en) * 2008-03-07 2011-06-07 International Business Machines Corporation System and method for filtering database results using dynamic composite queries
US20090248631A1 (en) * 2008-03-31 2009-10-01 International Business Machines Corporation System and Method for Balancing Workload of a Database Based Application by Partitioning Database Queries
US7970790B2 (en) * 2008-05-13 2011-06-28 Microsoft Corporation Cell-based security representation for data access
US8327419B1 (en) 2008-05-22 2012-12-04 Informatica Corporation System and method for efficiently securing enterprise data resources
US8166071B1 (en) 2008-05-22 2012-04-24 Informatica Corporation System and method for efficiently securing enterprise data resources
US20090300019A1 (en) * 2008-05-30 2009-12-03 Schumberger Technology Corporation Hierarchical item level entitlement
US8239396B2 (en) * 2009-03-20 2012-08-07 Oracle International Corporation View mechanism for data security, privacy and utilization
US9183407B2 (en) * 2011-10-28 2015-11-10 Microsoft Technology Licensing Llc Permission based query processing
US9043309B2 (en) * 2012-06-05 2015-05-26 Oracle International Corporation SQL transformation-based optimization techniques for enforcement of data access control
US9275112B2 (en) * 2012-11-09 2016-03-01 Microsoft Technology Licensing, Llc Filtering views with predefined query
US9195841B2 (en) 2013-03-15 2015-11-24 Sap Se Automated and delegated model-based row level security
US9767145B2 (en) 2014-10-10 2017-09-19 Salesforce.Com, Inc. Visual data analysis with animated informational morphing replay
US9449188B2 (en) 2014-10-10 2016-09-20 Salesforce.Com, Inc. Integration user for analytical access to read only data stores generated from transactional systems
US10049141B2 (en) 2014-10-10 2018-08-14 salesforce.com,inc. Declarative specification of visualization queries, display formats and bindings
US9600548B2 (en) * 2014-10-10 2017-03-21 Salesforce.Com Row level security integration of analytical data store with cloud architecture
US10101889B2 (en) 2014-10-10 2018-10-16 Salesforce.Com, Inc. Dashboard builder with live data updating without exiting an edit mode
US10002153B2 (en) 2015-05-14 2018-06-19 Illumon Llc Remote data object publishing/subscribing system having a multicast key-value protocol
US10115213B2 (en) 2015-09-15 2018-10-30 Salesforce, Inc. Recursive cell-based hierarchy for data visualizations
US10089368B2 (en) 2015-09-18 2018-10-02 Salesforce, Inc. Systems and methods for making visual data representations actionable
US10205730B2 (en) 2015-09-29 2019-02-12 International Business Machines Corporation Access control for database
JP6547577B2 (ja) * 2015-10-15 2019-07-24 富士通株式会社 検査装置、検査プログラムおよび検査方法
KR101905771B1 (ko) * 2016-01-29 2018-10-11 주식회사 엔오디비즈웨어 시스템 환경 및 사용자 행동 분석 기반의 자기 방어 보안 서버와 이의 작동 방법
US10713376B2 (en) 2016-04-14 2020-07-14 Salesforce.Com, Inc. Fine grain security for analytic data sets
US10277561B2 (en) * 2016-07-22 2019-04-30 International Business Machines Corporation Database management system shared ledger support
US10303894B2 (en) 2016-08-31 2019-05-28 Oracle International Corporation Fine-grained access control for data manipulation language (DML) operations on relational data
US10311047B2 (en) 2016-10-19 2019-06-04 Salesforce.Com, Inc. Streamlined creation and updating of OLAP analytic databases
US10198469B1 (en) 2017-08-24 2019-02-05 Deephaven Data Labs Llc Computer data system data source refreshing using an update propagation graph having a merged join listener
RU2676223C1 (ru) * 2017-11-16 2018-12-26 Общество с ограниченной ответственностью "Научно-технический центр РЕЛЭКС" Способ проведения разделения объектов базы данных на основе меток конфиденциальности
US11153172B2 (en) * 2018-04-30 2021-10-19 Oracle International Corporation Network of nodes with delta processing
US11048815B2 (en) 2018-08-06 2021-06-29 Snowflake Inc. Secure data sharing in a multi-tenant database system
CN109410650B (zh) * 2018-10-10 2020-05-19 中国电子科技集团公司第二十八研究所 面向全系统信息管理的基于情景与语义的信息聚合方法
CN109446219B (zh) * 2018-10-10 2021-06-29 新华三大数据技术有限公司 权限管理方法及装置
US11675920B2 (en) * 2019-12-03 2023-06-13 Sonicwall Inc. Call location based access control of query to database
CN111488360B (zh) * 2020-04-14 2023-04-18 上海达梦数据库有限公司 一种行级安全的实现方法、装置、设备及存储介质
US11868349B2 (en) * 2020-05-05 2024-01-09 International Business Machines Corporation Row secure table plan generation
US11562052B2 (en) * 2020-08-31 2023-01-24 Procore Technologies, Inc. Computing system and method for verification of access permissions
US11397826B2 (en) * 2020-10-29 2022-07-26 Snowflake Inc. Row-level security
CN112817941A (zh) * 2021-02-24 2021-05-18 紫光云技术有限公司 一种解决sqlserver自动修改恢复模式的方法
US20230169121A1 (en) * 2021-12-01 2023-06-01 Google Llc Performance Optimizations for Row-Level Security Filters

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002297606A (ja) 2001-01-26 2002-10-11 Hitachi Ltd 問合せ内容を隠蔽可能なデータベースのアクセス方法およびシステム
US20030014394A1 (en) 2001-03-22 2003-01-16 Shinji Fujiwara Cell-level data access control using user-defined functions

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07104868B2 (ja) * 1988-04-08 1995-11-13 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン データ記憶検索システム
US5261102A (en) * 1991-03-28 1993-11-09 International Business Machines Corporation System for determining direct and indirect user access privileges to data base objects
GB9402935D0 (en) * 1994-02-16 1994-04-06 British Telecomm A method for controlling access to a database
EP0697662B1 (en) * 1994-08-15 2001-05-30 International Business Machines Corporation Method and system for advanced role-based access control in distributed and centralized computer systems
US6381595B1 (en) * 1994-09-29 2002-04-30 International Business Machines Corporation System and method for compensation of functional differences between heterogeneous database management systems
US5956715A (en) * 1994-12-13 1999-09-21 Microsoft Corporation Method and system for controlling user access to a resource in a networked computing environment
US5941947A (en) * 1995-08-18 1999-08-24 Microsoft Corporation System and method for controlling access to data entities in a computer network
US5734887A (en) * 1995-09-29 1998-03-31 International Business Machines Corporation Method and apparatus for logical data access to a physical relational database
US6412070B1 (en) * 1998-09-21 2002-06-25 Microsoft Corporation Extensible security system and method for controlling access to objects in a computing environment
US6715081B1 (en) * 1999-08-12 2004-03-30 International Business Machines Corporation Security rule database searching in a network security environment
US6438542B1 (en) * 1999-08-30 2002-08-20 International Business Machines Corporation Method of optimally determining lossless joins
US6405212B1 (en) * 1999-09-27 2002-06-11 Oracle Corporation Database system event triggers
US6397206B1 (en) * 1999-12-15 2002-05-28 International Business Machines Corporation Optimizing fixed, static query or service selection and execution based on working set hints and query signatures
US6820082B1 (en) * 2000-04-03 2004-11-16 Allegis Corporation Rule based database security system and method
US6658407B1 (en) * 2000-06-29 2003-12-02 Microsoft Corporation Clause-based relational queries
WO2002059793A2 (en) * 2000-10-31 2002-08-01 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
JP2002312220A (ja) * 2001-01-18 2002-10-25 Hitachi Ltd ユーザ定義機能を使用したセルレベルのデータアクセス制御
US20020095405A1 (en) * 2001-01-18 2002-07-18 Hitachi America, Ltd. View definition with mask for cell-level data access control
US6836770B2 (en) * 2002-08-09 2004-12-28 Joint Technology Corporation Method for transforming SQL queries
US7240046B2 (en) * 2002-09-04 2007-07-03 International Business Machines Corporation Row-level security in a relational database management system
US7698441B2 (en) * 2002-10-03 2010-04-13 International Business Machines Corporation Intelligent use of user data to pre-emptively prevent execution of a query violating access controls
US20040139043A1 (en) * 2003-01-13 2004-07-15 Oracle International Corporation Attribute relevant access control policies
US7031958B2 (en) * 2003-02-06 2006-04-18 International Business Machines Corporation Patterned based query optimization
US8321137B2 (en) * 2003-09-29 2012-11-27 Pathwork Diagnostics, Inc. Knowledge-based storage of diagnostic models
US7346617B2 (en) * 2004-01-23 2008-03-18 Oracle International Corporation Multi-table access control
US7207065B2 (en) * 2004-06-04 2007-04-17 Fortify Software, Inc. Apparatus and method for developing secure software

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002297606A (ja) 2001-01-26 2002-10-11 Hitachi Ltd 問合せ内容を隠蔽可能なデータベースのアクセス方法およびシステム
US20030014394A1 (en) 2001-03-22 2003-01-16 Shinji Fujiwara Cell-level data access control using user-defined functions

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10885134B2 (en) 2017-05-12 2021-01-05 International Business Machines Corporation Controlling access to protected information
US10915590B2 (en) 2017-05-12 2021-02-09 International Business Machines Corporation Controlling access to protected information
CN109442265A (zh) * 2018-10-24 2019-03-08 欧普照明股份有限公司 一种照明灯具

Also Published As

Publication number Publication date
US20050177570A1 (en) 2005-08-11
EP1564620A1 (en) 2005-08-17
CN100492357C (zh) 2009-05-27
JP4698243B2 (ja) 2011-06-08
CN1655145A (zh) 2005-08-17
JP2005228312A (ja) 2005-08-25
KR20050081164A (ko) 2005-08-18
US7661141B2 (en) 2010-02-09

Similar Documents

Publication Publication Date Title
KR101120814B1 (ko) 로우 레벨 데이터베이스 보안을 최적화하는 시스템 및 방법
KR101153064B1 (ko) 데이터베이스에 대한 안전한 액세스를 용이하게 하는 컴퓨터로 구현된 시스템, 데이터 액세스 방법, 안전한 액세스를 용이하게 하는 방법, 및 컴퓨터 판독가능 저장 매체
US11379605B2 (en) Data sharing using secure views
US7711750B1 (en) Systems and methods that specify row level database security
US7599937B2 (en) Systems and methods for fine grained access control of data stored in relational databases
US10438008B2 (en) Row level security
US8930403B2 (en) Fine-grained relational database access-control policy enforcement using reverse queries
US7299171B2 (en) Method and system for processing grammar-based legality expressions
US11461493B1 (en) Data overlap count adjustment in a multiple tenant database system
US8095557B2 (en) Type system for access control lists
ZA200505028B (en) Systems and methods for fine grained access control of data stored in relational databases
Dia et al. Risk aware query replacement approach for secure databases performance management
Kechar et al. An access control system architecture for xml data warehouse using xacml
CN117828567A (zh) 一种外部表安全访问控制方法、装置、设备及介质
Kose Distributed Database Security

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
FPAY Annual fee payment

Payment date: 20150121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 9