KR20230091203A - 자동화된 패킷리스 네트워크 도달가능성 분석 - Google Patents

자동화된 패킷리스 네트워크 도달가능성 분석 Download PDF

Info

Publication number
KR20230091203A
KR20230091203A KR1020237020072A KR20237020072A KR20230091203A KR 20230091203 A KR20230091203 A KR 20230091203A KR 1020237020072 A KR1020237020072 A KR 1020237020072A KR 20237020072 A KR20237020072 A KR 20237020072A KR 20230091203 A KR20230091203 A KR 20230091203A
Authority
KR
South Korea
Prior art keywords
network
virtual network
virtual
query
client
Prior art date
Application number
KR1020237020072A
Other languages
English (en)
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 KR20230091203A publication Critical patent/KR20230091203A/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/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0866Checking the configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/22Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks comprising specially adapted graphical user interfaces [GUI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/06Generation of reports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0272Virtual private networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)

Abstract

자동화된 패킷리스 네트워크 도달가능성 분석을 위한 방법, 시스템 및 컴퓨터 판독 가능 매체가 개시된다. 호스트 컴퓨터를 포함하는 네트워크에 대한 네트워크 구성 데이터의 분석이 수행된다. 분석을 적어도 부분적으로 기반하여 다른 컴퓨터로부터 도달 가능한 호스트 컴퓨터의 하나 이상의 포트가 결정된다. 분석을 적어도 부분적으로 기반하여, 하나 이상의 포트에 대한 하나 이상의 루트(route)가 결정된다. 하나 이상의 포트와 하나 이상의 루트를 설명하는 리포트가 생성된다.

Description

자동화된 패킷리스 네트워크 도달가능성 분석{AUTOMATED PACKETLESS NETWORK REACHABILITY ANALYSIS}
많은 회사 및 기타 조직은, 예를 들어, 컴퓨팅 시스템을 같은 위치에 둔 채로(예: 로컬 네트워크의 일부로) 또는 대신에 여러 개별 지리적 위치에 위치시킨 채로(예: 하나 이상의 개인 또는 공용 중간 네트워크를 통해 연결됨) 운영을 지원하기 위해 수많은 컴퓨팅 시스템을 상호 연결하는 컴퓨터 네트워크를 운영한다. 예를 들어, 단일 조직에 의해서 그리고 이를 대신해서 운영되는 개인 데이터 센터, 고객에게 컴퓨팅 리소스를 제공하기 위해 사업으로서 엔티티에 의해서 운영되는 공용 데이터 센터와 같이 상당한 수의 상호 연결된 컴퓨팅 시스템을 수용하는 데이터 센터가 보편화되었다. 일부 공용 데이터 센터 운영자는 다양한 고객이 소유한 하드웨어에 대해 네트워크 액세스, 전원 및 보안 설치 시설을 제공하는 한편, 다른 공용 데이터 센터 운영자는 고객이 사용할 수 있는 하드웨어 리소스도 포함하는 "풀 서비스" 시설을 제공한다.
도 1은 일부 실시형태에 따른 자동화된 패킷리스 네트워크 도달가능성 분석을 위한 예시적인 시스템 환경을 도시한다.
도 2는 일부 실시형태에 따른, 분석을 지원하기 위해 가상 네트워크 검증 서비스와의 상호 작용을 포함하는 자동화된 패킷리스 네트워크 도달가능성 분석을 위한 예시적인 시스템 환경의 추가 양태를 도시한다.
도 3은 일부 실시형태에 따른, 분석 대상 컴퓨터 상의 에이전트의 사용을 포함하는 자동화된 패킷리스 네트워크 도달가능성 분석을 위한 예시적인 시스템 환경의 추가 양태를 도해한다.
도 4는 일부 실시형태에 따른, 시정 조치의 권고 및/또는 수행을 포함하는 자동화된 패킷리스 네트워크 도달가능성 분석을 위한 예시적인 시스템 환경의 추가적 양태를 도해한다.
도 5는 일부 실시형태에 따른 자동화된 패킷리스 네트워크 도달가능성 분석을 사용하여 생성된 리포트의 일 예를 도해한다.
도 6은 일부 실시형태에 따른 자동화된 패킷리스 네트워크 도달가능성 분석을 사용하고 분석 대상 컴퓨터 상의 에이전트를 사용하여 생성된 리포트의 실시예를 도해한다.
도 7은 일부 실시형태에 따른 자동화된 패킷리스 네트워크 도달가능성 분석을 위한 방법을 도해하는 흐름도이다.
도 8은 일부 실시형태에 따른 제공자 네트워크 환경에서의 가상 네트워크 검증 서비스를 도해한다.
도 9는 일부 실시형태에 따른 예시적인 가상 네트워크 검증 서비스의 컴포넌트 및 작동을 도해한다.
도 10은 일부 실시형태에 따라, 제공자 네트워크의 클라이언트에게 가상 네트워크에 관한 정보를 제공하기 위한 방법의 흐름도이다.
도 11은 일부 실시형태에 따라, 클라이언트가 가상 네트워크 검증 서비스에 설명 정보 및 쿼리를 제공하는 제공자 네트워크의 클라이언트에게 가상 네트워크에 관한 정보를 제공하는 방법의 흐름도이다.
도 12는 일부 실시형태에 따라, 클라이언트가 가상 네트워크 검증 서비스에 설명 정보 및 가상 네트워크에 액세스하는 퍼미션을 제공하는 제공자 네트워크의 클라이언트에게 가상 네트워크에 관한 정보를 제공하는 방법의 흐름도이다.
도 13은 일부 실시형태에 따른 2개 이상의 피어링된 가상 네트워크를 포함하는 제공자 네트워크 환경에서의 클라이언트의 가상 네트워크 구현을 도해한다.
도 14는 일부 실시형태에 따른 제공자 네트워크 상의 예시적인 가상 네트워크의 서브넷 및 보안 그룹을 도시한다.
도 15는 일부 실시형태에서 사용될 수 있는 예시적인 컴퓨팅 디바이스를 도시한다.
실시형태가 몇몇 실시형태 및 예시적인 도면들에 대한 실시예로서 본원에서 설명되지만, 당업자들은 실시형태가 설명된 실시형태 또는 도면에 한정되지 않는다는 점을 인식할 것이다. 도면들 및 그에 대한 상세한 설명은 실시형태를 개시된 특정 형태로 제한하려는 것이 아니라, 반대로 첨부된 청구범위에 의해 정의된 바와 같은 사상 및 범위 내에 속하는 모든 수정물, 균등물 및 대안물을 포함하고자 한다는 것을 이해해야 한다. 본원에 사용된 표제는 단지 조직적 목적을 위한 것이며, 설명 또는 청구항의 범위를 제한하기 위해 사용되는 것을 의미하지 않는다. 본 출원 전반에 걸쳐 사용되는 바와 같이, "할 수 있다(may)"라는 단어는 필수적인 의미(즉, 반드시 해야 하는 것을 의미함)가 아닌 허용적인 의미(즉, 가능성을 갖는 것을 의미함)로 사용된다. 마찬가지로, "포함한다"라는 단어는 "포함하나 한정되지 않는다"를 의미한다.
발명을 실시하기 위한 구체적인 내용
자동화된 패킷리스 네트워크 도달가능성 분석을 위한 방법, 시스템 및 컴퓨터 판독 가능 매체의 다양한 실시형태가 개시된다. 일부 실시형태에서, 네트워크 도달가능성 분석은 반드시 기존의 포트 스캔을 수행함 없이 수행된다. 포트 스캐닝에 대한 이전의 접근 방식에서, 패킷은 외부 엔티티(예: 공용 네트워크를 통해)에서 하나 이상의 컴퓨터에 있는 다양한 포트로 전송되고, 응답이 대기된다. 이러한 포트 스캔은 며칠이 걸리고 과도한 네트워크 대역폭을 사용할 수 있다. 본원에 설명된 네트워크 도달가능성 분석은, 포트에 패킷을 전송하지 않고, 컴퓨터에서 어떤 포트(있는 경우)가 예를 들어, 공용 인터넷 또는 동일한 네트워크의 다른 컴퓨터에 도달 가능한지 결정할 수 있다. 네트워크 도달가능성 분석은 또한, 외부 엔티티로부터 이러한 포트로 가는 하나 이상의 루트(route)를 결정할 수 있다. 네트워크 도달가능성 분석은 결론에 도달하기 위해 서로 다른 소스의 데이터를 결합할 수 있다. 일 실시형태에서, 네트워크 도달가능성 분석은 컴퓨터가 속한 네트워크에 대한 네트워크 구성 데이터 세트를 쿼리할 수 있다. 일 실시형태에서, 네트워크 도달가능성 분석은, 예를 들어, 어떤 프로세스가 개방된(open) 포트에서 리스닝 중인지를 결정하기 위해서, 컴퓨터에 설치된 에이전트 소프트웨어로부터 데이터를 획득할 수 있다. 네트워크 도달가능성 분석은 이의 결과의 양태, 예를 들어 임의의 개방되어 도달 가능한 포트, 이러한 포트에 대한 루트, 이러한 포트에서 리스닝하는 프로세스, 개방되고 도달 가능한 포트와 연관된 구성 설정, 개방되고 도달 가능한 포트에 연결된 보안 문제, 보안 문제를 해결할 수 있는 임의의 시정 조치, 및/또는 기타 적절한 정보를 설명하는 리포트를 생성할 수 있다. 네트워크 도달가능성 분석은, 예를 들어 일정에 따라 또는 이벤트에 의해 트리거되는 자동화된 방식으로 수행될 수 있으며, 반드시 최종 사용자에 의해 직접 시작될 필요는 없다. 본원에 설명된 기술을 사용하여, 네트워크의 보안은 기존의 포트 스캐닝의 시간 소모적이고 자원 집약적인 특성과 대조적으로 빠르고 효율적으로 분석될 수 있다.
당업자가 본 개시내용에 비추어 이해할 수 있는 바와 같이, 실시형태는 다음 중 일부 또는 전부를 포함하는 특정 기술적 이점을 달성할 수 있다: (1) 많은 컴퓨터의 많은 포트에 패킷을 보내고 응답을 기다릴 필요를 제거하여 네트워크 도달가능성 분석의 속도를 개선함; (2) 많은 컴퓨터의 많은 포트에 패킷을 보낼 필요를 제거하여 네트워크 도달가능성 분석의 네트워크 대역폭 요구 사항을 감소시킴; (3) 포트에 도달 가능한 루트에 대한 통찰력을 제공하여 네트워크의 보안을 개선함; (4) 개방되고 도달 가능한 포트에서 리스닝 중인 프로세스에 대한 통찰력을 제공하여 네트워크의 보안을 개선함; (5) 포트가 도달 가능한 것으로 귀결되는 구성 설정을, 보안 문제를 해결할 수 있는 설정 변경과 함께 리포트함으로써 네트워크 보안을 개선함; (6) 스캐너의 위치로부터 도달가능성에 대한 확인을 하는 기존 포트 스캔보다 더 완전한 뷰(view)를 제공하여 네트워크 보안을 개선함; 등.
도 1은 일부 실시형태에 따른 자동화된 패킷리스 네트워크 도달가능성 분석을 위한 예시적인 시스템 환경을 도시한다. 일부 실시형태에서, 네트워크 보안 평가기(100)는 네트워크 상의 하나 이상의 컴퓨팅 디바이스의 보안을 분석하여, 예를 들어, 이 컴퓨터 상의 어느 포트(존재한다면)가 개방되고 도달 가능한지를 결정할 수 있다. 분석 대상 디바이스는 또한, 컴퓨터, 호스트 컴퓨터, 호스트, 서버, 인스턴스 또는 컴퓨팅 리소스라고 불릴 수 있다. 도 1에 도시된 바와 같이, 호스트(170A 내지 170N)와 같은 컴퓨팅 디바이스의 세트는 개인 네트워크(180) 내에 구성될 수 있다. 비록 2개의 호스트(170A 및 170N)가 도해 및 예시의 목적으로 도시되었지만, 임의의 적절한 수 및 구성의 호스트가 네트워크 보안 평가기(100)에 의해 분석될 수 있다. 호스트(170A 내지 170N)는 하드웨어 리소스, 소프트웨어 리소스, 네트워크 구성 등이 동일하거나 다를 수 있다.
호스트(170A 내지 170N)는 개인 네트워크(180)의 네트워크 리소스를 사용하여 서로 통신하도록 구성될 수 있다. 호스트(170A 내지 170N) 각각은 호스트(170A)용 포트(171A) 및 호스트(170N)용 포트(171N)과 같은 네트워크 포트를 제공할 수 있다. 포트(171A 내지 171N)는 네트워크 통신의 종점을 나타낼 수 있고, 포트 번호에 의해서 식별될 수 있다. 포트는 전송 제어 규약(TCP: Transmission Control Protocol) 및 사용자 데이터그램 통신 규약(UDP: User Datagram Protocol)과 같은 네트워킹 프로토콜 또는 전송 계층 프로토콜에 의해서 사용될 수 있다. 특정 포트 번호는 특정 서비스를 위해서, 관례상, 예약될 수 있다. 공통 서비스를 구현하는 어플리케이션은 포트에 "리스닝"하고 요청에 대한 응답으로 일대일 서버-클라이언트 대화를 설정함으로써 클라이언트로부터 서비스 요청을 수신하기 위해서 예약된 포트 번호를 사용할 수 있다. 예를 들어, SMTP (Simple Mail Transfer Protocol)를 구현하는 어플리케이션은 일반적으로 인커밍 요청에 대해 TCP 포트 25에서 리스닝하고, POP (Post Office Protocol)를 구현하는 어플리케이션은 일반적으로 인커밍 요청에 대해 TCP 포트 110에서 리스닝한다.
개인 네트워크(180)는 특정 사업체 또는 다른 조직에 의해 소유 및/또는 운영되는 컴퓨터를 포함할 수 있다. 일 실시형태에서, 개인 네트워크(180)의 소유자 또는 운영자는 호스트(170A 내지 170N)가 일반적으로 액세스할 수 없거나 외부 엔티티, 예를 들어 공용 인터넷과 같은 하나 이상의 공용 네트워크(190)를 통해 연결된 컴퓨터와 관련하여 어느 정도의 격리를 가져야한다고 예상할 수 있다. 그러나, 호스트(170A 내지 170N) 상의 하나 이상의 포트는 실제로 공용 네트워크(들)(190)에, 보안 문제를 제기할 수 있는 방식으로 도달 가능할 수 있다. 예를 들어, 특정 개방 포트에서 리스닝하는 특정 프로세스는 예를 들어, 호스트(170A 내지 170N)로부터 민감한 데이터를 수집하거나 호스트를 제어하기 위해서 외부 엔티티로부터 악의적인 공격에 취약할 수 있다. 본원에 설명된 기술을 사용하여, 호스트(170A 내지 170N) 상의 임의의 도달 가능한 포트가 찾아지고, 보안 문제를 해결하기 위해 잠재적으로 교정될 수 있다.
패킷을 포트(171A-171N)로 반드시 전송하지 않으면서, 네트워크 보안 평가기(100)는 어떤 포트(존재한다면)가 도달 가능한지 결정할 수 있다. 일 실시형태에서, 도달가능성 분석은 포트가 공용 네트워크(들)(190)를 통해 도달 가능한지 여부를 결정할 수 있다. 일 실시형태에서, 도달가능성 분석은 포트가 개인 네트워크(들)(190)를 통해, 예를 들어 호스트(170A 내지 170N) 중 다른 하나에 도달할 수 있는지 여부를 결정할 수 있다. 일 실시형태에서, 도달가능성 분석은 호스트 상의 어떤 포트도 도달 가능하지 않다는 점을 확인할 수 있다. 특정한 하나 이상의 호스트에 대해, 분석은 예를 들어 일정에 따라 또는 이벤트에 의해 트리거되는 자동화된 방식으로 네트워크 보안 평가기(100)에 의해 수행될 수 있으며, 반드시 최종 사용자에 의해 직접 시작될 필요는 없다. 예를 들어, 분석은 호스트의 네트워크 구성 변경과 관련된 이벤트에 의해 트리거될 수 있다. 이벤트는 이러한 변화를 모니터링하는 개인 네트워크(180)의 서비스 또는 시스템에 의해 발행될 수 있다.
일 실시형태에서, 네트워크 보안 평가기(100)는 호스트(170A 내지 170N) 중 하나 이상에 대한 네트워크 도달가능성 분석을 수행하기 위해 네트워크 구성 데이터(110)의 세트를 사용할 수 있다. 네트워크 구성 데이터(110)는 분석 중인 호스트가 속하는 네트워크(예를 들어, 개인 네트워크(180))와 연관될 수 있다. 네트워크 구성 데이터는 네트워크 구성의 스냅샷 또는 호스트(170A 내지 170N)의 다른 특성 및 네트워킹 디바이스(라우터, 스위치 등)를 나타낼 수 있다. 예를 들어, 데이터(110)는 가상 개인 클라우드(VPC), 서브넷, 인스턴스, 보안 그룹, 액세스 제어 목록(ACL), 로드 밸런서 등에 대한 정보를 포함할 수 있다. 데이터(110)는 예를 들어, 가상 네트워킹 규칙 세트에 따라 네트워크(180)에서 네트워킹이 작동하는 방식을 모델링하기 위해서 사용될 수 있다. 일 실시형태에서, 네트워크 구성 데이터(110)의 요소는 개인 네트워크(180)의 서비스에 의해 제공될 수 있다. 예를 들어, 네트워크(180)는 가상 컴퓨팅 인스턴스에 관한 네트워크 구성 데이터를(예를 들어, API를 통해) 제공하는 컴퓨팅 가상화 서비스를 포함할 수 있고, 네트워크는 가상 스토리지 인스턴스에 관한 네트워크 구성 데이터를(예를 들어, API를 통해) 제공하는 다양한 유형의 스토리지 가상화 서비스를 포함할 수 있다. 데이터(110)는 예를 들어, 네트워크(180)에서 구현되는 네트워킹 프리미티브의 인스턴스를 식별할 수 있고, 인스턴스의 설명(예를 들어, 계산 인스턴스에 할당된 역할, 리소스 인스턴스에 부여되거나 거부된 퍼미션, 인스턴스에 할당된 IP 주소 등)을 포함할 수 있고, 인스턴스들 간의 관계(예를 들어, 인스턴스들 사이의 네트워크를 통한 경로)를 설명하고, 외부 엔티티에 대한 인터페이스 또는 액세스 포인트(예를 들어, 네트워크 외부의 엔티티가 액세스할 수 있는 계산 인스턴스)를 설명할 수 있다. 네트워크 구성 데이터(110) 및 이것의 획득의 추가 양태는 도 8 내지 도 15와 관련하여 아래에서 논의된다.
다시 도 1을 참조하면, 일 실시형태에서, 네트워크 보안 평가기(100)는 네트워크 구성 데이터(110)를 쿼리할 수 있는 쿼리 처리 컴포넌트(120)를 포함할 수 있다. 네트워크 보안 평가기(100)는 또한, 쿼리(125)를 생성하고, 쿼리 처리 컴포넌트(120)에 쿼리를 제공하고, 쿼리 결과(126)를 수신하고, 어떤 포트(있는 경우)가 도달 가능한지를 결정하기 위해 결과 분석을 수행할 수 있는 쿼리 집계 및 분석 컴포넌트(130)를 포함할 수 있다. 쿼리(125)는 쿼리 언어에 따라 표현될 수 있다. 일 실시형태에서, 쿼리 언어는, 네트워크 보안 평가기(100)가 제약 문제로서 네트워크에 대한 쿼리(재귀 쿼리를 포함)를 표현하고 제약 솔버(예를 들어, SMT (satisfiability modulo theories) 솔버) 엔진을 사용하여 쿼리를 해결함으로써 쿼리에 대한 결과를 제공하는 것을 허용하는 선언적 논리 프로그래밍 언어를 나타낼 수 있다. 쿼리의 예는 인스턴스 A가 인스턴스 B에 SSH를 수행할 수 있도록 모든 인스턴스 쌍의 목록을 제공하기 위해 가상 네트워크 검증 서비스(VNVS: virtual network verification service)를 요청하는 "VNVS query -i list : can-ssh (A, B)"일 수 있다. 네트워크 보안 평가기(100)는 쿼리(125)를 동적으로 구축하거나 분석의 필요에 따라 미리 구축된 쿼리를 선택할 수 있다. 일 실시형태에서, 쿼리는, 분석기(100)의 최종 사용자, 예를 들어 자신의 관리 하에 있는 하나 이상의 호스트의 네트워크 보안을 분석하고자 하는 네트워크 관리자에 의해 작성될 필요는 없다. 쿼리(125)의 추가 양태는 도 8 내지 도 15와 관련하여 아래에서 논의된다.
다시 도 1을 참조하면, 일 실시형태에서, 네트워크 보안 평가기(100)는 네트워크 도달 가능성과 관련된 규칙 패키지(135)에 따라 작동될 수 있다. 일 실시형태에서, 쿼리(125)는 규칙(135)에 따라 생성될 수 있다. 예를 들어, 규칙(135)은 도달 가능성을 검사할 공통 서비스에 대한 포트 번호의 세트를 정의할 수 있고, 분석기(100)는 이러한 포트 번호가 분석 중인 호스트에 대해 도달 가능한지 여부를 평가하기 위해 쿼리를 생성할 수 있다. 쿼리(125)는 분석 하에 있는 하나 이상의 호스트에 대한 네트워크 액세스에 영향을 미치는 구성 데이터를 획득하기 위해 생성될 수 있다. 규칙 패키지(135)는, 보안 그룹, 가상 개인 클라우드(VPC), 서브넷, 액세스 제어 목록, 탄력적 로드 밸런서, 인터넷 게이트웨이, 출구 전용 인터넷 게이트웨이, 네트워크 주소 변환, 라우팅 테이블, 피어링된 VPC, 가상 개인 네트워크(VPN), 직접 연결(DX) 등과 같은 네트워킹 구성요소를 분석할 수 있다. 일 실시형태에서, 쿼리 결과(126)는 규칙(135)에 따라 분석되어, 예를 들어, 다양한 유형의 네트워킹 구성 요소가 작동하는 방법에 대한 이해를 사용하여 어떤 포트가 도달 가능한지를 결정할 수 있다.
임의의 포트가 도달 가능한 것으로 간주되면, 네트워크 보안 평가기(100)는 또한 외부 엔티티로부터 이러한 포트로의 하나 이상의 루트를 결정할 수 있다. 일 실시형태에서, 루트는 규칙(135)에 따라 그리고/또는 쿼리 언어를 사용하여 결정될 수 있다. 예를 들어, 하나 이상의 쿼리를 사용하여, 분석기(100)는 호스트들 사이 또는 호스트와 외부 엔티티 사이에 네트워크를 통한 경로 또는 루트(즉, 네트워크 연결이 있음)가 있음을 결정할 수 있다(예를 들어, 리소스로부터 HTTPS 게이트웨이로의 경로(이 경로를 통해서 외부 엔티티가 가상 네트워크 상의 리소스에 액세스할 수 있음)). 경로는 종점들 사이에 네트워크 연결을 제공하는 네트워크 상의 직접 경로이거나, 대안적으로, 루트 상의 하나 이상의 홉을 통과하고 종점들 사이에 네트워크 연결을 제공하는 추리적 경로(transitive path)일 수 있다. 호스트에 대한 네트워크 도달가능성을 평가하기 위해 미리 정의된 규칙의 세트(135)를 적용함으로써, 쿼리 집계 및 분석 컴포넌트(130)는 (예를 들어, 네트워크 관리자에 의한) 수동 분석의 추측 및 복잡성을 제거하는 자동화된 솔루션을 나타낼 수 있다.
일 실시형태에서, 예를 들어 쿼리 집계 및 분석 컴포넌트(130)는 인스턴스가 인터넷으로부터 또는 외부 임의의 신뢰할 수 있는 위치(이렇게 구성된 경우)로부터의 ICMP (Internet Control Message Protocol) 액세스를 허용하는지 여부를 확인하기 위해 규칙(135)을 사용할 수 있다. 일 실시형태에서, 다른 실시예로서, 쿼리 집계 및 분석 컴포넌트(130)는 인스턴스가 인터넷 또는 외부 임의의 신뢰할 수 있는 위치(이렇게 구성된 경우)로부터 개방되고 도달 가능한 임의의 TCP/UDP 포트를 갖는지 여부를 확인하기 위해 규칙(135)을 사용할 수 있다. 규칙(135)은 비보안 포트, 관리 포트, 데이터베이스 포트, 인트라넷 포트 및 기타 유형의 포트를 구체적으로 검사할 수 있다. 일 실시형태에서, 쿼리 집계 및 분석 컴포넌트(130)는 규칙(135)을 사용하여 인스턴스가 임의의 포트에 대해 어느 곳으로부터도 액세스 가능하지 않은지 여부를 확인할 수 있다. 일 실시형태에서, 쿼리 집계 및 분석 컴포넌트(130)는 서브넷이 각 보안 그룹에 대해 외부의 신뢰 위치로부터의 ICMP 또는 TCP/UDP 포트 액세스를 허용하는지 여부를 확인하기 위해 규칙(135)을 사용할 수 있다. 일 실시형태에서, 쿼리 집계 및 분석 컴포넌트(130)는 규칙(135)을 사용하여 서브넷이 어느 곳으로부터도 액세스 가능하지 않은, 또는 모든 인바운드 트래픽이 차단된, 또는 탄력적 네트워크 인터페이스(ENI)를 갖지 않은 인스턴스를 갖는지 여부를 체크할 수 있다.
일 실시형태에서, 평가기(100)는 종래의 포트 스캔을 수행하지 않고 도달 가능한 임의의 포트를 찾을 수 있다. 일 실시형태에서, 평가기(100)는 제한된 범위의, 예를 들어 영향을 받은 포트(들)에서만 포트 스캔을 수행함으로써, 패킷리스 결과를 확인할 수 있다. 예를 들어, 만약 TCP 포트 22가 호스트(170A)에서 도달 가능한 것으로 확인되면, 네트워크 보안 평가기(100)는 외부 엔티티(예를 들어, 공용 네트워크(190)를 통해 호스트(170A)에 연결된 다른 서버)가 호스트(170A) 상의 TCP 포트 22로 하나 이상의 패킷을 전송하게 하고, 호스트로부터의 응답을 기다리게 하고, 분석기에 리포트하게 할 수 있다. 만약 이러한 응답이 수신되지 않으면, 네트워크 보안 평가기(100)는 포트가 실제로 도달 가능하지 않다고 결정할 수 있다. 예를 들어, 포트는 방화벽으로 보호될 수 있다. 응답이 수신되면, 네트워크 보안 평가기(100)는 포트가 개방되어 있고 도달 가능하다는 것을 확인할 수 있다. 이러한 포트 스캔을 도달 가능한 것으로 이미 추정되는 포트로 제한함으로써, 네트워크 보안 평가기(100)는 전체 포트 스캔에 필요한 시간 및 네트워크 대역폭을 상당히 감소시킬 수 있다.
네트워크 보안 평가기(100)는 분석 중인 호스트(170A 내지 170N) 중 하나 이상에 대한 네트워크 도달 가능성 및/또는 네트워크 보안에 대한 결과를 생성할 수 있다. 도 3과 관련하여 아래에서 논의되는 바와 같이, 네트워크 보안 평가기(100)는 상이한 소스로부터(잠재적으로 에이전트에 의해 수집된 온-호스트 데이터를 포함함)로부터의 데이터를 결합하여 그러한 결과를 생성할 수 있다. 다시 도 1을 참조하면, 보고 컴포넌트(140)를 사용하여, 네트워크 보안 평가기(100)는 그 결과의 양태를 설명하는 리포트를 생성할 수 있다. 일 실시형태에서, 보고 컴포넌트(140)는 특정 호스트에 대해 도달 가능한 하나 이상의 포트(141)를 표시하거나 설명할 수 있다. 일 실시형태에서, 보고 컴포넌트(140)는 특정 호스트에 대해 도달 가능하지 않은 하나 이상의 포트(141)를 표시하거나 설명할 수 있다. 일 실시형태에서, 보고 컴포넌트(140)는 도달 가능한 하나 이상의 루트(142)를 표시하거나 설명할 수 있다. 일 실시형태에서, 보고 컴포넌트(140)는 특정 호스트에 대해 어떤 포트도 도달 가능하지 않다는 점을 대신 개시할 수 있다. 이러한 리포트의 예는 도 5와 관련하여 논의된다.
일 실시형태에서, 화이트리스트는 신뢰된 위치를 나타낼 수 있으며, 신뢰된 위치로부터 도달 가능한 것으로 확인되면 특정 포트 또는 포트 범위가 보고(140)에서 제외될 수 있다. 다양한 실시형태에서, 산업 표준 지식, 고객 입력, 다수의 고객을 기반으로 한 기계 학습 및/또는 다른 적절한 소스와 같은 다양한 데이터 소스가 화이트리스트를 생성하기 위해서 사용될 수 있다. 화이트리스트의 내용은 고객마다 다를 수 있다. 화이트리스트의 내용은 시간이 지남에 따라 변경될 수 있다.
다시 도 1을 참조하면, 보고 컴포넌트(140)는 임의의 적절한 방식으로 결과를 제공할 수 있다. 일 실시형태에서, 보고 컴포넌트(140)는 그래픽 사용자 인터페이스(GUI)에서, 예를 들어 네트워크 관리자에게 결과를 제공할 수 있다. 일 실시형태에서, GUI는 예를 들어, 도 4와 관련하여 아래에서 논의되는 바와 같이, 결과와 관련된 사용자 입력을 수신할 수 있도록 상호 작용 부분을 포함할 수 있다. 도 1을 다시 참조하면, 일 실시형태에서, 보고 컴포넌트(140)는 파일 또는 다른 데이터 대상물로 결과를 지속적으로 저장할 수 있고, 파일 또는 데이터 대상물은 네트워크 관리자 또는 다른 적절한 엔티티에 의해 판독될 수 있다. 일 실시형태에서, 보고 컴포넌트(140)는 예를 들어, 네트워크 관리자에 의해 액세스 가능한 계정으로 이메일 또는 다른 메시징 시스템을 사용하여 결과를 전송할 수 있다.
네트워크 보안 평가기(100) 및 호스트(170A 내지 170N)는 임의의 적절한 수 및 구성의 컴퓨팅 디바이스를 사용하여 구현될 수 있으며, 이 디바이스들 중 임의의 것은 도 15에 도해된 예시적인 컴퓨팅 디바이스(1500)에 의해 구현될 수 있다. 컴퓨팅 디바이스는 임의의 적절한 수의 데이터 센터 또는 지리적 위치에 위치될 수 있다. 다양한 실시형태에서, 네트워크 보안 평가기(100)의 기능 중 적어도 일부는 동일한 컴퓨팅 디바이스 또는 상이한 컴퓨팅 디바이스들에 의해 제공될 수 있다. 네트워크 보안 평가기(100)의 구성 요소 중 임의의 것이 상이한 컴퓨팅 디바이스들을 사용하여 구현되는 경우, 컴포넌트 및 이의 각각의 컴퓨팅 디바이스는 예를 들어, 하나 이상의 네트워크를 통해 통신적으로 결합될 수 있다. 네트워크 보안 평가기(100)의 컴포넌트 각각은 다음과 같이 논의되는 바와 같이 각각의 기능을 수행하기 위해서 사용 가능한 소프트웨어 및 하드웨어의 임의의 조합을 나타낼 수 있다. 네트워크 보안 평가기(100)에 의해 구현된 작동은 예를 들어, 초기 구성 단계 이후에 사용자 개시 또는 사용자 개입이 필요없이 자동으로 수행될 수 있고, 프로그래밍 방식으로, 예를 들어 적어도 하나의 컴퓨팅 디바이스에서 프로그램 명령어의 실행에 의해서 수행될 수 있다. 위협 모델러 네트워크 보안 평가기(100) 및 네트워크(180)는 도시되지 않은 추가 구성 요소, 도시된 것보다 적은 구성 요소, 또는 도시된 구성 요소의 상이한 조합, 구성 또는 수량을 포함할 수 있다는 점이 고려된다.
네트워크 보안 평가기(100)는 서비스 지향 아키텍처에 따라 다수의 서비스가 협업하는 서비스 지향 시스템으로 구현될 수 있다. 이러한 환경에서, 네트워크 보안 평가기(100)는 자신의 기능을 서비스로서 다수의 클라이언트에게 제공할 수 있다. 서비스는 하나 이상의 네트워크를 통해서 분산된 복수의 서로 다른 인스턴스를 사용하여 구현될 수 있으며, 각 인스턴스는 다양한 클라이언트에게 대응되는 서비스의 기능에 대한 액세스를 제공할 수 있다. 임의의 적절한 수 및 구성의 클라이언트가 네트워크 보안 평가기(100)와 상호 작용할 수 있다는 점이 고려된다. 클라이언트가 평가기의 기능을 호출할 수 있도록 하기 위해서, 네트워크 보안 평가기(100)는 하나 이상의 API 또는 다른 프로그램 인터페이스 및/또는 그래픽 사용자 인터페이스(GUI)와 같은 임의의 적절한 인터페이스(들)를 노출시킬 수 있다. 일 실시형태에서, 네트워크 보안 평가기(100)의 기능은 수수료를 받는 대가로 클라이언트에게 제공될 수 있다.
네트워크 보안 평가기(100)는 하나 이상의 네트워크를 통해 호스트(170A 내지 170N), 서비스 클라이언트, 다른 서비스 또는 다른 엔티티에 연결될 수 있다. 다양한 실시형태에서, 네트워크(들)는 네트워크 보안 평가기(100)와 호스트(170A 내지 170N) 사이의 네트워크 기반 통신을 설정하는 데 필요한 네트워킹 하드웨어 및 프로토콜의 임의의 적절한 조합을 포함할 수 있다. 예를 들어, 네트워크(들)는 일반적으로 인터넷을 집합적으로 구현하는 다양한 통신 네트워크 및 서비스 제공자를 포함할 수 있다. 네트워크(들)는 또한 공용 또는 개인 무선 네트워크뿐만 아니라 근거리 통신망(LAN) 또는 광역 통신망(WAN)과 같은 개인 네트워크를 포함할 수 있다. 예를 들어, 네트워크 보안 평가기(100) 및 호스트(170A 내지 170N) 모두는 자체 내부 네트워크를 갖는 기업 내에서 각각 프로비저닝될 수 있다. 이러한 실시형태에서, 네트워크(들)는, 네트워크 보안 평가기(100)와 인터넷 사이뿐만 아니라 인터넷과 호스트(170A 내지 170N) 사이에 네트워킹 링크를 설정하는 데 필요한 하드웨어(예를 들어, 모뎀, 라우터, 스위치, 로드 밸런서, 프록시 서버 등) 및 소프트웨어(예를 들어, 프로토콜 스택, 회계 소프트웨어, 방화벽/보안 소프트웨어 등)를 포함할 수 있다. 일부 실시형태에서, 네트워크 보안 평가기(100)는 공용 인터넷이 아닌 개인 네트워크를 사용하여 호스트(170A 내지 170N)와 통신될 수 있다는 점에 유의한다.
일부 실시형태에서, 네트워크 보안 평가기(100) 및/또는 호스트(170A 내지 170N)의 양태는 제공자 네트워크의 컴퓨팅 자원을 사용하여 구현될 수 있다. 제공자 네트워크는 인터넷 및/또는 다른 네트워크를 통해 분산된 클라이언트 세트에 액세스 가능한 하나 이상의 서비스(예: 다양한 유형의 네트워크 액세스 가능 컴퓨팅 또는 스토리지)를 제공하기 위해 기업 또는 공공 부문 조직과 같은 엔티티에 의해서 설정된 네트워크를 나타낼 수 있다. 제공자 네트워크는 제공자에 의해서 제공되는 인프라 및 서비스를 구현하고 배포하기 위해서 사용되는 물리적 및/또는 가상화된 컴퓨터 서버, 기억장치, 네트워킹 장비 등의 모음과 같은 다양한 리소스 풀을 호스팅하는 수많은 데이터 센터를 포함할 수 있다. 컴퓨팅 리소스는 일부 실시형태에서, 가상 또는 물리적 컴퓨팅 인스턴스와 같은 "인스턴스"라고 불리는 단위로 클라이언트에 제공될 수 있다. 예를 들어, 가상 컴퓨팅 인스턴스는 특정된 계산 용량(CPU 유형 및 수, 주 메모리 크기 등을 표시하여 특정될 수 있음) 및 특정된 소프트웨어 스택(예: 하이퍼바이저 위에서 실행될 수 있는 특정 버전의 운영 체제)을 가진 하나 이상의 서버를 포함한다. 범용 또는 특수 목적 컴퓨터 서버, 기억장치, 네트워크 디바이스 등을 포함하는 상이한 실시형태에서 제공자 네트워크의 자원을 구현하기 위해 다수의 상이한 유형의 컴퓨팅 디바이스가 단독으로 또는 조합되어 사용될 수 있다. 제공자 네트워크의 리소스는 여러 클라이언트(또는 테넌트)가 동시에 제어할 수 있으므로, 제공자 네트워크는 멀티 테넌시를 제공한다고 할 수 있으며 멀티 테넌트 제공자 네트워크라고 할 수 있다.
일부 실시형태에서, 제공자 네트워크의 운영자는 이들의 클라이언트를 위한 자원 예약, 제어 및 액세스 인터페이스의 유연한 세트를 구현할 수 있다. 예를 들어, 리소스 관리자는, 클라이언트(제공자 네트워크 내의 다른 구성 요소를 잠재적으로 포함)가 제공자 네트워크에서 제공하는 컴퓨팅 인스턴스에 대해서 배우고, 이를 선택하고, 이에 대한 액세스 권한을 구매하고 그리고/또는 이를 예약하는 것을 허용하는 프로그래밍 방식 리소스 예약 인터페이스(예: 웹 사이트 또는 웹 페이지의 세트를 통해)를 구현할 수 있다. 이러한 인터페이스는 리소스 카탈로그 검색을 허용하고 지원되는 다양한 유형 또는 크기의 리소스, 지원되는 다양한 예약 유형 또는 모드, 가격 책정 모델 등에 대한 세부 정보 및 사양을 제공하는 능력을 포함할 수 있다.
도 2는 일부 실시형태에 따른, 분석을 지원하기 위해 가상 네트워크 검증 서비스와의 상호 작용을 포함하는 자동화된 패킷리스 네트워크 도달가능성 분석을 위한 예시적인 시스템 환경의 추가 양태를 도시한다. 일 실시형태에서, 네트워크 구성 데이터(110)는 가상 네트워크 검증 서비스(230)에 의해 획득 및 유지될 수 있다. 가상 네트워크 검증 서비스(230)는 또한, 쿼리(125)를 수신하고, 네트워크 구성 데이터(110)를 사용하여 쿼리에 응답하고, 쿼리 결과(126)로 응답할 수 있는 쿼리 처리 컴포넌트(120)를 포함할 수 있다. 가상 네트워크 검증 서비스(230)는 네트워크 보안 평가기(100)를 포함하여, 하나 이상의 클라이언트에게 서비스를 제공할 수 있다. 가상 네트워크 검증 서비스의 추가 양태는 도 8 내지 도 14와 관련하여 아래에서 논의된다.
도 3은 일부 실시형태에 따른 분석 대상 컴퓨터 상의 에이전트의 사용을 포함하는 자동화된 패킷리스 네트워크 도달가능성 분석을 위한 예시적인 시스템 환경의 추가 양태를 도해한다. 일 실시형태에서, 네트워크 보안 평가기(100)는 결론에 도달하기 위해 상이한 소스로부터의 데이터를 결합할 수 있다. 일 실시형태에서, 네트워크 보안 평가기(100)는 컴퓨터에 설치된 에이전트 소프트웨어로부터 데이터를 획득하여, 예를 들어 어떤 프로세스가 포트에서 리스닝하고 있는지를 결정할 수 있다. 프로세스가 포트 상에서 리스닝하는 경우 포트는 "개방된" 것으로 간주될 수 있다. 프로세스는 서비스, 어플리케이션, 서비스 데몬(daemon) 및 다른 형태의 실행 가능한 프로그램 코드를 포함할 수 있다. 도 3의 실시예에서와 같이, 에이전트(175A)는 호스트(170A)에 설치될 수 있고, 에이전트(175N)는 호스트(170N)에 설치될 수 있다. 또한 도 1의 실시예에서 도시된 바와 같이, 프로세스(176A)는 호스트(170A) 상에 상주할 수 있고(그리고 잠재적으로 포트(171A) 상에서 리스닝할 수 있고), 프로세스(176N)는 호스트(170N) 상에 상주할 수 있다(그리고 잠재적으로 포트(171N) 상에서 리스닝할 수 있다). 일부 실시형태에서, 에이전트(175A 내지 175N)는, 예를 들어, 호스트(170A 내지 170N)가 하드웨어 및 운영 체제 소프트웨어의 동일하거나 상이한 구성을 나타내는 경우 동일한 바이너리 파일 또는 상이한 바이너리 파일을 나타낼 수 있다.
에이전트(175A 내지 175N)는 호스트(170A 내지 170N)의 구성에 대한 인사이트(insight)를 수집할 수 있다. 일 실시형태에서, 에이전트(175A 내지 175N)는 예를 들어, 포트가 개방된 시기 및 포트와 연관된 프로세스를 결정하기 위해 대응되는 호스트의 동작을 모니터링할 수 있다. 일 실시형태에서, 에이전트(175A 내지 175N)는 예를 들어, 어느 포트가 개방되어 있는지 및/또는 어떤 프로세스(176A-176N)가 포트 상에서 리스닝 중인지에 관해 문의하기 위해 대응되는 호스트의 운영 체제와 상호 작용할 수 있다. 일 실시형태에서, 에이전트(175A 내지 175N)는 네트워크 보안 평가기(100)의 제어 하에 있을 수 있어, 네트워크 도달가능성 분석기는 분석기가 이미 도달 가능한 것으로 간주한 특정 포트 상에서 리스닝 중인 프로세스(들)를 찾도록 에이전트에 지시할 수 있다. 에이전트(175A 내지 175N)는 이의 결과를 쿼리 집계 및 분석 컴포넌트(130)에 보고하도록 구성될 수 있다.
일 실시형태에서, 에이전트(175A 내지 175N)로부터 중계된 정보를 기반으로, 쿼리 집계 및 분석 컴포넌트(130)는 프로세스가 비정형 포트 번호에서 포트를 개방했는지 여부를 확인하기 위해 규칙(135)을 사용할 수 있다. 일 실시형태에서, 에이전트(175A 내지 175N)로부터 중계된 정보를 기반으로, 쿼리 집계 및 분석 컴포넌트(130)는 인스턴스가 어디에서도 도달 가능하지 않은 포트를 개방했는지 여부를 확인하기 위해 규칙(135)을 사용할 수 있다. 어떤 프로세스가 어떤 포트에서 리스닝하고 있는지에 대한 지식과 같이 에이전트(175A 내지 175N)에 의해 수집된 데이터의 분석을 사용하여, 보고 컴포넌트(140)는, 개방되어 있고 도달 가능한 포트(141)에서 리스닝하는 프로세스(143)를 표시하거나 설명하는 리포트를 생성할 수 있다. 일 실시형태에서, 보고 컴포넌트(140)는, 비정상적이거나 예기치 않은 포트를 사용하고 있고 따라서 보안 위협을 야기할 수 있는 프로세스를 표시하거나 설명할 수 있다.
도 4는 일부 실시형태에 따른, 시정 조치의 권고 및/또는 수행을 포함하는 자동화된 패킷리스 네트워크 도달가능성 분석을 위한 예시적인 시스템 환경의 추가적 양태를 도해한다. 일 실시형태에서, 쿼리 집계 및 분석(130)은 포트가 도달 가능한 이유를 결정할 수 있다. 예를 들어, 하나 이상의 구성 설정이 도달 가능한 포트의 원인일 수 있다. 하나 이상의 소스(예: 네트워크 구성 데이터(110) 및 에이전트(175A 내지 175N))로부터 수집된 데이터에 규칙(135)을 적용함으로써 네트워크 구성 분석기는 포트가 도달 가능한 원인이 되는 하나 이상의 구성 설정을 결정할 수 있다. 보고 컴포넌트(140)는 이런 결과를 보고할 수 있다.
일 실시형태에서, 네트워크 보안 평가기(100)는, 또한 취해지면, 도달 가능한 포트와 관련된 보안 문제를 해결하거나 개선할 것으로 예상되는 시정 조치(144)를 추천할 수 있다. 예를 들어, 특정 보안 그룹의 호스트 구성원으로 인해 포트가 도달 가능하면, 권장 사항은 외부 컴퓨터에서 포트에 액세스할 수 없도록 해당 보안 그룹에 대한 구성 설정 변경을 포함할 수 있다. 일 실시형태에서, 이러한 시정 조치(144)는 보고 컴포넌트(140)에 의해 표시되거나 설명될 수 있다. 일 실시형태에서, 사용자가 선택하면, 자동으로 문제를 수정하는 인터페이스 요소를 갖는 GUI에 시정 조치가 표시될 수 있다. 예를 들어, 보고 컴포넌트(140)는 추천되는 수정을 설명하고 사용자가 눌렀을 때 적절한 구성 설정에 대한 변경을 구현하는 버튼(또는 다른 GUI 요소)을 포함하는 화면을 사용자 인터페이스에서 생성할 수 있다.
도 5는 일부 실시형태에 따른 자동화된 패킷리스 네트워크 도달가능성 분석을 사용하여 생성된 리포트의 일 예를 도해한다. 네트워크 보안 평가기(100)는 이의 결과의 양태, 예를 들어 임의의 도달 가능한 포트, 이러한 포트에 대한 루트, 이러한 포트에서 리스닝하는 프로세스, 도달 가능한 포트와 연관된 구성 설정, 도달 가능한 포트에 연결된 보안 문제, 보안 문제를 해결할 수 있는 임의의 시정 조치, 및/또는 기타 적절한 정보를 설명하는 리포트를 생성할 수 있다. 도 5는 특정 호스트(인스턴스 ID로 지칭됨) 및 이러한 호스트의 특정 포트에 대한 네트워크 도달가능성 리포트(500)의 예를 도시한다. 리포트(500)는 예를 들어, 분석 중인 인스턴스의 인스턴스 ID, 영향을 받는 TCP 포트 번호 및 일반적으로 포트와 연관된 서비스를 나타내는 상위 레벨 결과(510)를 포함할 수 있다. 본 실시예에서, TCP 포트 번호는 22이며 일반적으로 SSH (Secure Shell) 목적을 위해서 사용된다. 리포트(500)는 또한 문제의 심각도(520)의 표시(예를 들어, 높음, 중간 또는 낮음)를 포함할 수 있다. 리포트(500)는 결과에 대한 보다 더 상세한 설명(530)을 포함할 수 있다. 도 5에 도시된 바와 같이, 설명(530)은 공용 인터넷(이 경우 특정 인터넷 게이트웨이를 통해)으로부터 포트가 도달 가능할 수 있는 루트를 나타낼 수 있다. 일 실시형태에서, 설명(530)은 예를 들어, 보안 그룹, 액세스 제어 목록, 라우팅 테이블, 인터넷 게이트웨이 등의 구성으로 인해 액세스가 허용되는 이유를 나타낼 수 있다. 설명(530)은 또한, 인스턴스가 속한 특정 가상 개인 클라우드(VPC), 인스턴스에 대한 네트워크 인터페이스의 ID, 인스턴스에 대한 보안 그룹의 ID 등을 나타낼 수 있다. 또한, 설명(530)은 도달 가능한 포트에 의해 제기되는 잠재적인 보안 문제를 설명할 수 있다. 마지막으로, 리포트(500)는 보안 우려를 교정하기 위한 시정 조치에 대한 권고(540)를 포함할 수 있다. 본 실시예에서, 권고는 공용 인터넷을 통해 이러한 특정 포트에 대한 액세스를 제거하도록 보안 그룹을 편집하는 것이다. 도 4에 대해 위에서 논의된 바와 같이, 일 실시형태에서, 리포트(500)는, 사용자 입력에 의해 활성화되는 경우 권고(540)을 자동으로 구현하는 사용자 인터페이스 요소를 포함할 수 있다. 일 실시형태에서, 리포트(500)는 분석 대상의 네트워크 토폴로지를 보여주는 시각화를 포함할 수 있다. 시각화는 하이라이트된 결과, 위협 심각도의 색상 코딩 및 사용자 상호 작용을 포함할 수 있다.
도 6은 일부 실시형태에 따라 자동화된 패킷리스 네트워크 도달가능성 분석을 사용하고 분석 대상 컴퓨터 상의 에이전트를 사용하여 생성된 리포트의 실시예를 도해한다. 일 실시형태에서, 위에서 논의된 리포트(500)는 분석 중인 호스트에서 에이전트를 사용하지 않고 생성될 수 있다. 도 6에 도시된 바와 같이, 이러한 에이전트의 사용은 보다 상세한 도달가능성 리포트(600)를 허용할 수 있다. 위에서 논의된 바와 같이, 리포트(600)는 상위 레벨 결과(610), 심각도의 표시(620), 상세한 설명(630) 및 문제를 수정하기 위한 권고(640)을 포함할 수 있다. 에이전트에 의해 수집된 데이터에 의존함으로써, 리포트(600)는 개방되고 도달 가능한 포트에서 리스닝 중인 특정 프로세스를 나타낼 수 있다. 본 실시예에서, 프로세스는 SSH 데몬 'sshd'이다. 리포트(600)는 또한 sshd 프로세스에 대응되는 특정 바이너리 파일의 경로를 나타낼 수 있다. 이러한 프로세스 정보를 네트워크 도달가능성 리포트에 추가하면 보안 문제를 진단하고 수정하는 데 도움이 될 수 있다.
도 7은 일부 실시형태에 따른 자동화된 패킷리스 네트워크 도달가능성 분석을 위한 방법을 도해하는 흐름도이다. 710에 도시된 바와 같이, 네트워크 구성 데이터의 자동화된 분석이 수행될 수 있다. 네트워크 구성 데이터는, 다른 컴퓨터 및 네트워킹 디바이스(라우터, 스위치 등)를 포함하여, 호스트 컴퓨터 및 잠재적으로 다른 디바이스를 갖는 네트워크(예: 개인 네트워크)와 관련될 수 있다. 일 실시형태에서, 분석은 하나 이상의 쿼리를 사용하여 네트워크 구성 데이터를 쿼리하는 단계를 포함할 수 있다. 쿼리는 쿼리 언어에 따라 표현될 수 있다. 네트워크 도달가능성 분석은 분석의 필요에 따라 쿼리를 동적으로 작성하거나 미리 작성된 쿼리를 선택할 수 있다. 일 실시형태에서, 쿼리는, 분석기(100)의 최종 사용자, 예를 들어 자신의 관리 하에 있는 하나 이상의 호스트의 네트워크 보안을 분석하고자 하는 네트워크 관리자에 의해 작성될 필요는 없다.
720에 도시된 바와 같이, 분석을 기반으로, 방법은 다른 컴퓨터로부터 도달 가능한 호스트 컴퓨터에서 하나 이상의 포트를 결정할 수 있다. 도달가능성은 공용 인터넷을 통해서 또는 호스트가 속한 개인 네트워크를 통해서 일수 있다. 분석을 기반으로, 이 방법은 또한, 포트에 도달 가능한 하나 이상의 루트를 결정할 수 있다. 예를 들어, 루트는 인터넷 게이트웨이를 통해 인터넷으로부터, 인터넷 게이트웨이를 통해 VPN(가상 개인 네트워크)으로부터, 피어링된 가상 개인 클라우드(VPC) 등으로부터 컴포턴트가 도달 가능함을 나타낼 수 있다.
730에 도시된 바와 같이, 분석 중인 호스트 컴퓨터에 에이전트가 설치되어 있는지 확인할 수 있다. 에이전트는 예를 들어, 개방된 포트에서 리스닝 중인 프로세스를 결정하기 위해 호스트 컴퓨터의 작동 측면을 모니터링하도록 구성될 수 있다. 에이전트가 없는 경우, 740에 표시된 것처럼, 이 방법은 도달 가능한 포트(들) 및 포트(들)에 도달 가능한 루트(들)를 표시하거나 설명하는 리포트를 생성할 수 있다. 일 실시형태에서, 리포트는 또한, 보안 그룹 또는 액세스 제어 목록(ACL)과 관련된 하나 이상의 구성 설정과 같은, 포트(들)이 도달 가능한 이유(들)를 표시하거나 설명할 수 있다. 일 실시형태에서, 리포트는 또한, 하나 이상의 구성 설정 변경과 같은 시정 조치에 대한 하나 이상의 권고를 나타내거나 설명할 수 있다.
에이전트가 있는 경우, 750에 도시된 바와 같이, 이 방법은 에이전트가 제공한 데이터를 사용하여 포트에서 리스닝 중인 모든 프로세스를 결정할 수 있다. 760에 도시된 바와 같이, 이 방법은, 개방되어 있고 도달 가능한 포트(들), 포트(들)에 도달 가능한 경로(들) 및 포트(들) 상에서 리스닝하는 모든 프로세스를 표시하거나 설명하는 리포트를 생성할 수 있다. 일 실시형태에서, 리포트는 또한, 하나 이상의 구성 설정과 같이 포트(들)이 개방되어 있고 도달 가능한 이유를 나타내거나 설명할 수 있다. 일 실시형태에서, 리포트는 또한, 하나 이상의 구성 설정 변경과 같은 시정 조치에 대한 하나 이상의 권고를 나타내거나 설명할 수 있다.
네트워크 도달가능성에 대한 예시적 규칙
상술된 바와 같이, 네트워크 보안 평가기(100)는 네트워크 도달 가능성과 관련된 규칙 패키지(135)에 따라 작동될 수 있다. 이러한 규칙의 실시예는 다음과 같이 설명되지만 다음 규칙 목록은 종합적이지 않다. 네트워크 보안 평가기(100)는 컴퓨팅 디바이스의 도달가능성을 평가하기 위해 다음 규칙의 일부만을 구현할 수 있고, 그리고/또는 추가 규칙을 구현할 수 있다.
일 실시형태에서, 제1 규칙은 에이전트가 있는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부 어느 곳으로부터의 액세스를 허용하는 포트 상에서 리스닝 중인 비보안 프로토콜을 가지고 있는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 높다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 포트에서 리스닝하는 어플리케이션(및 버전), 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제1 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(신뢰할 수 있는 위치 외부로부터의 액세스가 필요하지 않은 경우) 및 어플리케이션 중지(작동에 필요하지 않은 경우)를 포함할 수 있다.
일 실시형태에서, 제2 규칙은 에이전트가 있는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부의 어느 곳으로부터 액세스 가능한 포트 상에서 리스닝 중인 SSH 서버를 갖는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 중간이다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 포트에서 리스닝하는 어플리케이션(및 버전), 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제2 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(신뢰할 수 있는 위치 외부로부터의 액세스가 필요하지 않은 경우) 및 어플리케이션 중지(작동에 필요하지 않은 경우)를 포함할 수 있다.
일 실시형태에서, 제3 규칙은 에이전트가 있는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부의 어느 곳으로부터 액세스 가능한 포트 상에서 리스닝 중인 RDP 서버를 갖는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 중간이다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 포트에서 리스닝하는 어플리케이션(및 버전), 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제3 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(신뢰할 수 있는 위치 외부로부터의 액세스가 필요하지 않은 경우) 및 어플리케이션 중지(작동에 필요하지 않은 경우)를 포함할 수 있다.
일 실시형태에서, 제4 규칙은 에이전트가 있는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부의 어느 곳으로부터 액세스 가능한 포트 상에서 리스닝 중인 데이터베이스 서버를 갖는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 중간이다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 포트에서 리스닝하는 어플리케이션(및 버전), 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제4 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(신뢰할 수 있는 위치 외부로부터의 액세스가 필요하지 않은 경우) 및 어플리케이션 중지(작동에 필요하지 않은 경우)를 포함할 수 있다.
일 실시형태에서, 제5 규칙은 에이전트가 있는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부의 어느 곳으로부터 액세스 가능한 포트 상에서 리스닝 중인 인트라넷 서비스를 갖는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 중간이다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 포트에서 리스닝하는 어플리케이션(및 버전), 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제5 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(신뢰할 수 있는 위치 외부로부터의 액세스가 필요하지 않은 경우) 및 어플리케이션 중지(작동에 필요하지 않은 경우)를 포함할 수 있다.
일 실시형태에서, 제6 규칙은 에이전트가 있는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부 어느 곳으로부터의 액세스를 허용하는 포트 상에서 개방된 연결부를 가지고 있는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 낮다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 포트에서 리스닝하는 어플리케이션(및 버전), 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제6 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(신뢰할 수 있는 위치 외부로부터의 액세스가 필요하지 않은 경우) 및 어플리케이션 중지(작동에 필요하지 않은 경우)를 포함할 수 있다.
일 실시형태에서, 제7 규칙은 에이전트가 있는 인스턴스를 분석하여 인스턴스가 비정형 포트에서 연결을 개방하는 어플리케이션을 갖는지 여부를 결정할 수 있다. 이 결과의 심각도는 낮고, 특정 위협이 아닌 정보 제공으로 간주될 수 있다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 포트에서 리스닝하는 어플리케이션(및 버전), 어플리케이션을 위한 일반적인 포트, 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제7 규칙의 경우, 시정 조치에 대한 권고는 어플리케이션이 예상대로 작동하는지 확인하는 것을 포함할 수 있다.
일 실시형태에서, 제8 규칙은 에이전트가 없는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부 어떤 곳으로부터의 ICMP 액세스를 허용하는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 중간이다. 이 결과는 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 기타 채널과 함께 리포트될 수 있다. 제8 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(신뢰할 수 있는 위치 외부로부터의 액세스가 필요하지 않은 경우)을 포함할 수 있다.
일 실시형태에서, 제9 규칙은 에이전트가 없는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부의 어떤 곳으로부터의 일반적으로 비보안 포트(예: 포트 20, 21, 23 등)에 대한 액세스를 허용하는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 중간이다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 이러한 포트를 전형적으로 사용하는 어플리케이션, 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제9 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(신뢰할 수 있는 위치 외부로부터의 액세스가 필요하지 않은 경우)을 포함할 수 있다.
일 실시형태에서, 제10 규칙은 에이전트가 없는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부 어떤 곳으로부터 관리 포트 번호 22(일반적으로 SSH를 위해서 사용됨)에 대한 액세스를 허용하는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 중간이다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 이러한 포트를 전형적으로 사용하는 어플리케이션, 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제10 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(신뢰할 수 있는 관리 위치 외부로부터의 관리 액세스가 필요하지 않은 경우)을 포함할 수 있다.
일 실시형태에서, 제11 규칙은 에이전트가 없는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부 어떤 곳으로부터 관리 포트 번호 3389(일반적으로 RDP를 위해서 사용됨)에 대한 액세스를 허용하는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 중간이다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 이러한 포트를 전형적으로 사용하는 어플리케이션, 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제11 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(신뢰할 수 있는 관리 위치 외부로부터의 관리 액세스가 필요하지 않은 경우)을 포함할 수 있다.
일 실시형태에서, 제12 규칙은 에이전트가 없는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부의 어떤 곳으로부터의 데이터베이스 포트(예: 포트 1433, 1434, 3306 등)에 대한 액세스를 허용하는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 낮다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 이러한 포트를 전형적으로 사용하는 어플리케이션, 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제12 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(인터넷으로부터의 데이터베이스 액세스가 필요하지 않은 경우)을 포함할 수 있다.
일 실시형태에서, 제13 규칙은 에이전트가 없는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부 어떤 곳으로부터 인트라넷 포트에 대한 액세스를 허용하는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 낮다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 이러한 포트를 전형적으로 사용하는 어플리케이션, 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제13 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(인터넷으로부터의 인트라넷 포트 액세스가 필요하지 않은 경우)을 포함할 수 있다.
일 실시형태에서, 제14 규칙은 에이전트가 없는 인스턴스를 분석하여 인스턴스가 신뢰할 수 있는 위치 외부 어떤 곳으로부터 모든 다른 포트(예를 들어, 규칙 8 내지 규칙 13에서 커버되지 않은 포트)에 대한 액세스를 허용하는지 여부를 결정할 수 있다. 이러한 결과의 심각도는 낮다. 이러한 결과는, 포트 번호, 포트의 TCP 또는 UDP 연결, 이러한 포트를 전형적으로 사용하는 어플리케이션, 포트에 도달 가능한 주소 범위, 보안 그룹, 액세스 제어 목록, 인터넷 게이트웨이, 가상 게이트웨이 및 액세스를 허용하는 다른 채널과 함께 리포트될 수 있다. 제14 규칙의 경우, 시정 조치를 위한 권고는 액세스를 제한하기 위한 액세스 제어 구성 편집(신뢰할 수 있는 위치 외부로부터의 액세스가 필요하지 않은 경우)을 포함할 수 있다.
일 실시형태에서, 제15 규칙은 에이전트가 있는 인스턴스를 분석하여 인스턴스가 어떤 곳으로부터도 액세스 가능하지 않은 포트 상에서 개방된 연결부를 가지고 있는지 여부를 결정할 수 있다. 이 결과의 심각도는 낮고, 정보 제공으로 간주될 수 있다. 이 결과는 개방된 포트 목록, 각 포트와 연관된 어플리케이션(및 버전), 임의의 적용 가능한 액세스 제어 목록 및 보안 그룹과 함께 리포트될 수 있다. 제15 규칙의 경우, 시정 조치에 대한 권고는, 필요하지 않은 경우, 액세스 가능하지 않은 서비스를 종료하는 것을 포함할 수 있다.
일 실시형태에서, 제16 규칙은 에이전트가 있거나 없는 인스턴스를 분석하여 모든 인바운드 트래픽이 인스턴스에 대해 차단되는지 여부를 결정할 수 있다. 이 결과의 심각도는 낮고, 정보 제공으로 간주될 수 있다. 이 결과는 임의의 적용 가능한 액세스 제어 목록 및 보안 그룹과 함께 리포트될 수 있다. 제16 규칙의 경우, 시정 조치에 대한 권고는 격리가 적절한지 확인하는 단계를 포함할 수 있다.
가상 네트워크 검증 서비스
일부 실시형태에서, 네트워크 구성 분석은 가상 네트워크 검증 서비스를 사용하여 구현될 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스는 선언적 논리 프로그래밍 언어를 활용하여 네트워크 도달가능성 분석기가 제약 문제로 제공자 네트워크의 가상 네트워크에 대한 쿼리(재귀 쿼리를 포함)를 표현하고, 제약 솔버(예를 들어, 만족도 모듈로 이론(SMT) 솔버) 엔진을 사용함으로써 쿼리를 해결하여 쿼리에 대한 결과를 제공하는 것을 허용한다. 일부 실시형태에서 사용될 수 있는 예시적인 선언적 논리 프로그래밍 언어는 Datalog이다. 다른 선언적 논리 프로그래밍 언어가 사용될 수 있다는 점을 주의한다.
클라이언트는 다양한 제공자 네트워크 서비스를 사용하여 가상 네트워크에서 네트워킹 프리미티브를 프로비저닝하고 구성할 수 있으며, 각 서비스는 자체 응용 프로그래밍 인터페이스(API) 및 네트워킹 시멘틱을 제공할 수 있다. 기존에는, 각 서비스에 대해 코드 샘플과 문서가 제공될 수 있지만 가상 네트워크에서 네트워킹 프리미티브 간의 상호 작용에 대한 공식적인 설명은 없었다. 일부 실시형태에서, 네트워킹 프리미티브에 대한 가상 네트워킹 시멘틱 및 논리는 논리 프로그래밍 언어에 따라 가상 네트워킹 규칙 세트로 표현되고 인코딩될 수 있다. 가상 네트워킹 규칙은, 가상 네트워크에서 구현될 수 있고, 제공자 네트워크의 서비스 및 API에 의해 제공되는 다양한 네트워킹 프리미티브 간의 공통 관계 및 상호 작용을 표현하는 규칙을 포함할 수 있다. 따라서, 실시형태는 가상 네트워킹이 제공자 네트워크 환경에서 작동하는 방식의 논리를 설명하는 가상 네트워킹 규칙을 하나의 위치 또는 파일에서 제공할 수 있다.
일부 실시형태에서, 가상 네트워킹 규칙은 PCI DSS (Payment Card Industry Data Security Standard), FedRAMP (Federal Risk and Authorization Management Program) 표준 또는 HIPAA (Health Insurance Portability and Accountability Act) 표준 또는 클라이언트의 내부 보안 표준과 같은 네트워킹 보안 표준을 인코딩하는 규칙을 포함할 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스는 가상 네트워크가 특정 표준을 준수하는지 검증하기 위해 선택적으로 사용될 수 있는 서로 다른 네트워킹 보안 표준을 각각 인코딩하는 가상 네트워킹 규칙의 두 개 이상의 서로 다른 세트를 제공할 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스는 클라이언트(예: 네트워크 도달가능성 분석기)가 클라이언트의 내부 보안 표준, 모범 사례 또는 기타 네트워킹 요구 사항을 인코딩하는 커스텀 규칙을 정의하도록 허용할 수 있고, 따라서 특정 가상 네트워크에 대한 적용을 위해 클라이언트에 의해서 정의된 커스텀 규칙을 포함하는 가상 네트워킹 규칙의 세트가 구현될 수 있다.
일부 실시형태에서, 가상 네트워크 검증 서비스는 클라이언트의 가상 네트워크에 대한 설명 정보를 얻는다. 설명 정보는 예를 들어, 가상 네트워크에서 구현되는 네트워킹 프리미티브의 인스턴스를 식별할 수 있고, 인스턴스의 설명(예를 들어, 계산 인스턴스에 할당된 역할, 리소스 인스턴스에 부여되거나 거부된 퍼미션, 인스턴스에 할당된 IP 주소 등)을 포함할 수 있고, 인스턴스들 간의 관계(예를 들어, 인스턴스들 사이의 네트워크를 통한 경로)를 설명하고, 외부 엔티티에 대한 인터페이스 또는 액세스 포인트(예를 들어, 네트워크 외부의 엔티티가 액세스할 수 있는 계산 인스턴스)를 설명할 수 있다. 일부 실시형태에서, 클라이언트는 가상 네트워크로부터 설명 정보를 얻을 수 있고, 가상 네트워크 검증 서비스에 설명 정보를 제공할 수 있다. 또는, 일부 실시형태에서, 클라이언트는 가상 네트워크 검증 서비스가 가상 네트워크로부터 직접 설명 정보를 얻을 수 있도록 가상 네트워크 검증 서비스에 퍼미션을 부여할 수 있다. 가상 네트워크 검증 서비스는 선언적 논리 프로그래밍 언어에 따라 설명 정보를 논리 프로그램으로서 인코딩할 수 있다.
가상 네트워크 검증 서비스의 실시형태는, 포트 스캐닝 및 구문 확인 방법과 같은 기존의 네트워크 분석 방법과 비교할 때 상당한 이점을 제공할 수 있다. 이러한 기존 방법과 달리, 인코딩된 가상 네트워킹 규칙 및 가상 네트워크 설명을 통해, 가상 네트워크 검증 서비스는 모든 네트워킹 프리미티브 및 리소스 인스턴스, 및 복잡한 상호 관계에 대한 지식을 가질 수 있다. 스캔 시 작동 중인 디바이스에 의존하고, 따라서 스캔 시 존재하는 디바이스들 사이의 네트워크 상에서 경로만을 식별할 수 있는 기존 방법과 달리, 설명 정보는, 가상 네트워크를 설명하는 메타데이터를 유지하는 하나 이상의 제공자 네트워크 서비스의 API에 대한 DESCRIBE 호출만 사용하여 서비스에 의해서 또는 클라이언트에 의해서 얻어질 수 있고, 따라서 각각의 디바이스 또는 인스턴스가 작동하지 않고 리스닝하지 않는 경우에도 네트워크를 통한 경로가 식별될 수 있다. 또한, 포트 스캔 방법은 위협의 존재를 식별할 수 있지만, 위협의 부재는 식별할 수 없다. 구문 확인 방법은 개별 네트워크 디바이스의 얕은 속성을 확인할 수 있지만, 공격 벡터의 존재 또는 부존재를 식별하지 않는다. 일부 실시형태에서, 반면에 가상 네트워크 검증 서비스는 인코딩된 가상 네트워킹 규칙에 표현된 네트워크 정책으로부터 가능한 모든 편차를 찾을 수 있고, 위협 및 공격 벡터의 존재 및 부존재를 식별할 수 있다. 또한, 설명 정보는 가상 네트워크를 설명하는 메타 데이터를 유지하는 하나 이상의 제공자 네트워크 서비스에 대한 DESCRIBE 호출만 사용하여 클라이언트 또는 서비스에 의해 획득될 수 있으므로, 상당한 네트워크 및 CPU 대역폭이 필요한 포트 스캔 방법과 같은 기존 방법과는 달리 클라이언트의 가상 네트워크에 거의 또는 전혀 영향을 주지 않으며, 포트 스캔 방법의 경우처럼 제공자 네트워크의 모든 디바이스에 대한 추가의 완전한 네트워크 액세스가 요구되지 않는다.
일부 실시형태에서, 가상 네트워크 검증 서비스는 클라이언트로부터의 쿼리를 수신한다(예를 들어, 네트워크 도달가능성 분석기). 일부 실시형태에서, 쿼리는 SQL과 유사하지만 네트워크 구성에 적용되는 표현 쿼리 언어로 제공될 수 있다. 이러한 쿼리의 비제한적 예는 인스턴스 A가 인스턴스 B에 SSH를 수행할 수 있도록 모든 인스턴스 쌍의 목록을 제공하기 위해 가상 네트워크 검증 서비스(VNVS: virtual network verification service)를 요청하는 "VNVS query -i list : can-ssh (A, B)"일 수 있다. 대안적으로, 일부 실시형태에서, 쿼리는 인간 친화적인 방식으로 제기될 수 있다. 이러한 쿼리의 비제한적인 예는 "Show me a list of all pairs of instances, such that an instance A can SSH into an instance B"와 같은 것일 수 있다. 일부 실시형태에서, 적어도 일부 쿼리는 가상 네트워크 검증 서비스에 대한 그래픽 인터페이스를 통해 사용자 인터페이스 요소(예를 들어, 메뉴)에서 사용자에게 미리 정의되어 제공될 수 있다.
쿼리는 생성된 논리 프로그램에 대한 정리에 대응되고 제약 문제를 표현할 수 있다. 가상 네트워크 검증 서비스는 선언적 논리 프로그래밍 언어에 따라 제약 문제를 해결하도록 구성된 제약 솔버 프로그램(제약 솔버 엔진이라고도 함)을 사용하여 인코딩된 규칙에 따라 인코딩된 설명에 대한 쿼리에 의해서 표현된 제약 문제를 해결할 수 있고, 클라이언트에게 결과를 제공한다. 일부 실시형태에서, 가상 네트워크 검증 서비스는 쿼리를 제기하기 위한 API 및 인터페이스를 제공할 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스는 클라이언트가 API 및 인터페이스를 통해 선택할 수 있는 일련의 표준 쿼리를 제공할 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스는 클라이언트가 API 및 인터페이스를 통해 사용자 지정 쿼리를 작성하고 제출하도록 허용할 수 있다.
실시형태에서, 가상 네트워크 검증 서비스는 제공자 네트워크 상의 가상 네트워크에 대한 (제약을 특정하는 쿼리로서 제기된) 질문에 대한 답변을 얻기 위해, 클라이언트(예: 네트워크 도달가능성 분석기)에 의해서, 콘솔의 서비스에 대한 그래픽 인터페이스 또는 커맨드 라인 인터페이스(CLI)를 통해 사용될 수 있다. 쿼리로서 제기될 수 있는 예시의 질문은 다음을 포함하나, 이에 한정되지 않는다:
ㆍ 가상 네트워크에서 어느 인스턴스가 인터넷으로부터 액세스 가능한가?
ㆍ 어느 인스턴스가 가상 네트워크의 지정된 리소스(예: 데이터베이스, 캐시, 스토리지 종점, 다른 인스턴스 등)에 액세스 할 수 있는가?
ㆍ 가상 네트워크가 네트워킹 보안 표준의 모범 사례를 준수하는가?
ㆍ 가상 네트워크가 이러한 규칙 세트로 인코딩된 회사의 모범 사례를 준수하는가?
더 일반적으로, 가상 네트워크 검증 서비스는 가상 네트워크의 리소스와 가상 네트워크의 다른 리소스 사이의 예상된 파이프 및 외부 엔티티에 대한 예상된 파이프가 개방되어 있다는 점과, 예상된 파이프가 유일한 개방된 파이프라는 점(예: 외부 엔티티가 도달하는 것이 허용될 수 없는 가상 네트워크의 리소스에 도달할 수 없음)을 검증하기 위해서, 클라이언트(예: 네트워크 도달가능성 분석기)에 의해서 사용될 수 있다.
가상 네트워크의 리소스와 다른 리소스 사이의 파이프 또는 가상 네트워크의 리소스와 외부 엔티티 사이의 파이프가 개방되어 있다는 점을 검증하는 단계는 리소스들 사이 또는 리소스와 외부 개체 사이에 네트워크를 통한(즉, 네트워크 연결이 있다는 점) 경로 또는 루트(예: 리소스로부터 외부 개체가 가상 네트워크의 리소스에 액세스 할 수 있는 HTTPS 게이트웨이까지의 경로)가 있는지 확인하는 검증하는 단계를 포함할 수 있다. 경로는 종점들 사이에 네트워크 연결을 제공하는 네트워크 상의 직접 경로이거나, 대안적으로, 루트 상의 하나 이상의 홉을 통과하고 종점들 사이에 네트워크 연결을 제공하는 추리적 경로(transitive path)일 수 있다. 가상 네트워크에 대한 설명 정보는 가상 네트워크를 설명하는 메타 데이터를 유지하는 하나 이상의 제공자 네트워크 서비스의 API에 대한 DESCRIBE 호출만을 사용하여 얻어질 수 있고, 따라서 각 디바이스 또는 인스턴스가 작동하지 않고 리스닝하지 않는 경우에도 경로가 검증될 수 있다. 일부 실시형태에서, 가상 네트워크에 대한 설명 정보는 리소스에 부여되거나 거부된 퍼미션(예: 가상 네트워크의 종점에 대한 하나의 리소스 액세스를 허용 또는 거부하는 퍼미션, IP 주소 범위, 또는 주어진 종점(예: 스토리지 종점)에 액세스할 수 있거나 할 수 없는 리소스 인스턴스의 특정 포트를 지정하는 퍼미션 등)을 포함할 수 있다. 이러한 실시형태에서, 가상 네트워크의 경로가 개방되어 있는지 검증하는 단계는 경로에 필요한 퍼미션이 부여되었는지 검증하는 단계를 포함할 수 있다. 마찬가지로, 예상된 경로가 유일한 개방된 경로라는 점을 검증하는 단계는 가상 네트워크 또는 외부 엔티티의 리소스가 액세스하지 않아야 하는 리소스에 액세스할 수 있는 퍼미션을 갖지 않았다고 결정하는 단계를 포함할 수 있다.
적절한 가상 네트워킹 규칙 세트를 갖는 가상 네트워크 검증 서비스의 실시형태는 예를 들어, 클라이언트의 가상 네트워크가 PCI DSS (Payment Card Industry Data Security Standard), FedRAMP (Federal Risk and Authorization Management Program) 표준 또는 HIPAA (Health Insurance Portability and Accountability Act) 표준과 같은 네트워킹 보안 표준을 준수하는 점을 고객이 검증하는 것을 돕고, 클라이언트의 가상 네트워크가 클라이언트의 내부 보안 표준 또는 기타 내부 네트워킹 요구 사항을 준수한 점을 검증하기 위해서, 클라이언트(예: 네트워크 도달가능성 분석기)에 의해서 사용될 수 있다.
가상 네트워크 검증 서비스에 대한 다른 예시적 응용은 네트워크 보안 문제 또는 소프트웨어 버그와 같은 취약점이 가상 네트워크에 미칠 수 있는 영향을 식별하기 위한 것이다. 예를 들어, 가상 네트워크의 특정 인스턴스에서 실행되는 특정 소프트웨어 프로그램에서 취약점이 발견되면 클라이언트(예: 네트워크 도달가능성 분석기)는 이 인스턴스가 가상 네트워크에서 다른 인스턴스와 통신할 수 있는 모든 방법을 결정하기 위해 쿼리를 작성하고 제출할 수 있다. 결과는 클라이언트가 취약점의 가능한 영향을 식별하고, 따라서 상황을 가장 잘 처리하는 방법을 결정할 수 있도록 한다. 예를 들어, 취약점이 있는 인스턴스로부터 미션 크리티컬 데이터베이스를 갖는 인스턴스로의 직접적인 경로가 없는 경우, 문제는 일반적인 유지 관리 일정에 따라 처리하기 위해 더 낮은 우선 순위를 부여받을 수 있다. 취약성이 있는 인스턴스가 미션 크리티컬 데이터베이스가 있는 인스턴스에 영향을 미칠 경우, 취약성을 즉시 해결하기 위해 가상 네트워크의 적어도 일부를 종료하기로 결정할 수 있다.
가상 네트워크 검증 서비스에 대한 다른 예시적 응용은 제공자 네트워크 환경의 가상 네트워킹 변경 사항에 대한 오프라인 테스트이다. 예를 들어, 제공자 네트워크 환경에서 가상 네트워킹이 작동하는 방식의 논리를 설명하는 가상 네트워킹 규칙은 테스트 환경에서 사용될 수 있어, 변경 사항이 제공자 네트워크에 적용되기 전에 가상 네트워킹 프리미티브에 대한 변경 사항을 테스트하여 변경 사항이 가상 네트워크에 무슨 영향을 미칠 수 있는지를 결정할 수 있다.
가상 네트워크 검증 서비스에 대한 또 다른 예시적 응용은 클라이언트를 위한 가상 네트워크를 자동으로 합성하는 것이다. 예를 들어, 클라이언트(예: 네트워크 도달가능성 분석기)는 특정 네트워킹 보안 표준을 준수하고 네트워킹 프리미티브의 지정된 세트를 포함하는 가상 네트워크를 설정하려고 할 수 있다. 가상 네트워크 검증 서비스 및 가상 네트워킹 규칙은, 모든 제약 조건(클라이언트 특정 프리미티브, 네트워킹 보안 표준, 제공자 네트워크 환경에서 가상 네트워킹이 작동하는 방식에 대한 논리를 설명하는 가상 네트워킹 규칙 등)을 충족하는 가상 네트워크를 자동으로 합성하고 검증하는데 사용될 수 있어, 클라이언트가 가상 네트워크 자체를 구축하고 테스트할 필요가 없다. 예를 들어, 표준에 의해 부과된 제약은 쿼리로 제기될 수 있고, 이 쿼리는 해결되어 제약을 충족하는 가상 네트워크 구성을 결정하거나 또는 대안적으로 가상 네트워크 구성이 제약 조건을 준수하는지 여부를 결정할 수 있다. 다음으로, 제약 조건을 따르는 가상 네트워크가 합성될 수 있거나, 대안적으로 제약 조건을 준수하도록 가상 네트워크가 수정될 수 있다.
가상 네트워크 검증 서비스에 대한 다른 예시적 응용은 구성 또는 변경 사항이 제공자 네트워크에 구현되기 전에 클라이언트(예: 네트워크 도달가능성 분석기)가 새 가상 네트워크 구성 또는 기존 가상 네트워크의 변경 사항을 검증하도록 허용하는 단계에서이다. 예를 들어, 가상 네트워크 구성은 클라이언트에 의해 생성되거나 수정될 수 있으며 구성에 대한 제약 조건은 쿼리로 제시될 수 있다. 쿼리는 해결되어 구성이 제공자 네트워크에서 구현되기 전에 구성이 쿼리에 제기된 클라이언트의 제약을 준수하는지 검증할 수 있다.
도 8은 일부 실시형태에 따른 제공자 네트워크 환경에서의 가상 네트워크 검증 서비스를 도해한다. 클라이언트에 제공자 네트워크(800)를 제공하는 서비스 제공자는 클라이언트가 제공자 네트워크(800) 상의 가상 네트워크(810)에서 자원을 설정하고 관리할 수 있도록 하는 서비스 및 API(application programming interface)(802)를 제공할 수 있다. 제공자 네트워크(800) 환경의 가상 네트워크(810)는, 각각의 클라이언트의 제공자 네트워크 리소스 세트를 포함하고, 클라이언트의 리소스에 대한 제공자 네트워크(800)의 논리적으로 격리된 섹션으로서 동작하는 네트워크 공간(예를 들어, 주소 범위 또는 주소 공간에 의해 논리적으로 정의됨)으로 광범위하게 정의될 수 있다. 가상 네트워크(810)는 네트워크 프로토콜에 따라 개인 또는 로컬 IP (인터넷 프로토콜) 주소 공간, 예를 들어 IPv4 (Internet Protocol version 4) 주소 범위 또는 서브넷 내의 32 비트 IP 주소를 구현할 수 있다. 가상 네트워크(810) 상의 소스(예를 들어, 계산 리소스, 스토리지 리소스, 서버, 호스트 디바이스 등과 같은 종점)에는 가상 네트워크(810)의 주소 공간 내에서 IP 주소(예를 들어, 32 비트 IPv4 주소)가 할당될 수 있다. 제공자 네트워크(800) 상의 클라이언트의 가상 네트워크(810)는 클라이언트에 의해 가상 컴퓨팅 리소스 인스턴스로 구성된 호스트 디바이스 상의 가상 머신(VM)과 같은 클라이언트의 리소스 인스턴스를 포함한다. 제공자 네트워크의 리소스 인스턴스 중 적어도 일부는 여러 운영 체제가 호스트 컴퓨터에서 즉, 호스트 디바이스의 VM으로서 동시에 실행될 수 있도록 하는 하드웨어 가상화 기술에 따라 구현될 수 있다. 호스트 디바이스의 하이퍼 바이저 또는 VMM(가상 머신 모니터)은 가상 플랫폼을 갖는 각 호스트 상에 VM을 제공하고 호스트 디바이스에서 VM의 실행을 모니터링한다. 각 VM은 하나 이상의 IP 주소를 구비하고, 각각의 호스트의 VMM은 호스트에 있는 VM의 IP 주소를 인식할 수 있다.
다양한 네트워킹 리소스, 구조 및 기능(네트워킹 프리미티브라고 함)은 다양한 제공자 네트워크 서비스(802)를 통해 제공자 네트워크(800)의 클라이언트에 제공될 수 있다. 클라이언트는 다양한 서비스 및 API(802)를 적어도 부분적으로 사용하여 제공자 네트워크(800)에서 그들의 가상 네트워크(810)를 생성, 구성, 채우기 및 수정할 수 있다. 다음은 서비스(802)에 의해 제공될 수 있고 제한하려는 의도가 아닌 예시적인 네트워킹 프리미티브를 나열한다.
ㆍ 가상 네트워크
ㆍ 리소스 인스턴스(예: 서비스(802)를 사용하는 클라이언트에 의해, 가상 컴퓨팅 리소스 인스턴스(예: 어플리케이션 서버, 웹 서버, 데이터베이스 서버, 액세스 포인트, 게이트웨이, 로드 밸런서, 로깅 서비스, 네트워크 모니터링 및 분석 서비스와 같은 특정 제공자 네트워크 서비스의 인스턴스, 코드 저장소 서비스, 컨테이너 관리 서비스, 등)로 구성된 VM)
ㆍ 태그 - 일부 실시형태에서, 클라이언트는 리소스 인스턴스에 태그를 지정함으로써 가상 네트워크(들) 내의 특정 리소스 인스턴스(예를 들어, VM)에 특정 역할을 할당할 수 있다. 예를 들어 태그는 PROD 또는 DEV와 같은 텍스트 문자열일 수 있다. 태그는 리소스 인스턴스에 대한 메타 데이터에 저장될 수 있다. 태그는 표준 제공자 네트워크 정의 태그 및/또는 클라이언트 정의 태그를 포함할 수 있다. 리소스 인스턴스의 역할 예는 SSH (Secure Socket Shell) 액세스 인스턴스, 로깅 서비스 인스턴스, 코드 저장소 인스턴스, 프로덕션 리소스 인스턴스 및 개발 리소스 인스턴스를 포함하나, 이에 한정되지 않는다.
ㆍ 가상 네트워크 종점(예: 계산 리소스, 스토리지 리소스, 서버, 호스트 디바이스 등과 같은 종점).
ㆍ 가상 네트워크 피어링 연결. 일부 실시형태에서, 클라이언트는 제공자 네트워크에 둘 이상의 가상 네트워크를 설정할 수 있다. 인터넷과 같은 외부 네트워크를 통과하지 않고도 가상 네트워크가 제공자 네트워크를 통해 안전하게 통신할 수 있도록 하는 가상 네트워크간에 피어링 연결이 설정될 수 있다.
ㆍ 가상 네트워크 외부 엔티티에서 가상 네트워크 리소스 중 일부에 대한 액세스를 제공하는 인터넷 게이트웨이.
ㆍ 로드 밸런서(예: 가상 네트워크의 리소스 인스턴스 그룹 또는 클러스터 간에 네트워크 트래픽을 분산하는 가상화된 로드 밸런서 인스턴스).
ㆍ NAT (Network Address Translation) 인스턴스.
ㆍ NAT 게이트웨이.
ㆍ 네트워크 액세스 제어 목록(ACL)
ㆍ 네트워크 인터페이스
ㆍ 루트 테이블.
ㆍ 서브넷 - 가상 네트워크는, 반드시 그런 것은 아니지만, 둘 이상의 하위 네트워크 또는 서브넷으로 세분화될 수 있다.
ㆍ 보안 그룹-일부 실시형태에서, 제공자 네트워크는 클라이언트가 클라이언트의 가상 네트워크 내에서, 서브넷 내에서 또는 서브넷을 통해 가상 보안 그룹을 설정하고 관리하도록 허용할 수 있다. 보안 그룹은 리소스 인스턴스의 논리적 그룹이며 보안 그룹 규칙에 따라 보안 그룹 내의 하나 이상의 리소스 인스턴스에 도달 가능한 트래픽을 제어하는 가상 방화벽 역할을 한다.
ㆍ 지역 - 제공자 네트워크 서비스 및 리소스(예: 가상 네트워크, VM 인스턴스, 데이터 저장소, 게이트웨이, 부하 분산기 등)는 여러 지리적 위치 또는 지역에서 지원될 수 있다. 본원에서 사용되는 지역은 제공자 네트워크 서비스를 지원하고 클라이언트가 리소스를 시작하고 구성할 수 있는 별도의 지리적 영역이다. 서비스 및 API를 사용하면 클라이언트가 하나 이상의 지역에서 리소스를 시작하거나 복제할 수 있다.
ㆍ 구역-각 지역은 본원에서 구역으로 지칭되는 다수의 격리된 위치를 포함할 수 있다. 클라이언트의 리소스 인스턴스는 한 영역의 리소스 인스턴스가 실패할 경우 다른 영역의 인스턴스가 요청을 처리할 수 있도록 지역 내의 여러 영역에 분산될 수 있다.
일부 실시형태에서, 클라이언트는 각각의 제공자 네트워크 서비스(802)를 사용하여 상기 네트워킹 프리미티브 중 하나 이상의 인스턴스를 포함하는 제공자 네트워크(800) 상에 가상 네트워크(810)를 설정할 수 있다. 도 8은 제공자 네트워크(800)상의 예시적인 가상 네트워크(810)를 도해하며 제한하려는 의도가 아니다. 클라이언트의 가상 네트워크(810)는 가상 네트워크의 기능을 구현하는 리소스 인스턴스(818)(예를 들어, VM), 예를 들어 어플리케이션 서버, 웹 서버, 데이터베이스 서버 등을 포함할 수 있다. 리소스 인스턴스(818)는 인스턴스(818A 및 818B)의 그룹 또는 클러스터를 포함할 수 있으며; 예를 들어, 인스턴스(818A)는 생산 환경을 나타낼 수 있는 반면, 인스턴스(818B)는 개발 환경을 나타낼 수 있다. 일부 실시형태에서, 인스턴스(818A 및 818B)는 상이한 서브넷 및/또는 보안 그룹에 있을 수 있다.
클라이언트의 가상 네트워크(810)는 또한 어플리케이션 및 운영 체제 로깅 서비스, 네트워크 모니터링 및 분석 서비스, 코드 저장소 서비스, 컨테이너 관리 서비스 등과 같은 클라이언트의 가상 네트워크(810)에서 특정 제공자 네트워크 서비스를 구현하는 서비스 인스턴스(816)(예를 들어, VM)를 포함할 수 있다.
클라이언트의 가상 네트워크(810)는 또한 클라이언트 네트워크(880) 및 다른 외부 엔티티(890) 상의 디바이스(882)가 인터넷과 같은 중간 네트워크(850)를 통해 가상 네트워크(810) 내의 리소스 및 종점과 통신할 수 있게 하는 액세스 인스턴스를 포함할 수 있다. 예를 들어, 액세스 인스턴스는 로드 밸런서 및 게이트웨이(인터넷 게이트웨이, NAT 게이트웨이 등)를 포함할 수 있다. 이 실시예에 도시된 바와 같이, 일부 실시형태에서 액세스 인스턴스는 HTTPS 액세스 인스턴스(814) 및 SSH 액세스 인스턴스(812)를 포함할 수 있다. HTTPS 액세스 인스턴스(814)는 HTTPS 프로토콜을 사용하는 외부 엔티티(890)로부터 리소스 인스턴스(818A 및 818B)에 각각 액세스하기 위한 인스턴스(814A 및 814B)뿐만 아니라 HTTPS 프로토콜을 사용하여 클라이언트 네트워크(880) 상의 디바이스(882)로부터 서비스 인스턴스(816)에 액세스하기 위한 인스턴스(814C)를 포함할 수 있다. 일부 실시형태에서, 클라이언트는 예를 들어 SSH를 사용하여 클라이언트 네트워크(880) 상의 디바이스(882)(예를 들어, 콘솔)로부터 가상 네트워크(810)의 리소스 인스턴스에 액세스할 수 있다. 일부 실시형태에서, SSH를 사용하여 리소스 인스턴스에 액세스하기 위해서, 클라이언트는 인스턴스의 IP 주소와 키를 받는다. 그런 다음 클라이언트는 제공된 정보를 사용하여 인스턴스에 SSH로 직접 연결될 수 있다. 일부 실시형태에서, SSH 액세스 인스턴스(812)는 클라이언트가 SSH 프로토콜을 사용하여 클라이언트 네트워크(880)상의 디바이스(882)(예를 들어, 콘솔)로부터 가상 네트워크(810) 상의 클라이언트의 리소스 인스턴스에 액세스하는 것을 허용하는 프록시로서 작용할 수 있다. 예를 들어, SSH 액세스 인스턴스(812)는 클라이언트의 가상 네트워크의 공개적으로 액세스 가능한 서브넷에 있을 수 있다. 클라이언트의 리소스 인스턴스 중 적어도 일부는 공개적으로 액세스할 수 없는 서브넷에 있을 수 있다. 이러한 리소스 인스턴스는 SSH 액세스 인스턴스(812)에 연결된 보안 그룹으로부터 SSH 액세스를 허용하는 보안 그룹에 있을 수 있다. 클라이언트는 SSH 액세스 인스턴스(112)에 연결하여 클라이언트의 리소스 인스턴스에 연결할 수 있다.
도 8에 도시된 바와 같이, 제공자 네트워크(800)는 제공자 네트워크(800) 상의 하나 이상의 컴퓨팅 디바이스에 의해 구현되는 가상 네트워크 검증 서비스(830)를 포함할 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스(830)의 인스턴스는 클라이언트의 가상 네트워크(800) 상에, 예를 들어 도 8에 도시된 바와 같이 SSH 액세스 인스턴스(812)에 의해 구현될 수 있다. 가상 네트워크 검증 서비스(830)는 선언적 논리 프로그래밍 언어(예를 들어, Datalog)를 활용하여 클라이언트가 제약 문제로서 제공자 네트워크 상의 가상 네트워크에 대한 재귀 쿼리를 포함하는 쿼리를 표현할 수 있도록 하고, 제약 솔버 엔진을 사용하여 쿼리를 해결함으로써 쿼리에 대한 결과를 제공한다.
가상 네트워크 검증 서비스(830)에서, 서비스(802)에 의해 제공되는 네트워킹 프리미티브에 대한 가상 네트워킹 의미 및 논리는 논리 프로그래밍 언어에 따라 가상 네트워킹 규칙의 세트로 표현되고 인코딩될 수 있다. 가상 네트워킹 규칙은 가상 네트워크(810)에서 구현되는 다양한 네트워킹 프리미티브 간의 공통 관계 및 상호 작용을 표현하는 규칙을 포함할 수 있다. 가상 네트워킹 규칙은 네트워킹 보안 표준(예 : PCI, FedRAMP, HIPAA 등) 또는 클라이언트의 내부 보안 표준 또는 기타 네트워킹 요구 사항을 인코딩하는 규칙을 통합할 수도 있다.
가상 네트워크 검증 서비스(830)는 클라이언트의 가상 네트워크(810)에 대한 설명 정보를 얻는다. 설명 정보는 예를 들어, 가상 네트워크(810)에서 구현되는 네트워킹 프리미티브의 인스턴스를 식별할 수 있고, 다양한 인스턴스의 설명(예를 들어, 인스턴스에 할당된 역할, 인스턴스에 부여되거나 거부된 퍼미션, 인스턴스에 할당된 IP 주소 등)을 포함할 수 있고, 인스턴스들 간의 관계(예를 들어, 인스턴스들 사이의 경로)를 설명하고, 외부 엔티티(890)에 대한 인터페이스 또는 액세스 포인트를 설명할 수 있다. 일부 실시형태에서, 클라이언트는 가상 네트워크(810)로부터 설명 정보를 얻을 수 있고, 가상 네트워크 검증 서비스(830)에 설명 정보를 제공할 수 있다. 또는, 일부 실시형태에서, 클라이언트는 가상 네트워크 검증 서비스(830)가 가상 네트워크(810)로부터 직접 설명 정보를 얻을 수 있도록 가상 네트워크 검증 서비스(830)에 퍼미션을 부여할 수 있다. 가상 네트워크 검증 서비스(830)는 선언적 논리 프로그래밍 언어에 따라 설명 정보를 논리 프로그램으로서 인코딩할 수 있다.
가상 네트워크 검증 서비스(830)는 선언적 논리 프로그래밍 언어를 활용하고 클라이언트가, 예를 들어 클라이언트 네트워크(880)의 클라이언트 디바이스(882) 상의 서비스(830)에 대한 그래픽 인터페이스 또는 커맨드 라인 인터페이스(CLI)를 통해 제공자 네트워크(800)에서 가상 네트워크(810)에 대한 쿼리를 제공할 수 있다. 일부 실시형태에서 사용될 수 있는 예시적인 논리 프로그래밍 언어는 Datalog이다. 다른 선언적 논리 프로그래밍 언어가 사용될 수 있다는 점을 주의한다. 일부 실시형태에서, 쿼리는 SQL과 약간 유사할 수 있지만 네트워크 구성에 적용되는 표현 쿼리 언어로 제공될 수 있다. 대안적으로, 일부 실시형태에서, 쿼리는 인간 친화적인 방식으로 제기될 수 있다. 쿼리는 생성된 논리 프로그램에 대한 정리에 대응되고 제약 문제를 표현한다. 가상 네트워크 검증 서비스(830)는 제약 솔버 엔진을 이용하여 인코딩된 규칙에 따라 인코딩된 설명에 대한 쿼리에 의해 표현된 제약 문제를 해결하고 그 결과를 클라이언트에게 제공할 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스(830)는 쿼리를 제기하기 위한 API 및 인터페이스를 제공할 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스(830)는 클라이언트가 API 및 인터페이스를 통해 선택할 수 있는 일련의 표준 쿼리를 제공할 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스(830)는 클라이언트가 API 및 인터페이스를 통해 사용자 지정 쿼리를 작성하고 제출하도록 허용할 수 있다.
다음은 도 8에 도시된 예시적인 가상 네트워크에 대해 클라이언트에 의해 제기될 수 있는 예시적인 쿼리를 설명하며, 제한하려는 의도가 아니다.
가상 네트워크(810)의 일부 실시형태에서, 가상 네트워크(810) 상의 리소스는 클라이언트 네트워크(880) 상의 지정된 종점으로부터 SSH 액세스 인스턴스(들)(812)를 통해서 SSH를 거쳐서만 액세스 가능해야 한다. 따라서, 클라이언트는 가상 네트워크(810)의 어떤 인스턴스도 중간 네트워크(850)의 종점으로부터 SSH를 통해 액세스 가능하지 않다는 점을 검증하기를 원할 수 있다. 이를 검증하는 예제 쿼리는 다음과 같이 표현될 수 있다:
all Instance:
!internet-can-ssh-to-instance(Instance).
클라이언트는 또한 클라이언트 네트워크(880)로부터 가상 네트워크(810) 상의 SSH 액세스 인스턴스(들)(812)가 SSH를 통해 액세스 가능한지 확인하기를 원할 수 있다. 앞서 언급된 바와 같이, 일부 실시형태에서, 가상 네트워크(810) 내의 클라이언트의 인스턴스 중 적어도 일부는 특정 역할이 할당될 수 있으며, 역할은 인스턴스의 메타 데이터에 저장된 태그로 표시될 수 있다. 태그는 설명 정보에 포함될 수 있고, 따라서 가상 네트워크(810)에 대한 인코딩된 설명에 표시될 수 있다. 따라서, 일부 실시형태에서, 예를 들어 특정 역할이 할당된 인스턴스가 실제로 그러한 역할을 수행할 수 있는지를 검증하기 위해 태그가 쿼리에 사용될 수 있다. 클라이언트 네트워크(880)로부터 가상 네트워크(810) 상의 SSH 액세스 인스턴스(들)(812)가 SSH를 통해 액세스 가능한지 검증하는 예시적 쿼리는 다음과 같이 표현될 수 있다:
all Instance:
atom/instance-tag(Instance, tag-key/Name, tag-value/SSHAccessInstance)
<=> ClientNetwork-can-ssh-to-instance(Instance).
위의 표현은, 제약 솔버에 의해 평가될 때, 가상 네트워크(810)의 모든 인스턴스를 확인한다. SSHAccessInstance로 태그가 지정된 인스턴스의 경우, 제약 조건 솔버는 클라이언트 네트워크(880)로부터 SSH를 통해 인스턴스에 도달 가능한지 여부를 결정하고, 그렇다면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환한다.
다음은 클라이언트가 가상 네트워크 검증 서비스(830)에 적절한 쿼리를 제기함으로써 검증할 수 있는 가상 네트워크(810)의 양태들의 몇몇 다른 예들을 나열하며, 제한하려는 의도는 아니다:
ㆍ SSH 액세스 인스턴스(들)(812)만이 클라이언트 네트워크(880)로부터 SSH를 통해 액세스 가능하다.
ㆍ 리소스 인스턴스(818A 및 818B)는 중간 네트워크(850B)(예를 들어, 인터넷)를 통해 외부 엔티티(890)에 의해 각각의 HTTPS 액세스 인스턴스(814A 및 814B)를 통해 도달 가능하다.
ㆍ 리소스 인스턴스(818A 및 818B)는 요청을 인증하기 위해 중간 네트워크(850B)에 도달할 수 있다.
ㆍ 리소스 인스턴스(818A 및 818B)는 지정된 서비스 인스턴스(816)에 기록할 수 있다.
ㆍ 지정된 서비스 인스턴스(816)는 HTTPS 액세스 인스턴스(들)(814C)를 통해 클라이언트 네트워크(880)로부터 도달될 수 있다.
ㆍ 특정된 서비스 인스턴스(816)는 가상 네트워크(810) 상의 특정된 종점에 도달할 수 있다.
ㆍ 모든 인스턴스는 지정된 태그 세트 중 하나로 태그가 지정된다.
도 9는 일부 실시형태에 따른 예시적인 가상 네트워크 검증 서비스의 컴포넌트 및 작동을 도해한다. 가상 네트워크 검증 서비스(930)는 제공자 네트워크 상의 하나 이상의 컴퓨팅 디바이스에 의해 구현될 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스(930)의 인스턴스는 클라이언트의 가상 네트워크 상에, 예를 들어 도 8에 도시된 바와 같이 SSH 액세스 인스턴스(812)에 의해 구현될 수 있다. 도 9에 도시된 바와 같이, 일부 실시형태에서, 가상 네트워크 검증 서비스(930)는 서비스 엔진(934), 제약 솔버(936) 엔진 및 API(932)를 포함할 수 있다. 서비스 엔진(934)은 규칙 인코딩(950) 논리, 쿼리 처리(960) 논리, 및 설명 인코딩(970) 논리를 구현할 수 있지만, 이에 제한되지 않는다. 제약 솔버(936)는 인코딩된 가상 네트워킹 규칙(938)을 기반으로 인코딩된 설명(940)에 의해 표현된 가상 네트워크에 대한 쿼리(재귀 쿼리를 포함)를 해결하도록 구성된 선언적 논리 프로그래밍 언어 엔진을 나타낼 수 있다. API(932)는 클라이언트를 포함하지만 이에 제한되지 않는 외부 엔티티에 서비스(910)의 기능을 노출한다.
도 9의 (1A) 및 (1B)에서, 서비스(930)의 규칙 인코딩(950) 논리는 가상 네트워크에 적용될 가상 네트워킹 규칙(938)을 획득(1A) 및 인코딩(1B)할 수 있다. 인코딩될 규칙은 서비스 제공자, 클라이언트 또는 기타 외부 엔티티 또는 소스로부터 얻을 수 있다. 예시의 인코딩된 규칙(938)은 이 문서의 더 뒤에 제공된다.
실시형태에서, 가상 네트워크에서 사용되는 네트워킹 프리미티브에 대한 가상 네트워킹 시멘틱 및 논리는 논리 프로그래밍 언어에 따라 가상 네트워킹 규칙 세트(938)로 획득되고 인코딩될 수 있다. 가상 네트워킹 규칙(938)은, 가상 네트워크에서 구현될 수 있고, 제공자 네트워크의 서비스 및 API에 의해 제공되는 다양한 네트워킹 프리미티브 간의 공통 관계 및 상호 작용을 표현하는 규칙을 포함할 수 있다. 따라서, 실시형태는 가상 네트워킹이 제공자 네트워크 환경에서 작동하는 방식의 논리를 설명하는 가상 네트워킹 규칙(938)을 하나의 위치 또는 파일에서 제공할 수 있다.
일부 실시형태에서, 가상 네트워크 검증 서비스(930)는 PCI DSS (Payment Card Industry Data Security Standard), FedRAMP (Federal Risk and Authorization Management Program) 표준 또는 HIPAA (Health Insurance Portability and Accountability Act) 표준 또는 클라이언트의 내부 보안 표준과 같은 네트워킹 보안 표준에 대한 규칙을 획득하고 인코딩할 수 있고, 따라서 네트워킹 보안 표준을 검증하기 위한 규칙을 포함하는 가상 네트워킹 규칙 세트(938)가 구현될 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스(930)는 클라이언트의 가상 네트워크가 특정 표준을 준수하는지 검증하기 위해 클라이언트에 의해서 선택적으로 사용될 수 있는 서로 다른 네트워킹 보안 표준을 각각 인코딩하는 가상 네트워킹 규칙(938)의 두 개 이상의 서로 다른 세트를 제공할 수 있다. 일부 실시형태에서, 가상 네트워크 검증 서비스(930)는 클라이언트가 클라이언트의 내부 보안 표준, 모범 사례 또는 기타 네트워킹 요구 사항을 인코딩하는 컴스텀 규칙을 정의하도록 허용할 수 있고, 따라서 특정 가상 네트워크에 대한 적용을 위해 클라이언트에 의해서 정의된 커스텀 규칙을 포함하는 가상 네트워킹 규칙(938)의 세트가 구현될 수 있다.
도 9의 (2)에서, 서비스(930)의 쿼리 처리(960) 논리는 가상 네트워킹 규칙(938)에 따라 가상 네트워크에 대해 해결될 쿼리를 클라이언트로부터 수신할 수 있다. 일부 실시형태에서, 클라이언트는 그래픽 인터페이스 또는 커맨드 라인 인터페이스(CLI)를 통해 서비스 API(932)에 제공자 네트워크 상의 가상 네트워크에 대한 쿼리를 제공할 수 있다. 일부 실시형태에서, 쿼리는 SQL과 유사하지만 네트워크 구성에 적용되는 표현 언어로 제공될 수 있다. 대안적으로, 일부 실시형태에서, 쿼리는 인간 친화적인 방식으로 제기될 수 있다. 예시적 쿼리는 도 8을 참조하여 위에서 설명된다.
도 9의 (3A) 및 (3B)에서, 서비스(930)의 설명 인코딩(970) 논리는 가상 네트워크의 설명을 획득(3A)하고 인코딩(3B)할 수 있다. 일부 실시형태에서, 서비스(930)의 설명 인코딩(970) 논리는 가상 네트워크에 대한 설명 정보를 획득하고(3A), 쿼리를 해결할 때 설명(940)이 최신 상태임을 보장하기 위해 수신하는 각 쿼리에 대한 인코딩된 설명(940)으로서 설명 정보를 인코딩(3B)한다. 그러나, 일부 실시형태에서, 설명 인코딩(970) 논리는 가상 네트워크에 대한 설명 정보를 획득하고 인코딩할 수 있으며, 인코딩된 설명(940)을 사용하여 둘 이상의 쿼리를 처리할 수 있다. 도 9의 (3A)에서, 서비스(930)의 설명 인코딩(970) 논리는 클라이언트의 가상 네트워크에 대한 설명 정보를 획득한다. 설명 정보는 예를 들어, 가상 네트워크에서 구현되는 네트워킹 프리미티브의 인스턴스를 식별할 수 있고, 다양한 인스턴스의 설명(예를 들어, 인스턴스에 할당된 역할, 인스턴스에 부여되거나 거부된 퍼미션, 인스턴스에 할당된 IP 주소 등)을 포함할 수 있고, 인스턴스들 간의 관계(예를 들어, 인스턴스들 사이의 경로)를 설명하고, 외부 엔티티에 대한 인터페이스 또는 액세스 포인트를 설명할 수 있다. 일부 실시형태에서, 클라이언트는 가상 네트워크로부터 설명 정보를 얻을 수 있고, 가상 네트워크 검증 서비스(930)에 설명 정보를 쿼리와 함께 제공할 수 있다. 또는, 일부 실시형태에서, 클라이언트는 가상 네트워크 검증 서비스(930)가 쿼리에 응답하여 가상 네트워크로부터 직접 설명 정보를 얻을 수 있도록 가상 네트워크 검증 서비스(230)에 퍼미션을 부여할 수 있다. 도 9의 (3B)에서, 서비스(930)의 기술 인코딩(970) 논리는 획득된 기술 정보를 선언적 논리 프로그래밍 언어에 따라 논리 프로그램으로 인코딩할 수 있다.
도 9의 (4)에서, 서비스(930)의 쿼리 처리(960) 논리는 제약 솔버(936)에 쿼리를 제공할 수 있다. 제약 솔버(936)는 인코딩된 규칙(938)에 따라 인코딩된 설명(940)에 대한 쿼리에 의해 표현된 제약 문제를 해결하고, (5A)에서 결과(예를 들어, 쿼리에 의해 제기된 질문에 대한 답변)를 쿼리 처리(960)에 제공하여 (5B)에서 API(932)를 통해 클라이언트에 형식화된 결과를 제공한다. 형식화된 결과에는 텍스트 결과(예: "YES", "NO", "TRUE"또는 "FALSE"와 같은 쿼리에 의해 제시된 제약에 대한 답변을 표현하는 텍스트, 쿼리에 의해 제기된 제약을 충족하는 인스턴스 목록 등) 및/또는 그래픽 결과(예: 쿼리를 해결하여 결정된 둘 이상의 인스턴스 간의 관계에 대한 그래픽 표현, 쿼리를 해결하여 식별된 인스턴스를 식별하는 가상 네트워크의 그래픽 표현 등)를 포함할 수 있다.
도 10은 일부 실시형태에 따라, 제공자 네트워크의 클라이언트에게 가상 네트워크에 관한 정보를 제공하기 위한 방법의 흐름도이다. 1000으로 표시된 바와 같이, 가상 네트워킹 규칙은 획득되고 인코딩될 수 있다. 인코딩될 규칙은 서비스 제공자, 클라이언트 또는 기타 외부 엔티티 또는 소스로부터 얻을 수 있다. 가상 네트워킹 규칙은 제공자 네트워크의 가상 네트워크에서 사용되는 네트워킹 프리미티브에 대한 가상 네트워킹 시멘틱 및 논리를 표현할 수 있다. 일부 실시형태에서, 가상 네트워킹 규칙은 PCI DSS (Payment Card Industry Data Security Standard), FedRAMP (Federal Risk and Authorization Management Program) 표준 또는 HIPAA (Health Insurance Portability and Accountability Act)과 같은 네트워킹 보안 표준을 위한 규칙을 표현할 수 있다. 일부 실시형태에서, 가상 네트워킹 규칙은 클라이언트의 내부 보안 표준 또는 다른 네트워킹 요구 사항을 표현하는 클라이언트 정의 규칙을 포함할 수 있다. 예시의 인코딩된 규칙은 이 문서의 더 뒤에 제공된다.
1010에 표시된 바와 같이, 가상 네트워크 검증 서비스는 클라이언트로부터 가상 네트워크에 대한 쿼리(예: 네트워크 도달가능성 분석기)를 수신할 수 있다. 실시형태에서, 가상 네트워크 검증 서비스는 제공자 네트워크 상의 가상 네트워크에 대한 (재귀 쿼리를 포함한 쿼리로 제기된) 질문에 대한 답변을 얻기 위해, 클라이언트에 의해서, 콘솔의 서비스에 대한 그래픽 인터페이스 또는 커맨드 라인 인터페이스(CLI)를 통해 사용될 수 있다. 일부 실시형태에서, 쿼리는 SQL과 유사하지만 네트워크 구성에 적용되는 표현 언어로 제공될 수 있다. 대안적으로, 일부 실시형태에서, 쿼리는 인간 친화적인 방식으로 제기될 수 있다. 예시적 쿼리는 도 8을 참조하여 위에서 설명된다.
1020에 표시된 바와 같이, 가상 네트워크 검증 서비스는 가상 네트워크에 대한 설명 정보를 획득하고 인코딩할 수 있다. 설명 정보는 예를 들어, 가상 네트워크에서 구현되는 네트워킹 프리미티브의 인스턴스를 식별할 수 있고, 인스턴스의 설명(예를 들어, 계산 인스턴스에 할당된 역할, 리소스 인스턴스에 부여되거나 거부된 퍼미션, 인스턴스에 할당된 IP 주소 등)을 포함할 수 있고, 인스턴스들 간의 관계(예를 들어, 인스턴스들 사이의 경로)를 설명하고, 외부 엔티티에 대한 인터페이스 또는 액세스 포인트(예를 들어, 네트워크 외부의 엔티티가 액세스할 수 있는 계산 인스턴스)를 설명할 수 있다. 일부 실시형태에서, 클라이언트는 가상 네트워크로부터 설명 정보를 얻을 수 있고, 가상 네트워크 검증 서비스에 설명 정보를 제공할 수 있다. 또는, 일부 실시형태에서, 클라이언트는 가상 네트워크 검증 서비스가 가상 네트워크로부터 직접 설명 정보를 얻을 수 있도록 가상 네트워크 검증 서비스에 퍼미션을 부여할 수 있다. 가상 네트워크 검증 서비스는 선언적 논리 프로그래밍 언어(예: Datalog)에 따라 설명 정보를 논리 프로그램으로서 인코딩할 수 있다.
1030에 표시된 바와 같이, 가상 네트워크 검증 서비스는 선언적 논리 프로그래밍 언어(예: Datalog) 제약 솔버 엔진을 사용하여 인코딩된 가상 네트워킹 규칙에 따라 인코딩된 설명에 대한 쿼리를 해결할 수 있다. 1040에 표시된 바와 같이, 쿼리 해결의 결과(예를 들어, 쿼리에 의해 제기된 질문에 대한 답변)가 형식화되어 클라이언트에 제공될 수 있다. 형식화된 결과에는 텍스트 결과(예: "YES", "NO", "TRUE"또는 "FALSE"와 같은 쿼리에 의해 제시된 제약에 대한 답변을 표현하는 텍스트, 쿼리에 의해 제기된 제약을 충족하는 인스턴스 목록 등) 및/또는 그래픽 결과(예: 쿼리를 해결하여 결정된 둘 이상의 인스턴스 간의 관계에 대한 그래픽 표현, 쿼리를 해결하여 식별된 인스턴스를 식별하는 가상 네트워크의 그래픽 표현 등)를 포함할 수 있다.
요소(1040)에서 요소(1010)로 돌아가는 화살표로 표시된 바와 같이, 요소(1010-1040)는 클라이언트의 가상 네트워크에 대한 다수의 쿼리를 제기하고 해결하기 위해 반복적으로 수행될 수 있다. 일부 실시형태에서, 예를 들어, 클라이언트는 일련의 쿼리를 포함하는 스크립트를 작성하고 스크립트를 실행하여 가상 네트워크 검증 서비스에 대한 쿼리를 수행하고 결과를 받을 수 있다. 도 10에 도시된 바와 같이, 일부 실시형태에서, 가상 네트워크 검증 서비스는 가상 네트워크에 대한 설명 정보를 획득하고, 쿼리를 해결할 때 설명이 최신 상태임을 보장하기 위해 수신하는 각 쿼리에 대한 인코딩된 설명으로서 설명 정보를 인코딩할 수 있다. 그러나, 일부 실시형태에서, 가상 네트워크 검증 서비스는 가상 네트워크에 대한 설명 정보를 획득하고 인코딩할 수 있으며, 인코딩된 설명을 사용하여 둘 이상의 쿼리를 처리할 수 있다.
도 11은 일부 실시형태에 따라 클라이언트가 가상 네트워크 검증 서비스에 설명 정보 및 쿼리를 제공하는 제공자 네트워크의 클라이언트에게 가상 네트워크에 관한 정보를 제공하는 방법의 흐름도이다. 1100에 표시된 바와 같이, 클라이언트(예: 네트워크 도달가능성 분석기)는 예를 들어, 제공자 네트워크 서비스(API)에 의해서 제공되는 DESCRIBE 호출을 사용하여 가상 네트워크에서 설명 정보를 얻는다. 1110에 표시된 바와 같이, 클라이언트는 가상 네트워크 검증 서비스에 쿼리와 설명 정보를 보낸다. 1120에 표시된 바와 같이, 검증 서비스는 가상 네트워크에 대한 설명 정보를 인코딩한다. 1130에 표시된 바와 같이, 검증 서비스는 제약 솔버 엔진을 사용하여 인코딩된 가상 네트워크 규칙에 따라 인코딩된 설명에 대한 쿼리를 해결한다. 1140에 표시된 바와 같이, 가상 네트워크 검증 서비스는 쿼리 해결 결과를 클라이언트에 제공한다.
도 12는 일부 실시형태에 따라 클라이언트가 가상 네트워크 검증 서비스에 설명 정보 및 가상 네트워크에 액세스하는 퍼미션을 제공하는 제공자 네트워크의 클라이언트에게 가상 네트워크에 관한 정보를 제공하는 방법의 흐름도이다. 1200에 표시된 바와 같이, 클라이언트(예: 네트워크 도달가능성 분석기)는 서비스가 가상 네트워크에서 설명 정보를 얻을 수 있도록 가상 네트워크 검증 서비스에 퍼미션, 예를 들어, 가상 네트워크에 대한 정보를 얻기 위해 가상 네트워크를 설명하는 메타 데이터를 유지하는 하나 이상의 제공자 네트워크 서비스에 대한 DESCRIBE 호출 사용 퍼미션을 부여한다. 1210에 표시된 바와 같이, 클라이언트는 가상 네트워크 검증 서비스에 쿼리를 보낸다. 1220에 표시된 바와 같이, 가상 네트워크 검증 서비스는 예를 들어, 가상 네트워크를 설명하는 메타 데이터를 유지하는 하나 이상의 제공자 네트워크 서비스에 대한 DESCRIBE 호출을 사용하여 가상 네트워크로부터 설명 정보를 획득한다. 1230에 표시된 바와 같이, 가상 네트워크 검증 서비스는 가상 네트워크에 대한 설명 정보를 인코딩한다. 1240에 표시된 바와 같이, 가상 네트워크 검증 서비스는 제약 솔버 엔진을 사용하여 규칙에 따라 인코딩된 설명에 대한 쿼리를 해결한다. 1250에 표시된 바와 같이, 가상 네트워크 검증 서비스는 쿼리 해결 결과를 클라이언트에 제공한다.
도 13은 일부 실시형태에 따른 2개 이상의 피어링된 가상 네트워크를 포함하는 제공자 네트워크 환경에서의 클라이언트의 가상 네트워크 구현을 도해한다. 도 13은 본원에 설명된 바와 같이 가상 네트워크 검증 서비스(1330)에서 사용될 수 있는 예시적인 가상 네트워킹 규칙을 설명하기 위해 부분적으로 제공된다. 도 13에 도시된 바와 같이, 제공자 네트워크(1300) 상의 클라이언트의 가상 네트워크 구현(1310)은 둘 이상의 가상 네트워크(1320)를 포함할 수 있다. 도 13은 클라이언트의 가상 네트워크 구현(1310)에서 2개의 가상 네트워크(1320A 및 1320B)를 도시한다. 일부 실시형태에서, 가상 네트워크(1320A 및 1320B)는 각각 하나 이상의 서브넷을 포함할 수 있고, 보안 그룹은 가상 네트워크(1320A 및 1320B)에 설정될 수 있다. 네트워크 종점(1322A 및 1322B)은 각각의 가상 네트워크(1320A 및 1320B)에서 네트워킹 프리미티브(예를 들어, 리소스 인스턴스)의 다양한 인스턴스의 네트워크 인터페이스를 나타낸다. 가상 네트워크(1320A 및 1320B) 상의 인스턴스가 인터넷과 같은 외부 네트워크(1350)를 통과할 필요 없이 제공자 네트워크(1300)를 통해 안전하게 통신할 수 있도록 하는 피어링 연결(1324)이 가상 네트워크(1320A 및 1320B) 사이의 제공자 네트워크(1300)를 통해 설정될 수 있다.
"개인 라우팅"에 대한 예제 규칙은 아래에 주어진다. 이 예는 제한하기 위한 것이 아니다. 이 예에서 사용된 "라우팅"은 방화벽이 없는 경우 IP 패킷이 한 종점으로부터 다른 종점으로 유동될 수 있는지 여부를 의미한다. 가상 네트워크 구현(1310) 내의 2개의 종점 사이의 라우팅은 "개인 라우팅"으로 지칭될 수 있다. 규칙은 양 종점이 동일한 가상 네트워크(1320)에 있는지 또는 가상 네트워크 구현(1310)에서 상이한 가상 네트워크(1320)에 있는지 여부에 따라 상이할 수 있다. 다음은 가상 네트워크 구현(1310)에서 두 종점 사이에서 패킷이 유동될 수 있는지 결정하기 위한 설명 논리 프로그래밍 언어에 따른 예시적 규칙을 설명한다:
routable-private: endpoint -> endpoint -> type
-: routable-private Endpoint1 Endpoint2
<- routable-private-one-way Endpoint1 Endpoint2
<- routable-private-one-way Endpoint2 Endpoint1
첫 번째 줄은 종점의 유형을 정의한다. Endpoint1 및 Endpoint2는 변수이다. 규칙(routable-private Endpoint1 Endpoint2)은 (routable-private-one-way Endpoint1 Endpoint2) AND (routable-private-one-way Endpoint2 Endpoint1)가 모두 참(그렇지 않으면 거짓)이면 참으로 평가된다. 가상 네트워크(1320) 내의 종점들 사이의 라우팅의 경우, routable-private-one-way 규칙은 다음과 같이 정의될 수 있다:
routable-private-one-way: endpoint -> endpoint -> type
-: routable-private-one-way Endpoint1 Endpoint2
<- endpoint-has-virtual-network Endpoint1 Vnetwork
<- endpoint-has-virtual-network Endpoint2 Vnetwork
Endpoint1 및 Endpoint2는 변수이다. Vnetwork는 동일한 변수(즉, 동일한 가상 네트워크(1320)를 나타냄)이다. 이 규칙은 Endpoint1과 Endpoint2가 모두 동일한 가상 네트워크(1320)에 있는 경우 true로 평가된다(그렇지 않으면 false로 평가된다).
피어링 연결(1324)을 통한 서로 다른 가상 네트워크(1320)의 종점들 사이의 라우팅을 위해, routable-private-one-way 규칙은 다음과 같이 정의될 수 있다. "//"가 앞에 오는 텍스트는 코멘트이다:
-: routable-private-one-way Endpoint1 Endpoint2
//종점의 IP 조회
<- endpoint-has-private-ip Endpoint1 Ip1
<- endpoint-has- private-ip Endpoint1 Ip2
// 종점의 가상 네트워크 조회
<- endpoint-has-virtual-network Endpoint1 Vnetwork1
<- endpoint-has-virtual-network Endpoint2 Vnetwork2
// 피어링의 CIDR(클래스리스 도메인 간 라우팅)을 조회
<- peered-cidrs Pcx Vnetwork1 Cidr1 Vnetwork2 Cidr2
// 소스 종점의 라우팅 테이블 조회
<- endpoint-has-rtb Endpoint1 Rtb1
// 테이블에서 경로의 CIDR을 조회하고 루트가 활성 상태인지 검증
<- atom/pcx-route Rtb1 Pcx Cidr3 route-state/active
// 세 CIDR이 모두 각각의 IP와 매칭되는지 확인
<- cidr-matches-private-ip Cidr1 Ip1
<- cidr-matches-private-ip Cidr2 Ip2
<- cidr-matches-private-ip Cidr3 Ip2
도 14는 일부 실시형태에 따른 제공자 네트워크 상의 예시적인 가상 네트워크의 서브넷 및 보안 그룹을 도시한다. 위에서 논의된 바와 같이, 네트워크 도달가능성 분석기는 보안 그룹 변경을 포함하여 포트를 폐쇄하고 그리고/또는 포트에 도달 가능하지 않도록 하는 시정 조치를 권장하고 그리고/또는 수행할 수 있다. 일부 실시형태에서, 제공자 네트워크는 클라이언트가 클라이언트의 가상 네트워크(1410) 내에서, 서브넷(1414) 내에서 또는 서브넷을 통해 가상 보안 그룹(1416)을 설정하고 관리하도록 허용할 수 있다. 일 실시형태에서, 보안 그룹(1416)은 리소스 인스턴스(1418)의 논리적 그룹이며 보안 그룹 규칙에 따라 보안 그룹(1416) 내의 하나 이상의 리소스 인스턴스(1418)에 도달 가능한 트래픽을 제어하는 가상 방화벽 역할을 한다. 클라이언트는 가상 네트워크(1410) 내에 하나 이상의 보안 그룹(1416)을 설정할 수 있고, 가상 네트워크(1410)의 각 리소스 인스턴스(1418)를 보안 그룹(1416) 중 하나 이상과 연관시킬 수 있다. 일부 실시형태에서, 클라이언트는 보안 그룹(1416)과 연관된 리소스 인스턴스(1418)에 도달하도록 허용된 인바운드 트래픽을 제어하는 각 보안 그룹(1416)에 대한 규칙을 설정 및/또는 수정할 수 있다.
도 1에 도시된 예시적인 가상 네트워크(1410)에서, 가상 네트워크(1410)는 2개의 서브넷(1414A 및 1414B)으로 세분화된다. 가상 네트워크(1410)에 대한 액세스는 게이트웨이(들)(1430)에 의해 제어된다. 각각의 서브넷(1414)은 각각의 서브넷(1414) 상의 리소스 인스턴스(1418)로 (그리고 그로부터) 트래픽을 라우팅하는 역할을 하는 적어도 하나의 라우터(1412)를 포함할 수 있다. 일부 실시형태에서, 네트워크 액세스 제어 목록(ACL)은 라우터(들)(1412)에서 서브넷(1414)에 대한 액세스를 제어하기 위해서 사용될 수 있다. 도 14에서 도시된 실시예에서, 리소스 인스턴스(1418A 내지 1418E)는 서브넷(1414A)에 있고, 리소스 인스턴스(1418F 내지 1418J)는 서브넷(1414B)에 있다. 클라이언트는 4개의 보안 그룹(1416A 내지 1416D)을 설정했다. 도 14에 도시된 바와 같이, 보안 그룹은 서브넷(1414A)의 리소스 인스턴스(1418A 및 1418B) 및 서브넷(1414B)의 리소스 인스턴스(1418F)를 포함하는 보안 그룹(1416A)과 마찬가지로 서브넷(1414)에 걸쳐 연장될 수 있다. 또한, 리소스 인스턴스(1418)는 보안 그룹(1416A 및 1416B)에 포함된 리소스 인스턴스(1418A)와 같이 둘 이상의 보안 그룹(1416)에 포함될 수 있다.
예시적인 컴퓨터 시스템
적어도 일부 실시형태에서, 본원에 설명된 하나 이상의 기술의 일부 또는 전부를 구현하는 컴퓨터 시스템은 하나 이상의 컴퓨터 판독 가능 매체를 포함하거나 액세스하도록 구성된 컴퓨터 시스템을 포함할 수 있다. 도 15는 이러한 컴퓨팅 디바이스(1500)를 도해한다. 예시된 실시형태에서, 컴퓨팅 디바이스(1500)은 입/출력(I/O) 인터페이스(1530)을 통해 시스템 메모리(1520)에 결합된 하나 이상의 프로세서들(1510A-1510N)을 포함한다. 컴퓨팅 디바이스(1500)는 I/O 인터페이스(1530)에 결합된 네트워크 인터페이스(1540)을 더 포함한다.
다양한 실시형태에서, 컴퓨팅 디바이스(1500)는 하나의 프로세서를 포함하는 유니프로세서 시스템 또는 몇 개의 프로세서들(1510A 내지 1510N)(예를 들어, 2개, 4개, 8개 또는 다른 적절한 수)을 포함하는 멀티프로세서 시스템일 수 있다. 프로세서(1510A 내지 1510N)는 명령어를 실행할 수 있는 임의의 적절한 프로세서일 수 있다. 예를 들어, 다양한 실시예들에서, 프로세스들(1510A 내지 1510N)은 x86, PowerPC, SPARC 또는 MIPS ISA와 같은 다양한 명령어 세트 아키텍처(ISA), 또는 임의의 다른 적합한 ISA 중 어느 하나를 구현하는 프로세서들일 수 있다. 멀티프로세서 시스템에서, 각각의 프로세서(1510A 내지 1510N)는, 반드시 그런 것은 아니나, 일반적으로 동일한 ISA를 구현할 수 있다.
시스템 메모리(1520)는 프로세서(들)(1510A 내지 1510N)에 의해 액세스 가능한 프로그램 명령어들 및 데이터를 저장하도록 구성될 수 있다. 다양한 실시형태에서, 시스템 메모리(1520)는 SRAM(static random access memory), SDRAM(synchronous dynamic RAM), 비휘발성/플래시형 메모리, 또는 임의의 다른 유형의 메모리와 같은 임의의 적절한 메모리 기술을 사용하여 구현될 수 있다. 예시된 실시형태에서, 상술된 방법, 기술 및 데이터와 같은 하나 이상의 원하는 기능을 구현하는 프로그램 명령어 및 데이터는 코드(즉, 프로그램 명령)(1525) 및 데이터(1526)로서 시스템 메모리(1520) 내에 저장된 것으로 도시된다. 예시된 실시형태에서, 시스템 메모리(1520)는 또한 위에서 논의된 네트워크 보안 평가기(100)의 양태를 구현하는 프로그램 코드 및 데이터를 저장한다.
일 실시형태에서, I/O 인터페이스(1530)는 프로세서(1510A 내지 1510N), 시스템 메모리(1520)와 네트워크 인터페이스(1540) 또는 다른 주변 인터페이스를 포함하는 디바이스 내의 임의의 주변 디바이스 사이의 I/O 트래픽을 조정하도록 구성될 수 있다. 일부 실시예들에서, I/O 인터페이스(1530)는 하나의 구성 요소(예를 들어, 시스템 메모리(1520))로부터 다른 구성 요소(예를 들어, 프로세서(1510A 내지 1510N))에 의해 사용하기에 적합한 포맷으로 데이터 신호를 변환하기 위해 임의의 필요한 프로토콜, 타이밍 또는 기타 데이터 변환을 수행할 수 있다. 일부 실시예들에서, I/O 인터페이스(1530)는 예를 들어 PC (Peripheral Component Interconnect) 버스 표준 또는 USB (Universal Serial Bus) 표준의 변형과 같은 다양한 유형의 주변 장치 버스를 통해 부착된 디바이스에 대한 지원을 포함할 수 있다. 일부 실시예들에서, I/O 인터페이스(1530)의 기능은, 예를 들어 노스 브릿지 및 사우스 브릿지와 같은 둘 이상의 개별 구성요소로 분할될 수 있다. 또한, 일부 실시예들에서, 시스템 메모리(1520)에 대한 인터페이스와 같은, I/O 인터페이스(1530)의 기능성의 일부 또는 전부는 프로세서(1510A 내지 1510N)에 직접 통합될 수 있다.
네트워크 인터페이스(1540)는 컴퓨팅 디바이스(1500)와 네트워크 또는 네트워크(1550)에 부착된 다른 디바이스(1560) 사이에서 데이터가 교환될 수 있도록 구성될 수 있다. 다양한 실시형태에서, 네트워크 인터페이스(1540)는 예를 들어, 다른 유형의 이더넷 네트워크와 같은 임의 적절한 유선 또는 무선 일반 데이터 네트워크들을 통한 통신을 지원할 수 있다. 추가로, 네트워크 인터페이스(1540)는 아날로그 음성 네트워크들 또는 디지털 광섬유 통신 네트워크들과 같은 텔레통신/텔레포니 네트워크를 통한 통신, 광섬유 채널 SAN과 같은 저장 영역 네트워크들을 통한 통신, 또는 임의의 다른 적절한 유형의 네트워크 및/또는 프로토콜을 통한 통신을 지원할 수 있다.
일부 실시형태에서, 시스템 메모리(1520)는 대응하는 방법 및 장치의 실시형태를 구현하기 위해 전술된 바와 같이 프로그램 명령어 및 데이터를 저장하도록 구성된 컴퓨터 판독 가능(즉, 컴퓨터 액세스 가능) 매체의 일 실시형태일 수 있다. 예를 들어, 시스템 메모리(1520)는 네트워크 보안 평가기(100)와 연관된 프로그램 코드 및 데이터를 저장할 수 있다. 일부 실시형태에서, 프로그램 명령어 및/또는 데이터는 다양한 유형의 컴퓨터 판독 가능 매체에 수신되거나, 전송되거나 또는 저장될 수 있다. 일반적으로 말해서, 컴퓨터 판독 가능 매체는 I/O 인터페이스(1530)를 통해 컴퓨팅 디바이스(1500)에 결합된 디스크 또는 DVD/CD와 같은 자기 또는 광학 매체와 같은 비일시적 기억 매체 또는 메모리 매체를 포함할 수 있다. 비일시적 컴퓨터 판독 가능 기억 매체는 또한 시스템 메모리(1520) 또는 다른 유형의 메모리로서 컴퓨팅 디바이스(1500)의 일부 실시예들에 포함될 수 있는 RAM(예를 들어, SDRAM, DDR SDRAM, RDRAM, SRAM 등), ROM 등과 같은 임의의 휘발성 또는 비휘발성 매체를 포함할 수 있다. 또한, 컴퓨터 판독 가능 매체는 네트워크 인터페이스(1540)를 통해 구현될 수 있는 네트워크 및 또는 무선 링크와 같은 통신 매체를 통해 전달된, 전기, 전자기 또는 디지털 신호들과 같은 전송 매체 또는 신호들을 포함할 수 있다. 도 15에 도시된 것과 같은 다수의 컴퓨팅 디바이스의 일부 또는 전부는 다양한 실시형태에서 설명된 기능을 구현하는 데 사용될 수 있으며, 예를 들어, 다양한 디바이스 및 서버에서 실행되는 소프트웨어 구성요소가 협업하여 기능을 제공할 수 있다. 일부 실시형태에서, 설명된 기능의 일부는 저장 장치, 네트워크 장치 또는 다양한 유형의 컴퓨터 시스템을 사용하여 구현될 수 있다. 본원에서 사용되는 용어 "컴퓨팅 디바이스"는 적어도 이러한 유형의 디바이스를 모두 지칭하며, 이러한 유형의 디바이스에 제한되지 않는다.
도면들에 예시되고 본원에 설명된 다양한 방법들은 방법의 실시형태의 실시예를 나타낸다. 방법들은 소프트웨어로, 하드웨어로 또는 이들의 조합으로 구현될 수 있다. 다양한 방법에서, 단계의 순서가 변경될 수 있으며 다양한 요소가 추가, 재정렬, 결합, 생략, 수정 등이 가능하다. 단계 중 다양한 단계는 자동으로(예를 들어, 사용자 입력에 의해 직접 프롬프트되지 않고) 및/또는 프로그램적으로(예를 들어, 프로그램 명령에 따라) 수행될 수 있다.
본 개시내용의 실시형태는 또한 다음의 조항을 고려하여 설명될 수 있다:
1. 시스템에 있어서,
네트워크 보안 평가기를 구현하도록 구성된 하나 이상의 컴퓨팅 디바이스를 포함하되, 상기 네트워크 보안 평가기는,
호스트 컴퓨터를 포함하는 네트워크에 대한 네트워크 구성 데이터의 하나 이상의 쿼리를 생성하도록 구성되되, 상기 하나 이상의 쿼리는 쿼리 언어로 표현되고, 상기 하나 이상의 쿼리는 규칙 세트를 적어도 부분적으로 기반하여 생성되며;
개방되어 상기 네트워크 외부로부터 도달 가능한 상기 호스트 컴퓨터에 있는 하나 이상의 포트를 결정하도록 구성되되, 상기 하나 이상의 포트는 상기 하나 이상의 쿼리의 결과를 적어도 부분적으로 기반하여 결정되며;
상기 하나 이상의 포트에서 리스닝 중인 하나 이상의 프로세스를 결정하도록 구성되되, 상기 하나 이상의 프로세스는 상기 호스트 컴퓨터에 설치된 에이전트를 사용하여 결정되며;
상기 하나 이상의 포트와 상기 하나 이상의 프로세스를 설명하는 리포트를 생성하도록 구성되는, 시스템.
2. 조항 1에 있어서, 상기 네트워크 보안 평가기는
상기 네트워크 외부로부터 상기 하나 이상의 포트로의 하나 이상의 루트를 결정하고 보고하도록 더 구성되는, 시스템.
3. 조항 1 또는 2에 있어서, 상기 네트워크 보안 평가기는
상기 하나 이상의 포트가 개방되어 상기 네트워크 외부로부터 도달 가능하게 하는 하나 이상의 구성 설정을 결정하고 보고하도록 더 구성되는, 시스템.
4. 조항 1 또는 3에 있어서, 상기 네트워크 보안 평가기는
수행되는 경우, 상기 포트들 중 하나 이상을 폐쇄하거나 상기 포트들 중 하나 이상을 상기 네트워크 외부로부터 도달 가능하지 않도록 만드는 하나 이상의 시정 조치를 결정하고 리포트하도록 더 구성되는, 시스템.
5. 하나 이상의 컴퓨팅 디바이스에 의해서 수행되는 컴퓨터 구현 방법으로서,
컴퓨팅 디바이스를 포함하는 네트워크에 대한 네트워크 구성 데이터의 분석을 수행하는 단계;
다른 컴퓨팅 디바이스로부터 도달 가능한, 상기 컴퓨팅 디바이스에서의 하나 이상의 포트를 결정하는 단계로서, 상기 하나 이상의 포트는 상기 분석을 적어도 부분적으로 기반하여 결정되는, 단계;
상기 하나 이상의 포트에 대한 하나 이상의 루트를 결정하는 단계로서, 상기 하나 이상의 루트는 상기 분석을 적어도 부분적으로 기반하여 결정되는, 단계; 및
상기 하나 이상의 포트와 상기 하나 이상의 루트를 설명하는 리포트를 생성하는 단계를 포함하는, 방법.
6. 조항 5에 있어서,
상기 하나 이상의 포트에서 리스닝 중인 하나 이상의 프로세스를 결정하고 리포트하는 단계를 더 포함하되, 상기 하나 이상의 프로세스는 상기 컴퓨팅 디바이스에 설치된 에이전트 소프트웨어를 사용하여 결정되는, 방법.
7. 조항 5 또는 조항 6에 있어서,
상기 하나 이상의 포트가 도달 가능하게 하는 하나 이상의 구성 설정을 결정하고 리포트하는 단계를 더 포함하는, 방법.
8. 조항 5 내지 조항 7 중 어느 하나의 조항에 있어서,
수행되는 경우, 상기 포트들 중 하나 이상을 도달 가능하지 않게 만드는 하나 이상의 시정 조치를 결정하고 리포트하는 단계를 더 포함하는, 방법.
9. 조항 8에 있어서,
선택되는 경우, 상기 시정 조치 중 적어도 하나가 수행되게 하는 하나 이상의 인터페이스 요소를 사용자 인터페이스에 표시하는 단계를 더 포함하는, 방법.
10. 조항 5 내지 조항 9 중 어느 하나에 있어서, 상기 분석은 상기 네트워크 구성 데이터의 하나 이상의 쿼리를 적어도 부분적으로 기반하여 수행되고, 상기 하나 이상의 쿼리는 쿼리 언어로 표현되고, 상기 하나 이상의 쿼리는 규칙의 세트를 적어도 부분적으로 기반하여 생성되는, 방법.
11. 조항 5 내지 조항 10 중 어느 하나에 있어서, 상기 하나 이상의 포트는 상기 하나 이상의 포트에 패킷을 송신하지 않고 결정되는, 방법.
12. 조항 5 내지 조항 11 중 어느 하나에 있어서,
추가 컴퓨팅 디바이스로부터 상기 하나 이상의 포트로 하나 이상의 패킷을 전송함으로써 상기 하나 이상의 포트가 도달 가능하다는 점을 검증하는 단계를 더 포함하는, 방법.
13. 컴퓨터 판독 가능 기억 매체로서,
호스트 컴퓨터를 포함하는 네트워크에 대한 네트워크 구성 데이터의 분석을 수행하는 단계;
상기 호스트 컴퓨터에서 개방되어 있고 다른 컴퓨터로부터 도달 가능한 하나 이상의 포트를 결정하는 단계로서, 상기 하나 이상의 포트는 상기 분석의 결과를 적어도 부분적으로 기반하여 결정되는, 단계;
상기 하나 이상의 포트에서 리스닝 중인 하나 이상의 프로세스를 결정하는 단계로서, 상기 하나 이상의 프로세스는 상기 호스트 컴퓨터에 설치된 에이전트를 사용하여 결정되는, 단계; 및
상기 하나 이상의 포트 및 상기 하나 이상의 프로세스를 설명하는 리포트를 생성하는 단계를 수행하는 컴퓨터 실행 가능 프로그램 명령어를 저장하는, 컴퓨터 판독 가능 기억 매체.
14. 조항 13에 있어서, 상기 프로그램 명령어는
상기 하나 이상의 포트에서 리스닝 중인 하나 이상의 프로세스를 결정하고 리포트하는 단계로서, 상기 하나 이상의 프로세스는 상기 호스트 컴퓨터에 설치된 에이전트 소프트웨어를 사용하여 결정되는, 상기 결정하고 리포트하는 단계를 수행하도록 더 컴퓨터 실행 가능한, 컴퓨터 판독 가능 기억 매체.
15. 조항 13 또는 조항 14에 있어서, 상기 프로그램 명령어는
상기 하나 이상의 포트가 개방되어 도달 가능하게 하는 하나 이상의 구성 설정을 결정하고 리포트하는 단계를 수행하도록 더 컴퓨터 실행 가능한, 컴퓨터 판독 가능 기억 매체.
16. 조항 13 내지 조항 15 중 어느 하나에 있어서, 상기 프로그램 명령어는
수행되는 경우, 상기 포트들 중 하나 이상을 폐쇄하거나 상기 포트들 중 하나 이상을 도달 가능하지 않도록 만드는 하나 이상의 시정 조치를 결정하고 리포트하는 단계를 수행하도록 더 컴퓨터 실행 가능한, 컴퓨터 판독 가능 기억 매체.
17. 조항 16에 있어서, 상기 프로그램 명령어는
선택되는 경우, 상기 시정 조치 중 적어도 하나가 수행되게 하는 하나 이상의 인터페이스 요소를 사용자 인터페이스에 표시하는 단계를 수행하도록 더 컴퓨터 실행 가능한, 컴퓨터 판독 가능 기억 매체.
18. 조항 13 내지 조항 17 중 어느 하나에 있어서, 상기 분석은 상기 네트워크 구성 데이터의 하나 이상의 쿼리를 적어도 부분적으로 기반하여 수행되고, 상기 하나 이상의 쿼리는 쿼리 언어로 표현되고, 상기 하나 이상의 쿼리는 규칙의 세트를 적어도 부분적으로 기반하여 생성되는, 컴퓨터 판독 가능 기억 매체.
19. 조항 13 내지 조항 18 중 어느 하나에 있어서, 상기 하나 이상의 포트는 다른 컴퓨터로부터 상기 하나 이상의 포트에 패킷을 송신하지 않고 결정되는, 컴퓨터 판독 가능 기억 매체.
20. 조항 13 내지 조항 19 중 어느 하나에 있어서, 개방되고 도달 가능한 추가의 하나 이상의 포트는 신뢰할 수 있는 위치의 화이트리스트를 적어도 부분적으로 기반하여 상기 리포트로부터 배제되는, 컴퓨터 판독 가능 기억 매체.
본원에서 본 발명의 설명에 사용된 용어는 특정 실시형태를 단지 설명하기 위한 것이며 본 발명을 제한하려는 의도가 아니다. 본 발명의 설명 및 첨부된 청구범위에서 사용되는 바와 같이, 단수 형태는 문맥 상 명백하게 달리 나타내지 않는 한 복수 형태도 포함하도록 의도된다. 본원에서 사용된 용어 "및/또는"은 하나 이상의 연관되고 열거된 항목의 임의의 모든 가능한 조합을 지칭하고 포함하는 것으로 또한 이해될 것이다. 본 명세서에서 사용될 때 "포함하다", "갖다" 및/또는 "구비하다"라는 용어는 언급된 특징, 정수, 단계, 연산, 요소 및/또는 구성요소의 존재를 특정하나, 하나 이상의 다른 특징, 정수, 단계, 연산, 요소, 구성 요소 및/또는 이의 그룹의 존재 또는 추가를 배제하지는 않는다는 점이 또한 이해될 것이다.
본원에서 사용되는 용어 "만약"은 문맥에 따라 "언제" 또는 "후" 또는 "결정에 대한 응답으로" 또는 "검출에 대한 응답으로"를 의미하는 것으로 해석될 수 있다. 유사하게, "결정된 경우" 또는 "[명시된 조건 또는 이벤트]가 검출된 경우"라는 문구는 문맥에 따라 "결정 시" 또는 "결정에 대한 응답으로" 또는 "[지정된 조건 또는 이벤트] 검출 시" 또는 "[명시된 조건 또는 이벤트] 검출에 대한 응답으로"를 의미하는 것으로 해석될 수 있다.
또한, 용어 제1, 제2 등이 본원에서 다양한 요소를 설명하기 위해 사용될 수 있지만, 이러한 요소는 이러한 용어에 의해 제한되어서는 안 된다는 점도 이해될 것이다. 이러한 용어는 한 요소를 다른 요소와 구별시키기 위해서만 사용된다. 예를 들어, 본 발명의 범위를 벗어나지 않으면서, 제1 접촉은 제2 접촉으로 명명될 수 있고, 유사하게 제2 접촉은 제1 접촉으로 명명될 수 있다. 제1 접촉과 제2 접촉은 모두 접촉이지만 같은 접촉은 아니다.
청구된 주제에 대한 철저한 이해를 제공하기 위해 수많은 특정 세부 사항이 여기에 설명되어 있다. 그러나, 청구된 주제가 이러한 특정 세부 사항 없이 실행될 수 있다는 점은 당업자에 의해 이해될 것이다. 다른 실시예에서, 당업자에 의해 알려진 방법, 장치 또는 시스템은 청구된 주제를 모호하게 하지 않도록 상세하게 설명되지 않았다. 본 개시내용의 이점을 아는 당업자에게 명백한 바와 같은 다양한 수정물 및 변경물이 만들어질 수 있다. 상기 설명은 모든 이러한 수정물 및 변경물을 포함하기 위한 의도이며, 따라서 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.

Claims (15)

  1. 하나 이상의 컴퓨팅 디바이스에 의해 수행되는 컴퓨터 구현 방법으로서,
    클라이언트로부터 가상 네트워크에 대한 쿼리(query)를 수신하는 단계;
    상기 가상 네트워크에 대한 설명 정보(descriptive information)를 획득하는 단계;
    상기 가상 네트워크에 대한 상기 설명 정보를 상기 가상 네트워크의 인코딩된 설명으로서 인코딩 하는 단계;
    제약 솔버 엔진(constraint solver engine)을 사용하여 가상 네트워킹 규칙들에 따라 상기 가상 네트워크의 상기 인코딩된 설명에 대한 상기 쿼리를 해결하는 단계; 및
    상기 쿼리 해결의 결과들을 상기 클라이언트에 제공하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 가상 네트워킹 규칙들을 인코딩 하는 단계;
    를 더 포함하고,
    상기 제약 솔버 엔진을 사용하여 상기 가상 네트워킹 규칙들에 따라 상기 가상 네트워크의 상기 인코딩된 설명에 대한 상기 쿼리를 해결하는 단계는:
    상기 제약 솔버 엔진을 사용하여 상기 인코딩된 가상 네트워킹 규칙들에 따라 상기 가상 네트워크의 상기 인코딩된 설명에 대한 상기 쿼리를 해결하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서,
    상기 클라이언트로부터 수신된 상기 가상 네트워크에 대한 상기 쿼리는 선언적 논리 프로그래밍 언어(declarative logic programming language)로 표현되고,
    상기 가상 네트워크에 대한 상기 설명 정보를 인코딩하는 단계는:
    상기 선언적 논리 프로그래밍 언어에 따라 상기 가상 네트워크에 대한 상기 설명 정보를 논리 프로그램들로서 인코딩 하는 단계를 더 포함하고,
    상기 제약 솔버 엔진을 사용하여 상기 가상 네트워킹 규칙들에 따라 상기 가상 네트워크의 상기 인코딩된 설명에 대한 상기 쿼리를 해결하는 단계는:
    상기 선언적 논리 프로그래밍 언어의 상기 제약 솔버 엔진을 사용하여 상기 가상 네트워킹 규칙들에 따라 상기 가상 네트워크의 상기 인코딩된 설명에 대한 상기 쿼리를 해결하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서,
    커스텀 쿼리들을 작성하고 제출하기 위한 API를 상기 클라이언트에 제공하는 단계
    를 더 포함하고,
    상기 클라이언트로부터 상기 가상 네트워크에 대한 상기 쿼리를 수신하는 단계는:
    상기 제공된 API를 통해 상기 클라이언트로부터 상기 가상 네트워크에 대한 커스텀 쿼리를 수신하는 단계를 더 포함하는, 방법.
  5. 제1항에 있어서,
    상기 가상 네트워킹 규칙들은 서로 다른 네트워킹 보안 표준들을 각각 인코딩하는 가상 네트워킹 규칙들의 두 개 이상의 서로 다른 세트들을 포함하고 - 상기 서로 다른 네트워킹 보안 표준들은 상기 가상 네트워크가 각각의 상기 네트워킹 보안 표준들을 준수하는 것을 검증하기 위해 선택적으로 사용됨 -,
    상기 제약 솔버 엔진을 사용하여 가상 네트워킹 규칙들에 따라 상기 가상 네트워크의 상기 인코딩된 설명에 대한 상기 쿼리를 해결하는 단계는:
    상기 제약 솔버 엔진을 사용하여 상기 가상 네트워킹 규칙들의 두 개 이상의 서로 다른 세트들 중 적어도 하나에 따라 상기 가상 네트워크의 상기 인코딩된 설명에 대한 상기 쿼리를 해결하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서,
    상기 가상 네트워크에 대한 상기 설명 정보는:
    상기 가상 네트워크에서 구현되는 네트워킹 프리미티브들의 인스턴스들의 식별, 상기 인스턴스들의 설명들, 상기 인스턴스들 간의 관계들의 설명들, 또는 외부 엔티티들로의 인터페이스들 또는 액세스 포인트들의 설명들 중 하나 이상을 포함하는, 방법.
  7. 제1항에 있어서,
    상기 가상 네트워크에 대한 상기 설명 정보를 획득하는 단계는:
    상기 클라이언트로부터 상기 가상 네트워크에 대한 상기 설명 정보를 수신하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서,
    상기 가상 네트워킹 규칙들은 네트워킹 보안 표준들에 대한 규칙들을 포함하거나, 상기 가상 네트워크에 대한 적용을 위해 상기 클라이언트에 의해 정의된 커스텀 규칙들을 포함하는, 방법.
  9. 제1항에 있어서,
    상기 가상 네트워크에 대한 상기 쿼리는 표현 쿼리 언어로 제기되는, 방법.
  10. 제1항에 있어서,
    상기 클라이언트로부터 네트워크 보안 평가기가 상기 가상 네트워크로부터 상기 가상 네트워크에 대한 상기 설명 정보를 획득하도록 하는 퍼미션(permission)을 수신하는 단계
    를 더 포함하고,
    상기 가상 네트워크에 대한 상기 설명 정보를 획득하는 단계는:
    상기 클라이언트로부터의 상기 수신된 퍼미션에 따라 상기 가상 네트워크로부터 상기 가상 네트워크에 대한 상기 설명 정보를 획득하는 단계를 포함하는, 방법.
  11. 제1항에 있어서,
    상기 가상 네트워킹 규칙들은 상기 가상 네트워크에서 구현되는 다양한 네트워킹 프리미티브들(networking primitives) 간의 공통 관계들 또는 상호 작용들을 표현하는 규칙들을 포함하는, 방법.
  12. 제1항에 있어서,
    상기 쿼리를 해결하는 단계는,
    다른 컴퓨팅 디바이스로부터 도달 가능한 상기 가상 네트워크의 가상 컴퓨팅 디바이스에서의 하나 이상의 포트를 결정하는 단계를 더 포함하는, 방법.
  13. 제12항에 있어서,
    상기 가상 네트워크의 외부로부터 상기 하나 이상의 포트로의 하나 이상의 루트를 결정하고 보고하는 단계를 더 포함하는, 방법.
  14. 제13항에 있어서,
    상기 하나 이상의 포트를 폐쇄하거나 상기 네트워크 외부로부터 상기 하나 이상의 포트에 도달 가능하지 않도록 하는 하나 이상의 시정 조치를 결정하고 보고하는 단계를 더 포함하는, 방법.
  15. 하나 이상의 컴퓨팅 디바이스에 의해 구현된 네트워크 보안 평가기를 포함하는 시스템에 있어서, 제1항 내지 제14항 중 어느 한 항의 방법을 수행하도록 구성된, 시스템.
KR1020237020072A 2018-06-27 2019-06-26 자동화된 패킷리스 네트워크 도달가능성 분석 KR20230091203A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/020,865 US11108805B2 (en) 2018-06-27 2018-06-27 Automated packetless network reachability analysis
US16/020,865 2018-06-27
PCT/US2019/039250 WO2020006084A1 (en) 2018-06-27 2019-06-26 Automated packetless network reachability analysis
KR1020217002291A KR102545124B1 (ko) 2018-06-27 2019-06-26 자동화된 패킷리스 네트워크 도달가능성 분석

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217002291A Division KR102545124B1 (ko) 2018-06-27 2019-06-26 자동화된 패킷리스 네트워크 도달가능성 분석

Publications (1)

Publication Number Publication Date
KR20230091203A true KR20230091203A (ko) 2023-06-22

Family

ID=67303518

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020237020072A KR20230091203A (ko) 2018-06-27 2019-06-26 자동화된 패킷리스 네트워크 도달가능성 분석
KR1020217002291A KR102545124B1 (ko) 2018-06-27 2019-06-26 자동화된 패킷리스 네트워크 도달가능성 분석

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020217002291A KR102545124B1 (ko) 2018-06-27 2019-06-26 자동화된 패킷리스 네트워크 도달가능성 분석

Country Status (6)

Country Link
US (3) US11108805B2 (ko)
EP (1) EP3814962A1 (ko)
JP (2) JP7189236B2 (ko)
KR (2) KR20230091203A (ko)
CN (1) CN112334901A (ko)
WO (1) WO2020006084A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469324B2 (en) * 2016-11-22 2019-11-05 Amazon Technologies, Inc. Virtual network verification service
US11108805B2 (en) 2018-06-27 2021-08-31 Amazon Technologies, Inc. Automated packetless network reachability analysis
IL263958B (en) * 2018-12-25 2020-05-31 Hayman Meir Method and system for identifying vulnerability levels in devices operated on a given network
JP7323636B2 (ja) * 2019-04-05 2023-08-08 グーグル エルエルシー クラウドネットワーク到達可能性解析
CN111817907B (zh) * 2019-04-11 2022-12-30 华为技术有限公司 一种可达性的验证方法和装置
US11442959B2 (en) * 2019-08-07 2022-09-13 Nutanix, Inc. System and method of time-based snapshot synchronization
CN111866124B (zh) * 2020-07-17 2022-06-24 北京金山云网络技术有限公司 访问网页页面的方法、装置、服务器和机器可读存储介质
WO2022031694A1 (en) * 2020-08-03 2022-02-10 Cazena, Inc. Scalable security for saas data lakes
US11516088B1 (en) * 2021-10-28 2022-11-29 Microsoft Technology Licensing, Llc Network configuration verification in computing systems
CN115314419B (zh) * 2022-06-21 2023-05-16 清华大学 一种面向云网络自适应连通性分析方法、系统、设备及存储介质
CN115801391A (zh) * 2022-11-14 2023-03-14 浪潮云信息技术股份公司 一种使用Openstack安全组纳管云物理主机的方法及系统

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892903A (en) * 1996-09-12 1999-04-06 Internet Security Systems, Inc. Method and apparatus for detecting and identifying security vulnerabilities in an open network computer communication system
US7047288B2 (en) 2000-01-07 2006-05-16 Securify, Inc. Automated generation of an english language representation of a formal network security policy specification
US7003562B2 (en) 2001-03-27 2006-02-21 Redseal Systems, Inc. Method and apparatus for network wide policy-based analysis of configurations of devices
CN1623140A (zh) * 2002-01-15 2005-06-01 福德斯通公司 网络弱点检测和报告的系统和方法
WO2005101789A1 (en) 2004-04-14 2005-10-27 Gurunath Samir Kalekar A system for real-time network based vulnerability assessment of a host/device
GB2424539A (en) 2005-03-22 2006-09-27 Hewlett Packard Development Co Modelling network to determine assess security properties
US9083748B2 (en) 2004-12-16 2015-07-14 Hewlett-Packard Development Company, L.P. Modelling network to assess security properties
US8250654B1 (en) * 2005-01-27 2012-08-21 Science Applications International Corporation Systems and methods for implementing and scoring computer network defense exercises
US10015140B2 (en) * 2005-02-03 2018-07-03 International Business Machines Corporation Identifying additional firewall rules that may be needed
US20080262863A1 (en) * 2005-03-11 2008-10-23 Tracesecurity, Inc. Integrated, Rules-Based Security Compliance And Gateway System
US8566269B2 (en) 2006-08-01 2013-10-22 George Mason Intellectual Properties, Inc. Interactive analysis of attack graphs using relational queries
WO2010019918A1 (en) 2008-08-15 2010-02-18 Qualys, Inc. System and method for performing remote security assessment of firewalled computer
US20100107257A1 (en) * 2008-10-29 2010-04-29 International Business Machines Corporation System, method and program product for detecting presence of malicious software running on a computer system
CN101699801B (zh) 2009-10-30 2011-09-28 孙喜明 一种数据传输方法及传输数据的虚拟对等网络系统
CN102170457A (zh) 2010-02-26 2011-08-31 国际商业机器公司 向应用的多租户提供服务的方法和装置
US9129086B2 (en) 2010-03-04 2015-09-08 International Business Machines Corporation Providing security services within a cloud computing environment
EP2605145A4 (en) * 2010-11-17 2017-08-16 Hitachi, Ltd. Method for finding communication devices connected to communication network, and management device
WO2012112833A2 (en) * 2011-02-17 2012-08-23 Taasera, Inc. System and method for application attestation
US8782762B2 (en) 2011-08-17 2014-07-15 International Business Machines Corporation Building data security in a networked computing environment
US8650291B2 (en) 2011-09-12 2014-02-11 International Business Machines Corporation Best practices analysis of zones and components in a network
CN102413012B (zh) * 2011-11-21 2014-06-18 上海交通大学 计算机网络连通性自动分析系统
US9426169B2 (en) * 2012-02-29 2016-08-23 Cytegic Ltd. System and method for cyber attacks analysis and decision support
US9923787B2 (en) 2012-04-27 2018-03-20 International Business Machines Corporation Network configuration predictive analytics engine
WO2013189059A1 (zh) 2012-06-21 2013-12-27 华为技术有限公司 报文处理方法、装置、主机和网络系统
US9122510B2 (en) 2013-01-02 2015-09-01 International Business Machines Corporation Querying and managing computing resources in a networked computing environment
US10389608B2 (en) * 2013-03-15 2019-08-20 Amazon Technologies, Inc. Network traffic mapping and performance analysis
US9912549B2 (en) * 2013-06-14 2018-03-06 Catbird Networks, Inc. Systems and methods for network analysis and reporting
US9177250B2 (en) 2013-06-28 2015-11-03 Vmware, Inc. Method and system for determining configuration rules based on configurations of complex systems
US9276951B2 (en) 2013-08-23 2016-03-01 The Boeing Company System and method for discovering optimal network attack paths
US9838253B2 (en) 2014-04-10 2017-12-05 Fujitsu Limited Object-oriented network virtualization
US9710368B1 (en) * 2014-05-02 2017-07-18 Amazon Technologies, Inc. Inter-process communication automated testing framework
CN104363159B (zh) 2014-07-02 2018-04-06 北京邮电大学 一种基于软件定义网络的开放虚拟网络构建系统和方法
US9686162B2 (en) 2014-10-17 2017-06-20 International Business Machines Corporation Identifying configuration inconsistency in edge-based software defined networks (SDN)
US20160344772A1 (en) * 2015-05-22 2016-11-24 Brian Quentin Monahan Modelling network to assess security properties
CN105094996A (zh) * 2015-07-21 2015-11-25 电子科技大学 基于动态权限验证的Android系统安全增强方法及系统
US10079730B2 (en) * 2015-09-30 2018-09-18 Amazon Technologies, Inc. Network based resource configuration discovery service
JP6841228B2 (ja) * 2015-12-04 2021-03-10 日本電気株式会社 ファイル情報収集システム、方法およびプログラム
US10469324B2 (en) * 2016-11-22 2019-11-05 Amazon Technologies, Inc. Virtual network verification service
CN106603507A (zh) * 2016-11-29 2017-04-26 哈尔滨安天科技股份有限公司 一种自动化完成网络安全自检的方法及系统
EP3568790B1 (en) * 2017-01-11 2022-02-23 Morphisec Information Security 2014 Ltd. Protecting computing devices from a malicious process by exposing false information
CN107347078B (zh) * 2017-08-30 2020-06-19 杭州安恒信息技术股份有限公司 一种基于云服务的操作系统弱口令安全检测方法
CN108011893A (zh) * 2017-12-26 2018-05-08 广东电网有限责任公司信息中心 一种基于网络资产信息采集的资产管理系统
CN108200106A (zh) * 2018-04-02 2018-06-22 浙江九州量子信息技术股份有限公司 一种物联网安全检测防护方法
US11108805B2 (en) 2018-06-27 2021-08-31 Amazon Technologies, Inc. Automated packetless network reachability analysis
US11425157B2 (en) 2018-08-24 2022-08-23 California Institute Of Technology Model based methodology for translating high-level cyber threat descriptions into system-specific actionable defense tactics
US11483350B2 (en) 2019-03-29 2022-10-25 Amazon Technologies, Inc. Intent-based governance service

Also Published As

Publication number Publication date
US11671442B2 (en) 2023-06-06
US20230262087A1 (en) 2023-08-17
KR102545124B1 (ko) 2023-06-20
KR20210022732A (ko) 2021-03-03
JP7189236B2 (ja) 2022-12-13
US20200007569A1 (en) 2020-01-02
JP2021528749A (ja) 2021-10-21
US11108805B2 (en) 2021-08-31
JP2023025160A (ja) 2023-02-21
US20210392157A1 (en) 2021-12-16
CN112334901A (zh) 2021-02-05
EP3814962A1 (en) 2021-05-05
WO2020006084A1 (en) 2020-01-02

Similar Documents

Publication Publication Date Title
KR102545124B1 (ko) 자동화된 패킷리스 네트워크 도달가능성 분석
US11095523B2 (en) Virtual network verification service
EP3939231B1 (en) Intent-based governance service
JP2019067398A (ja) 電子メッセージベースのセキュリティ脅威の自動軽減
US20150347751A1 (en) System and method for monitoring data in a client environment
US11425139B2 (en) Enforcing label-based rules on a per-user basis in a distributed network management system
Mytilinakis Attack methods and defenses on Kubernetes
Dantas Architecting Google Cloud Solutions: Learn to design robust and future-proof solutions with Google Cloud technologies
DeJonghe et al. Application Delivery and Load Balancing in Microsoft Azure
US11750568B1 (en) Secure proxy service
Garbis et al. Zero trust architectures
Priyam Cloud Security Automation: Get to grips with automating your cloud security on AWS and OpenStack
Udayakumar et al. Deploy Microsoft Defender for IoT

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal