KR102299171B1 - 보안 정책 분석기 서비스 및 만족성 엔진 - Google Patents

보안 정책 분석기 서비스 및 만족성 엔진 Download PDF

Info

Publication number
KR102299171B1
KR102299171B1 KR1020207000122A KR20207000122A KR102299171B1 KR 102299171 B1 KR102299171 B1 KR 102299171B1 KR 1020207000122 A KR1020207000122 A KR 1020207000122A KR 20207000122 A KR20207000122 A KR 20207000122A KR 102299171 B1 KR102299171 B1 KR 102299171B1
Authority
KR
South Korea
Prior art keywords
policy
security
computer
propositional logic
propositional
Prior art date
Application number
KR1020207000122A
Other languages
English (en)
Other versions
KR20200013040A (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
Priority claimed from US15/637,227 external-priority patent/US10757128B2/en
Priority claimed from US15/637,238 external-priority patent/US10630695B2/en
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20200013040A publication Critical patent/KR20200013040A/ko
Application granted granted Critical
Publication of KR102299171B1 publication Critical patent/KR102299171B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • H04L63/205Network architectures or network communication protocols for network security for managing network security; network security policies in general involving negotiation or determination of the one or more network security mechanisms to be used, e.g. by negotiation between the client and the server or between peers or by selection according to the capabilities of the entities involved
    • 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
    • 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
    • G06N5/006
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • G06N5/013Automatic theorem proving
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

보안 정책은 컴퓨팅 자원의 액세스와 관련된 권한을 허가 또는 거부하기 위해 사용될 수 있다. 둘 이상의 보안 정책은 비교되어 정책들이 동치성이 있는지 여부, 하나의 보안이 다른 것보다 더 권한 있는지 여부 등을 결정할 수 있다. 일부 경우, 두 개의 보안 정책에 동치성이 없음을 결정하기에 충분한 보안 권한이 존재하는지 여부를 식별하는 것이 가능할 수 있다. 명제 논리가 보안 정책의 평가에서 사용될 수 있다.

Description

보안 정책 분석기 서비스 및 만족성 엔진
관련 출원의 상호-참조
본 출원은 2017년06월29일자 미국 특허 출원 번호 15/637,227, 발명의 명칭 "SECURITY POLICY ANALYZER SERVICE AND SATISFIABILITY ENGINE" 및 2017년06월29일자 미국 특허 출원 번호 15/637,238, 발명의 명칭 "SECURITY POLICY MONITORING SERVICE"의 우선권을 주장하며, 이들의 내용 전체가 본 명세서에 참조로서 포함된다.
컴퓨팅 자원 및 이의 연관된 데이터의 보안이 많은 맥락에서 매우 중요하다. 예를 들어, 컴퓨팅 디바이스의 네트워크가 자신들의 사용자에게 서비스의 강건한 세트를 제공하도록 사용될 수 있다. 네트워크 내에서, 제1 사용자가 특정 액세스 권한으로 특권을 가질 수 있으며 제2 사용자가 제1 사용자의 액세스 권한과 상이할 수 있는 제2 액세스 권한 세트를 가질 수 있다. 컴퓨팅 자원 서비스 제공자의 맥락에서 사용자의 액세스 권한이, 컴퓨팅 자원으로의 사용자 액세스를 허가할지 또는 거부할지 여부를 결정하는 것의 일부로서 서비스 제공자에 의해 사용될 수 있는 보안 정책을 이용해 정의될 수 있다.
컴퓨터 시스템 및 컴퓨터 네트워크의 보안을 관리하고 유지하는 것이 종종 복잡하고 까다롭다. 많은 경우 시스템 내 사용자의 액세스 권한이 시간에 따라 변할 수 있으며, 이는, 일부 경우, 사용자에게 적용되는 보안 정책의 변경을 필요로 한다. 컴퓨터 시스템 또는 컴퓨터 네트워크에서 지원되는 사용자의 수 및 유형이 확장됨에 따라, 사용자와 연관된 액세스 권한이 사용자가 액세스해야 할 자원으로의 액세스를 허가하고 사용자가 액세스하지 않아야 할 자원으로의 액세스를 거부할지 여부를 결정하는 것이 어려워질 수 있다.
도면을 참조하여 다양한 기법이 기재될 것이다.
도 1은 다양한 실시예가 구현될 수 있는 환경을 도시한다.
도 2는 컴퓨팅 자원 서비스 제공자가 다양한 실시예를 구현하도록 이용될 수 있는 환경을 도시한다.
도 3은 클라이언트가 두 보안 정책의 동치성을 분석하라는 요청을 발행하고 동치성 결과를 수신하는 환경을 도시한다.
도 4는 분산된 컴퓨터 시스템이 본 명세서에 기재된 다양한 기법을 이용할 수 있는 환경을 도시한다.
도 5는 명제 논리 식의 만족성을 결정하는 일부로서 명제 논리가 사용되는 다이어그램을 도시한다.
도 6은 명제 논리 식의 만족성을 결정하는 일부로서 명제 논리가 사용되는 다이어그램을 도시한다.
도 7은 명제 논리 식의 만족성을 결정하는 일부로서 명제 논리가 사용되는 다이어그램을 도시한다.
도 8은 명제 논리 식의 만족성을 결정하는 일부로서 명제 논리가 사용되는 다이어그램을 도시한다.
도 9은 명제 논리 식의 만족성을 결정하는 일부로서 명제 논리가 사용되는 다이어그램을 도시한다.
도 10은 명제 논리 식의 만족성을 결정하는 일부로서 명제 논리가 사용되는 다이어그램을 도시한다.
도 11은 명제 논리 식의 만족성을 결정하는 일부로서 명제 논리가 사용되는 다이어그램을 도시한다.
도 12는 둘 이상의 보안 정책의 동치성을 결정하기 위한 프로세스를 도시하는 다이어그램이다.
도 13은 시스템에 적용되는 보안 정책을 분석하는 것과 관련하여 이벤트-구동 플랫폼이 사용되는 환경을 도시한다.
도 14는 시스템에 적용되는 정책을 모니터링하기 위한 프로세스를 도시하는 다이어그램이다.
도 15는 다양한 실시예가 구현될 수 있는 그래픽 사용자 인터페이스를 도시하는 다이어그램이다.
도 16은 다양한 실시예가 구현될 수 있는 환경을 도시한다.
컴퓨팅 자원 서비스 제공자의 맥락에서, 클라이언트는 컴퓨팅 자원 서비스 제공자의 자원을 액세스하기 위한 요청을 만들 수 있다. 클라이언트는 클라이언트와 연관된 보안 정책을 가질 수 있어, 보안 정책이, 하나 이상의 컴퓨팅 자원, 가령, 네트워크를 통해 서비스 제공자로 라우팅될 수 있는 API(application programming interface) 콜을 통해 클라이언트가 요청할 수 있는 컴퓨팅 자원으로의 클라이언트 액세스를 허가할지 여부를 결정하는 것의 일부로서 사용될 수 있다. 일부 경우, 컴퓨팅 자원 서비스 제공자는 사용자에게 보안 정책 또는 보안 정책의 일부분을 생성, 변경, 또는 삭제하기 위한 능력을 제공할 수 있다. 보안 정책 분석기 서비스가 보안 정책들을 비교하고 제1 보안 정책이 제2 보안 정책보다 더 권한 있는지 여부를 결정할 수 있다.
다양한 실시예에서, 클라이언트는 보안 정책을 분석하여 정책의 상대 권한성을 결정하기 위해 정책 분석기 서비스를 요청할 수 있다 - 즉, 정책 분석기는 두 개의 보안 정책이 동치인지 여부, 제1 보안 정책이 제2 보안 정책보다 더 권한 있는지 여부 등을 결정하는 데 사용될 수 있다. 정책 분석기 서비스는 컴퓨팅 자원 서비스, 가령, 본 명세서의 이 밖의 다른 곳에 개시된 것의 서비스일 수 있으며, 네트워크를 통해 서비스 제공자로 라우팅될 수 있는 API 콜을 통해 액세스될 수 있다. 클라이언트 컴퓨팅 디바이스는 컴퓨팅 자원 서비스 제공자의 서비스, 컴퓨팅 자원 등을 액세스하도록 동작 가능할 수 있다. 다양한 예시에서, 클라이언트 컴퓨팅 디바이스는 웹 API 콜을 통해 정책 분석기 서비스와 통신한다.
클라이언트 컴퓨팅 디바이스는, 클라이언트를 대리하여, 정책 분석기 서비스를 이용하여 둘 이상의 보안 정책의 동치성(equivalency)을 결정할 수 있다. 클라이언트는, 클라이언트 컴퓨팅 디바이스를 이용해, 둘 이상의 보안 정책을 포함하는 API 요청을 정책 분석기 서비스에게 한다. 일반화하면, 보안 정책은 하나 이상의 보안 권한(security permission)을 특정하는 정보일 수 있다. 보안 권한은 시스템의 자원 및/또는 주체(principal)와 연관된 액세스 권한을 정의하는 보안 정책의 요소일 수 있다. 예를 들어, 컴퓨팅 자원 서비스 제공자의 컴퓨팅 자원으로의 액세스를 허가 또는 거부하도록 권한이 사용될 수 있다. 일부 경우, 권한은 주체, 컴퓨팅 자원, 동작, 조건, 및 결과를 특정할 수 있다. 일부 실시예에서, 권한은 또한 이들 요소 중 하나 이상을 복수 개, 가령, 사용자의 세트 또는 클래스, 자원의 모음, 복수의 상이한 동작 및/또는 복수의 조건을 더 특정할 수 있다.
보안 정책은 하나 이상의 권한 지시문(permission statement) 및 추가 정보, 가령, 버전 정보 및 정책별 정보를 포함할 수 있다. 보안 정책은 다양한 맥락에서, 가령, 상이한 사용자, 컴퓨팅 자원 상에서 수행되는 상이한 동작, 및 상이한 액세스 조건의 맥락에서, 컴퓨팅 자원으로의 액세스를 허가 또는 거부할지 여부를 결정하도록 사용될 수 있는 조건의 세트를 포함할 수 있다. 인가 모듈 또는 인가 서비스, 가령, 본 명세서의 그 밖의 다른 곳에 기재된 것이 사용되어 요청과 관련하여 보안 정책을 평가하는 것을 적어도 부분적으로 기초로 하여 자원을 액세스하기 위한 요청을 허가 또는 거부할지 여부를 평가할 수 있다. 일부 경우, 정책-별 정보(policy-wide information)가 정책의 시작 부분에서 정책 헤더에 포함되거나, 심지어 정책 문서와 별개로 (그리고 정책 문서와 연관되어) 저장될 수도 있다. 정책은 복수의 정책 지시문(policy statement), 가령, 도 2와 관련하여 이 밖의 다른 곳에 기재되어 있는 것을 포함할 수 있다.
본 명세서 전체에서 기재된 바와 같이, 정책 분석기 서비스가 컴퓨팅 자원 서비스 제공자의 서비스일 수 있고 보안 정책을 평가하기 위해 정책 분석기 서비스로 요청을 제출하는 데 클라이언트가 사용할 수 있는 하나 이상의 API, 가령, 제1 보안 정책이 제2 보안 정책보다 더 권한 있는지 여부 및 둘 이상의 보안 정책이 동치인지 여부를 결정하기 위한 API를 지원할 수 있다. 이러한 맥락에서, 권한성(permissiveness)이 자원으로의 액세스를 기술하는 데 사용된다. 예를 들어, 제1 정책이 제1 컴퓨팅 자원(가령, 자원 "A") 및 제2 자원(가령, 자원 "B")을 액세스하는 데 사용될 수 있고 제2 정책이 컴퓨팅 자원 "B"로의 액세스만을 허가하는 경우, 제1 정책이 액세스를 허가하고 제2 정책이 액세스를 허가하지 않은 컴퓨팅 자원이 존재하고 제2 정책이 액세스를 허가하고 제1 정책이 액세스를 허가하지 않은 자원이 존재하지 않기 때문에, 제1 정책이 제2 정책보다 더 권한 있는 것으로 기술될 수 있다. 두 정책들 모두 동일한 자원을 액세스하고 동일한 자원으로의 액세스를 (묵시적으로든 명시적으로든) 거부하는 데 사용될 수 있는 경우 이들은 동치일 수 있다. 일반적으로 말하면, 두 정책들이 동치가 아닌 경우, 이들은 동치성이 없다고 말할 수 있다. 일부 경우, 제1 정책이 제1 컴퓨팅 자원 "A" 및 제2 컴퓨팅 자원 "B"로의 액세스를 허가하고 제2 정책이 제2 컴퓨팅 자원 "B" 및 제3 컴퓨팅 자원 "C"로의 액세스를 허가하는 경우, 정책들은 비교될 수 없다고 말해질 수 있다.
정책 분석기 서비스에 의해 지원되는 API 콜이 두 개의 보안 정책을 수용하고 이들이 동치인지 여부, 하나의 정책이 다른 하나의 정책보다 더 권한 있는지 여부, 정책들이 비교될 수 없는지 여부 등을 결정할 수 있다. 두 번째 예시로서, API 콜이 둘 이상의 보안 정책을 수용할 수 있으며, API 요청의 일부로서 제공된 모든 보안 정책이 동치인지 여부를 결정할 수 있다. 세 번째 예시로, API 콜은 단일 보안 정책을 수용하고 상기 보안 정책을 하나 이상의 모범 실시 정책(best practices policy)에 비교할 수 있다. 모범 실시 정책은 허용되지 않아야 할 권한의 세트로 결정된 보안 정책의 세트일 수 있다. 예를 들어, 제1 모범 실시 정책은 특정 데이터 컨테이너가 모든 사용자에 의해 쓰기 가능함(world writeable)(가령, 임의의 주체, 심지어 게스트 사용자 또는 익명 사용자가 컨테이너에 쓸 수 있음)이어서는 안 된다는 것일 수 있다. API는 수신된 정책이 모범 실시 정책 각각보다 더 권한 있지 않음을 결정함으로써 모범 실시 정책이 따라진다고 검증할 수 있다. 모범 실시 정책의 예시로는 자원이 모든 사용자에 의해 쓰기 가능함(world writeable), 모든 사용자에 의해 읽기 가능함(world readable), 모든 사용자에 의해 액세스 가능함(world accessible) 등이 있을 수 있다. 일부 실시예에서, 모범 실시 정책의 집합은 API 콜, 요청된 컴퓨팅 자원의 유형, 및 그 밖의 다른 맥락 정보를 기초로 결정될 수 있다.
정책 분석기 서비스가 복수의 구성요소 및/또는 모듈, 가령, 정책 파서(policy parser), 명제 논리 번역기(propositional logic translator), 및 만족성 엔진(satisfiability engine)을 포함할 수 있다. 정책 파서는 보안 정책을 수신하고 상기 정책으로부터 하나 이상의 권한 지시문을 획득하는 구성요소 또는 모듈일 수 있다. 예를 들어, 클라이언트가 제1 정책 "A" 및 제2 정책 "B"를 제공하는 경우, 정책 파서는 정책 "A"로부터 제1 권한 지시문 세트를 획득하고 정책 "B"로부터 제2 권한 지시문 세트를 획득할 수 있다. 권한 지시문은 컴퓨팅 자원으로의 액세스의 허가 또는 거부와 각각 연관될 수 있다. 명제 논리 번역기가 명제 논리를 이용해 권한 지시문을 하나 이상의 제약으로 변환될 수 있다. 제약은 다양한 포맷으로 그리고 다양한 표준, 가령, SMT-LIB 표준 포맷, CVC 언어, 및 DIMACS(Center for Discrete Mathematics and Theoretical Computer Science) 포맷에 따라 기재될 수 있다. 명제 논리 번역기에 의해 생성된 명제 논리 식은 대응하는 권한 지시문이 유효해지기 위해 만족되어야 하는 제약의 세트를 나타낼 수 있다.
만족성 엔진은 제1 명제 논리 표현과 제2 명제 논리 표현을 비교하여 하나의 명제 논리가 다른 하나의 명제 논리보다 더 권한 있는지 여부를 결정하도록 사용될 수 있다. 만족성 엔진은 둘 이상의 명제 논리 표현의 권한성을 분석하도록 사용될 수 있다. 만족성 엔진은 제1 명제 논리 표현이 제2 명제 논리 표현보다 더 권한 있는지 여부를 결정하는 것의 일부로서 추가 명제 논리 제약을 생성할 수 있다. 제1 명제 논리 표현 및 제2 명제 논리 표현의 제약에 추가로, 제약이 생성되고 평가될 수 있다. 제약은 클라이언트가 요청한 바를 적어도 부분적으로 기초로 하여 생성될 수 있다. 예를 들어, 만족성 엔진은 콜러로부터의 요청에 응답하여 제1 정책이 자원으로의 액세스를 허가하고 제2 정책이 자원으로의 액세스를 거부하거나 자원에 대해 중립인 환경 하에서만 만족되는 제약을 생성하여, 제1 명제 논리 표현이 제2 명제 논리 표현보다 더 권한 있는지 여부를 결정할 수 있다. 만족성 엔진은 명제 논리 제약(가령, 제1 및 제2 명제 논리 표현으로부터 획득된 것 및 만족성 엔진에 의해 생성된 것)을 검증하는 데 사용될 수 있다. 일부 실시예에서, 명령어가 사용되어 제약 세트가 만족 가능(satisfiable)한지 여부를 결정할 수 있다. 모든 표명된 식을 참으로 만드는 해석이 존재하는 경우 공식은 만족 가능할 수 있다. 즉, 각각의 제약이 일부 조건 하에서 만족되는 경우 모델이 만족 가능하다. 일부 실시예에서, 만족성 엔진은 적어도 부분적으로 SMT 풀이법, 가령, https://github.com/Z3Prover/z3에 설명된 Z3을 이용해 구현될 수 있다.
본 명세서에서, 다양한 기법이 기재된다. 설명 목적으로, 기법을 구현하는 가능한 방식을 완전한 이해를 제공하기 위해 특정 구성 및 상세사항이 제공된다. 그러나 이하에 기재된 기법은 상이한 구성에서 특정 상세사항 없이 실시될 수 있음이 자명할 것이다. 덧붙여, 기재되는 기법을 모호하게 하지 않기 위해 잘 알려진 특징이 생략되거나 단순화될 수 있다.
도 1은 본 발명의 다양한 실시예가 실시될 수 있는 환경(100)의 예시이다. 하나의 실시예에서, 환경(100)은, 클라이언트 컴퓨팅 디바이스(102), 보안 정책(104), 정책 분석기 서비스(106), 정책 파서(108), 명제 논리 번역기(110), 및 만족성 엔진(112)을 포함한다. 환경(100)은 클라이언트가 정책 분석기 서비스(106)를 요청하여 보안 정책(104)을 분석함으로써 정책의 상대적 권한성을 결정할 수 있는 예시를 도시한다 - 즉, 정책 분석기는 보안 정책(104)이 동치인지 여부, 재1 보안 정책(가령, 도 1에 도시된 보안 정책 A)이 제2 보안 정책(가령, 도 1에 도시된 보안 정책 B)보다 더 권한 있는지 여부 등을 결정하도록 사용될 수 있다.
클라이언트 컴퓨팅 디바이스(102)는 컴퓨팅 자원으로의 액세스를 제공하는 서비스의 클라이언트일 수 있다. 일부 실시예에서, 네트워크를 통해 서비스 제공자로 라우팅될 수 있는 API(application programming interface) 콜을 통해 컴퓨팅 자원이 액세스된다. 클라이언트 컴퓨팅 디바이스(102)는 컴퓨팅 환경의 서비스, 컴퓨팅 자원 등을 액세스하도록 동작하는 개체일 수 있다. 일부 실시예에서, 클라이언트 컴퓨팅 디바이스(102)는 웹 API 콜을 통해 정책 분석기 서비스(106)와 통신할 수 있다.
일부 실시예에서, 클라이언트 컴퓨팅 디바이스(102)는 정책 분석기 서비스(106)를 이용해 둘 이상의 보안 정책(104)의 동치성을 결정할 수 있다. 클라이언트는 둘 이상의 보안 정책(104)을 포함하는 API 요청을 정책 분석기 서비스에게 한다. 보안 정책은 하나 이상의 보안 권한(security permission)을 특정하는 정보(가령, 파일로 인코딩됨)일 수 있다. 보안 권한은 시스템의 자원 및/또는 주체(principal)와 연관된 액세스 권한을 정의하는 보안 정책의 요소일 수 있다. 예를 들어, 컴퓨팅 자원 서비스 제공자의 컴퓨팅 자원으로의 액세스를 허가 또는 거부하도록 권한이 사용될 수 있다. 정책은 언어 독립적 포맷, 가령, JSON(JavaScript Object Notation)으로 표현될 수 있다. 본 명세서에 기재된 예시가 구현될 수 있는 다양한 실시예의 예시로서 JSON 포맷 또는 JSON과 유사한 포맷을 가질 수 있다. 물론, JSON 및 JSON-유사 포맷과 관련하여 기재된 방식으로 사용될 수 있는 그 밖의 다른 다양한 포맷이 또한 고려되며 본 명세서의 범위 내에 있다. 보안 정책은 하나 이상의 권한 지시문(permission statement) 및 추가 정보, 가령, 버전 정보 및 정책별 정보를 포함할 수 있다. 일부 경우, 정책-별 정보(policy-wide information)가 정책의 시작 부분에서 정책 헤더에 포함되거나, 심지어 정책 문서와 별개로 (그리고 정책 문서와 연관되어) 저장될 수도 있다. 정책은 복수의 정책 지시문(policy statement), 가령, 도 2와 관련하여 이 밖의 다른 곳에 기재되어 있는 것을 포함할 수 있다.
정책 분석기 서비스(106)는 컴퓨팅 자원 서비스 제공자(가령, 도 4와 관련하여 본 명세서에 기재된 컴퓨팅 자원 서비스 제공자)의 서비스일 수 있다. 정책 분석기 서비스(106)는 하드웨어, 소프트웨어, 및 이의 조합을 이용해 구현될 수 있다. 일부 경우, 정책 분석기 서비스(106)는 클라이언트(가령, 클라이언트 컴퓨팅 디바이스(102))가 정책 분석기 서비스(106)로 요청을 제공하는 데 사용할 수 있는 하나 이상의 API를 지원한다. 정책 분석기 서비스(106)는 보안 정책(가령, 도 1과 관련하여 기재된 보안 정책(104))을 평가하는 데 사용되는 하나 이상의 API, 가령, 제1 보안 정책이 제2 보안 정책보다 더 권한 있는지 여부 및 둘 이상의 보안 정책이 동치인지 여부를 결정하기 위한 API를 지원할 수 있다.
일부 실시예에서, 권한성이 자원으로의 액세스의 허가를 기술하는 데 사용된다. 예를 들어, 제1 정책이 제1 컴퓨팅 자원(가령, 자원 "A") 및 제2 자원(가령, 자원 "B")으로의 액세스를 허가하고 제2 정책이 컴퓨팅 자원 "B"로의 액세스만을 허가하는 경우, 제1 정책이 액세스를 허가하고 제2 정책이 액세스를 허가하지 않은 컴퓨팅 자원이 존재하고 제2 정책이 액세스를 허가하고 제1 정책이 액세스를 허가하지 않은 자원이 존재하지 않기 때문에, 제1 정책이 제2 정책보다 더 권한 있는 것으로 기술될 수 있다. 두 정책들 모두 동일한 자원으로의 액세스를 허가하고 동일한 자원으로의 액세스를 (묵시적으로든 명시적으로든) 거부하는 경우 이들은 동치일 수 있다. 일부 경우, 동치성은 두 개의 정책이 동일한 자원으로의 액세스를 명시적으로 허가하고 동일한 자원으로의 액세스를 명시적으로 거부하는 것을 지칭할 수 있다 - 즉, 일부 실시예에서, 제1 정책이 컴퓨팅 자원으로의 액세스를 명시적으로 거부하고 제2 정책이 컴퓨팅 자원으로의 액세스를 묵시적으로 거부(가령, 거부가 디폴트(deny-by-default)인 맥락에서 액세스를 적극적으로 허가하지 않음으로써)하는 경우, 동치성이 없을 수 있다. 일반적으로 말하면, 두 정책들이 동치가 아닌 경우, 이들은 동치성이 없다고 말할 수 있다. 일부 경우, 제1 정책이 제1 컴퓨팅 자원 "A" 및 제2 컴퓨팅 자원 "B"로의 액세스를 허가하고 제2 정책이 제2 컴퓨팅 자원 "B" 및 제3 컴퓨팅 자원 "C"로의 액세스를 허가하는 경우, 정책들은 비교될 수 없다고 말해질 수 있다. 달리 특정되지 않는 한, 본 명세서에 기재된 예시가 컴퓨팅 자원으로의 명시적 액세스 허가가 없다면 컴퓨팅 자원으로의 액세스가 거부되는 거부가 디폴트인 보안 모델을 구현할 수 있다. 이들 설명의 맥락에서, 인가 모듈 또는 인가 서비스에 의해 자원을 액세스하기 위한 요청이 상기 요청에 적용 가능한 보안 정책을 이용함으로써 평가될 수 있는 경우, 컴퓨팅 자원 서비스 제공자의 맥락에서 자원으로의 액세스를 허가 또는 거부하도록 보안 정책이 사용될 수 있다. 적용 가능한 보안 정책은 요청자와 연관된 보안 정책, 요청자가 제공하는 토큰과 연관된 보안 정책 등일 수 있다. 이러한 기법은 도 4와 관련하여 본 명세서에 기재된 컴퓨팅 자원 서비스 제공자에 따라 수행될 수 있다.
정책 분석기 서비스(106)는 하나 이상의 정책의 권한성을 결정하도록 사용될 수 있다. 예를 들어, 정책 분석기 서비스(106)에 의해 지원되는 API 콜이 두 개의 보안 정책을 수용하고 이들이 동치인지 여부, 하나의 정책이 다른 하나의 정책보다 더 권한 있는지 여부, 정책들이 비교될 수 없는지 여부 등을 결정할 수 있다. 두 번째 예시로서, API 콜이 둘 이상의 보안 정책을 수용할 수 있으며, API 요청의 일부로서 제공된 모든 보안 정책이 동치인지 여부를 결정할 수 있다. 세 번째 예시로, API 콜은 단일 보안 정책을 수용하고 상기 보안 정책을 하나 이상의 모범 실시 정책(best practices policy)에 비교할 수 있다. 모범 실시 정책은 허용되지 않아야 할 권한의 세트로 결정된 보안 정책의 세트일 수 있다. 예를 들어, 제1 모범 실시 정책은 특정 데이터 컨테이너가 모든 사용자에 의해 쓰기 가능함(가령, 임의의 주체, 심지어 게스트 사용자 또는 익명 사용자가 컨테이너에 쓸 수 있음)이어서는 안 된다는 것일 수 있다. API는 수신된 정책이 모범 실시 정책 각각보다 더 권한 있지 않음을 결정함으로써 모범 실시 정책이 따라진다고 검증할 수 있다. 모범 실시 정책의 예시로는 자원이 모든 사용자에 의해 쓰기 가능함(world writeable), 모든 사용자에 의해 읽기 가능함(world readable), 모든 사용자에 의해 액세스 가능함(world accessible) 등이 있을 수 있다. 일부 실시예에서, 모범 실시 정책의 집합은 API 콜, 요청된 컴퓨팅 자원의 유형, 및 그 밖의 다른 맥락 정보를 기초로 결정될 수 있다.
정책 분석기 서비스(106)가 복수의 구성요소 및/또는 모듈, 가령, 정책 퍼서(108), 명제 논리 번역기(110), 및 만족성 엔진(112)을 포함할 수 있다. 일부 실시예에서, 다양한 구성요소 및/또는 모듈의 기능이 정책 분석기 서비스(106)가 함께 이용할 수 있는 그 밖의 다른 서비스로 위임될 수 있다. 예를 들어, 정책 분석기 서비스(106)는, 일부 실시예에서, 정책 파싱과 관련된 기능을 수행하기 위한 상이한 서비스를 이용할 수 있다.
정책 파서(108)는 보안 정책(가령, API 콜과 관련하여 클라이언트로부터 수신되거나 정책 관리 서비스를 통해 획득된 보안 정책)을 수신하고 정책으로부터 하나 이상의 권한 지시문을 획득하는 구성요소 또는 모듈일 수 있다. 예를 들어, 클라이언트가 제1 정책 "A" 및 제2 정책 "B"를 정책 분석기 서비스(106)로 제공하는 경우, 정책 분석기 서비스(106)는 정책 파서(108)를 이용해 정책 "A"로부터 제1 권한 지시문 세트를 획득하고 정책 "B"로부터 제2 권한 지시문 세트를 획득할 수 있다. 권한 지시문은 컴퓨팅 자원으로의 액세스의 허가 또는 거부와 각각 연관될 수 있다. 권한 지시문은 특정 포맷, 가령, JSON, Aspen 등을 가질 수 있다.
본 명세서에 기재될 때, 명제 논리는 참 또는 거짓으로 평가될 수 있는 명제의 평가와 관련되는 기호 논리를 지칭할 수 있다. 명제 논리는 명제 식들의 논리적 동치성을 평가하는 데 사용될 수 있다. 명제 식. 명제 식은 명제 변수 및 상기 명제 변수를 연결하는 논리 접속사를 포함하는 구문론에 따르는 지시문일 수 있다. 논리 접속사 또는 논리 연산자의 예시로는 다음이 있을 수 있다: "AND" (논리합), "OR" (논리곱), "NOT" (부정), 및 "IF AND ONLY IF" (이중조건) 접속사. 본 명세서에서 명제 논리는 또한 "명제 표현" 또는 "명제 논리 표현"으로 기재될 수 있다. 일부 실시예에서, 1차 논리학이 명제 논리를 대신하여 사용될 수 있다. 1차 논리학은 명제 논리에 추가로 정량자를 이용하는 형식 체계를 지칭할 수 있다. 정량자의 예시로는 "FOR ALL" (전칭 정량자) 및 "THERE EXISTS" (존재 정량자)가 있다. 명시적으로 언급되지 않는 한, 명제 논리와 관련하여 기재된 본 명세서의 실시예는 1차 논리학을 이용해 구현될 수도 있다 - 예를 들어, 일부 실시예에서, 1차 논리 번역기(도 1에 도시되지 않음)가 명제 논리 번역기(110)를 대신하여 사용되어, 권한 지시문을 1차 논리 표현으로 번역하고 만족성 엔진이 하나 이상의 1차 논리 표현을 평가하여 표현들이 동치인지 여부를 결정할 수 있다.
권한 지시문(가령, 정책 파서(108)에 의해 획득된 것)이 명제 논리 번역기(110)로 제공될 수 있다. 명제 논리 번역기(110)는 권한 지시문(가령, JSON 포맷을 가짐)을 수신하고 상기 권한 지시문을 명제 논리를 이용해 기술되는 하나 이상의 제약으로 변환할 수 있다. 제약은 다양한 포맷으로 그리고 다양한 표준, 가령, SMT-LIB 표준 포맷, CVC 언어, 및 DIMACS(Center for Discrete Mathematics and Theoretical Computer Science) 포맷에 따라 기재될 수 있다.
예를 들어, 권한 지시문(가령, 보안 정책의 일부로서 포함되는 권한 지시문)이 다음과 같이 기술될 수 있다:
"Statement": [
{
"Effect": "Allow",
"Resource": *, "Principal": *,
"Action": "put*"
} ]
대응하는 명제 논리 제약이 예시적 정책 지시문으로부터 생성될 수 있으며 다음과 같이 기술될 수 있다:
(assert policy.statement.resource)
(assert policy.statement.principal)
(assert (= policy.statement.action (or (and (= "storage" actionNamespace) (str.prefixof "put" actionName)))))
(assert (= policy.statement.effect.allows (and policy.statement.action policy.statement.resource policy.statement.principal)))
(assert (not policy.statement.effect.denies))
(assert (= policy.allows (and (not policy.denies) policy.statement.effect.allows)))
(assert (= policy.denies policy.statement.effect.denies))
명제 논리 번역기(110)에 의해 생성된 명제 논리 표현은 대응하는 권한 지시문이 유효해 지기 위해 만족되어야 하는 제약의 세트를 나타낼 수 있다. 앞서 기술된 제약은 API로의 액세스를 허용하는 선행하는 권한 지시문이 "put"으로 시작하는 경우(가령, "put-object") 반드시 만족되는 제약의 세트에 대응한다.
일부 실시예에서, 클라이언트 컴퓨팅 디바이스(102)(가령, 클라이언트 종단 사용자를 대리함)는 정책 분석기 서비스(106)로, 정책 분석기 서비스(106)가 제1 보안 정책(가령, 도 1에 도시된 "보안 정책 A")이 제2 보안 정책(가령, "보안 정책 B")보다 더 권한 있는지 여부를 결정하라고 요청하는 웹 API 요청을 전송한다. 보안 정책(104)은 웹 API 요청 내에 인코딩되거나 보안 정책을 획득하는 데 사용 가능한 정보(가령, 정책이 획득될 수 있는 위치를 가리키는 포인터 또는 URI)가 제공될 수 있다. 정책 분석기 서비스(106)는 보안 정책(104)(가령, 직접 요청으로부터의 것 또는 요청에 인코딩된 URI를 이용해 정책 관리 서비스를 통한 것)을 획득하고 정책 파서(108)를 이용해 제1 정책으로부터 제1 권한 지시문 세트를 획득하고 제2 정책으로부터 제2 권한 상태 세트를 획득할 수 있다. 정책 지시문이 명제 논리 번역기(110)로 제공되어 대응하는 정책 지시문이 유효해지기 위해 만족되어야 할 제약에 대응하는 명제 논리 표현의 세트를 획득할 수 있다. 제1 명제 논리 표현이 제1 정책 지시문 세트로부터 생성되고 제2 명제 논리 표현이 제2 정책 지시문 세트로부터 생성될 수 있다. 명제 논리 표현이 SMT-LIB 표준 언어, 가령, STM-LIB 2.0 표준에 따르는 언어로 표현될 수 있다. 만족성 엔진(112)은 제1 명제 논리 표현과 제2 명제 논리 표현을 비교하여 하나의 명제 논리가 다른 하나의 명제 논리보다 더 권한 있는지 여부를 결정하도록 사용될 수 있다.
만족성 엔진(112)은 둘 이상의 명제 논리 표현의 권한성을 분석하도록 사용될 수 있다. 만족성 엔진(112)은 하드웨어, 소프트웨어, 또는 이들의 조합일 수 있다. 일부 실시예에서, 만족성 엔진(112)은 클라이언트(가령, 내부 클라이언트, 가령, 명제 논리 번역기(110), 정책 분석기 서비스(106) 등)가 제1 명제 논리 표현이 제2 명제 논리 표현보다 더 권한 있는지 여부를 결정할 수 있게 한다. 만족성 엔진(112)은 제1 명제 논리 표현이 제2 명제 논리 표현보다 더 권한 있는지 여부를 결정하는 것의 일부로서 추가 명제 논리 제약을 생성할 수 있다.
일부 실시예에서, 만족성 엔진(112)은 다음의 제약을 이용해 제1 정책(가령, 정책 A)이 제2 정책(가령, 정책 B)보다 더 권한있는지 여부를 결정할 수 있다:
(assert (or policyB.neutral policyB.denies))
(assert policyA.allows)
제1 명제 논리 표현 및 제2 명제 논리 표현의 제약에 추가로, 도 1의 설명과 관련하여 앞서 기재된 방식으로 인코딩될 수 있는 제약이 생성되고 평가될 수 있다. 제약은 클라이언트가 요청한 바를 적어도 부분적으로 기초로 하여 생성될 수 있다. 예를 들어, 만족성 엔진(112)은 콜러(가령, 정책 분석기 서비스(106))로부터의 요청에 응답하여 제1 정책이 자원으로의 액세스를 허가하고 제2 정책이 자원으로의 액세스를 거부하거나 자원에 대해 중립인 환경 하에서만 만족되는 제약을 생성하여, 제1 명제 논리 표현이 제2 명제 논리 표현보다 더 권한 있는지 여부를 결정할 수 있다. 이러한 실시예는 중립 맥락(즉, 어떠한 권한도 특정 자원으로의 액세스를 명시적으로 허가 또는 거부하지 않는 맥락)에서 거부가 디폴트인 맥락으로 구현될 수 있다. 허용이 디폴트(allow-by-default)인 맥락에서, 만족성 엔진(112)은 제1 정책이 자원으로의 액세스를 허가하거나 자원에 대해 중립이고 제2 정책이 자원으로의 액세스를 거부하지 않는 경우 만족되는 상이한 제약을 생성할 수 있다.
만족성 엔진(112)은 명제 논리 제약(가령, 제1 및 제2 명제 논리 표현으로부터 획득된 것 및 만족성 엔진에 의해 생성된 것)이 동치인지 여부를 검증하는 데 사용될 수 있다. 일부 실시예에서, 명령어가 사용되어 제약 세트가 만족 가능(satisfiable)한지 여부를 결정할 수 있다. 모든 표명된 식을 참으로 만드는 해석이 존재하는 경우 공식은 만족 가능할 수 있다. 즉, 각각의 제약이 일부 조건 하에서 만족되는 경우 모델이 만족 가능하다. 일부 실시예에서, 만족성 엔진은 적어도 부분적으로 만족성 모듈로 이론(SMT) 제약 풀이법을 이용해 구현되어, 식이 만족 가능한지 여부를 결정할 수 있다. SMT-기반 제약 풀이법의 예시가 Z3이다. 그 밖의 다른 유형의 풀이법이 본 명세서에 기재된 기법에 따라 만족성 엔진을 구현하는 것의 일부로서 이용될 수 있으며, 비제한적 예를 들면, SAT(satisfiability) 풀이법 및 BDD(binary decision diagram) 풀이법이 있다. 만족성 엔진(112)은 식이 만족 가능한지 여부를 가리키고, 더 나아가서, 둘 이상의 정책이 동치인지 여부를 가리키는 동치성 결과를 생성할 수 있다. 일부 실시예에서, 동치성 결과는 또 다른 컴퓨팅 개체, 가령, 요청을 발행한 클라이언트 컴퓨팅 디바이스(102), 시스템 관리자, 및 그 밖의 다른 컴퓨팅 개체에 의해 이용 가능해진다.
도 2는 보안 권한 및 이에 대응하는 명제 논리 표현식이 나타난 다이어그램(200)의 예시를 보여준다. 도 2에 도시된 권한(202)이 보안 정책, 가령, 도 1과 관련하여 본 명세서에 기재된 보안 정책에서 특정된 복수의 보안 권한 중 하나일 수 있다.
다이어그램(200)은 컴퓨팅 자원 정책과 연관될 수 있는 권한(202)의 예시를 도시한다. 일부 실시예에서, 권한(202)은 주체(204), 자원(206), 동작(208), 조건(210) 및 결과(212)를 특정할 수 있다. 일부 실시예에서, 권한(202)은 또한 이들 요소 중 하나 이상을 복수 개, 가령, 사용자의 세트 또는 클래스, 자원의 모음, 복수의 상이한 동작 및/또는 복수의 조건을 더 특정할 수 있다. 일부 실시예에서, 권한(202)은 권한(202)이 상이한 사용자 및 이들의 연관된 자원에 적용 될 수 있도록 권한(202)이 수정될 수 있음을 나타내기 위해 사용될 수 있는 하나 이상의 와일드카드 또는 그 밖의 다른 방식으로 수정 가능한 문자(character)를 특정할 수 있다. 와일드카드는 다양한 포맷으로 나타내질 수 있다 - 예를 들어, 별표(asterisk)가 임의의 개수의 문자를 나타낼 수 있고 물음표가 임의의 단일 문자를 나타낼 수 있다. 일부 실시예에서, 정책은 언어 독립적 포맷, 가령, JSON(JavaScript Object Notation)으로 표현될 수 있다. 본 명세서에 기재된 예시가 구현될 수 있는 다양한 실시예의 예시로서 JSON 포맷 또는 JSON과 유사한 포맷을 가질 수 있다. 물론, JSON 및 JSON-유사 포맷과 관련하여 기재된 방식으로 사용될 수 있는 그 밖의 다른 다양한 포맷이 또한 고려되며 본 명세서의 범위 내에 있다.
주체(204)는 사용자, 그룹, 기관, 역할, 또는 모음 및/또는 이들 또는 그 밖의 다른 이러한 개체의 조합일 수 있다. 주체(204)는 자원과 연관된 동작이 수행될 수 있게 하는 API 콜을 제출할 수 있는 임의의 개체 및/또는 자원과 연관된 권한이 허가될 수 있는 임의의 개체일 수 있다. 예를 들어, 권한(202)은 다음 방식으로 특정된 주체(204) 요소를 가질 수 있다:
"Principal": "rn:ws:iam::ducksfan8"
일부 실시예에서, 주체(204)는 주체(204)를 고유하게 식별하는 자원 이름으로 식별된다. 주체(204)는 주체와 관련된 추가 정보를 포함하는 하나 이상의 이름 공간을 포함할 수 있다. 예를 들어, "rn"은 자원 이름 접두사를 지칭하고 후속 정보를 리소스 이름의 일부로 식별하며, "ws"는 자원이 있는 파티션 이름 공간을 지칭할 수 있으며, "iam"은 컴퓨팅 자원 서비스 제공자의 서비스를 식별하는 서비스 이름 공간을 지칭할 수 있고(예를 들어, 컴퓨팅 자원 서비스 제공자는 신원 및 액세스 관리와 관련된 서비스를 제공 할 수 있음); 이름 공간은 추가로 생략될 수 있다(상기 예시에서 "iam"과 "ducksfan8"사이에 두 개의 세미콜론이 있음) - 일부 포맷 및/또는 일부 자원에서, 영역 이름 공간이 옵션일 수 있으며, "ducksfan8"은 계정, 가령, 권한(202)에서 특정된 자원(206)을 소유하는 계정에 대한 식별자를 지칭할 수 있다.
자원(206)은 컴퓨팅 자원 서비스 제공자의 컴퓨팅 자원을 지칭할 수 있다. 컴퓨팅 자원 서비스 제공자의 컴퓨팅 자원은 다음을 포함할 수 있다: 계산 자원(가령, 가상 머신 인스턴스), 저장 자원(가령, 확장형 스토리지, 블록 스토리지, 및 관리 파일 저장 시스템), 데이터베이스 시스템(가령, 관리 관계 데이터베이스 시스템), 이주 서비스(가령, 하나의 물리 데이터 센터에서 또 다른 센터로 데이터의 전송을 단순화하기 위한 애플리케이션, 서비스, 및 하드웨어), 네트워크 및 콘텐츠 전달, 개발자 툴, 관리 툴, 보안, 신원 및 액세스 관리 서비스, 분석 서비스, 인공 지능 서비스 등. 컴퓨팅 자원(206)은 계층구조로 구성될 수 있으며, 구조, 가령, 폴더, 디렉토리, 버킷 등을 이용해 컴퓨팅 자원의 세트를 그룹으로 조직할 수 있다. 일부 경우, 정책 및/또는 권한이 버킷에 직접 적용될 수 있으며 환경으로의 계정-교차 액세스를 허가할 수 있다. 예를 들어, 권한(202)은 다음 방식으로 특정된 자원(206) 요소를 가질 수 있다:
"Resource": "rn:ws:storage:::bucket/MM4_Heisman.png"
일부 실시예에서, 자원(206)은 자원(206)을 고유하게 식별하는 자원 이름에 의해 식별된다. 일부 경우, 자원(206)은 주체(204) 또는 권한의 그 밖의 다른 요소와 동일한 명명 규칙을 공유할 수 있다. 그러나, 반드시 그럴 필요는 없으며, 권한(202)의 각각의 개별 요소가 그 밖의 다른 요소에 독립적인 명명 규칙, 이름 공간, 포맷 등을 이용할 수 있다. 앞서 제공된 예시적 자원에서, "rn"은 자원 이름 접두사를 지칭할 수 있으며 후속 정보를 자원 이름의 일부로서 식별하고, "ws"는 자원이 위치하는 파티션 이름 공간을 지칭할 수 있고, "storage"는 컴퓨팅 자원 서비스 제공자의 서비스를 식별하는 서비스 이름 공간을 지칭할 수 있고(가령, 컴퓨팅 자원 서비스 제공자가 객체-기반 스토리지와 관련된 서비스를 제공할 수 있음), 본 명세서에 언급된 바와 같이, 일부 경우에서 이름 공간이 생략될 수 있는데 - 가령, 영역 이름 공간 및/또는 계정 이름 공간이 생략될 수 있으며, 자원의 유형의 지시자를 더 포함할 수 있는 자원. 상기의 예시에서, 자원은 PNG(Portable Network Graphics) 포맷의 이미지를 가리킬 수 있고 버킷에 저장된다.
동작(208)은 권한에 의해 허용 또는 거부될 특정 동작 또는 동작들일 수 있다. 상이한 유형의 서비스(가령, 상이한 서비스 이름 공간을 갖는 서비스)가 상이한 동작을 지원할 수 있다. 예를 들어, 신원 및 계정 관리 서비스가 패스워드를 변경하기 위한 동작을 지원할 수 있고, 저장 서비스가 객체를 삭제하기 위한 동작을 지원할 수 있다. 동작이 자원과 연관되어 수행될 수 있고 예를 들어 API 콜, 라이브러리 콜, 프로그램, 프로세스, 일련의 단계, 워크플로우, 또는 그 밖의 다른 이러한 동작에 의해 식별될 수 있다. 예를 들어, 권한(202)은 다음 방식으로 특정된 동작(208) 요소를 가질 수 있다:
"Action": "storage:GetObject"
이 예시에서, (권한에서 특정된 결과(212)를 기초로 결정된) 허용 또는 거부되는 동작은 객체를 획득 및/또는 저장 서비스의 객체로의 액세스와 관련하여 사용될 수 있는, GetObject에 대한 동작(가령, API 콜)을 지원하는 저장 서비스에 대응한다. 본 명세서에 기재된 바와 같이, 다양한 이름 공간이 동작을 특정하는 것과 관련하여 사용될 수 있다. 와일드카드는 복수의 동작을 특정하는 데 사용될 수 있다. 예를 들어, "Action": "storage:*"로 기재된 동작 요소가 저장 서비스에 의해 지원되는 모든 API를 지칭할 수 있다. 두 번째 예시로서, "Action": "iam:*AccessKey*"로 기재된 동작 요소가 서비스의 액세스 키와 관련하여 신원 및 액세스 관리 서비스에 의해 지원되는 동작을 지칭할 수 있다 - 예시는 액세스 키 생성(가령, "CreateAccessKey"이 존재할 수 있음), 액세스 키 삭제(가령, "DeleteAccessKey"), 액세스 키 리스팅(가령, "ListAccessKeys"), 및 기존 액세스 키 업데이트(가령, "UpdateAccessKey")와 관련된 동작을 포함할 수 있다.
조건(210) 요소가 정책이 유효할 때를 특정하는 하나 이상의 조건일 수 있다. 일부 실시예에서, 조건 요소가 선택사항이며 일부 권한에서 생략될 수 있다. 조건은 정책이 유효한지(즉, 표현이 참(TRUE)으로 평가되는지) 또는 유효하지 않은지(즉, 표현이 거짓(FALSE)으로 평가되는지)를 결정하는 데 사용될 수 있는 부울 표현(Boolean expression)으로 기술될 수 있다. 유효하지 않은 정책은 인가 모듈(가령, 이에 대해 본 명세서에서 기재된 것)에 의해 시행 불능되거나 무시될 수 있다. 일부 실시예에서, 권한의 조건은 동작(208) 요소에서 특정된 하나 이상의 API에 대응하는 웹 API 요청의 일부로서 제공된 값에 대해 평가될 수 있다. 예를 들어, 권한(202)은 다음 방식으로 특정된 조건(210) 요소를 가질 수 있다:
"Condition": { "DateLessThan": { "ws:CurrentTime": "2014-12-13" } }
이 예시에서, 조건이 충족되는지 여부를 평가하는 데 사용될 수 있는 조건 연산자 "DateLessThan"를 이용해 요청의 조건, "ws:CurrentTime" 값이 리터럴 값 "2104-12-13"에 비교된다. 이 예시에서, 현재 시각(가령, 서비스 제공자에 의해 요청이 수신된 시각)이 2014년12월13일이라는 공급 날짜보다 적을 때 조건은 참일 수 있다. 키 값(이 예시의 경우, 현재 시각)이 리터럴 값뿐 아니라 정책 변수에도 비교될 수 있다. 스트링 조건, 숫자 조건, 부울 조건, 2진 조건(가령, 2진 포맷의 테스팅 값), IP 어드레스 조건(가령, 특정 IP 어드레스 또는 IP 어드레스 범위에 대한 테스팅 값) 등을 비교하기 위해 사용될 수 있는 그 밖의 다른 다양한 유형의 조건 연산자가 존재할 수 있다. 또한 조건은 정량자를 포함할 수 있다. 예를 들어, 스트링 조건은 두 개의 스트링이 동일한지를 비교하는 연산자, 가령, "StringEquals"를 포함할 수 있고, 유사한 연산자가 정량자를 포함하여, 키 값이 평가 맥락에서 존재할 때 "StringEqualsIfExists"가 두 개의 문자열을 비교하는 데 사용될 수 있다. 정량자는 와일드카드와 함께 사용될 수 있으며, 여기서 와일드카드 표현에 매칭되는 복수의 자원이 상이한 맥락 키를 지원할 수 있다. 이러한 예시는 도 5-11과 관련하여 이하에서 기재된다. 일부 실시예에서, 가령, 조건이 정량자를 포함하는 실시예에서, 명제 논리가 아니라 1차 논리학이 사용될 수 있다.
결과(212)는 권한(202)이 자원(206) 요소 내 권한(202)에서 특정된 컴퓨팅 자원으로의 액세스를 허가 또는 거부하도록 사용되는지 여부를 지칭할 수 있다. 결과(212)는 자원으로의 액세스를 허가하는 ALLOW 결과 및 자원으로의 액세스를 거부하는 DENY 결과일 수 있다. 일부 실시예에서, 컴퓨팅 자원 서비스 제공자의 컴퓨팅 자원으로의 액세스가 디폴트로 거부되며 ALLOW 결과를 적극적으로 포함하는 권한이 요구된다. 예를 들어, 권한(202)은 다음 방식으로 특정된 결과(212) 요소를 가질 수 있다:
"Effect": "ALLOW"
따라서, 특정 조건이 참일 때(가령, API가 2016년12월13일 이전에 이뤄질 때) 저장 서비스 API(가령, "storage:GetObject")를 호출하고 특정 이미지(가령, "rn:ws:storage:::bucket/MM4_Heisman.png")를 획득하기 위해 특정 주체(가령, "rn:ws:iam::ducksfan8") 액세스를 허가하는 권한 지시문이 다음과 같은 방식으로 특정될 수 있다:
"Statement": [
{
"Effect": "ALLOW",
"Principal": "rn:ws:iam::ducksfan8",
"Action": "storage:GetObject",
"Resource": "rn:ws:storage:::bucket/MM4_Heisman.png",
"Condition": {
"DateLessThan": {
"ws:CurrentTime": "2014-12-13"
}
}
}
]
앞서 기재된 예시가 권한이 표현될 수 있는 많은 방식 중 하나로 기재된 것에 불과하다. 물론, 그 밖의 다른 실시예에서, 도 2와 관련하여 앞서 기재된 원리의 변형이 다양한 방식으로 적용될 수 있다.
일부 실시예에서, 요소는 반대(가령, 부정) 용어로 기재될 수 있다. 요소로 특정된 것을 제외하고 모든 매칭에 반대 요소가 적용될 수 있다. 예를 들어, 권한 지시문이 "NotPrincipal: ducksfan8"라고 기술되는 경우 권한 지시문은 권한 지시문에 나열된 특정 주체 또는 주체들을 제외한 모든 주체에 적용된다 - 이 경우, 권한 지시문은 ducksfan8를 제외한 모든 주체에 적용될 것이다. 반대 요소가 주체 요소(가령, "NotPrincipal" 요소가 나열된 것을 제외한 모든 주체에 적용될 것이다), 동작 요소(가령, "NotAction" 요소가 나열된 것을 제외한 모든 동작에 적용될 것이다), 자원 요소(가령, "NotResource" 요소가 나열된 것을 제외한 모든 자원에 적용될 것이다) 등과 함께 사용될 수 있다.
도 2에 도시된 바와 같이, 권한(202)이 명제 논리 표현(214)을 생성하는 데 사용될 수 있다. 명제 논리 표현(214)은 권한(202)을 나타내는 논리 표현 세트를 포함할 수 있다. 명제 논리 표현이 평가되어 식이 만족 가능한지 여부를 결정할 수 있다. 예를 들어, 명제 논리가 사용되어 제1 권한 세트를 포함하는 제1 보안 정책에 대응하는 제1 명제 논리 표현 하에서 자원이 허용되고 제2 권한 세트를 포함하는 제2 보안 정책에 대응하는 제2 명제 논리 표현 하에서 자원이 허용되지 않는 것(가령, ALLOW 결과를 명시적으로 거부 및/또는 명시적으로 허가되지 않는 것)이 만족 가능한지 여부를 결정할 수 있다. 일부 실시예에서, 권한(202) 지시문이 명제 논리 표현(214)을 생성하는 데 사용될 수 있다. 주체(204) 요소는 명제 논리 내 지시문 및 식이 만족 가능한지 여부에 대한 제약으로 사용되는 하나 이상의 표명으로 포함될 수 있는 주체 논리 표현(216)으로 매핑될 수 있다. 이 매핑의 예시가 이하에서 도 5-11과 관련하여 이하에서 기재된다. 마찬가지로, 자원(206) 요소는 자원 명제 논리 표현(218)으로 매핑될 수 있고, 동작(208)은 동작 명제 논리 표현(220)에 매핑될 수 있으며, 조건(210) 요소는 조건 명제 논리 표현(222)으로 매핑될 수 있고, 결과(212) 요소는 결과 명제 논리 표현(224)으로 매핑될 수 있다. 이들 매핑과 관련된 다양한 예시가 이하에서 도 5-11과 관련하여 기재된다.
도 3은 본 발명의 다양한 실시예가 실시될 수 있는 환경(300)의 예시이다. 환경(300)은 클라이언트가 요청을 발행하여, 두 개의 보안 정책의 동치를 분석하고 정책이 동치인지 여부를 가리키는 동치성 결과를 수신할 수 있는 예시를 도시한다. 환경(300)은 본 명세서에 다른 곳에 기재된 구성요소, 가령, 도 1, 2 및 4와 관련하여 기재된 구성요소를 이용할 수 있다.
일부 실시예에서, 클라이언트 컴퓨팅 디바이스(302), 가령, 도 1과 관련하여 기재된 것이 클라이언트를 대리하여 두 개의 보안 정책 간 동치를 결정하기 위한 요청을 발행할 수 있다. 일부 실시예에서, 요청은 요청의 일부로서 분석될 보안 정책을 인코딩하는 웹 API 요청이다. 그러나 반드시 그럴 필요는 없으며 - 일부 실시예에서, 보안 클라이언트 컴퓨팅 디바이스가 요청의 수신자가 하나 이상의 보안 정책을 획득하도록 사용할 수 있는 하나 이상의 보안 정책의 참조를 제공할 수 있다. 일부 실시예에서, 도 4와 관련하여 기재된 바에 따라, 웹 API 요청이 클라이언트 컴퓨팅 디바이스로부터 컴퓨팅 자원 서비스 제공자로 전송된다. 요청은 정책 분석기 서비스, 가령, 도 1 및 4와 관련하여 기재된 것에 의해 이행될 수 있다. 제1 보안 정책(304A)이 파싱되어 하나 이상의 권한 지시문(306A)을 획득할 수 있고 권한 지시문이 명제 논리 식(308)에 제약으로서 동작할 수 있는 제1 명제 논리 표현 세트로 번역될 수 있다. 마찬가지로, 제2 보안 정책(304B)이 파싱되어 하나 이상의 권한 지시문(306B)를 획득할 수 있고 권한 지시문은 명제 논리 식(308)에 제약으로서 동작할 수 있는 제2 명제 논리 표현 세트로 번역될 수 있다. 시스템(가령, 정책 분석기 서비스 또는 이의 구성요소)은 만족성 엔진(310), 가령, 도 1과 관련하여 기재된 것을 이용해, 두 개의 명제 논리 표현이 동치인지 여부, 하나가 다른 하나보다 더 권한 있는지 여부 등을 결정할 수 있다.
본 명세서에 기재된 기법에 따라 결정이 이뤄질 수 있다. 일부 실시예에서, 동치성 결과(312)가 두 개의 정책이 동치임을 가리킬 수 있다. 제1 정책 및 제2 정책으로부터의 보안 권한이 모든 동작, 자원, 및 주체에 동일한 방식으로 적용되는 경우 두 정책은 동치라고 말해질 수 있다 - 다시 말해, 임의의 동작, 자원, 및 주체 세트에 대해, (거부 지시문을 기초로 명시적으로 또는 권한 허가 액세스의 부재를 토대로 묵시적으로) 제1 정책과 제2 정책 모두 액세스를 거부하거나 액세스를 허가할 것이다 - 하나의 정책이 액세스를 허가하고 다른 한 정책이 액세스를 거부하는 것은 해당되지 않을 것이다. 하나의 정책이 다른 한 정책보다 더 권한 있다고 결정되는 경우, 하나의 정책이 또 다른 정책이 액세스를 거부하는 파라미터의 세트 하에서 액세스를 허가하는 경우에 해당할 것이다.
일부 실시예에서, 웹 API 요청에 응답하여 동치성 결과(312)는 클라이언트 컴퓨팅 디바이스(302)로 전송될 수 있다. 일부 실시예에서, 동치성 결과(312)는 권한성 결과(가령, 하나의 정책이 또 다른 정책보다 더 권한 있는지 여부)를 인코딩할 수 있다. 일부 실시예에서, 또 다른 정보가 권한성 결과를 대신하여 또는 이에 추가로 제공된다. 예를 들어, 제1 정책이 제2 정책보다 더 권한 있는 경우, 동치성 결과(312)가 제1 정책에 의한 액세스의 허가 및 제2 정책에 의한 액세스의 거부를 도출하는 파라미터의 세트를 인코딩할 수 있다(가령, 제1 정책이 자원에 대한 동작을 수행하기 위해 주체로의 액세스를 허가하고 제2 정책이 자원에 대한 동작을 수행하지 못하게 주체로의 액세스를 거부하도록 주체, 자원, 및 동작이 응답으로 인코딩될 수 있다).
환경(300)은 다양한 실시예를 구현하도록 사용될 수 있다. 일부 실시예에서, 컴퓨팅 디바이스는 (가령, 요청에 인코딩된) 정책이 최소 보안 표준의 세트에 부합하는지 여부를 결정하기 위한 요청을 할 수 있다. 컴퓨팅 자원 서비스 제공자가 요청을 수신하고, 보안 표준과 연관된 보안 정책을 라우팅 및 획득하고, 제공된 정책과 보안 표준 정책의 상대적 권한성을 결정할 수 있다. 제공된 정책이 보안 표준보다 더 권한 있는 경우, 응답이 정책이 보안 표준에 부합하지 않음을 가리킬 수 있다. 예를 들어, 일부 실시예에서, 클라이언트가 정책 관리 서비스, 가령, 도 4와 관련하여 본 명세서에 기재된 것을 이용해 보안 정책을 설정하려 시도할 수 있다. 정책 관리 서비스는 정책 분석기 서비스(422)를 이용하여 클라이언트의 보안 정책이 하나 이상의 보안 표준에 부합하는지 여부를 결정할 수 있다. 정책이 부합하지 않는 경우, 정책 관리 서비스는 요청을 이행하기를 거절하고 클라이언트에게 요청은 이행되지 않았음을 지시할 수 있으며 보안 정책이 하나 이상의 보안 표준 정책보다 더 권한 있었음을 인코딩할 수 있다.
도 4는 분산된 컴퓨터 시스템이 본 명세서에 기재된 다양한 기법을 이용할 수 있는 환경(400)의 예시이다. 하나의 실시예에서, 주체(402)가 컴퓨팅 디바이스를 이용해 네트워크(404)를 통해 컴퓨팅 자원 서비스 제공자(406)와 통신할 수 있다. 컴퓨팅 자원 서비스 제공자(406)와 주체(402) 간 통신이, 예를 들어, 컴퓨팅 자원 서비스 제공자(406)에 의해 운영되는 많은 서비스 중 하나일 수 있는 컴퓨팅 자원 서비스 제공자(406)에 의해 운영되는 서비스(408)를 액세스하기 위한 목적을 가질 수 있다. 서비스(408)는 서비스 프론트엔드(410) 및 서비스 백엔드(414)를 포함할 수 있다. 주체(402)는, 연관된 컴퓨팅 디바이스를 통해, 컴퓨팅 자원 서비스 제공자(406)에 의해 제공된 서비스(408)로의 액세스에 대한 요청 (및/또는 서비스(408)와 연관된 자원으로의 액세스 요청)을 발행할 수 있다. 요청은, 예를 들어, 웹 서비스 애플리케이션 프로그램 인터페이스 요청일 수 있다. 주체는 사용자, 또는 사용자 그룹, 또는 사용자 그룹과 연관된 역할, 또는 이들 개체 중 하나 이상을 나타내며 하나 이상의 원격(컴퓨팅 자원 서비스 제공자(406)에 대해 원격) 컴퓨터 시스템 상에서 실행될 수 있는 프로세스이거나, 그 밖의 다른 이러한 컴퓨터 시스템 개체, 사용자 또는 프로세스일 수 있다. 각각의 사용자, 그룹, 역할, 또는 또 다른 이러한 주체 집합은 상기 집합의 속성 및/또는 멤버쉽을 정의하는 대응하는 사용자 정의, 그룹 정의, 역할 정의, 또는 그 밖의 다른 정의를 가질 수 있다. 예를 들어, 그룹은 동일한 지리적 위치를 갖는 주체의 그룹일 수 있다. 이러한 주체의 그룹의 정의는 그룹의 멤버쉽, 위치, 및 상기 그룹과 연관된 그 밖의 다른 데이터 및/또는 메타데이터를 포함할 수 있다. 본 명세서에서 사용될 때, 주체는 컴퓨팅 자원 서비스 제공자에 의해 관리되는 신원에 대응하는 개체이며, 여기서 컴퓨팅 자원 서비스 제공자는 신원에 대한 권한을 관리하며 개체는 그 자체게 신원을 가질 수 있는 하나 이상의 서브-개체를 포함할 수 있다.
주체(402)는 하나 이상의 연결(가령, 전송 제어 프로토콜(TCP) 연결)을 통해 컴퓨팅 자원 서비스 제공자(406)와 통신할 수 있다. 주체(402)는 컴퓨터 시스템 클라이언트 디바이스를 이용해 컴퓨팅 자원 서비스 제공자(406)로 연결될 수 있다. 클라이언트 디바이스는 네트워크를 통해 컴퓨터 시스템과 연결될 수 있는 임의의 디바이스, 가령, 이하에서 언급된 예시적 디바이스를 포함할 수 있다. 네트워크(404)는, 예를 들어, 인터넷 또는 이하에서 언급된 또 다른 네트워크 또는 네트워크 조합을 포함할 수 있다.
컴퓨팅 자원 서비스 제공자(406)는, 서비스(408)를 통해, 하나 이상의 컴퓨팅 자원, 가령, 가상 기계(VM) 인스턴스, 자동 스컬링 그룹, 파일-기반 데이터베이스 저장 시스템, 블록 저장 서비스, 가외적 데이터 저장 서비스, 데이터 아카이브 서비스, 데이터 웨어하우징 서비스, 사용자 액세스 관리 서비스, 신원 관리 서비스, 콘텐츠 관리 서비스, 및/또는 그 밖의 다른 이러한 컴퓨터 시스템 서비스로의 액세스를 제공할 수 있다. 그 밖의 다른 예시적 자원의 비제한적 예를 들면, 사용자 자원, 정책 자원, 네트워크 자원 및/또는 저장 자원이 있다. 일부 예시에서, 컴퓨터 서비스와 연관된 자원은 물리 디바이스, 가상 디바이스, 물리 및/또는 가상 디바이스의 조합, 또는 그 밖의 다른 이러한 디바이스 실시예일 수 있다.
서비스(408)로의 액세스에 대한 요청이, 일부 예시에서, 이러한 요청을 수신하고 서비스(408)와 연관된 하나 이상의 정책에 따라 상기 요청을 처리하도록 구성된 웹 서버를 포함하는 서비스 프론트엔드(410)에 의해 수신될 수 있다. 서비스(408)로의 액세스에 대한 요청이 디지털 서명된 요청일 수 있고 따라서 디지털 서명을 제공 받을 수 있다. 일부 실시예에서, 웹 서버는 요청을 처리하는 것과 동시에 본 명세서에 기재된 기법을 이용한다. 그런 다음 서버 프론트엔드(410)는 요청 및 검증을 위한 디지털 서명을 인증 서비스(416)로 전송할 수 있다. 인증 서비스(416)는 독립형 서비스이거나 서비스 제공자 또는 그 밖의 다른 개체의 일부일 수 있다. 인증 서비스(416)는, 하나의 실시예에서, 주체 인증에 포함되는 동작을 수행하도록 구성된 컴퓨터 시스템이다.
요청의 성공적인 인증이 있으면, 인증 서비스(416)가 요청에 적용 가능한 정책을 획득할 수 있다. 정책은 주체(402), 요청의 이행의 일부로서 액세스될 자원, 주체(402)가 구성원인 그룹, 주체(402)의 역할 및/또는 그 밖의 다른 것과 연관됨으로써 요청에 적용 가능할 수 있다. 요청에 적용 가능한 정책을 획득하기 위해, 인증 서비스(416)는 정책 관리 서비스(420)에 의해 관리되는 정책 레포지토리(418)로 질의를 전송할 수 있다. 정책 레포지토리(418)로의 질의가 요청에 적용 가능한 정책의 세트를 결정하기에 충분한 정보를 포함하는 요청일 수 있다. 정책 레포지토리로의 질의는, 예를 들어, 요청의 복사본을 포함하거나 및/또는 요청 내 정보, 가령, 주체, 자원 및/또는 동작(요청 이행의 일부로서 수행될 동작)을 식별하는 정보를 적어도 부분적으로 기초로 하는 파라미터를 포함할 수 있다.
정책 관리 서비스(420)는 컴퓨팅 자원으로의 액세스에 대한 요청(가령, 웹 서비스 애플리케이션 프로그래밍 인터페이스 요청)에 적용 가능한 정책으로의 액세스 및 이의 관리를 제공할 수 있다. 예를 들어, 정책 관리 서비스는 계류 중인 요청에 적용 가능한 정책을 선택하기에 충분한 정보를 수신할 수 있다. 일부 실시예에서, 정보는 요청의 복사본이거나, 요청을 적어도 부분적으로 기초로 하여 생성된 정보일 수 있다. 예를 들어, 서비스, 가령, 서비스 프론트엔드(410)는 자원 액세스에 대한 요청을 수신할 수 있고 요청에 의해 특정되는 정보를 적어도 부분적으로 기초로 하여 정책 관리 서비스로의 질의를 생성할 수 있다.
요청에 적용 가능한 임의의 정책을 획득하여, 인증 서비스(416)는 인증 응답을 제공할 수 있고, 경우에 따라, 획득된 정책을 서비스 프론트엔드(410)로 다시 제공할 수 있다. 인증 응답은 응답이 성공적으로 인증되었는지 여부를 가리킬 수 있다. 그런 다음 서비스 프론트엔드(410)는 인증 모듈(412)을 이용해 서비스(408)로의 액세스에 대한 요청의 이행이 획득된 정책에 부합할 것인지 여부를 체크할 수 있다. 일부 실시예에서, 요청의 이행이 정책을 위반하는지 여부가 유일성 제약(uniqueness constraint)의 위반이 발생했는지 여부에 따라 달라지도록 정책이 구성될 수 있다. 예를 들어, 일부 데이터는 다른 데이터보다 덜 민감한 것으로 간주될 수 있으며, 덜 민감한 데이터에 대한 요청은, 유일성 제약 위반 검출에도 불구하고 이행될 수 있는데, 이에 반해 더 민감한 데이터로의 액세스는 유일성 제약 위반이 요청의 인증에서 사용되도록 특정된 공개 키와 관련하여 발행하지 않았음을 요구할 수 있다. 그 밖의 다른 유형의 컴퓨팅 자원, 가령, 컴퓨팅 디바이스, 저장 위치, 데이터 모음, 신원, 정책 등에 대해 유사한 기법이 채용될 수 있다.
인가 모듈(412)은 요청을 정책 내 하나 이상의 권한에 비교하여 서비스가 요청을 만족시킬 수 있는지 여부(즉, 요청 이행이 인가되었는지 여부)를 결정하도록 동작하는 서비스 프론트엔드 상에서 실행되는 프로세스일 수 있다. 예를 들어, 인가 모듈은 요청과 연관된 API 콜을 정책에 의해 특정된 허용된 API 콜에 비교하여 요청이 허용되는지 여부를 결정할 수 있다. 인가 모듈(412)이 요청을 정책에 의해 특정된 권한에 매칭할 수 없는 경우, 인가 모듈(412)은 하나 이상의 디폴트 동작, 가령, 서비스 프론트엔드로 하여금 요청을 거부하게 하는 메시지를 서비스 프론트엔드로 제공하는 동작, 및 거부된 요청이 정책 관리 서비스(420)에 로그되게 하는 동작을 실행할 수 있다. 인가가 요청을 정책에 의해 특정되는 하나 이상의 권한에 매칭시키는 경우, 인가 모듈(412)은 (정책에 의해 정의된) 최소 제한 응답을 선택하고 서비스 프론트엔드에 선택된 응답을 기초로 요청의 이행이 인가되었는지 여부(즉, 적용 가능한 정책에 부합하는지 여부)를 알림으로써 이를 해결할 수 있다. 인가 모듈(412)은 또한 최대 제한 응답을 선택하거나 그 밖의 다른 이러한 일부 응답을 선택하고 서비스 프론트엔드에게 상기 선택된 응답을 기초로 요청의 이행이 인가되는지 여부를 알릴 수 있다. 도 4가 인가 모듈(412)을 서비스 프론트엔드(410)의 구성요소로서 도시하지만, 일부 실시예에서, 인가 모듈(412)은 컴퓨팅 자원 서비스 제공자(406)에 의해 제공되는 개별 서비스이며 프론트엔드 서비스는 네트워크를 통해 인가 모듈(412)과 통신할 수 있다.
마지막으로, 서비스(408)로의 액세스 요청의 이행이 획득된 적용 가능한 정책에 부합하는 경우, 서비스 프론트엔드(410)는 서비스 백엔드(414)를 이용해 요청을 이행할 수 있다. 서비스 백엔드(414)는 서비스 프론트엔드(410)로부터 인가된 결과를 수신하고 이러한 요청을 이행하도록 구성된 서비스의 구성요소일 수 있다. 서비스 프론트엔드(410)는, 예를 들어, 서비스 백엔드로 요청을 제출하여, 서비스 백엔드(414)가 상기 요청을 이행하는 데 포함된 하나 이상의 동작을 수행하게 할 수 있다. 일부 예시에서, 서비스 백엔드(414)는 주체(402)로부터의 요청에 응답하여 서비스 프론트엔드가 제공한 데이터를 서비스 프론트엔드(410)로 다시 제공한다. 일부 실시예에서, 요청이 허용 또는 거부되는지 여부를 가리키고 허용되는 경우 요청의 하나 이상의 결과를 가리키는 주체(402)로의 응답이 서비스 프론트엔드(410)로부터 제공될 수 있다.
도 5는 정책을 적어도 부분적으로 기초로 하는 명제 논리 식의 만족성을 결정하는 것의 일부로서 명제 논리가 사용되는 다이어그램(500)의 예시를 도시한다. 다이어그램(500)은 가령, 도 1-4와 관련하여 본 명세서에 기재된 것에 따를 수 있는 예시적 정책(502)을 도시한다. 다이어그램(500)은 정책(502)이 만족 가능한지 여부를 결정하도록 명제 논리(점선 아래에서 나타남)가 사용되는 양태를 도시한다. 정책(502)은 명제 논리에 대한 제약일 수 있는 하나 이상의 정책 지시문을 포함할 수 있다. 예시적 정책 지시문(가령, 권한 지시문)이 도 4와 관련하여 본 명세서에 기재된다.
다이어그램(500)은 정책(502)이 만족 가능한지 여부를 결정하기 위해 부분적으로 사용될 수 있는 명제 논리를 도시한다. 다이어그램(500)에서, 명제 논리가 정책의 만족성을 결정하기 위해 부분적으로 사용되는 제약을 도시한다. 구체적으로, 다이어그램(500)은 정책이 허용하는 것이 정책에 의해 명시적으로 거부되지 않고 정책의 하나 이상의 지시문 중 임의의 것에 의해 허용되는 것과 동치여야 한다는 제약을 도시한다. 일부 실시예에서, 명제 논리는 하나 이상의 SMT LIB 표준에 따를 수 있는 SMT 언어에 따라 표현될 수 있다. 그 밖의 다른 포맷이 명제 논리를 기술하는 데 사용될 수 있으며, 예를 들어, CVC 언어 및 DIMACS(Center for Discrete Mathematics and Theoretical Computer Science) 포맷이 있다. SMT-LIB 표준: 버전 2.5, SMT-LIB 표준 버전 2.0, SMT-LIB 표준 버전 1.2, 및 SMT-LIB 표준 버전 1.0이 본 명세서에 참조로서 포함된다.
예를 들어, STM-LIB 표준 v2.0에 따르는 구현이 앞서 기재된 바와 같은 제약을 다음의 형태로 포함할 수 있다:
(assert (= policyA.allows (and (not policyA.denies) (or policyA.statement0.allows policyA.statement1.allows policyA.statement2.allows ...))))
본 명세서에서 예시는 본 개시의 설명에 따라 다양한 실시예를 구현하는 방식에 대한 개념을 예로 들기 위해 제공되는 것이다. 예를 들어, 상기의 예시에서, 셋 이상의 권한 지시문을 갖는 정책이 OR 지시문을 이용해 연결되는 추가 제약을 가질 것임을 나타내기 위해 타원이 사용된다. 다양한 실시예에서 폴란드 표기법(Polish notation)(즉, 전치 표기), 가령, STM-LIB 표준에 따르는 법을 이용해 명제 논리가 표현될 수 있음을 알아야 한다.
도 6는 정책을 적어도 부분적으로 기초로 하는 명제 논리 식의 만족성을 결정하는 것의 일부로서 명제 논리가 사용되는 다이어그램(600)의 예시를 도시한다. 다이어그램(600)은 가령, 도 1-5와 관련하여 본 명세서에 기재된 것에 따를 수 있는 예시적 정책(602)을 도시한다. 다이어그램(600)은 정책(602)이 만족 가능한지 여부를 결정하도록 명제 논리(점선 아래에서 나타남)가 사용되는 양태를 도시한다. 정책(602)은 명제 논리에 대한 제약일 수 있는 하나 이상의 정책 지시문을 포함할 수 있다 예시적 정책 지시문(가령, 권한 지시문)이 도 2와 관련하여 본 명세서에 기재된다.
다이어그램(600)은 정책을 적어도 부분적으로 기초로 하는 명제 논리 식의 만족성을 결정하도록 부분적으로 사용될 수 있는 명제 논리를 도시한다. 다이어그램(600)에서, 명제 논리가 정책의 만족성을 결정하기 위해 부분적으로 사용되는 제약을 도시한다. 구체적으로, 다이어그램(600)은 정책이 거부하는 것과 정책의 하나 이상의 지시문 중 임의의 것에 의해 거부되는 것이 동치여야 한다는 제약을 나타낸다. 일부 실시예에서, 명제 논리는 하나 이상의 SMT-LIB 표준에 따를 수 있는 SMT 언어에 따라 표현될 수 있다. 그 밖의 다른 포맷이 명제 논리를 기술하는 데 사용될 수 있으며, 예를 들어, CVC 언어 및 DIMACS(Center for Discrete Mathematics and Theoretical Computer Science) 포맷이 있다.
예를 들어, STM-LIB 표준 v2.0에 따르는 구현이 앞서 기재된 바와 같은 제약을 다음의 형태로 포함할 수 있다:
(assert (= policyA.denies (or policyA.statement0.denies policyA.statement1.denies policyA.statement2.denies ...)))
다시 말하면, 상기 예시에 의해 제공된 제약은 정책(가령, 정책A)이 거부하는 것이 임의의 개별 지시문(가령, 지시문1, 지시문2, 지시문3 등)이 거부하는 것과 동치이도록 하는 것이다.
도 7은 정책을 적어도 부분적으로 기초로 하는 명제 논리 식의 만족성을 결정하는 것의 일부로서 명제 논리가 사용되는 다이어그램(700)의 예시를 도시한다. 다이어그램(700)은 가령, 도 1-6와 관련하여 본 명세서에 기재된 것에 따를 수 있는 예시적 정책(702)을 도시한다. 다이어그램(700)은 정책(702)이 만족 가능한지 여부를 결정하도록 명제 논리(점선 아래에서 나타남)가 사용되는 양태를 도시한다. 정책(702)은 명제 논리에 대한 제약일 수 있는 하나 이상의 정책 지시문을 포함할 수 있다 예시적 정책 지시문(가령, 권한 지시문)이 도 2와 관련하여 본 명세서에 기재된다.
다이어그램(700)은 정책을 적어도 부분적으로 기초로 하는 명제 논리 식의 만족성을 결정하도록 부분적으로 사용될 수 있는 명제 논리를 도시한다. 다이어그램(700)에서, 명제 논리가 정책의 만족성을 결정하기 위해 부분적으로 사용되는 제약을 도시한다. 구체적으로, 다이어그램(700)은 정책이 무엇에 대해 중립인지가 정책에 의해 허용되지 않는 것 및 정책에 의해 거부되지 않는 것과 동치여야 한다는 제약을 나타낸다. 일부 실시예에서, 명제 논리는 하나 이상의 SMT-LIB 표준에 따를 수 있는 SMT 언어에 따라 표현될 수 있다. 그 밖의 다른 포맷이 명제 논리를 기술하는 데 사용될 수 있으며, 예를 들어, CVC 언어 및 DIMACS(Center for Discrete Mathematics and Theoretical Computer Science) 포맷이 있다.
예를 들어, STM-LIB 표준 v2.0에 따르는 구현이 앞서 기재된 바와 같은 제약을 다음의 형태로 포함할 수 있다:
(assert (= p0.neutral (and (not p0.allows) (not p0.denies))))
즉, 상기 예시에 의해 제공되는 제약은 정책(가령, 정책A)이 무엇에 대해 중립인지가 정책에 의해 허용되지 않는 것 및 정책에 의해 거부되지 않는 것과 동치이도록 하는 것이다.
도 5-7에 대한 설명과 관련하여, 기재된 제약들이 조합되어 사용되어 정책(가령, policyA)에 대한 제약을 정의할 수 있으며, 이는 이하의 형태로 기재될 수 있다:
"Statement": [
{
"Effect": "ALLOW",
"Principal": "*",
"Action": "*",
"Resource": "*"
}
]
마찬가지로, 제2 정책(즉, policyB)에 대한 제약은 다음의 형태로 기재될 수 있다:
"Statement": [
{
"Effect": "ALLOW",
"Principal": "*",
"Action": "sns:*",
"Resource": "*"
},
{
"Effect": "ALLOW",
"Principal": "*",
"NotAction": "sns:Delete",
"Resource": "*"
}
]
따라서, 이들 제약에 추가로, 추가 제약이 사용되어 하나의 정책이 또 다른 정책보다 더 권한 있는지 여부를 결정할 수 있다. 예를 들어, 두 개의 정책(가령, 상기 예시의 policyA 및 policyB)이 주어지면, 다음의 제약이 사용되어 제1 정책(즉, policyA)이 제2 정책(즉, policyB)보다 더 권한 있는지 여부를 결정할 수 있다:
(assert (or pB.neutral pB.denies))
(assert pA.allows)
다양한 실시예에서, 정책 분석기 서비스가 사용되어 상기 정책들(앞서 기재된 policyA와 policyB)이 동치라고 결정할 수 있다.
일부 실시예에서, 예컨대, 거부가 디폴트인 시스템을 구현하는 실시예에서, 인가 모듈이 요청자(가령, 주체)가 명시적으로(가령, 자원으로의 액세스를 적극적으로 허용하는 권한 지시문을 통해) 액세스를 허가 받지 않은, 컴퓨팅 자원 서비스 제공자의 임의의 자원으로의 액세스를 거부한다.
예를 들어, STM-LIB 표준 v2.0에 따르는 구현이 앞서 기재된 바와 같은 제약을 다음의 형태로 포함할 수 있다:
(assert (= p0.neutral (and (not p0.allows) (not p0.denies))))
즉, 상기 예시에 의해 제공되는 제약은 정책(가령, policyA)이 중립을 취하는 대상이 정책에 의해 허용되지 않는 것 및 정책에 의해 거부되지 않는 것과 동치이도록 하는 것이다.
도 8은 요소(가령, 정책의 일부)가 명제 논리로 번역되는 다이어그램(800)의 예시를 도시한다. 임의의 적합한 구성요소, 가령, 도 1과 관련하여 기재된 명제 논리 번역기에 의해 번역이 수행될 수 있다. 다이어그램(800)은 JSON 요소(점선 위로 나타남)가 명제 논리(점선 아래로 나타남)로 번역되는 예시를 보여준다. 명제 논리는 하나 이상의 SMT-LIB 표준에 따를 수 있는 SMT 언어에 따라 표현될 수 있다.
예를 들어, (가령, 권한 지시문의 그 밖의 다른 곳에 특정된) 일부 자원으로의 액세스를 허용하는 권한 지시문의 결과 요소가 다음의 제약을 갖는 명제 논리로서 표현될 수 있다:
(assert (= policy.statement.allows (and policy.action policy.resource policy.principal)))
(assert (not policy.statement.denies))
다시 말하면, 허용 결과가 명제 논리 두 개의 제약을 생성한다 - 정책 지시문이 허용 결과를 가지며, 동작, 자원, 및 주체 제약이 만족된다는 제1 제약, 및 정책 지시문이 거부 결과를 갖지 않는다는 제2 제약. 동작, 자원, 및 주체 제약은 도 8-11과 관련하여 기재된 것에 따를 수 있다. 또한 제약은 권한 지시문에 포함되는 요소에 따라 달라질 수 있다. 예를 들어, 권한 지시문이 조건을 포함하는 경우, 제약이 만족되기 위해서 조건이 만족되어야 한다는 제약이 더 포함될 수 있다. 일부 실시예에서, 유효 정책 지시문은 동작, 자원, 및 주체 요소 중 적어도 하나를 가져야 하도록, 동작, 자원, 및 주체 요소 중 적어도 하나가 권한 지시문의 필수 요소이다.
도 9는 요소(가령, 정책의 일부)가 명제 논리로 번역되는 다이어그램(900)의 예시를 도시한다. 임의의 적합한 구성요소, 가령, 도 1과 관련하여 기재된 명제 논리 번역기에 의해 번역이 수행될 수 있다. 다이어그램(900)은 JSON 요소(점선 위로 나타남)가 명제 논리(점선 아래로 나타남)로 번역되는 예시를 보여준다. 명제 논리는 하나 이상의 SMT-LIB 표준에 따를 수 있는 SMT 언어에 따라 표현될 수 있다.
예를 들어, (가령, 권한 지시문의 그 밖의 다른 곳에서 특정된) 일부 자원으로의 액세스를 (권한 지시문의 결과 요소에 따라) 허가 또는 거부하는 권한 지시문의 동작 요소가 다음의 제약을 갖는 명제 논리로 표현될 수 있다:
(assert (= policy.action (or (and (= "storage" actionNamespace) (str.prefixof "Delete" actionName)))))
즉, 다이어그램(900)에서 점선 위의 동작 요소가 동작이 "저장" 이름 공간 및 "Delete"의 스트링 접두사를 갖는 동작 이름, 가령, "DeleteObject" 또는 "DeleteAllObjects" 또는 "DeleteContainer" 등을 가질 때 만족되는 제약을 갖는 명제 논리로 번역될 수 있다. 일부 실시예에서, 다양한 스트링 평가 함수가 제약의 일부로서 사용될 수 있는데, 가령, 스트링 접두사, 접미사, 길이, 부분스트링을 평가하는 것(가령, 특정 스트링이 제2 스트링의 일부로서 포함되는지 여부) 등이 있다. 스트링의 비교는 추가 비교 파라미터, 가령, 대소문자 무관 비교, 기호와 구두점 무시, 발음 구별 기호(diacritics) 무시, 히라가나와 카타카나 문자 차이 무시 등을 더 포함할 수 있다. 결과, 동작, 자원, 및 주체 제약은 도 8-11과 관련하여 기재된 것에 따를 수 있다. 또한 제약은 권한 지시문에 포함되는 요소에 따라 달라질 수 있다. 예를 들어, 권한 지시문이 조건을 포함하는 경우, 제약이 만족되기 위해서 조건이 만족되어야 한다는 제약이 더 포함될 수 있다. 일부 실시예에서, 유효 정책 지시문은 결과, 동작, 자원, 및 주체 요소 중 적어도 하나를 가져야 하도록, 결과, 동작, 자원, 및 주체 요소 중 적어도 하나가 권한 지시문의 필수 요소이다.
도 10은 요소(가령, 정책의 일부)가 명제 논리로 번역되는 다이어그램(1000)의 예시를 도시한다. 임의의 적합한 구성요소, 가령, 도 1과 관련하여 기재된 명제 논리 번역기에 의해 번역이 수행될 수 있다. 다이어그램(1000)은 JSON 요소(점선 위로 나타남)가 명제 논리(점선 아래로 나타남)로 번역되는 예시를 보여준다. 명제 논리는 하나 이상의 SMT-LIB 표준에 따를 수 있는 SMT 언어에 따라 표현될 수 있다.
예를 들어, (권한 지시문의 결과 요소에 따라) 자원으로의 액세스를 허가 또는 거부하는 권한 지시문의 자원 요소가 다음의 제약을 갖는 명제 논리로 표현될 수 있다:
(assert (= policy.resource (or (and (= "storage" resourceService) (= "" resourceAccount) (str.prefixof "foo/" resourceResource)) (and (= "storage" resourceService) (= "user" resourceAccount) (str.prefixof "bar/" resourceResource)))))
즉, 다이어그램(900)에서 점선 위의 자원 요소가, 일부 실시예에서, 자원이 "저장" 서비스 이름공간, 블랭크 자원 계정을 갖고 자원이 "foo/"를 갖거나 자원이 "저장" 서비스 이름공간, "사용자" 계정을 가지며, 자원이 "bar/"를 가질 때 만족되는 제약을 갖는 명제 논리로 번역될 수 있다. 결과, 동작, 자원, 및 주체 제약은 도 8-11과 관련하여 기재된 것에 따를 수 있다. 또한 제약은 권한 지시문에 포함되는 요소에 따라 달라질 수 있다. 예를 들어, 권한 지시문이 조건을 포함하는 경우, 제약이 만족되기 위해서 조건이 만족되어야 한다는 제약이 더 포함될 수 있다. 일부 실시예에서, 유효 정책 지시문은 결과, 동작, 자원, 및 주체 요소 중 적어도 하나를 가져야 하도록, 결과, 동작, 자원, 및 주체 요소 중 적어도 하나가 권한 지시문의 필수 요소이다.
도 11은 요소(가령, 정책의 일부)가 명제 논리로 번역되는 다이어그램(1100)의 예시를 도시한다. 임의의 적합한 구성요소, 가령, 도 11과 관련하여 기재된 명제 논리 번역기에 의해 번역이 수행될 수 있다. 다이어그램(1100)은 JSON 요소(점선 위로 나타남)가 명제 논리(점선 아래로 나타남)로 번역되는 예시를 보여준다. 명제 논리는 하나 이상의 SMT-LIB 표준에 따를 수 있는 SMT 언어에 따라 표현될 수 있다.
예를 들어, (가령, 권한 지시문의 그 밖의 다른 곳에 특정된) 일부 자원으로의 액세스를 허용하는 권한 지시문의 결과 요소가 다음의 제약을 갖는 명제 논리로서 표현될 수 있다:
(assert (= policy.condition (=> SourceVpce_exists| (= "baz" SourceVpce))))
즉, 다이어그램(1100)에서 점선 위의 자원 요소는 "sourceVpce" 조건 키(가령, 소스 가상 PC 인스턴스의 이름을 특정하는 필드)가 자원에 대해 존재하고 상기 자원에 대해 "baz"의 값을 가질 때 만족되는 제약을 갖는 명제 논리로 번역될 수 있다. 일부 실시예에서, 함의 연산자(implication operator)가 제약의 일부로서 사용될 수 있다. 일부 실시예에서, 함의는 연산자, 가령, 다이어그램(1100)에서 나타난 "=>"로 지시될 수 있고 전제조건이 참인 경우에만 평가되는 술부를 포함할 수 있다. 예를 들어, 부분적으로 읽히는 점선 위에 나타난 표현을 고려할 수 있다:
StringEqualsIfExists" : {"sourceVpce": "baz" }
이 표현은 전제조건이 참인 경우에만 술부가 평가된다는 명제 논리 제약으로 번역될 수 있다. 다이어그램(1100)에서, 전제조건은 "sourceVpce" 조건 키가 존재한다는 것일 수 있으며 다이어그램(1100)의 점선 아래에 기재된 바와 같이, 술부는 "sourceVpce" 조건 키의 값이 스트링 "baz"과 동일하다는 것일 수 있다. 예를 들어, 도 11과 관련하여 기재된 조건이 도 10과 관련하여 기재된 자원에 적용되는 권한 지시문에 포함되는 경우를 고려할 수 있다. 이러한 경우, "sourceVpce" 조건 키 및 상기 조건 키를 갖지 않는 그 밖의 다른 자원 및/또는 자원의 유형을 갖는 "foo/" 및 "bar/"에 일부 자원 및/또는 유형이 존재할 수 있다. 자원 또는 자원의 유형이 "sourceVpce" 조건 키를 갖지 않는 경우, 술부는 평가되지 않는다(또는 의미론적으로 마치 술부가 충족된 것처럼 처리될 수 있다). 일부 실시예에서, "sourceVpce" 필드가 자원에 대해 존재하지 않는 경우, 조건은 상기 자원에 대해 평가되지 않는다. 결과, 동작, 자원, 및 주체 제약은 도 8-11과 관련하여 기재된 것에 따를 수 있다. 또한 제약은 권한 지시문에 포함되는 요소에 따라 달라질 수 있다. 예를 들어, 권한 지시문이 조건을 포함하는 경우, 제약이 만족되기 위해서 조건이 만족되어야 한다는 제약이 더 포함될 수 있다. 일부 실시예에서, 유효 정책 지시문은 결과, 동작, 자원, 및 주체 요소 중 적어도 하나를 가져야 하도록, 결과, 동작, 자원, 및 주체 요소 중 적어도 하나가 권한 지시문의 필수 요소이다.
도 12는 둘 이상의 보안 정책의 동치성을 결정하기 위한 프로세스(1200)의 일례를 도시한다. 일반적으로, 프로세스(1200)는 임의의 적합한 시스템, 가령, 본 명세서의 임의의 곳에 기재된 정책 분석기 서비스, 가령, 도 1과 관련하여 기재된 것에 의해 수행될 수 있다. 프로세스는 하드웨어, 소프트웨어, 및 이의 조합을 이용해 구현될 수 있다. 하나의 실시예에서, 프로세스(1200)는 제1 보안 정책 및 제2 보안 정책을 특정하는 정보를 수신하는 단계(1202)를 포함한다. 일부 실시예에서, 시스템은 인터페이스의 일부로서 정보, 가령, 웹 API 요청을 수신한다. 일부 실시예에서, 보안 정책은 언어 독립적 포맷, 가령, JSON으로 표현될 수 있는 보안 권한의 세트를 각각 인코딩한다. 보안 권한은 본 명세서, 가령, 도 2와 관련하여 기재된 것에 따를 수 있다. 일부 실시예에서, 하나 또는 둘 모두의 정책을 특정하는 정보가 직접적으로 특정되거나(가령, 요청의 데이터 페이로드의 일부로서 인코딩됨) 간접적으로 특정될 수 있다(가령, 정책에 대한 참조가 시스템에 의해 수신되어 참조가 정책 관리 서비스로부터 정책을 획득하는 데 사용될 수 있음).
시스템은 제1 보안 정책을 적어도 부분적으로 기초로 하여 제1 명제 논리 표현을 결정할 수 있다(1204). 제1 보안 정책과 연관된 제1 보안 권한 세트를 기초로 결정이 더 이뤄질 수 있다. 본 명세서에 기재된 다양한 실시예에 따라 결정이 이뤄질 수 있다. 예를 들어, 시스템은 파서를 이용하여 파스를 이용해 제1 보안 정책으로부터 제1 보안 권한 세트를 획득할 수 있고 제1 보안 권한 세트를 명제 논리의 제약 세트로, 가령, 도 1-11과 관련하여 앞서 기재된 방식으로 번역할 수 있다. 일부 실시예에서, 시스템은 JSON로 표현된 보안 정책을 SMT-LIB 표준, 가령, SMT-LIB 2.0 표준에 따라 기재된 명제 논리 표현(가령, 하나 이상의 제약을 포함)으로 번역한다.
시스템은 제1 명제 논리 표현을 결정(1204)하는 것과 관련하여 앞서 기재된 것과 동일하거나 실질적으로 유사한 방식으로 제2 명제 논리 표현을 결정(1206)할 수 있다. 그러나 일부 실시예에서, 단계들은 상이할 수 있다. 예를 들어, 일부 경우, 시스템은 제1 보안 정책을 요청으로 수신할 수 있고(가령, 정책을 인코딩하는 데이터가 요청 내에 포함될 수 있음), 이에 반해 제2 보안 정책은 요청으로 간접적으로 참조된다(가령, 요청은 제1 보안 정책이 표준 보안 정책에 부합하는지 여부를 결정하기 위한 요청이다). 이러한 실시예에서, 시스템은 제2 보안 정책을 특정하는 요청에 포함된 정보를 이용해 제2 보안 정책을 획득하고 획득된 제2 보안 정책을 이용해 제2 명제 논리 표현을 획득할 수 있다. 기법, 가령, 도 1-11과 관련하여 기재된 기법이 사용될 수 있다.
시스템은 제1 명제 논리 표현과 제2 명제 논리 표현이 동치인지 여부를 결정(1208)할 수 있다. 제1 정책 및 제2 정책으로부터의 보안 권한이 모든 동작, 자원, 및 주체에 동일한 방식으로 적용되는 경우 두 정책은 동치라고 말해질 수 있다 - 다시 말해, 임의의 동작, 자원, 및 주체 세트에 대해, (거부 지시문을 기초로 명시적으로 또는 권한 허가 액세스의 부재를 토대로 묵시적으로) 제1 정책과 제2 정책 모두 액세스를 거부하거나 액세스를 허가할 것이다 - 하나의 정책이 액세스를 허가하고 다른 한 정책이 액세스를 거부하는 것은 해당되지 않을 것이다. 하나의 정책이 다른 한 정책보다 더 권한 있다고 결정되는 경우, 하나의 정책이 또 다른 정책이 액세스를 거부하는 파라미터의 세트 하에서 액세스를 허가하는 경우에 해당할 것이다.
만족성 엔진은 두 개의 명제 논리 표현이 동치인지 여부를 결정하는 것을 포함해 둘 이상의 명제 논리 표현의 권한성을 분석하도록 사용될 수 있다. 만족성 엔진은 명제 논리 제약들(가령, 제1 및 제2 명제 논리 표현으로부터 획득된 것 및 만족성 엔진에 의해 생성된 것)이 동치인지 여부를 검증하는 데 사용될 수 있다. 일부 실시예에서, 둘 이상의 명제 논리 표현이 동치인지 여부를 결정하는 것이 SMT 풀이법, 가령, Z3을 적어도 부분적으로 이용해 구현될 수 있다. 더 일반적으로, 본 명세서에 기재된 권한성, 상대적 권한성, 및/또는 명제 논리 표현과 명제 논리 제약의 동치성을 결정하기 위한 기법이 제1 명제 논리 표현과 제2 명제 논리 표현이 동치인지 여부를 결정하는 것(1208)과 관련하여 사용될 수 있다.
일부 실시예에서, 프로세스(1200)는 보안 정책이 SMT 풀이법에 의해 인식된 특정 포맷으로 된 명제 논리 표현으로 매핑되도록 하나 이상의 번역을 수행하는 단계를 포함할 수 있다. 예를 들어, Z3 풀이법이 동치성을 결정하는 것과 관련하여 사용되는 경우, 보안 정책이 SMT-LIB 표준 언어, 가령, STM-LIB 2.0 표준에 따르는 포맷으로 매핑될 수 있다.
시스템이 제1 명제 논리 표현과 제2 명제 논리 표현이 동치라고 결정하는 경우, 시스템은 정책들이 동치라는 지시자를 제공할 수 있다(1214). 일부 실시예에서, 지시자는 웹 API 요청에 응답하여 인코딩될 수 있다.
그러나 시스템이 제1 제안 논리 표현과 제2 명제 논리 표현이 동치가 아니라고 결정한 경우, 시스템은 제1 명제 논리 표현과 제2 명제 논리 표현이 동치성이 없다고 결정하기에 충분한 파라미터의 세트를 식별할 수 있다(1210). 파라미터의 세트는 하나 이상의 자원, 하나 이상의 주체, 하나 이상의 동작, 또는 이들의 일부 조합을 인코딩할 수 있다. 일부 실시예에서, 파라미터의 세트가 사용되어, 파라미터의 세트를 이용해 제1 보안 정책을 평가한 결과 - 즉, 결과가 액세스의 허가일지 또는 액세스의 거부일지 - 가 동일한 파라미터의 세트를 이용해 제2 보안 정책을 평가한 결과와 상이하기 때문에, 제1 명제 논리에 대응하는 제1 보안 정책과 제2 명제 논리에 대응하는 제2 보안 정책이 동치가 아님을 보일 수 있다. 다르게 말하면, 특정 파라미터 세트에 대해, 제1 보안 정책이 이들 파라미터를 기초로 액세스를 허가하고 제2 보안 정책이 동일한 파라미터를 기초로 액세스를 거부하는 경우 또는 이 반대의 경우에 해당할 수 있다. 일부 실시예에서, 시스템은 명제 논리 표현들이 동치인지 여부를 결정(1208)하는 것의 일부로서 파라미터의 세트를 식별할 수 있다(1210). 일부 경우, 시스템은 웹 API 응답의 일부로서 파라미터의 세트를 보안 정책이 동치가 아니라는 지시로서 제공할 수 있다(1212). 일부 실시예에서, 파라미터의 세트는 제공되지 않을 수 있으며, 대신 지시자(가령, 리턴 코드)가 정책들이 동치인지 여부를 가리킬 수 있다. 예를 들어, 보안 정책들이 동치인 경우 TRUE(참)가 반환되고 동치가 아닌 경우 FALSE(거짓)가 반환되도록 부울 값이 반환될 수 있다. 대안으로, 보안 정책들이 동치인 경우 0이 반환되고, 제1 보안 정책이 제2 보안 정책보다 더 권한 있는 경우 -1이 반환되며, 제2 보안 정책이 제1 보안 정책보다 더 권한 있는 경우 1이 반환되도록 정수 값이 반환될 수 있다.
프로세스(1200)에 도시된 다양한 단계들의 순서는 예시에 불과하며, 제2 명제 논리 표현을 결정하는 단계(1206)는 제1 명제 논리 표현을 결정하는 단계(1204) 전에 및/또는 동시에 발생할 수 있는 경우가 있을 수 있다. 실제론, 일부 실시예에서 순서는 심지어 비결정적일 수 있다. 예를 들어, 결정(1204 및 1206)은 병렬로 실행될 수 있고 상이한 계산 성능 특성을 가질 수 있는 계산 인스턴스들의 풀의 개별 계산 인스턴스에게 맡겨질 수 있다.
도 13은 본 발명의 다양한 실시예가 실시될 수 있는 환경(1300)의 예시이다. 하나의 실시예에서, 환경(1300)은, 클라이언트 컴퓨팅 디바이스(1302), 정책 관리 서비스(1304), 정책 레포지토리(1306), 이벤트-구동 플랫폼(1310), 정책 모니터링 서비스(1312), 및 정책 분석기 서비스(1314)를 포함한다. 환경(1300)은 클라이언트가 대응하는 이벤트(1308)를 생성하는 정책을 적용할 수 있고 그런 다음 이벤트(1308)가 이벤트-구동 플랫폼(1310)을 하나 이상의 정책을 분석하도록 트리거하는 예시를 도시한다. 일부 경우, 가령, 클라이언트 컴퓨터 시스템이 규칙의 세트에 부합되지 않는 보안 정책을 적용하거나 적용하려 시도하는 경우, 네트워크의 관리자(1316)가, 아마도 그 밖의 다른 동작, 가령, 비 호환 정책을 적용하라는 요청의 이행을 거절하는 것에 추가로, 통지 받거나, 정책이 호환되지 않는다는 경고를 클라이언트에게 제공하거나 추가 감사 단계를 수행할 수 있다.
일부 실시예에서, 컴퓨팅 자원 서비스 제공자의 클라이언트가 환경 내에서 보안 정책을 적용할 수 있도록, 컴퓨팅 자원 서비스 제공자, 가령, 도 4와 관련하여 기재된 제공자가 구성된다. 일부 실시예에서, 클라이언트는 정책 관리 서비스(1304)에 의해 지원되는 웹 API를 이용해 보안 정책을 설정하기 위한 명령어 라인 인터페이스를 이용한다. 정책 관리 서비스(1304)는 보안 정책을 적용하기 위한 웹 API 요청을 수신하고 요청을 이행하는 것의 일부로서 하나 이상의 인가 및 인증 절차를 수행할 수 있다. 정책은 적용되고 정책 레포지토리(1306)에 저장될 수 있으며 정책은 차후 사용되도록 정책 레포지토리에서 불러와질 수 있다. 일부 실시예에서, 정책을 적용하는 것 및/또는 적용된 정책을 정책 레포지토리(1306)에 저장하는 것이 로깅 시스템(logging system)을 통해 대응하는 로깅 엔트리를 생성한다. 로깅 시스템은 네트워크에 걸쳐 일부 또는 모든 활동, 가령, 컴퓨팅 자원 서비스 제공자에게 만들어진 웹 API 요청에 대한 레코드 정보를 로깅하는 데 사용될 수 있다.
이벤트(1308)는 보안 정책의 적용 및 보안 정책의 적용으로부터 도출된 하나 이상의 다운스트림 동작에 응답하여 생성될 수 있다. 예를 들어, 이벤트(1308)가 보안 정책을 적용하기 위한 웹 API 콜에 의해 트리거되어, 정책을 정책 레포지토리에 저장하거나, 보안 정책의 적용 및/또는 정책 레포지토리로의 정책의 저장을 로깅하거나, 이들의 일부 조합이 이뤄질 수 있다.
이벤트-구동 플랫폼(1310)이 이벤트(1308)가 발생할 때를 결정하고 이벤트 트리거에 응답하여 커스텀 로직을 수행할 수 있다. 이벤트 트리거가, 예를 들어, 정책이 적용될 때 검출될 수 있거나 차후에, 가령, 비동기(가령, 매일 실행되는) 프로세스가 로깅 이벤트를 프로세싱하고 보안 정책이 적용되었음을 검출하는 경우, 결정될 수 있다. 이벤트-구동 플랫폼(1310)는 소프트웨어, 하드웨어, 또는 이들의 조합을 이용해 구현될 수 있다. 일부 실시예에서, 분산 컴퓨팅 자원이 이벤트에 응답하여 커스텀 로직/코드를 프로비저닝 및 로딩하고, 코드를 실행하며, 그런 다음 코드를 언로딩(unload)하며 컴퓨팅 자원을 디-프로비저닝(de-provision)할 수 있다. 이벤트-구동 플랫폼(1310)은 컴퓨팅 자원 서비스 제공자의 구성요소이거나 개별 구성요소일 수 있다.
이벤트-구동 플랫폼(1310)은 이벤트-구동 아키텍처를 이용해 구현될 수 있다. 특정 이벤트, 가령, 보안 정책을 적용하기 위한 웹 API 요청이 발생할 때, 이벤트-구동 플랫폼(1310)은 (가령, 인증 서비스에 의해) 상기 이벤트를 통지 받을 수 있고, 이벤트-구동 플랫폼은 (가령, 요청이 지향되는 정책 관리 서비스로부터) 개별적으로 획득될 수 있는 요청에 대한 추가 정보를 더 수신할 수 있다. 이벤트-구동 플랫폼(1310)은 이벤트를 핸들링하는 방법을 결정할 수 있으며, 상기 이벤트는 요청에 대해 획득된 정보를 기초로 선택된 커스텀 코드 또는 로직에 의해 부분적으로 핸들링될 수 있으며 - 예를 들어, 커스텀 로직이 보안 정책이 적용되는 자원의 유형을 기초로 보안 정책에 대해 상이할 수 있다. 일부 실시예에서, 이벤트-구동 플랫폼(1310)은 인증 서비스로부터 이벤트에 대한 통지 메시지를 구독할 수 있고 이벤트-구동 플랫폼이 통지를 수신하기 위해 구독하는 이벤트에 응답하여 인증 서비스가 콜백 함수(가령, 람다 식)를 호출할 수 있다.
이벤트-구동 플랫폼(1310)은 이벤트(1308)를 수신하고, 내부적으로(가령, 이벤트-구동 플랫폼의 구성요소를 이용해) 또는 외부적으로(가령, 또 다른 서비스로 위임함으로써) 이벤트를 핸들링하는 방법을 결정할 수 있다. 예를 들어, 이벤트-구동 플랫폼이 커스텀 로직의 리스트 중에서, 어느 것이 적용되는 보안 정책의 특정 유형 또는 적용되는 보안 정책과 연관된 그 밖의 다른 메타데이터를 기초로 호출되어야 하는지에 관한 규칙을 포함할 수 있다. 커스텀 로직으로의 보안 정책 유형의 매핑이 존재할 수 있다. 예를 들어, 제1 서비스 이름공간을 갖는 컴퓨팅 자원으로 적용되는 보안 정책을 기초로 제1 커스텀 로직이 호출될 수 있고 제2 서비스 이름공간을 갖는 컴퓨팅 자원에 적용되는 보안 정책을 기초로 제2 커스텀 로직이 호출될 수 있다.
정책 모니터링 서비스(1312)가 이벤트-구동 플랫폼(1310)에 의해 호출될 수 있다. 일부 실시예에서, 이벤트-구동 플랫폼(1310)은 정책 모니터링 서비스(1312)를 호출하고 이벤트(1308)를 트리거한 보안 정책에 대한 컨텍스트 정보를 제공함으로써, 정책 모니터링 서비스(1312)가 다양한 커스텀 로직을, 예를 들어 적용되는 정책의 다양한 파라미터를 기초로 수행할 수 있다. 예를 들어, 컴퓨팅 자원 서비스 제공자는 다양한 유형의 컴퓨팅 자원에 대한 다수의 서비스를 지원할 수 있으며, 모범 실시 규칙의 세트가 보안 정책이 적용되는 컴퓨팅 자원의 유형을 기초로 달라질 수 있다. 정책 모니터링 서비스(1312)가 자원 유형에 대한 기준 정책을 결정하고 정책 분석기 서비스(1314)를 이용해, 적용되는 정책이 기준 정책보다 더 권한 있는지 여부를 결정할 수 있다. 정책 분석기 서비스(1314)는 본 명세서에서, 가령, 도 1-12와 관련하여 기재된 것에 따를 수 있다.
정책 분석기 서비스(1314)가 적용된 정책이 적용 가능한 기준 정책보다 더 권한 있음을 가리키는 경우, 정책 모니터링 서비스(1312)가 다양한 완화 절차를 수행할 수 있다. 예를 들어, 정책 관리 서비스(1304)는 보안 정책을 적용하기 위한 웹 API 요청이 기준 정책보다 더 권한 있음을 통지 받을 수 있고 정책 관리 서비스(1304)에게 요청을 거부할 것(즉, 요청 이행 거절)을 명령할 수 있다. 일부 경우, 보안 정책을 적용하기 위한 요청의 이행이 요청이 허용되어야 한다는 정책 모니터링 서비스로부터의 지시자를 수신하는 정책 관리 서비스(1304)에게 달려 있을 수 있다. 요청자(가령, 클라이언트)가 요청의 보안 정책이 지나치게 관대하다고 통지 받을 수 있다. 일부 경우, 요청자는 보안 정책을 개정할 기회를 얻거나 이를 적용한다. 지나치게 관대한 보안 정책을 적용하는 것은, 시스템 관리자(1316)가 통지 받게 하고, 보안 정책이 차후 감사될 개별 시스템에 로깅되게 하며, 그 밖의 다른 다양한 완화를 야기할 수 있다. 물론, 조직 내 그 밖의 다른 개체, 가령, 네트워크 보안 팀 등에게 알려질 수 있다.
도 14는 시스템에 적용되는 정책을 모니터링하기 위한 프로세스(1400)의 예시를 도시한다. 일반적으로, 프로세스(1400)는 임의의 적합한 시스템, 가령, 본 명세서의 임의의 곳에 기재된 이벤트-구동 플랫폼, 가령, 도 13과 관련하여 기재된 것에 의해 수행될 수 있다. 프로세스는 하드웨어, 소프트웨어, 및 이의 조합을 이용해 구현될 수 있다. 하나의 실시예에서, 프로세스(1400)는 모니터링 루틴을 포함한다. 예를 들어, 시스템은 컴퓨팅 자원 서비스 제공자의 유입 요청을 모니터링(1402)할 수 있다. 모니터링 에이전트가 요청(가령, 웹 API 콜)에 대한 유입 트래픽을 파싱하고 요청이 정책을 적용하는지 여부(1404)를 결정하는 데 사용될 수 있다. 이 맥락에서, 모니터링 단계(1402)는 능동 모니터링 프로세스(가령, 모니터링 에이전트가 요청이 수신되었는지 여부를 결정하기 위해 로깅 시스템에게 능동적으로 폴(poll)하는 경우) 또는 수동 모니터링 프로세스(가령, 서비스 프론트엔드가 유입 요청이 정책을 적용한다는 결정 후 모니터링 에이전트를 호출하는 경우)일 수 있다.
더 일반적으로, 모니터링 에이전트는 유입 요청 자체 또는 요청에 의해 야기되는 다운스트림 효과를 추적하도록 사용될 수 있다. 예를 들어, 일부 경우, 컴퓨팅 자원 서비스 제공자로의 웹 API 요청이 서비스 프론트엔드에서 파싱되고 컴퓨팅 자원 서비스 제공자의 복수의 서비스 간에 분산된다. 일부 경우, 모니터링 에이전트는 요청이 정책 관리 서비스로 전달될 때를 검출하고 이들 요청을 파싱하여 요청이 정책을 적용하는지 여부를 결정할 수 있다. 또 다른 예를 들면, 요청이 수신될 때 일부 또는 모든 요청이 로깅 시스템에 기록될 수 있다. 로깅 시스템은 요청에 대한 정보, 가령, 호출된 특정 웹 API, API 콜의 파라미터 등을 기록할 수 있다. 모니터링 에이전트는 요청에 의해 생성된 로그를 읽음으로써 요청이 정책을 적용할 때를 결정할 수 있다. 이러한 시스템은 요청의 로깅과 동시에 수행되거나 차후에 수행될 수 있다 - 예를 들어, 모니터링 에이전트는 하루에 한 번 로그를 감사하여 시스템에 부과된 규칙을 위반할 수 있는 임의의 정책이 있는지 여부를 체크할 수 있다.
시스템이 요청이 정책을 적용하지 않는다고 결정하는 경우, 시스템은 요청을 계속 모니터링할 수 있다. 대안으로, 시스템이 요청이 보안 정책을 적용한다고 결정하는 경우, 시스템은 보안 정책의 하나 이상의 보안 권한을 적어도 부분적으로 기초로 하여 정책 검증 루틴을 선택할 수 있다(1406). 예를 들어, 정책 검증 루틴은 보안 권한의 주체 요소를 기초로 정책의 리스트로부터 선택될 수 있다 - 게스트 또는 익명 사용자와 연관된 정책 검증 루틴이 게스트 또는 익명 사용자가 수신할 수 있는 특권의 최대 권한 세트를 한정할 수 있다. 두 번째 예를 들면, 정책 검증 루틴이 보안 권한의 자원 요소로 인코딩된 서비스 이름공간을 기초로 선택될 수 있다 - 서비스 이름공간으로 특정된 특정 자원 유형에 대한 특권의 최대 권한 세트가 서비스에 따라 달라질 수 있다.
정책 검증 루틴이 선택되면, 정책 검증 루틴이 호출될 수 있다. 이벤트-구동 플랫폼이 정책 검증 루틴을 선택하고 선택된 정책 검증 루틴을 호출하는 것과 관련하여 단계들 중 적어도 일부를 수행할 수 있다. 하나 이상의 기본 정책(baseline policy)이 선택된 정책 검증 루틴과 관련하여 획득될 수 있다(1408). 시스템은 복수의 기초 정책을 가질 수 있고, 하나 이상의 기본 정책의 선택이 정책 검증 루틴 및 호출된 정책 검증 루틴을 트리거한 보안 정책에 첨부된 권한을 기초로 할 수 있다.
정책 검증 루틴에 의해 획득된 하나 이상의 기본 정책이 요청에 적용된 보안 정책에 비교될 수 있다(1410). 기준 정책이 다양한 요인, 가령, 정책을 적용하는 웹 API 요청의 입력 파라미터를 기초로 선택될 수 있다. 기본 정책은 허용되지 않아야 할 권한의 세트로 결정된 모범 실시 정책일 수 있다. 예를 들어, 기본 실시 정책은 저장 서비스의 자원이 모든 사용자에 의해 쓰기 가능함(가령, 임의의 주체, 심지어 게스트 사용자 또는 익명 사용자가 컨테이너에 쓸 수 있음)이어서는 안 된다는 것일 수 있다.
시스템은 요청에 의해 적용되는 정책이 기준 정책보다 더 권한있는지 여부를 결정할 수 있다(1412). 정책 분석기 서비스, 가령, 도 1-4와 관련하여 기재된 것이 사용되어 요청으로 적용되는 보안 정책을 기준 정책에 비교할 수 있다. 더 일반적으로, 제약 풀이법, 가령, SMT 기반 제약 풀이법(가령, Z3)이 사용되어 요청에 적용되는 보안 정책이 기준 정책보다 더 권한이 있는지 또는 동일하게 권한이 있는지 여부를 결정할 수 있다.
일부 실시예에서, 요청에 의해 적용되는 정책이 기준 정책보다 더 권한 있는지 여부를 결정하는 것이 퍼저(fuzzer)를 이용해 수행될 수 있다. 퍼저는 인터페이스로의 입력의 세트를 결정함으로써 소프트웨어 구성요소를 테스트하고 출력이 기대 값과 매칭됨을 검증하도록 구성 가능한 실행형 코드를 포함하는 소프트웨어 모듈일 수 있다. 예를 들어, 퍼저가 사용되어 룩업 테이블로부터 입력의 세트를 선택하고 연산(가령, 나눗셈)의 세트를 수행함으로써 프로세서의 산술 연산을 테스트하고 결과가 출력 룩업 테이블을 기초로 올바른지를 검증할 수 있다. 퍼저는 파라미터(가령, 주체, 동작, 및 컴퓨팅 자원)의 세트를 선택하고 요청의 보안 정책 및 기준 정책 하에서 파라미터의 세트에 대응하는 요청이 이행될 것인지 여부를 결정할 수 있다. 하나의 정책이 요청을 이행하고 다른 한 정책이 요청을 거절할 경우, 두 개의 정책의 상대적 권한성이 결정될 수 있다(가령, 하나의 정책이 다른 한 정책보다 더 권한이 있다고 결정, 두 개의 정책이 비교될 수 없다고 결정 등). 일부 실시예에서, 퍼저는 테스트하는 파라미터의 지정 리스트를 가질 수 있다. 일부 실시예에서, 퍼저는 파라미터의 세트를 랜덤하게 선택할 수 있다.
시스템이 요청의 보안 정책이 기준 정책보다 덜 권한이 있다고 결정한 경우, 이러한 정보가 지시될 수 있다. 일부 실시예에서, 정책 관리 서비스가 보안 정책을 설정하기 위한 요청을 수신할 때, 요청의 보안 정책이 앞서 기재된 방식으로 분석되어, 보안 정책이 적용 가능한 기본 정책에 부합하는지 여부를 결정할 수 있다. 일부 경우, (가령, 보안 정책을 정책 데이터베이스에 적용하는) 요청의 이행이 보안 정책이 요청에 적용되는 보안 정책이 임의의 그리고 모든 적용 가능한 정책 검증 루틴에 부합한다는 지시자의 수신 여부에 따른다. 따라서 보안 정책을 적용하기 위한 요청이 수신될 때, 요청 이행 전에 정책 관리 서비스가 정책 검증 루틴으로부터의 응답을 기다릴 수 있으며 정책 검증 루틴이 요청이 이행되어야 한다는 지시자(1416)를 제공할 수 있다. 그러나 반드시 그럴 필요는 없으며 - 일부 경우, 정책 관리 서비스가 정책 검증 루틴으로부터의 지시자를 기다리지 않고 보안 정책을 설정한다.
대안으로 시스템이 요청의 보안 정책이 기준 정책보다 더 권한이 있다고 결정한 경우, 이러한 정보가 지시될 수 있다(1414). 일부 실시예에서, 클라이언트는 GUI를 이용해 보안 정책을 적용하기 위한 요청을 제출할 수 있다. 요청의 보안 정책이 기준 정책보다 더 권한 있다고 검출한 것에 응답하여, 장애 코드(failure code)가 클라이언트에게 반환될 수 있으며, 이는 GUI로, 가령, 팝-업 윈도로 표시될 수 있다. 클라이언트가 명령어 라인 인터페이스를 이용하는 경우, 장애 코드가 텍스트로서 인-라인으로 표시될 수 있다.
일부 실시예에서, 시스템은 요청의 보안 정책과 기준 정책이 동치성이 없다고 결정하기에 충분한 파라미터의 세트를 더 제공할 수 있다. 정책 분석기 서비스, 가령, 도 1-4와 관련하여 기재된 것이 본 명세서의 그 밖의 다른 곳, 가령, 도 12와 관련하여 기재되는 기법을 이용한다.
요청의 보안 정책과 기준 정책이 동치인 경우, 시스템은 다양한 적합한 동작을 수행할 수 있다. 일부 실시예에서, 시스템이 보안 정책이 기준 정책보다 더 권한 있다고 결정한 경우와 동일하게 취급될 수 있다. 대안으로, 시스템이 보안 정책이 기준 정책보다 덜 권한 있다고 결정한 경우와 동일하게 취급될 수 있다. 시스템이 보안 정책들이 동치일 때를 핸들링하는 방식이 설정 가능한 셋팅일 수 있다.
일부 실시예에서, 보안 정책이 비교되는 복수의 기본 정책이 존재할 수 있다. 이러한 경우, 요청에 의해 적용되는 보안 정책이 각각의 기준 정책에 개별적으로 비교될 수 있다. 이들 비교는 서로 순차적으로 이뤄질 뿐 아니라 병렬로도 이뤄질 수 있다.
도 15는 본 발명의 실시예에 따라 구현될 수 있는 그래픽 사용자 인터페이스(GUI)를 보여주는 다이어그램(1500)을 도시한다. 일부 예시에서, GUI는 클라이언트 컴퓨팅 디바이스를 통해 구현되고 사용자, 가령, 클라이언트(가령, 본 명세서에 기재된, 가령, 도 1-4와 관련하여 기재된 것)에게 표시될 수 있다. GUI는 웹페이지, 애플리케이션 등의 일부로서 표시될 수 있다.
제1 그래픽 사용자 인터페이스(1502)는 다이어그램(1500) 내에 나타난다. 제1 그래픽 사용자 인터페이스(1502)는 제1 입력 영역(1504), 제2 입력 영역(1506), 버튼(1508), 및 결과의 시각적 표시자(1510)를 포함할 수 있다. 제1 입력 영역(1504)은 클라이언트가 정책을 입력할 수 있는 GUI의 영역일 수 있다. 예를 들어, 제1 입력 영역(1504)은 클라이언트가 정책, 가령, 본 명세서의 임의의 곳에 기재된 것을 입력할 수 있는 텍스트 박스일 수 있다. 클라이언트는 몇 가지 방식으로, 가령, 정책을 텍스트 박스 내에 타이핑함으로써(가령, 터치스크린 키보드 또는 물리 키보드를 이용), 클립보드로부터 정책을 붙여오기 등을 함으로써, 정책을 입력할 수 있다. GUI는 제1 입력 영역(1504)으로 입력되는 정책과 상이할 수 있는 제2 정책에 대한 입력 메커니즘을 지원할 수 있는 제2 입력 영역(1506)을 더 포함할 수 있다. GUI는 또한, 눌리면, 입력 영역(1504 및 1506)에 포함되는 정책의 권한성을 분석하는 데 이용될 수 있는 버튼(1508)을 포함할 수 있다. 예를 들어, 클라이언트 컴퓨팅 디바이스로 표시되는 GUI 상의 "제출" 버튼(1508)을 누르는 것이 웹 API 요청을 정책 분석기 서비스(가령, 도 1-4와 관련하여 기재된 것)로 제출하여, 제1 입력 영역(1504)에 포함된 제1 정책과 제2 입력 영역(1506)에 포함된 제2 정책의 권한성을 비교할 수 있다. 컴퓨팅 자원 서비스 제공자, 정책 분석기 서비스, 또는 본 명세서에 기재된 그 밖의 다른 적절한 시스템이 요청을 이행하는 데 사용될 수 있다. 웹 API 요청에 대한 응답이 시각적 표시자(1510) 영역 및 GUI의 그 밖의 다른 영역에서 표시될 수 있다. 예를 들어, 도 15에 도시된 GUI(1502)가 두 개의 정책이 동치라는 시각적 표시자(1510)를 두 개의 등호 "=="를 통해 제공할 수 있고 또한 GUI의 임의의 곳에 정책들이 동치임을 더 설명하는 텍스트를 더 포함할 수 있다. 일부 실시예에서, GUI는 두 정책의 동치성에 대한 추가 정보를 표시할 수 있다. 일부 경우, 두 개의 정책이 동치성을 갖지 않을 때, GUI는 두 개의 정책이 동치성을 갖지 않는 예시를 제공할 수 있는 파라미터의 세트를 표시할 수 있다. 예를 들어, 파라미터의 세트가 주체, 동작, 및 컴퓨팅 자원을 포함할 수 있으며 제1 보안 정책을 파라미터의 세트로 적용하는 것이 제1 결과(가령, 액세스 허가)를 도출하고, 제2 보안 정책을 파라미터의 동일 세트로 적용하는 것이 상이한 결과(가령, 액세스 거부)를 도출하도록 나열될 수 있다.
제2 그래픽 사용자 인터페이스(1512)가 다이어그램(1500) 내에 나타난다. 제2 그래픽 사용자 인터페이스(1512)는 입력 영역(1514), 드롭-다운 리스트(1516), 드롭-다운 리스트를 펼치도록 사용될 수 있는 드롭-다운 화살표(1518), 버튼(1520), 및 결과의 시각적 표시자(1522)를 포함할 수 있다. 제2 그래픽 사용자 인터페이스는 제1 그래픽 사용자 인터페이스(1502)와 관련하여 앞서 기재된 기법을 이용해 구현될 수 있다. 일부 실시예에서, 입력 영역(1514)은 본 명세서에 기재된 바에 따를 수 있다. 드롭-다운 리스트(1516)는 하나 이상의 지정 정책, 가령, 앞서 기재된 기준 정책을 기술하는 아이템의 리스트일 수 있다. 드롭-다운 리스트의 아이템은 다양한 지정 정책, 가령, 기준 정책의 기술을 포함할 수 있고, 상기 기재는 각자의 기저 정책, 가령, JSON 포맷으로 된 정책으로 매핑될 수 있다. 일부 실시예에서, 드롭-다운 화살표(1518)를 누름으로써 드롭-다운 리스트(1516)는 펼쳐져서 리스트의 복수의 정책을 보여줄 수 있다. 본 명세서에 기재된 바와 같이, 버튼(1520)이 사용되어 두 개의 정책을 비교하기 위한 웹 API 요청을 제출할 수 있다. 예를 들어, 클라이언트가 제2 그래픽 사용자 인터페이스(1512)에 나타난 "제출" 버튼(1520)을 누를 때, 시스템은 입력 영역(1514)에 포함된 정책과 드롭-다운 리스트 아이템을 이들의 대응하는 정책에 매핑하는 매핑으로부터 획득된 제2 정책을 비교하기 위한 웹 API 요청을 제출할 수 있다. 두 번째 예시로서, 클라이언트가 버튼(1520)을 누를 때, 시스템은 입력(1514) 및 지정 정책, 가령, 기준 정책에 대응하는 식별자를 포함하는 웹 API 요청을 제출할 수 있고, 상기 요청을 수신하는 서비스가 대응하는 정책으로의 식별자의 매핑을 수행할 수 있다. 컴퓨팅 자원 서비스 제공자, 정책 분석기 서비스, 또는 본 명세서에 기재된 그 밖의 다른 적절한 시스템이 요청을 이행하는 데 사용될 수 있다. 웹 API 요청에 대한 응답이 시각적 표시자(1522) 영역뿐 아니라 GUI의 또 다른 영역 내에 표시될 수 있다. 예를 들어, 도 15에 도시된 GUI(1512)가 입력 영역의 정책과 드롭-다운 리스트의 정책이 동치라는 시각적 표시자(1522)를 두 개의 등호 "=="를 통해 제공할 수 있고 또한 GUI의 임의의 곳에 정책들이 동치임을 더 설명하는 텍스트를 더 포함할 수 있다. 일부 실시예에서, GUI는 두 정책의 동치성에 대한 추가 정보를 표시할 수 있다. 일부 경우, 입력 영역의 정책과 드롭-다운 리스트의 정책이 동치성을 갖지 않을 때, GUI는 두 개의 정책이 동치성을 갖지 않는 예시를 제공할 수 있는 파라미터의 세트를 표시할 수 있다. 예를 들어, 파라미터의 세트가 주체, 동작, 및 컴퓨팅 자원을 포함할 수 있으며 입력 영역(1514)의 보안 정책을 파라미터의 세트로 적용하는 것이 제1 결과(가령, 액세스 허가)를 도출하고, 반면에 선택된 드롭-다운 아이템에 대응하는 보안 정책을 파라미터의 동일 세트로 적용하는 것이 상이한 결과(가령, 액세스 거부)를 도출하도록 나열될 수 있다.
도 16은 다양한 실시예에 따르는 양태를 구현하기 위한 예시적 환경(1600)의 양태를 도시한다. 알다시피, 웹-기반 환경이 설명 목적으로 사용되지만, 다양한 실시예를 구현하기 위해 상이한 환경이 경우에 따라 사용될 수 있다. 환경은 요청, 메시지, 또는 정보를 적절한 네트워크(1604)를 통해 전송 및/또는 수신하고, 일부 실시예에서, 디바이스의 사용자에게 정보를 다시 전달하도록 동작 가능한 임의의 적절한 디바이스를 포함할 수 있는 전자 클라이언트 디바이스(1602)를 포함한다. 이러한 클라이언트 디바이스의 예시는 개인 컴퓨터, 셀 폰, 핸드헬드 메시징 디바이스, 랩톱 컴퓨터, 태블릿 컴퓨터, 셋-톱 박스, 개인용 데이터 어시스턴스, 임베디드 컴퓨터 시스템, 전자 북 리더 등을 포함한다. 네트워크는 임의의 적절한 네트워크, 가령, 인트라넷, 인터넷, 셀룰러 네트워크, 로컬 영역 네트워크, 위성 네트워크 또는 그 밖의 다른 임의의 이러한 네트워크 및/또는 이들의 조합을 포함할 수 있다. 이러한 시스템을 위해 사용되는 구성요소가 적어도 부분적으로 선택된 네트워크 및/또는 환경의 유형에 따라 달라질 수 있다. 이러한 네트워크를 통해 통신하기 위한 많은 프로토콜 및 구성요소가 공지되어 있으며 본 명세서에서 상세히 기재되지 않을 것이다. 네트워크를 통한 통신이 유선 또는 무선 연결 및 이들의 조합에 의해 활성화될 수 있다. 이 예시에서, 네트워크는 환경이 요청을 수신하고 이에 응답하여 콘텐츠를 서비스하기 위한 웹 서버(1606)를 포함할 때 인터넷 및/또는 그 밖의 다른 공개-어드레싱 가능한 통신 네트워크를 포함하지만, 그 밖의 다른 네트워크에 대해 유사한 목적을 서비스하는 대안 디바이스가 해당 분야의 통상의 기술자에게 자명할 것이다.
예시적 환경이 적어도 하나의 애플리케이션 서버(1608) 및 데이터 저장소(1610)를 포함한다. 연쇄되거나 그 밖의 다른 방식으로 구성될 수 있으며 작업, 가령, 적절한 데이터 저장소로부터 데이터를 획득하는 작업을 수행하기 위해 상호작용할 수 있는 복수의 애플리케이션 서버, 레이어 또는 그 밖의 다른 요소, 프로세스 또는 구성요소가 존재할 수 있음이 이해되어야 한다. 본 명세서에서 사용될 때 서버는 다양한 방식으로, 가령, 하드웨어 디바이스 또는 가상 컴퓨터 시스템으로 구현될 수 있다. 일부 맥락에서, 서버는 컴퓨터 시스템 상에서 실행되는 프로그래밍 모듈을 지칭할 수 있다. 본 명세서에서 사용될 때, 달리 언급되거나 문맥 상 자명하지 않은 경우, 용어 "데이터 저장소(data store)"는 데이터를 저장, 액세스 및 불러올 수 있는 임의의 디바이스 또는 디바이스의 조합을 지칭하며, 임의의 표준, 분산, 가상 또는 클러스터링된 환경에서, 데이터 서버, 데이터베이스, 데이터 저장 디바이스 및 데이터 저장 매체의 임의의 조합 및 개수를 포함할 수 있다. 애플리케이션 서버는 클라이언트 디바이스에 대한 하나 이상의 애플리케이션의 양태를 실행하기 위해 필요에 따라 데이터 저장소와 통합하고, 애플리케이션을 위한 데이터 액세스 및 비즈니스 로직의 일부 또는 전부를 핸들링하기 위한 임의의 적절한 하드웨어, 소프트웨어 및 펌웨어를 포함할 수 있다. 애플리케이션 서버는 데이터 저장소와 협업하는 액세스 제어 서비스를 제공하고 콘텐츠, 비제한적 예를 들면, 사용자에게 제공되는 데 사용될 수 있는 텍스트, 그래픽, 오디오, 비디오 및/또는 그 밖의 다른 콘텐츠를 생성할 수 있으며, 상기 콘텐츠는 웹 서버에 의해 HTML(HyperText Markup Language), XML(Extensible Markup Language), JavaScript, CSS(Cascading Style Sheets), JSON(JavaScript Object Notation) 및/또는 또 다른 적절한 클라이언트-측 구조화된 언어의 형태로 사용자에게 서비스될 수 있다. 클라이언트 디바이스로 전송되는 콘텐츠가 클라이언트 디바이스에 의해 처리되어 하나 이상의 형태, 비제한적 예를 들면, 사용자가 청각적, 시각적, 및/또는 그 밖의 다른 감각적으로 지각 가능한 형태로 콘텐츠를 제공할 수 있다. 모든 요청 및 응답의 핸들링 뿐 아니라 클라이언트 디바이스(1602)와 애플리케이션 서버(1608) 간 콘텐츠의 전달이 PHP를 이용해 웹 서버에 의해 핸들링될 수 있다: PHP(Hypertext Preprocessor), Python, Ruby, Perl, Java, HTML, XML, JSON 및/또는 이 예시에서 또 다른 적절한 서버-측 구조화된 언어. 또한, 단일 디바이스에 의해 수행되는 본 명세서에 기재된 동작이, 문맥상 달리 명확하지 않는 한, 분산 및/또는 가상 시스템을 형성할 수 있는 복수의 디바이스에 의해 집합적으로 수행될 수 있다.
데이터 저장소(1610)는 본 발명의 특정 양태와 관련된 데이터를 저장하기 위한 복수의 개별 데이터 테이블, 데이터베이스, 데이터 문서, 동적 데이터 저장 스킴 및/또는 그 밖의 다른 데이터 저장 메커니즘 및 매체를 포함할 수 있다. 예를 들어, 도시된 데이터 저장소는 프로덕션 측을 위해 콘텐츠를 서비스하는 데 사용될 수 있는 프로덕션 데이터(1612) 및 사용자 정보(1616)를 저장하기 위한 메커니즘을 포함할 수 있다. 데이터 저장소는 또한 보고, 분석, 또는 그 밖의 다른 목적으로 사용될 수 있는 로그 데이터(1614)를 저장하기 위한 메커니즘을 포함하는 것으로 도시된다. 데이터 저장소에 저장될 필요가 있을 수 있는 그 밖의 다른 많은 양태, 가령, 페이지 이미지 정보 및 액세스 권한 정보가 존재할 수 있고, 이들은 앞서 나열된 메커니즘 중 임의의 것에 적절하게 저장되거나 데이터 저장소(1610) 내 추가 메커니즘에 저장될 수 있는 것으로 이해되어야 한다. 데이터 저장소(1610)는, 자신과 연관된 로직을 통해, 애플리케이션 서버(1608)로부터 명령을 수신하며, 이에 대한 응답으로 데이터를 획득, 업데이트, 또는 그 밖의 다른 방식으로 처리하도록 동작 가능하다. 애플리케이션 서버(1608)는 수신된 명령에 응답하여 정적 데이터, 동적 데이터, 또는 정적 데이터와 동적 데이터의 조합을 제공할 수 있다. 동적 데이터, 가령, 웹 로직(블로그), 쇼핑 애플리케이션, 뉴스 서비스, 및 그 밖의 다른 이러한 애플리케이션에서 사용되는 데이터가 본 명세서에 기재된 바와 같이 서버측 구조화된 언어에 의해 생성되거나 애플리케이션 서버 상에서 동작하거나 이의 제어 하에 있는 콘텐츠 관리 시스템("CMS")에 의해 제공될 수 있다. 하나의 예를 들면, 사용자는, 사용자가 동작시키는 디바이스를 통해, 특정 유형의 아이템에 대한 검색 요청을 제출할 수 있다. 이 경우, 데이터 저장소는 사용자의 신원을 검증하기 위한 사용자 정보를 액세스하고 카탈로그 세부사항 정보를 액세스하여 이러한 유형의 아이템에 대한 정보를 획득할 수 있다. 그런 다음 사용자가 사용자 디바이스(1602) 상의 브라우저를 통해 볼 수 있는 웹 페이지 상의 결과 리스팅으로 정보가 사용자에게 반환될 수 있다. 특정 관심 아이템에 대한 정보가 브라우저의 전용 페이지나 윈도로 보여질 수 있다. 그러나 본 발명의 실시예는 웹 페이지의 맥락으로 반드시 한정되는 것은 아니며, 요청이 반드시 콘텐츠 요청일 필요는 없는 일반적인 요청 처리에 더 일반적으로 적용될 수 있다.
각각의 서버는 일반적인 관리 및 상기 서버의 동작에 대한 실행 프로그램 명령을 제공하는 운영 체제를 포함할 것이며 일반적으로, 서버의 프로세서에 의해 실행될 때(즉, 실행 결과로서) 서버가 자신의 의도된 기능을 수행하게 하는 명령을 저장하는 컴퓨터-판독 저장 매체(가령, 하드 디스크, 랜덤 액세스 메모리, 리드 온리 메모리 등)를 포함할 것이다.
하나의 실시예에서, 환경은하나 이상의 컴퓨터 네트워크 또는 직접 연결을 이용해 통신 링크를 통해 인터커넥트되는 복수의 컴퓨터 시스템 및 구성요소를 이용하는 분산 및/또는 가상 컴퓨팅 환경이다. 그러나 해당 분야의 통상의 기술자라면 이러한 시스템이 도 16에 도시된 것보다 많거나 적은 수의 구성요소를 갖는 시스템에서 동일하게 잘 동작할 수 있음을 알 것이다. 따라서 도 16의 시스템(1600)의 도시는 예시이며 본 발명의 범위를 한정하지 않는 것으로 이해되어야 한다.
본 발명의 실시예가 다음의 항목을 고려하여 기술될 수 있다:
1. 컴퓨터로 구현되는 방법으로서, 다음을 포함하는 컴퓨터로 구현되는 방법:
인터페이스를 통해 다음을 특정하는 정보를 수신하는 단계:
제1 보안 권한 세트를 인코딩하는 제1 보안 정책, 및
제2 보안 권한 세트를 인코딩하는 제2 보안 정책,
제1 보안 권한 세트를 적어도 부분적으로 기초로 하여 제1 명제 논리 표현을 결정하는 단계,
제2 보안 권한 세트를 적어도 부분적으로 기초로 하여 제2 명제 논리 표현을 결정하는 단계,
제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하기에 충분한 파라미터의 세트를 식별하여 제1 보안 정책을 파라미터의 세트에 적용하는 것이 상기 파라미터의 세트에 연관된 컴퓨팅 자원으로의 액세스의 거부를 야기하고 제2 보안 정책을 상기 파라미터의 세트에 적용하는 것이 컴퓨팅 자원으로의 액세스의 허가를 도출하는 단계, 및
인터페이스를 통해 다음을 제공하는 단계:
제1 보안 정책과 제2 보안 정책이 동치성이 없다는 지시자, 및
상기 파라미터의 세트.
2. 제1항목에 있어서, 제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하는 단계는 SMT(satisfiability modulo theories) 풀이법을 이용해 제1 명제 논리 및 제2 명제 논리를 적어도 부분적으로 기초로 하여 생성된 제약이 만족 가능한지 여부를 결정하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
3. 제2항목에 있어서, 제1 명제 논리 및 제2 명제 논리를 적어도 부분적으로 기초로 하여 생성된 제약이 SMT-LIB 표준에 따르는, 컴퓨터로 구현되는 방법.
4. 제1항목 내지 제3항목 중 어느 한 항목에 있어서, 제1 보안 정책과 제2 보안 정책이 동치성이 없다는 지시자는 제1 보안 정책이 제2 보안 정책보다 더 권한 있는지 여부의 지시자를 포함하는, 컴퓨터로 구현되는 방법.
5. 시스템으로서, 다음을 포함하는 시스템:
하나 이상의 프로세서, 및
실행될 때, 시스템으로 하여금 다음을 수행하게 하는 컴퓨터-실행형 명령을 저장하는 메모리:
제1 보안 권한 세트를 적어도 부분적으로 기초로 하여 제1 명제 논리를 결정하고,
제2 보안 권한 세트를 적어도 부분적으로 기초로 하여 제2 명제 논리를 결정하며,
제1 명제 논리와 제2 명제 논리를 이용해 제1 명제 논리와 제2 명제 논리가 동치성이 없다고 결정하고,
제1 보안 권한 세트와 제2 보안 권한 세트가 동치성이 없다는 지시자를 제공하는 것.
6. 제5항목에 있어서, 제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하는 컴퓨터-실행형 명령은, 실행되는 경우, 시스템으로 하여금 SMT(satisfiability modulo theories) 풀이법을 이용해 제1 명제 논리 및 제2 명제 논리를 적어도 부분적으로 기초로 하여 생성된 제약이 만족 가능한지 여부를 결정하게 하는 컴퓨터-실행형 명령을 더 포함하는, 시스템.
7. 제5항목 또는 제6항목에 있어서, 제1 보안 권한 세트가 제1 정책에 포함되고 제2 보안 권한 세트가 제2 정책에 포함되는, 시스템.
8. 제6항목에 있어서, 제1 명제 논리 및 제2 명제 논리를 적어도 부분적으로 기초로 하여 생성된 제약은 CVC 포맷 또는 DIMACS 포맷에 따르는, 시스템.
9. 제5항 내지 제8항목 중 어느 한 항목에 있어서, 제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하는 컴퓨터-실행형 명령은 실행될 때 시스템으로 하여금 다음을 하게 하는 컴퓨터 실행형 명령을 더 포함함:
제1 보안 권한 세트의 액세스 허가에 대응하는 제1 제약 세트를 생성하고,
제1 보안 권한 세트의 액세스 거부에 대응하는 제2 제약 세트를 생성하는 것.
10. 제9항목에 있어서, 제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하는 컴퓨터-실행형 명령은, 실행되는 경우, 시스템으로 하여금, 제1 보안 권한 세트의 액세스 중립 제약에 대응하는 제3 제약 세트를 생성하게 하는 컴퓨터 실행형 명령을 더 포함하는, 시스템.
11. 제5항목 내지 제10항목 중 어느 한 항목에 있어서, 제2 보안 권한 세트는 지정된 복수의 보안 권한 세트로부터 제2 보안 권한 세트를 사용자가 선택함으로써 획득되는, 시스템.
12. 제5항목 내지 제11항목 중 어느 한 항목에 있어서, 제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하는 컴퓨터-실행형 명령은, 실행되는 경우, 시스템으로 하여금, 제1 명제 논리와 제2 명제 논리가 비교될 수 없음을 결정하게 하는 컴퓨터 실행형 명령을 더 포함하는, 시스템.
13. 실행형 명령이 저장된 비-일시적 컴퓨터-판독형 저장 매체로서, 상기 실행형 명령은 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행된 결과로서, 컴퓨터 시스템으로 하여금, 적어도 다음을 하게 하는 비-일시적 컴퓨터-판독형 저장 매체:
제1 보안 권한 세트로부터 결정된 제1 명제 논리와 제2 보안 권한 세트로부터 결정된 제2 명제 논리가 동치성이 없음을 결정하기에 충분한 제1 보안 권한 세트 또는 제2 보안 권한 세트와 연관된 보안 권한이 존재하는지 여부를 식별하는 것, 및
제1 보안 권한 세트와 제2 보안 권한 세트가 동치성이 없다는 지시자를 제공하는 것.
14. 제13항목에 있어서, 실행의 결과로서, 컴퓨터 시스템으로 하여금, 보안 권한이 존재하는지 여부를 식별하게 하는 실행형 명령은 SMT(satisfiability modulo theories) 풀이법을 이용하는 실행형 명령을 더 포함하는, 비-일시적 컴퓨터-판독형 저장 매체.
15. 제13항목 또는 제14항목에 있어서, 실행의 결과로서, 컴퓨터 시스템으로 하여금, 제1 명제 논리와 제2 명제 논리가 동치성이 없는지 여부를 결정하기에 충분한 보안 권한이 존재하는지 여부를 식별하게 하는 실행형 명령은 SAT(satisfiability) 풀이법(solver)을 이용하는 실행형 명령을 더 포함하는, 비-일시적 컴퓨터-판독형 저장 매체.
16. 제15항목에 있어서, SAT 풀이법은 BDD(binary decision diagram) SAT 풀이법인, 비-일시적 컴퓨터-판독형 저장 매체.
17. 제13항목 내지 제16항목 중 어느 한 항목에 있어서, 제1 보안 권한 세트는 적어도 다음을 식별하는, 비-일시적 컴퓨터-판독형 저장 매체:
주체(principal),
동작(action),
컴퓨팅 자원, 및
허가 결과(grant effect) 또는 거부 결과(deny effect).
18. 제17항목에 있어서, 제1 보안 권한 세트는 적어도 하나의 조건 술부를 더 식별하는, 비-일시적 컴퓨터-판독형 저장 매체.
19. 제13항목 내지 제18항목 중 어느 한 항목에 있어서, 제1 보안 권한 세트 및 제2 보안 권한 세트 중 적어도 하나가 복수의 적용된 보안 정책을 포함하는 정책 레포지토리로부터 획득되며, 적용된 보안 정책은 보안 권한 세트를 포함하는, 비-일시적 컴퓨터-판독형 저장 매체.
20. 제13항목 내지 제19항목 중 어느 한 항목에 있어서, 실행형 명령은 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행된 결과로서, 컴퓨터 시스템으로 하여금, 적어도 다음을 더 하게 하는, 비-일시적 컴퓨터-판독형 저장 매체:
제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하기에 충분한 보안 권한을 식별하고,
제1 명제 논리와 제2 명제 논리의 동치성을 결정하기 위한 요청에 대한 응답의 일부로서 식별된 보안 권한을 제공하는 것.
21. 컴퓨터로 구현되는 방법으로서, 다음을 포함하는 컴퓨터로 구현되는 방법:
애플리케이션 프로그래밍 인터페이스 콜들의 로그(log)로부터 기록(record)을 액세스하는 단계 - 상기 기록은 애플리케이션 프로그래밍 인터페이스 콜들 중 하나의 애플리케이션 프로그래밍 인터페이스 콜에 대응함 - ,
상기 기록을 적어도 부분적으로 기초로 하여, 애플리케이션 프로그래밍 인터페이스 콜은 하나 이상의 컴퓨팅 자원으로의 액세스를 허가 또는 거부하기 위해 사용될 수 있는 제1 정책을 적용함을 결정하는 단계,
정책 검증 루틴을 호출하는 단계 - 정책 검증 루틴은 다음을 포함함:
제1 정책을 적어도 부분적으로 기초로 하여 복수의 보안 정책으로부터 기준 정책을 선택하기,
제1 정책과 연관된 제1 보안 권한 세트를 적어도 부분적으로 기초로 하여 제1 명제 논리 표현을 결정하기,
기준 정책과 연관된 제2 보안 권한 세트를 적어도 부분적으로 기초로 하여 제2 명제 논리 표현을 결정하기, 및
제1 명제 논리 표현이 제2 명제 논리 표현보다 더 권한 있는지 여부를 결정하기, 및
제1 명제 논리 표현이 제2 명제 논리 표현보다 더 권한 있음을 결정함에 응답하여, 제1 정책을 수정 또는 철회하는 완화 루틴을 수행하는 단계.
22. 제21항목에 있어서, SMT(satisfiability modulo theories) 풀이법은 제1 명제 논리 표현이 제2 명제 논리 표현보다 더 권한 있는지 여부를 결정하는 것의 일부로서 이용되는, 컴퓨터로 구현되는 방법.
23. 제21항목 또는 제22항목에 있어서, 완화 루틴은 제1 정책이 액세스를 허용하는 적어도 하나의 컴퓨팅 자원으로의 액세스를 거부하기를 포함하는, 컴퓨터로 구현되는 방법.
24. 제21항목 내지 제23항목 중 어느 한 항목에 있어서, 제1 명제 논리 표현이 제2 명제 논리 표현보다 더 권한 있음을 결정하는 단계는 파라미터의 세트를 식별하는 단계를 포함하며,
상기 파라미터의 세트는 주체(principal), 동작(action), 및 컴퓨팅 자원을 식별하며,
제1 정책을 파라미터의 세트에 적용하는 것은 컴퓨팅 자원으로의 액세스가 허가되게 하며,
기준 정책을 파라미터의 세트에 적용하는 것은 컴퓨팅 자원으로의 액세스가 거부되게 하는, 컴퓨터로 구현되는 방법.
25. 시스템으로서, 하기를 포함하는 시스템:
하나 이상의 프로세서, 및
실행될 때, 시스템으로 하여금 다음을 수행하게 하는 컴퓨터-실행형 명령을 저장하는 메모리:
복수의 수신된 애플리케이션 프로그래밍 인터페이스 콜을 적어도 부분적으로 기초로 하여, 복수 중 하나의 애플리케이션 프로그래밍 인터페이스 콜이 하나 이상의 컴퓨팅 자원으로의 액세스를 허가 또는 거부하기 위해 사용될 수 있는 제1 정책을 적용함을 결정하고,
정책 검증 루틴을 호출하는 것 - 시스템으로 하여금 정책 검증 루틴을 호출하게 하는 명령은 실행되는 경우 시스템으로 하여금 다음을 하게 함:
복수의 지정 보안 정책으로부터 하나의 기준 정책을 선택하기,
명제 논리를 포함하는 제1 표현으로의 제1 정책의 제1 매핑 및 명제 논리를 포함하는 제2 표현으로의 기준 정책의 제2 매핑을 적어도 부분적으로 기초로 하여 제약 세트를 결정하기,
제약 세트가 만족 가능한지 여부를 적어도 부분적으로 기초로 하여 제1 정책이 기준 정책보다 더 권한 있는지 여부를 결정하기, 및
제1 정책이 기준 정책보다 더 권한 있는지 여부를 결정한 것을 적어도 부분적으로 기초로 정보를 전송하기.
26. 제25항목에 있어서, 제1 표현은 1차 논리식을 더 포함하는, 시스템.
27. 제25항목 또는 제26항목에 있어서, 시스템으로 하여금 제1 정책이 기준 정책보다 더 권한 있는지 여부를 결정하게 하는 명령은, 실행되는 경우, 시스템으로 하여금, SMT(satisfiability modulo theories) 풀이법을 이용해 제약 세트가 만족 가능한지 여부를 평가하게 하는, 시스템.
28. 제27항목에 있어서, Z3 풀이법이 SMT 풀이법인, 시스템.
29. 제25항목 내지 제28항목 중 어느 한 항목에 있어서, 컴퓨터-실행형 명령은, 실행되는 경우, 시스템으로 하여금 다음을 하게 하는 시스템:
제1 정책이 액세스를 가능하게 하는 모든 컴퓨팅 자원으로의 액세스를 거부하고,
제1 정책을 적용한 애플리케이션 프로그래밍 인터페이스 콜과 연관된 개체로, 제1 정책이 제2 정책보다 더 권한 있다는 지시자를 제공하는 것.
30. 제25항목 내지 제29항목 중 어느 한 항목에 있어서, 정책 검증 루틴은 파라미터의 세트의 지시자를 제공하기를 더 포함하며:
파라미터 세트는
주체(principal),
동작(action),
컴퓨팅 자원, 및
허가 결과(grant effect) 또는 거부 결과(deny effect)를 포함하고,
제1 정책을 파라미터 세트에 적용하는 것이 컴퓨팅 자원으로의 액세스가 허가되게 하며,
기준 정책을 파라미터의 세트에 적용하는 것이 컴퓨팅 자원으로의 액세스가 거부되게 하는, 시스템.
31. 제30항목에 있어서, 파라미터 세트는 대응하는 정책이 유효한지 여부를 정의하는 적어도 하나의 조건 술부를 더 포함하는, 시스템.
32. 제25항목 내지 제31항목 중 어느 한 항목에 있어서, 기준 정책은 애플리케이션 프로그래밍 인터페이스 콜에 인코딩되는 컴퓨팅 자원과 연관된 서비스 이름공간을 적어도 부분적으로 기초로 하여 선택되는, 시스템.
33. 실행형 명령이 저장된 비-일시적 컴퓨터-판독형 저장 매체로서, 상기 실행형 명령은 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행된 결과로서, 컴퓨터 시스템으로 하여금, 적어도 다음을 하게 하는 비-일시적 컴퓨터-판독형 저장 매체:
복수의 요청을 모니터링하는 것 - 상기 복수의 요청 중 적어도 일부 요청이 컴퓨팅 자원 서비스 제공자의 컴퓨팅 자원으로의 액세스를 허가 또는 거부하는 보안 정책을 적용함 - ,
복수의 요청 중 하나의 요청이 제1 정책을 적용한다고 식별하는 것, 및
정책 검증 루틴을 호출하는 것 - 정책 검증 루틴은 컴퓨터 시스템으로 하여금 적어도,
명제 논리를 포함하는 제1 표현으로의 제1 정책의 제1 매핑 및 명제 논리를 포함하는 제2 표현으로의 기준 정책의 제2 매핑을 적어도 부분적으로 기초로 하여 제약 세트를 결정하고,
제약 세트가 만족 가능한지 여부를 평가함으로써 제1 정책이 기준 정책보다 더 권한 있는지 여부를 결정하며,
제1 정책이 기준 정책보다 더 권한 있다는 결정에 응답하여, 완화 루틴을 수행하게 함.
34. 제33항목에 있어서, 제2 표현은 1차 논리식을 포함하는, 비-일시적 컴퓨터-판독형 저장 매체.
35. 제33항목 또는 제34항목에 있어서, 제1 정책이 기준 정책보다 더 권한 있는지 여부를 결정하는 실행형 명령은, 실행된 결과로서, 컴퓨터 시스템으로 하여금 SMT(satisfiability modulo theories) 풀이법을 이용해 제약 세트가 만족 가능한지 여부를 평가하게 하는, 비-일시적 컴퓨터-판독형 저장 매체.
36. 제35항목에 있어서, 제약은 SMT-LIB 표준에 따르는 포맷으로 인코딩되는, 비-일시적 컴퓨터-판독형 저장 매체.
37. 제33항목 내지 제36항목 중 어느 한 항목에 있어서, 제1 정책이 JSON(JavaScript Object Notation) 포맷으로 인코딩되는, 비-일시적 컴퓨터-판독형 저장 매체.
38. 제33항목 내지 제37항목 중 어느 한 항목에 있어서, 제2 정책은 지정된 복수의 보안 정책으로부터 획득되는, 비-일시적 컴퓨터-판독형 저장 매체.
39. 제33항 내지 제38항 중 어느 한 항목에 있어서, 실행형 명령은 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행된 결과로서, 컴퓨터 시스템으로 하여금, 제1 정책과 기준 정책이 동치라는 결정에 응답하여 완화 루틴을 더 수행하게 하는, 비-일시적 컴퓨터-판독형 저장 매체.
40. 제33항목 내지 제39항목 중 어느 한 항목에 있어서, 실행형 명령은 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행된 결과로서, 컴퓨터 시스템으로 하여금, 제1 정책과 기준 정책이 비교될 수 없다는 결정에 응답하여 완화 루틴을 수행하게 하는, 비-일시적 컴퓨터-판독형 저장 매체.
다양한 실시예가 다양한 동작 환경에서 구현될 수 있으며, 일부 경우 하나 이상의 사용자 컴퓨터, 다수의 애플리케이션 중 임의의 것을 동작시키는 데 사용될 수 있는 컴퓨팅 디바이스 또는 프로세싱 디바이스를 포함할 수 있다. 사용자 또는 클라이언트 디바이스가 다수의 컴퓨터 중 임의의 것, 가령, 표준 운영 체제를 실행시키는 데스크톱, 랩톱 또는 태블릿 컴퓨터뿐 아니라 모바일 소프트웨어를 실행시키고 다수의 네트워킹 및 메시징 프로토콜을 지원할 수 있는 셀룰러, 무선 및 핸드헬드 디바이스까지를 포함할 수 있다. 이러한 시스템은 또한 다양한 상용화된 운영 체제 중 임의의 것 및 개발 및 데이터베이스 관리 등의 목적의 그 밖의 다른 알려진 애플리케이션을 실행시키는 다수의 워크스테이션을 포함할 수 있다. 이들 디바이스는 그 밖의 다른 전자 디바이스, 가령, 더미 단말기, 씬-클라이언트, 게임 시스템 및 네트워크를 통해 통신할 수 있는 그 밖의 다른 디바이스를 포함할 수 있다. 이들 디바이스는 네트워크를 통해 통신할 수 있는 가상 디바이스, 가령, 가상 머신, 하이퍼바이저 및 그 밖의 다른 가상 디바이스도 포함할 수 있다.
본 발명의 다양한 실시예가 다양한 상용화된 프로토콜, 가령, TCP/IP(Transmission Control Protocol/Internet Protocol), UDP(User Datagram Protocol), OSI(Open System Interconnection)의 다양한 레이어에서 동작하는 프로토콜, FTP(File Transfer Protocol), UpnP(Universal Plug and Play), NFS(Network File System), CIFS(Common Internet File System) 및 AppleTalk 중 임의의 것을 이용하는 통신을 지원하기 위해 해당 분야의 통상의 기술자에게 익숙할 적어도 하나의 네트워크를 이용한다. 네트워크는, 예를 들어, 로컬 영역 네트워크, 광역 네트워크, 가상 사설 네트워크, 인터넷, 인트라넷, 익스트라넷, 공중 교환 전화 네트워크, 적외선 네트워크, 무선 네트워크, 위성 네트워크, 및 이들의 임의의 조합일 수 있다. 일부 실시예에서, 연결-지향적 프로토콜이 네트워크 엔드포인트들 간에 통신하는 데 사용될 수 있다. 연결-지향적 프로토콜(때때로 연결-기반 프로토콜이라고도 지칭됨)은 정렬된 스트림으로 데이터를 전송할 수 있다. 연결-지향적 프로토콜은 신뢰성이거나 비신뢰성일 수 있다. 예를 들어, TCP 프로토콜은 신뢰성 연결-지향 프로토콜이다. ATM(Asynchronous Transfer Mode) 및 프레임 릴레이(Frame Relay)가 비신뢰성 연결-지향 프로토콜이다. 연결-지향 프로토콜은 보장된 순서 없이 패킷을 전송하는 패킷-지향 프로토콜, 가령, UDP와 대비된다.
웹 서버를 이용하는 실시예에서, 웹 서버는 다양한 서버 또는 미드-티어 애플리케이션, 가령, HTTP(Hypertext Transfer Protocol) 서버, FTP 서버, CGI(Common Gateway Interface) 서버, 데이터 서버, Java 서버, Apache 서버, 및 비즈니스 애플리케이션 서버 중 임의의 것을 실행시킬 수 있다. 서버(들)는 또한, 가령, 임의의 프로그래밍 언어, 가령, Java®, C, C# 또는 C++ 또는 임의의 스크립팅 언어, 가령, Ruby, PHP, Perl, Python 또는 TCL 및 이들의 조합으로 써진 하나 이상의 스크립트 또는 프로그램으로서 구현될 수 있는 하나 이상의 웹 애플리케이션을 실행함으로써, 사용자 디바이스로부터의 요청에 응답하여 프로그램 또는 스크립트를 실행할 수 있다. 서버(들)는 또한 데이터베이스 서버, 비제한적 예를 들면, Oracle®, Microsoft®, Sybase® 및 IBM®사의 서버뿐 아니라 오픈-소스 서버, 가령, MySQL, Postgres, SQLite, MongoDB 및 구조화되거나 구조화되지 않은 데이터를 저장, 검색 및 액세스할 수 있는 그 밖의 다른 임의의 서버까지 포함할 수 있다. 데이터베이스 서버는 테이블-기반 서버, 문서-기반 서버, 비구조화 서버, 관계 서버, 비-관계 서버, 또는 이들 및/또는 그 밖의 다른 데이터베이스 서버의 조합을 포함할 수 있다.
환경은 앞서 언급된 바와 같이 다양한 데이터 저장소 및 그 밖의 다른 메모리 및 저장 매체를 포함할 수 있다. 이들은 다양한 위치, 가령, 하나 이상의 컴퓨터의 로컬(및/또는 여기에 상주)이거나 네트워크를 가로지르는 임의의 또는 모든 컴퓨터의 원격지에 위치하는 저장 매체에 위치할 수 있다. 구체적인 실시예 세트에서, 정보가 해당 분야의 통상의 기술자에게 익숙한 SAN(storage-area network)에 위치할 수 있다. 마찬가지로, 컴퓨터, 서버 또는 그 밖의 다른 네트워크 디바이스의 기능을 수행하기 위한 임의의 필수 파일이 필요에 따라 로컬하게 및/또는 원격으로 저장될 수 있다. 시스템이 컴퓨터화된 디바이스를 포함하는 경우, 각각의 이러한 디바이스는 버스를 통해 전기적으로 연결될 수 있는 하드웨어 요소를 포함할 수 있으며, 상기 요소는, 예를 들어, 적어도 하나의 중앙 처리 장치("CPU" 또는 "프로세서"), 적어도 하나의 입력 디바이스(가령, 마우스, 키보드, 제어기, 터치 스크린, 또는 키패드) 및 적어도 하나의 출력 디바이스(가령, 디스플레이 디바이스, 프린터 또는 스피커)를 포함한다. 이러한 시스템은 하나 이상의 저장 디바이스, 가령, 디스크 드라이브, 광학 저장 디바이스, 및 솔리드-스테이트 저장 디바이스, 가령, RAM(random access memory) 또는 ROM(read-only memory)뿐 아니라 이동식 미디어 디바이스, 메모리 카드, 플래시 카드 등까지 포함할 수 있다.
이러한 디바이스는 또한 컴퓨터-판독형 저장 매체 리더, 통신 디바이스(가령, 모뎀, 네트워크 카드(무선 또는 유선), 적외선 통신 디바이스 등), 및 앞서 기재된 바와 같이 작업하는 메모리를 포함할 수 있다. 컴퓨터-판독형 저장 매체 리더는 원격, 로컬, 고정 및/또는 이동식 저장 디바이스뿐 아니라 컴퓨터-판독형 정보를 임시 및/또는 더 영구적으로 포함, 저장, 전송, 및 불러오기 위한 저장 매체까지 나타내는 컴퓨터-판독형 저장 매체와 연결, 또는 이를 수용하도록 구성될 수 있다. 시스템 및 다양한 디바이스는 일반적으로 적어도 하나의 작업 메모리 디바이스 내에 위치하는 소프트웨어 애플리케이션, 모듈, 서비스, 또는 또 다른 요소, 가령, 운영 체제 및 애플리케이션 프로그램, 가령, 클라이언트 애플리케이션 또는 웹 브라우저를 더 포함할 것이다. 덧붙여, 커스텀화된 하드웨어가 또한 사용되거나 및/또는 특정 요소가 하드웨어, 소프트웨어(휴대용 소프트웨어, 가령, 애플릿) 또는 둘 모두로 구현될 수 있다. 또한, 그 밖의 다른 컴퓨팅 디바이스, 가령, 네트워크 입/출력 디바이스로의 연결이 채용될 수 있다.
코드 또는 코드의 일부분을 포함하는 저장 매체 및 컴퓨터 판독형 매체가 종래 기술에 알려져 있거나 사용되는 임의의 적절한 매체, 가령, 저장 매체 및 통신 매체, 비제한적 예를 들어, 정보, 가령, 컴퓨터 판독형 명령, 데이터 구조, 프로그램 모듈 또는 그 밖의 다른 데이터의 저장 및/또는 전송을 위한 임의의 방법 또는 기법으로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체, 가령, RAM, ROM, EEPROM(Electrically Erasable Programmable Read Only Memory), 플래시 메모리 또는 또 다른 메모리 기법, CD-ROM(Compact Disc Read-Only Memory), DVD(digital versatile disk), 또는 또 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 또 다른 자기 저장 디바이스 또는 원하는 정보를 저장하도록 사용될 수 있고 시스템 디바이스에 의해 액세스될 수 있는 그 밖의 다른 임의의 매체를 포함할 수 있다. 본 명세서에 제공된 본 발명 및 설명을 기초로, 해당 분야의 통상의 기술자가 다양한 실시예를 구현하기 위한 그 밖의 다른 방식 및/또는 방법을 알 것이다.
따라서 명세서 및 도면은 한정이 아니라 예시로 간주된다. 그러나 청구항으로 제공되는 본 발명의 더 넓은 사상 및 범위 내에서 다양한 수정 및 변경이 이뤄질 수 있음이 자명할 것이다.
그 밖의 다른 변형이 본 발명의 범위 내에 있다. 따라서 개시된 기법이 다양한 수정 및 대안 구성을 가지며, 이의 특정 개시된 실시예가 도면으로 나타나며 앞서 상세히 기재되었다. 그러나 본 발명을 특정 형태로 한정하려는 의도가 아니며, 반대로, 청구항에서 정의된 본 발명의 사상 및 범위 내에 모든 변형, 대안 구성, 및 균등을 포함하려는 것이 의도이다.
개시된 실시예를 기술하는 맥락에서(특히 하기의 청구항의 맥락에서) 용어 "a" 및 "an" 및 "the" 및 이와 유사한 언급의 사용은, 본 명세서에 달리 지시되거나 맥락상 명확히 지시되지 않는 한, 단수와 복수 모두를 포함하는 것으로 해석될 것이다. 용어 "포함하는(comprising)", "갖는(having)", "포함하는(including)" 및 "포함하는(containing)"은, 달리 명시되지 않는 한 개방형 용어(즉, "~를 포함하지만 이에 한정되지 않음"을 의미)로 해석될 것이다. 용어 "연결된(connected)"은, 수정되지 않고 물리적 연결을 지칭할 때, 중간에 삽입되는 것이 있더라고, 부분적으로 또는 전적으로 포함된, 부착된, 또는 함께 결합된으로 해석될 것이다. 본 명세서에서의 값의 범위의 기재는, 본 명세서에서 달리 지칭되지 않는 한, 범위 내에서 속하는 각각의 개별 값을 개별적으로 지칭하는 속기 방법으로서 역할 하는 것으로 의도되며 각각의 개별 값은 본 명세서에 개별적으로 기재된 것처럼 본 명세서에 포함된다. 용어 "세트"(가령, "아이템 세트") 또는 "서브세트"는 달리 지칭되지 않는 한 또는 맥락상 모순되지 않는 한, 하나 이상의 숫자를 포함하는 비공집합으로 해석될 것이다. 또한, 달리 지칭되거나 문맥상 모순되지 않는 한, 대응하는 집합의 용어 "부분집합"이 대응하는 집합의 적절한 부분집합을 반드시 나타내지 않고, 부분집합 및 이에 대응하는 집합이 동일할 수 있다.
접속어, 가령, 형태 "A, B, 및 C 중 적어도 하나" 또는 "A, B 및 C 중 적어도 하나"의 구문은, 특정하게 달리 서술되거나 문맥상 자명하게 모순되지 않는 한, 아이템, 용어 등이 A 또는 B 또는 C 또는 A 및 B 및 C의 집합 중 임의의 공집합이 아닌 부분집합일 수 있음을 나타내도록 일반적으로 사용되는 맥락으로 이해된다. 예를 들어, 세 개의 구성원을 갖는 집합의 예시에서, 접속구 "A, B, 및 C 중 적어도 하나" 및 "A, B 및 C 중 적어도 하나"가 다음의 집합 중 임의의 것을 지칭한다: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. 따라서, 이러한 접속어가 일반적으로 특정 실시예가 A의 적어도 하나, B의 적어도 하나 및 C의 적어도 하나 각각이 제공될 것을 필요로 함을 의미하지는 않는다. 덧붙여, 달리 언급되거나 문맥상 모순되지 않는 한, 용어 "복수의"는 복수형인 상태를 지시한다(가령, "복수의 아이템"은 아이템 복수형을 지시한다). 복수형의 아이템의 개수는 적어도 두 개이지만, 명시적으로 또는 문맥상 지시될 때 더 많을 수 있다.
본 명세서에 기재된 프로세스의 동작은 본 명세서에 달리 지시되거나 문맥상 명백히 모순되지 않는 한 임의의 적합한 순서로 수행될 수 있다. 본 명세서에 기재된 프로세스(또는 이의 변형 및/또는 조합)는 실행 명령으로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에서 수행될 수 있고 하나 이상의 프로세서 상에서 함께 실행되는 코드(가령, 실행형 명령, 하나 이상의 컴퓨터 프로그램 또는 하나 이상의 애플리케이션)로서 구현될 수 있고, 하드웨어 또는 이의 조합으로 구현될 수 있다. 코드는 컴퓨터 판독형 저장 매체 상에, 예를 들어, 하나 이상의 프로세서에 의해 실행 가능한 복수의 명령을 포함하는 컴퓨터 프로그램의 형태로 저장될 수 있다. 컴퓨터 판독형 저장 매체는 비-일시적(non-transitory)일 수 있다. 일부 실시예에서, 코드는 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행될 때(즉, 실행 결과로서) 컴퓨터 시스템이 본 명세서에 기재된 동작을 수행하게 하는 실행형 명령이 저장된 하나 이상의 비-일시적 컴퓨터-판독형 저장 매체의 세트 상에 저장된다. 비-일시적 컴퓨터-판독형 저장 매체의 세트는 복수의 비-일시적 컴퓨터-판독형 저장 매체를 포함할 수 있으며 복수의 비-일시적 컴퓨터-판독형 저장 매체가 모든 코드를 함께 저장하는 동안 복수의 비-일시적 컴퓨터-판독형 저장 매체의 개별 비-일시적 저장 매체 중 하나 이상은 코드를 갖지 않을 수 있다. 또한, 일부 예시에서, 실행형 명령은 상이한 명령이 상이한 프로세서에 의해 실행되도록 실행된다. 예를 들어, 비-일시적 컴퓨터-판독형 저장 매체가 명령을 저장할 수 있다. 메인 CPU가 명령의 일부를 실행할 수 있으며 그래픽 프로세서 유닛이 나머지 명령을 실행할 수 있다. 일반적으로, 컴퓨터 시스템의 상이한 구성요소가 개별 프로세서를 가질 수 있으며 상이한 프로세서가 상이한 명령 서브세트를 실행할 수 있다.
따라서 일부 예시에서, 컴퓨터 시스템은 본 명세서에 기재된 프로세스의 동작을 단일 또는 집합적으로 수행하는 하나 이상의 서비스를 구현하도록 구성된다. 이러한 컴퓨터 시스템은, 예를 들어, 동작의 수행을 가능하게 하는 적용 가능한 하드웨어 및/또는 소프트웨어로 구성될 수 있다. 또한, 본 발명의 다양한 실시예를 구현하는 컴퓨터 시스템은, 일부 예시에서, 단일 디바이스일 수 있으며, 또 다른 예시에서, 분산 컴퓨터 시스템이 본 명세서에 기재된 동작을 수행하고 단일 디바이스가 모든 동작을 수행할 수 없도록 상이하게 동작하는 복수의 디바이스를 포함하는 분산 컴퓨터 시스템일 수 있다.
임의의 그리고 모든 예시의 사용, 또는 본 명세서에 제공되는 예시형 기재(예컨대, "가령")는 본 발명의 실시예를 더 잘 설명하기 위한 것에 불과하며 달리 청구되지 않는 한 본 발명의 범위를 제한하려는 것이 아니다. 명세서에서의 어떠한 기재도 본 발명의 실시에 필수적인 임의의 청구되지 않는 요소를 지시하는 것으로 해석되어서는 안 된다.
본 발명의 실시예가 본 발명을 수행하기 위한 발명자에게 알려진 최적의 모드를 포함해, 본 명세서에 기재되었다. 이들 실시예의 변형은 상기의 기재를 읽으면 해당 분야의 통상의 기술자에게 자명할 것이다. 본 발명자는 해당 분야의 기술자가 이러한 변형을 적절하게 채용함을 기대하고 본 발명자는 본 발명의 실시예가 본 명세서에 특정하게 기재된 것과 달리 실시될 수 있음을 의도한다. 따라서 본 발명의 범위는 준거법에 의해 허용되는 바와 같이 이하의 청구항에서 언급된 주제 사항의 모든 수정예 및 균등예를 포함한다. 덧붙여, 본 명세서에서 달리 지칭되거나 맥락상 명백히 모순되지 않는 한 모든 가능한 변형의 앞서 기재된 요소의 임의의 조합이 본 발명의 범위에 포함된다.
본 명세서에서 인용되는 모든 참고문헌, 가령, 간행물, 특허 출원, 및 특허가 각각의 참고문헌이 개별적으로 그리고 특정하게 참조로서 포함되도록 지시되며 그 전체가 제공되는 것과 동일한 범위까지 참조로서 포함된다.

Claims (15)

  1. 시스템으로서,
    하나 이상의 프로세서, 및
    컴퓨터-실행형 명령을 저장하는 메모리를 포함하며, 상기 컴퓨터-실행형 명령은, 실행되는 경우, 시스템으로 하여금:
    제1 보안 권한 세트를 적어도 부분적으로 기초로 하여 제1 명제 논리를 결정하게 하고,
    제2 보안 권한 세트를 적어도 부분적으로 기초로 하여 제2 명제 논리를 결정하게 하며 - 상기 제2 보안 권한 세트는 소스 VPC 엔드포인트(source VPC endpoint)가 존재하는 경우 적용가능하고 소스 VPC 엔드포인트가 존재하지 않는 경우 적용가능하지 않는 제약(constraint)을 인코딩함 - ,
    제1 명제 논리와 제2 명제 논리를 이용해 제1 명제 논리와 제2 명제 논리가 동치성이 없다고 결정하게 하고 - 상기 제1 명제 논리 및 상기 제2 명제 논리는 상기 제1 명제 논리와 상기 제2 명제 논리가 동치성이 없다고 결정하기에 충분한 정보를 형성함 - ,
    특정 VPC 엔드포인트에 대해 상이한 액세스가 허가되는 결과로서, 제1 보안 권한 세트와 제2 보안 권한 세트가 동치성이 없다는 지시자를 제공하게 하는, 시스템.
  2. 제1항에 있어서, 제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하는 컴퓨터-실행형 명령은, 실행되는 경우, 시스템으로 하여금 SMT(satisfiability modulo theories) 풀이법을 이용해 제1 명제 논리 및 제2 명제 논리를 적어도 부분적으로 기초로 하여 생성된 제약이 만족 가능한지 여부를 결정하게 하는 컴퓨터-실행형 명령을 더 포함하는, 시스템.
  3. 제1항에 있어서, 제1 보안 권한 세트가 제1 정책에 포함되고 제2 보안 권한 세트가 제2 정책에 포함되는, 시스템.
  4. 제2항에 있어서, 제1 명제 논리 및 제2 명제 논리를 적어도 부분적으로 기초로 하여 생성된 제약은 CVC 포맷 또는 DIMACS 포맷에 따르는, 시스템.
  5. 제1항에 있어서, 제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하는 컴퓨터-실행형 명령은, 실행되는 경우 시스템으로 하여금:
    제1 보안 권한 세트의 액세스 허가에 대응하는 제1 제약 세트를 생성하게 하고,
    제1 보안 권한 세트의 액세스 거부에 대응하는 제2 제약 세트를 생성하게 하는 컴퓨터 실행형 명령을 더 포함하는, 시스템.
  6. 제5항에 있어서, 제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하는 컴퓨터-실행형 명령은, 실행되는 경우, 시스템으로 하여금, 제1 보안 권한 세트의 액세스 중립 제약에 대응하는 제3 제약 세트를 생성하게 하는 컴퓨터 실행형 명령을 더 포함하는, 시스템.
  7. 제1항에 있어서, 제2 보안 권한 세트는 지정된 복수의 보안 권한 세트로부터 제2 보안 권한 세트를 사용자가 선택함으로써 획득되는, 시스템.
  8. 제1항에 있어서, 제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하는 컴퓨터-실행형 명령은, 실행되는 경우, 시스템으로 하여금, 제1 명제 논리와 제2 명제 논리가 비교될 수 없음을 결정하게 하는 컴퓨터 실행형 명령을 더 포함하는, 시스템.
  9. 실행형 명령이 저장된 비-일시적 컴퓨터-판독형 저장 매체로서, 상기 실행형 명령은 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행된 결과로서, 컴퓨터 시스템으로 하여금 적어도:
    제1 보안 권한 세트로부터 결정된 제1 명제 논리와 제2 보안 권한 세트로부터 결정된 제2 명제 논리가 동치성이 없음을 결정하기에 충분한 제1 보안 권한 세트 또는 제2 보안 권한 세트와 연관된 보안 권한이 존재하는지 여부를 식별하게 하고 - 상기 제2 보안 권한 세트는 소스 VPC 엔드포인트가 존재하는 경우 적용가능하고 소스 VPC 엔드포인트가 존재하지 않는 경우 적용가능하지 않는 제약을 인코딩함 - ,
    특정 VPC 엔드포인트에 대하여 상기 제1 보안 권한 세트 및 상기 제2 보안 권한 세트를 행사하는 것에 적어도 부분적으로 기초하여, 상기 제1 보안 권한 세트와 상기 제2 보안 권한 세트가 동치성이 없다는 지시자를 제공하게 하는, 비-일시적 컴퓨터-판독형 저장 매체.
  10. 제9항에 있어서, 실행의 결과로서, 컴퓨터 시스템으로 하여금, 보안 권한이 존재하는지 여부를 식별하게 하는 실행형 명령은 SMT(satisfiability modulo theories) 풀이법을 이용하는 실행형 명령을 더 포함하는, 비-일시적 컴퓨터-판독형 저장 매체.
  11. 제9항에 있어서, 실행의 결과로서, 컴퓨터 시스템으로 하여금, 제1 명제 논리와 제2 명제 논리가 동치성이 없는지 여부를 결정하기에 충분한 보안 권한이 존재하는지 여부를 식별하게 하는 실행형 명령은 SAT(satisfiability) 풀이법(solver)을 이용하는 실행형 명령을 더 포함하는, 비-일시적 컴퓨터-판독형 저장 매체.
  12. 제9항에 있어서, 제1 보안 권한 세트는 적어도:
    주체(principal),
    동작(action),
    컴퓨팅 자원, 및
    허가 결과(grant effect) 또는 거부 결과(deny effect)를 식별하는, 비-일시적 컴퓨터-판독형 저장 매체.
  13. 제9항에 있어서, 제1 보안 권한 세트는 적어도 하나의 조건 술부를 더 식별하는, 비-일시적 컴퓨터-판독형 저장 매체.
  14. 제9항에 있어서, 제1 보안 권한 세트 및 제2 보안 권한 세트 중 적어도 하나가 복수의 적용된 보안 정책을 포함하는 정책 레포지토리로부터 획득되며, 적용된 보안 정책은 보안 권한 세트를 포함하는, 비-일시적 컴퓨터-판독형 저장 매체.
  15. 제9항에 있어서, 실행형 명령은 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행된 결과로서, 컴퓨터 시스템으로 하여금 적어도:
    제1 명제 논리와 제2 명제 논리가 동치성이 없음을 결정하기에 충분한 보안 권한을 식별하게 하고,
    제1 명제 논리와 제2 명제 논리의 동치성을 결정하기 위한 요청에 대한 응답의 일부로서 식별된 보안 권한을 제공하게 하는, 비-일시적 컴퓨터-판독형 저장 매체.
KR1020207000122A 2017-06-29 2018-06-15 보안 정책 분석기 서비스 및 만족성 엔진 KR102299171B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/637,227 US10757128B2 (en) 2017-06-29 2017-06-29 Security policy analyzer service and satisfiability engine
US15/637,227 2017-06-29
US15/637,238 US10630695B2 (en) 2017-06-29 2017-06-29 Security policy monitoring service
US15/637,238 2017-06-29
PCT/US2018/037947 WO2019005511A1 (en) 2017-06-29 2018-06-15 SAFETY POLICY ANALYZER SERVICE AND SATISFACTION ENGINE

Publications (2)

Publication Number Publication Date
KR20200013040A KR20200013040A (ko) 2020-02-05
KR102299171B1 true KR102299171B1 (ko) 2021-09-07

Family

ID=62842301

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207000122A KR102299171B1 (ko) 2017-06-29 2018-06-15 보안 정책 분석기 서비스 및 만족성 엔진

Country Status (5)

Country Link
EP (2) EP3646555B1 (ko)
JP (3) JP6948749B2 (ko)
KR (1) KR102299171B1 (ko)
CN (3) CN110870278B (ko)
WO (2) WO2019005511A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110870278B (zh) * 2017-06-29 2021-07-16 亚马逊技术有限公司 用于安全策略监视服务的方法和系统以及存储介质
US11336527B2 (en) * 2020-06-01 2022-05-17 Hewlett Packard Enterprise Development Lp Method and system for enhanced command management in a network
CN112052448B (zh) * 2020-09-14 2023-12-12 莫毓昌 基于关键词自动识别和决策图模型的Web攻击检测方法
CN112738114B (zh) * 2020-12-31 2023-04-07 四川新网银行股份有限公司 一种网络安全策略的配置方法
EP4292244A1 (en) * 2021-02-09 2023-12-20 Cayosoft, Inc. Orchestration of administrative unit management
US20220385635A1 (en) * 2021-05-27 2022-12-01 Palo Alto Networks, Inc. Combined machine learning and formal techniques for network traffic analysis
US11943261B1 (en) * 2021-12-03 2024-03-26 Amazon Technologies, Inc. Cloud-based security service for improved compliance of mainframe workloads
TWI795312B (zh) * 2022-06-20 2023-03-01 英業達股份有限公司 適用於檢測系統的自動配置設定系統及其方法
WO2024118405A1 (en) * 2022-11-28 2024-06-06 Amazon Technologies, Inc. Authorization policy validation
CN116055170B (zh) * 2023-01-10 2024-01-23 北京微步在线科技有限公司 一种流量数据检测方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120017260A1 (en) * 2010-07-15 2012-01-19 Telcordia Technologies, Inc. Verifying access-control policies with arithmetic quantifier-free form constraints
US20150082370A1 (en) * 2013-09-19 2015-03-19 Microsoft Corporation System and method for compact form exhaustive analysis of security policies

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003186831A (ja) * 2001-12-13 2003-07-04 Sony Corp ネットワークシステム、情報処理装置および方法、記録媒体、並びにプログラム
US7552472B2 (en) * 2002-12-19 2009-06-23 International Business Machines Corporation Developing and assuring policy documents through a process of refinement and classification
US20090070853A1 (en) * 2007-09-12 2009-03-12 International Business Machines Corporation Security Policy Validation For Web Services
EP2235918B1 (en) * 2007-11-30 2017-10-11 Telecom Italia S.p.A. Enhancing enum security
JP4470997B2 (ja) * 2007-12-25 2010-06-02 富士ゼロックス株式会社 セキュリティポリシー切替装置、セキュリティポリシー切替プログラム及びセキュリティポリシー管理システム
US8756651B2 (en) * 2011-09-27 2014-06-17 Amazon Technologies, Inc. Policy compliance-based secure data access
US8914843B2 (en) * 2011-09-30 2014-12-16 Oracle International Corporation Conflict resolution when identical policies are attached to a single policy subject
EP2795504B1 (en) * 2011-12-21 2019-05-08 Akamai Technologies, Inc. Security policy editor
US20130312058A1 (en) * 2012-01-06 2013-11-21 Optio Labs, Inc. Systems and methods for enhancing mobile security via aspect oriented programming
JP5970292B2 (ja) * 2012-08-21 2016-08-17 株式会社日立製作所 ソフトウェア仕様開発支援方法及びソフトウェア仕様開発支援装置
US9519756B2 (en) * 2013-03-15 2016-12-13 Microsoft Technology Licensing, Llc Managing policy and permissions profiles
US9325739B1 (en) * 2013-04-29 2016-04-26 Amazon Technologies, Inc. Dynamic security policy generation
US9246945B2 (en) * 2013-05-29 2016-01-26 International Business Machines Corporation Techniques for reconciling permission usage with security policy for policy optimization and monitoring continuous compliance
JP6125367B2 (ja) * 2013-08-02 2017-05-10 株式会社アメリカンネットサービス 予約処理装置、予約受付端末、予約処理方法、及びコンピュータプログラム
JP6052452B2 (ja) 2013-09-17 2016-12-27 株式会社リコー 情報処理システム、情報蓄積装置及び方法
US9448859B2 (en) * 2013-09-17 2016-09-20 Qualcomm Incorporated Exploiting hot application programming interfaces (APIs) and action patterns for efficient storage of API logs on mobile devices for behavioral analysis
US10560441B2 (en) * 2014-12-17 2020-02-11 Amazon Technologies, Inc. Data security operations with expectations
US9401933B1 (en) * 2015-01-20 2016-07-26 Cisco Technology, Inc. Classification of security policies across multiple security products
JP6205512B2 (ja) * 2015-02-12 2017-09-27 株式会社日立製作所 ルール管理支援装置、およびルール管理支援方法
JP2016218611A (ja) * 2015-05-18 2016-12-22 株式会社リコー 情報処理装置、プログラムおよび情報処理システム
CN105471618A (zh) * 2015-08-03 2016-04-06 汉柏科技有限公司 一种基于防火墙的网络安全的管理方法和系统
CN110870278B (zh) * 2017-06-29 2021-07-16 亚马逊技术有限公司 用于安全策略监视服务的方法和系统以及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120017260A1 (en) * 2010-07-15 2012-01-19 Telcordia Technologies, Inc. Verifying access-control policies with arithmetic quantifier-free form constraints
US20150082370A1 (en) * 2013-09-19 2015-03-19 Microsoft Corporation System and method for compact form exhaustive analysis of security policies

Also Published As

Publication number Publication date
CN110870279B (zh) 2021-10-26
JP2023065535A (ja) 2023-05-12
WO2019005512A1 (en) 2019-01-03
CN110870278A (zh) 2020-03-06
EP4184364A1 (en) 2023-05-24
JP2021193598A (ja) 2021-12-23
JP6948749B2 (ja) 2021-10-13
EP3646555A1 (en) 2020-05-06
JP2020525898A (ja) 2020-08-27
EP3646555B1 (en) 2023-01-25
CN110870278B (zh) 2021-07-16
KR20200013040A (ko) 2020-02-05
CN114124444A (zh) 2022-03-01
JP7294739B2 (ja) 2023-06-20
CN110870279A (zh) 2020-03-06
WO2019005511A1 (en) 2019-01-03
JP7240785B2 (ja) 2023-03-16

Similar Documents

Publication Publication Date Title
US11616800B2 (en) Security policy analyzer service and satisfiability engine
US10630695B2 (en) Security policy monitoring service
KR102299171B1 (ko) 보안 정책 분석기 서비스 및 만족성 엔진
US10262142B2 (en) Systems and methods for advanced dynamic analysis scanning
US10454975B1 (en) Conditional comptuing resource policies
CN110113360B (zh) 用于访问多个计算资源服务的单组证书
US11483317B1 (en) Techniques for analyzing security in computing environments with privilege escalation
US10992657B1 (en) Multi-account entity based access control
US10951661B1 (en) Secure programming interface hierarchies
WO2019144039A1 (en) Complex application attack quantification, testing, detection and prevention
US20160087939A1 (en) Hierarchical rule development and binding for web application server firewall
US10944561B1 (en) Policy implementation using security tokens
JP6785808B2 (ja) ポリシー強制遅延
US20130019314A1 (en) Interactive virtual patching using a web application server firewall
CN107005568A (zh) 数据安全操作与预期
Takahashi et al. Web of cybersecurity: Linking, locating, and discovering structured cybersecurity information
US10460120B1 (en) Policy mediated hierarchical structures in key value stores
US10303669B1 (en) Simulating hierarchical structures in key value stores
Kellezi et al. Towards secure open banking architecture: an evaluation with OWASP
US11616787B1 (en) Mechanism to manage group of resources using virtual resource containers
De Meo et al. A formal approach to exploiting multi-stage attacks based on file-system vulnerabilities of web applications
Mihailescu et al. Attacks

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