DE112022001944T5 - Verteilte dekomposition von string-automatisierter schlussfolgerung unter verwendung von prädikaten - Google Patents

Verteilte dekomposition von string-automatisierter schlussfolgerung unter verwendung von prädikaten Download PDF

Info

Publication number
DE112022001944T5
DE112022001944T5 DE112022001944.1T DE112022001944T DE112022001944T5 DE 112022001944 T5 DE112022001944 T5 DE 112022001944T5 DE 112022001944 T DE112022001944 T DE 112022001944T DE 112022001944 T5 DE112022001944 T5 DE 112022001944T5
Authority
DE
Germany
Prior art keywords
formula
satisfiable
sub
theory
computing
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
DE112022001944.1T
Other languages
English (en)
Inventor
John Byron Cook
Andres Philipp NOETZLI
Neha Rungta
Jingmei HU
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of DE112022001944T5 publication Critical patent/DE112022001944T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/043Distributed expert systems; Blackboards

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

Es werden Techniken zur effizienten Verteilung von Erfüllbarkeits-Modulo-Theorien(SMT)-Abfragen, ausgedrückt in Aussagenlogik mit Stringvariablen, auf mehrere Rechenressourcen beschrieben. Als Teil der durch ein Cloud-Anbieternetzwerk bereitgestellten rechenbezogenen Dienste stellen viele Cloud-Anbieter auch Identitäts- und Zugriffsverwaltungsdienste bereit, die Benutzern im Allgemeinen dabei helfen, den Zugriff auf und die Berechtigungen für die Dienste und Ressourcen (z. B. Recheninstanzen, Speicherressourcen usw.) zu steuern, die durch Benutzer über ein Cloud-Anbieternetzwerk erlangt werden. Unter Verwendung von Ressourcenrichtlinien können Benutzer beispielsweise genau steuern, welche Identitäten auf spezifische Ressourcen zugreifen können, die mit den Benutzerkonten verknüpft sind, und wie diese Identitäten die Ressourcen nutzen können. Die Fähigkeit, die Analyse von SMT-Abfragen, die in Aussagenlogik mit String-Variablen ausgedrückt sind, effizient auf eine beliebige Anzahl separater Rechenressourcen zu verteilen (z. B. zwischen separaten Prozessen, Recheninstanzen, Containern usw.), ermöglicht die effiziente Analyse solcher Richtlinien.

Description

  • STAND DER TECHNIK
  • Cloud-Anbieternetzwerke ermöglichen Benutzern, eine Vielfalt von rechenbezogenen Ressourcen, wie etwa Rechenressourcen, Speicherressourcen, Netzwerkressourcen und dergleichen, zu verwenden. Wenn ein Benutzer oder eine Anwendung mit einem Cloud-Anbieternetzwerk interagiert (z. B. unter Verwendung einer Anwendungsprogrammierschnittstelle (application programming interface - API) oder einer Befehlszeilenschnittstelle (command line interface - CLI), die durch das Cloud-Anbieternetzwerk bereitgestellt sind), muss der Benutzer oder die Anwendung normalerweise Sicherheitsanmeldeinformationen festlegen, um anzugeben, wer der Benutzer oder die Anwendung ist und ob der Benutzer oder die Anwendung berechtigt ist, auf die angeforderten Ressourcen zuzugreifen. Ein Cloud-Anbieternetzwerk wiederum verwendet die Sicherheitsanmeldeinformationen, um den Benutzer oder die Anwendung zu authentifizieren und zu autorisieren, verschiedene Aktionen durchzuführen. Der Zugriff auf Ressourcen und Aktionen innerhalb eines Cloud-Anbieternetzwerks kann durch Richtlinien weiter verwaltet werden. Eine Richtlinie ist ein Datenobjekt, das, wenn es mit einem Benutzer oder einer Ressource verknüpft ist, dessen bzw. deren Berechtigungen definiert. Beispielsweise können ressourcenbasierte Richtlinien an eine Speicherressource, eine Recheninstanz, Verschlüsselungsschlüssel usw. angehängt werden und festlegen, wer Zugriff auf die Ressource hat und welche Aktionen diese Identitäten an der Ressource durchführen können.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Verschiedene Ausführungsformen gemäß der vorliegenden Offenbarung werden unter Bezugnahme auf die Zeichnungen beschrieben, in denen Folgendes gilt:
    • 1 ist ein Diagramm, das gemäß einigen Ausführungsformen eine Umgebung mit einem Richtlinienanalysedienst veranschaulicht, der zum Analysieren von Richtlinien verwendet wird, die mit Benutzerkonten und Organisationen von Benutzerkonten eines Cloud-Anbieternetzwerks verknüpft sind.
    • 2 ist ein Diagramm, das gemäß einigen Ausführungsformen einen Prozess zum Codieren von durch eine Richtlinie definierten Berechtigungen in aussagenlogische Aussagen einschließlich Stringvariablen veranschaulicht.
    • 3 ist ein Diagramm, das gemäß einigen Ausführungsformen einen Prozess zum Partitionieren eines Suchraums, der mit einer Formel verknüpft ist, die in Aussagenlogik ausgedrückt ist und Stringvariablen beinhaltet, in einen Satz von Unterformeln, deren Ausführung auf mehrere Rechenressourcen verteilt werden kann, veranschaulicht.
    • 4 ist ein Diagramm, das gemäß einigen Ausführungsformen die Verwendung eines Erfüllbarkeits-Solvers veranschaulicht, der über mehrere Rechenressourcen hinweg ausgeführt wird, um einen Satz von Unterformeln zu analysieren, die aus einer Formel abgeleitet sind, die in Aussagenlogik ausgedrückt ist und Stringvariablen beinhaltet.
    • 5 ist ein Diagramm, das gemäß einigen Ausführungsformen eine grafische Benutzeroberfläche (graphical user interface - GUI) veranschaulicht, die Richtlinienergebnisse anzeigt, die aus einer Analyse einer oder mehrerer Richtlinien abgeleitet sind.
    • 6 ist ein Ablaufdiagramm, das gemäß einigen Ausführungsformen Vorgänge eines Verfahrens zum Verwenden von Schlussfolgerungstechniken zum Analysieren von Formeln, die in einer Aussagenlogik ausgedrückt sind und Stringvariablen beinhalten, veranschaulicht.
    • 7 veranschaulicht eine beispielhafte Anbieternetzwerkumgebung gemäß einigen Ausführungsformen.
    • 8 ist ein Blockdiagramm eines beispielhaften Anbieternetzwerks, das gemäß einigen Ausführungsformen Kunden einen Speicherdienst und einen Hardware-Virtualisierungsdienst bereitstellt.
    • 9 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, das in einigen Ausführungsformen verwendet werden kann.
  • DETAILLIERTE BESCHREIBUNG
  • Die vorliegende Offenbarung bezieht sich auf Verfahren, Vorrichtungen, Systeme und nichttransitorische computerlesbare Speichermedien zur effizienten Verteilung der Verarbeitung von Erfüllbarkeits-Modulo-Theorien(satisfiability modulo theories - SMT)-Abfragen, die in Logik erster Ordnung ausgedrückt sind und Theorievariablen (z. B. Variablen im Zusammenhang mit der Theorie von Strings, der Theorie von Ganzzahlen, den Theorien von Datenstrukturen usw.) beinhalten, über mehrere Rechenressourcen. Gemäß einigen Ausführungsformen stellen viele Cloud-Anbieter als Teil der durch ein Cloud-Anbieternetzwerk bereitgestellten rechenbezogenen Dienste auch Identitäts- und Zugriffsverwaltungsdienste bereit, die Benutzern im Allgemeinen dabei helfen, den Zugriff auf und die Berechtigungen für die Dienste und Ressourcen (z. B. Recheninstanzen, Speicherressourcen usw.) zu steuern, die durch Benutzer über ein Cloud-Anbieternetzwerk erlangt werden. Unter Verwendung identitätsbasierter und ressourcenbasierter Richtlinien können Benutzer beispielsweise genau steuern, welche Identitäten auf spezifische Ressourcen zugreifen können, die mit den Benutzerkonten verknüpft sind, und wie diese Identitäten die Ressourcen nutzen können. Die Konfiguration solcher Richtlinien kann jedoch oft sehr komplex werden und es kann für Benutzer schnell zu einer Herausforderung werden, alle sicherheitsbezogenen Auswirkungen solcher Richtlinien und ihre Wechselbeziehungen zu verstehen.
  • Um einige dieser Bedenken auszuräumen, stellt ein Cloud-Anbieternetzwerk möglicherweise verschiedene Analysetools bereit, die Benutzern dabei helfen, die sicherheitsbezogenen Eigenschaften der Ressourcen und die zugehörigen Richtlinien in ihren Konten zu analysieren. Ein Beispiel für ein solches Sicherheitstool ist ein Zugriffsanalysator, der verwendet werden kann, um Benutzern zu helfen zu verstehen, welche Identitäten auf konkrete Ressourcen, die mit ihrem Konto verknüpft sind, zugreifen können, und Benutzern beispielsweise dabei hilft festzustellen, ob ihre aktuellen Richtlinienkonfigurationen möglicherweise unbeabsichtigten Zugriff für Benutzer außerhalb ihrer Organisation bereitstellen. In diesem Beispiel kann ein Zugriffsanalysatordienst solche Analysen teilweise durchführen, indem er die gespeicherten Richtlinien eines Benutzers oder einer Organisation in äquivalente logische Aussagen übersetzt (z. B. Aussagen, die in einer Logik erster Ordnung ausgedrückt sind) und eine Reihe allgemeiner und spezialisierter logischer Solver (z. B. SMT-Solver) verwendet, um zu verifizieren, ob gewisse sicherheitsbezogene Verhaltensweisen möglich sind oder nicht. In diesem Zusammenhang können die logischen Solver Schlussfolgerungen zu aussagenlogischen Aussagen anstellen, die verschiedene Stringvariablen beinhalten, z. B. entsprechend Aspekten von Richtlinien wie Kontokennungen, Ressourcenkennungen und dergleichen. Neben Identitäts- und Zugriffsverwaltungsdiensten stellen einige Cloud-Anbieternetzwerke auch Dienste zur Überprüfung und Optimierung des Quellcodes, Dienste zur Verifizierung von Programmen oder Computernetzwerken sowie andere Arten von Diensten bereit, die automatisierte Schlussfolgerungen nutzen, um bei der Analyse der Korrektheit verschiedener Arten von Rechensystemen zu helfen.
  • Die vorstehend beschriebenen SMT-Solver versuchen im Allgemeinen, in Logik erster Ordnung ausgedrückte Formeln mit Kombinationen von Theorien wie Presburger-Arithmetik, nicht interpretierten Funktionen oder Strings zu bestätigen oder zu widerlegen. Bestehende SMT-Solver sind im Allgemeinen monolithische Einzelprozessanwendungen und es gibt kein erfolgreiches Verfahren, um die Suche nach Bestätigungen oder Widerlegungen solcher Formeln effizient auf mehrere Rechenressourcen zu verteilen. Da die Größe und Komplexität der Richtlinien von Benutzern und Organisationen sowie der rechenbezogenen Ressourcen zunimmt, können die Ressourcen, die benötigt werden, um unter Verwendung vorhandener Solver Informationen über diese Ressourcen zu schlussfolgern und zeitnah bereitzustellen, schnell die auf den einzelnen Rechenressourcen verfügbaren Ressourcen übersteigen.
  • Diese Herausforderungen werden unter anderem durch die hierin beschriebenen Techniken zum effizienten Verteilen der Analyse von SMT-Abfragen, die in Logik erster Ordnung ausgedrückt sind und Theorievariablen beinhalten, auf eine beliebige Anzahl separater Rechenressourcen (z. B. zwischen separaten Prozessen, Recheninstanzen, Containern usw.) angegangen. Gemäß hierin beschriebenen Ausführungsformen empfängt beispielsweise ein Dienst eines Cloud-Anbieternetzwerks eine Anfrage, um zu bestimmen, ob eine Formel erfüllbar ist (z. B. um ein erwartetes Verhalten des Richtliniensatzes eines Benutzers oder einer Organisation oder eine andere derartige automatisierte schlussfolgerungsbasierte Analyse zu verifizieren). Der Dienst identifiziert einen Satz von Prädikaten in der Formel basierend auf einer mit der Formel verknüpften Art von Theorie, wobei jedes Prädikat eine binärwertige Funktion mindestens einer in der Formel enthaltenen Theorievariablen ist. In einigen Ausführungsformen wird ein mit der Formel verknüpfter Suchraum dann in einen Satz von Unterformeln partitioniert, wobei jede Unterformel durch eine Einheit der Formel mit einer Annahme definiert ist, dass ein jeweiliges Prädikat des Satzes von Prädikaten entweder wahr oder falsch ist. In einigen Ausführungsformen wird eine jeweilige Unterformel des Satzes von Unterformeln an einen SMT-Solver gesendet, der auf jeder einer Vielzahl von separaten Rechenressourcen ausgeführt wird. Sobald von dem SMT-Solver, auf dem eine der Rechenressourcen ausgeführt wird, eine Angabe empfangen wird, dass seine jeweilige Unterformel erfüllbar ist, kann der Richtlinienanalysedienst die Anzeige von Informationen veranlassen, die angeben, dass die Formel erfüllbar ist; andernfalls kann der Richtlinienanalysedienst die Anzeige oder anderweitige Übermittlung von Informationen veranlassen, die angeben, dass die Formel nicht erfüllbar ist. Neben anderen Vorteilen ermöglichen die beschriebenen Analysetechniken eine effiziente Berechnung von SMT-Abfragen, die in der Logik erster Ordnung ausgedrückt sind und Therorievariablen beinhalten, wodurch sie auch dazu beitragen, die Sicherheitslage der Rechenressourcen von Organisationen zu verbessern, die durch Cloud-Anbieternetzwerke und andere Betriebsumgebungen bereitgestellt werden.
  • 1 ist ein Diagramm, das eine Umgebung veranschaulicht, in der gemäß einigen Ausführungsformen Sicherheitsrichtlinienanalysen in Bezug auf Benutzerkonten, Organisationen (z. B. einschließlich Sätzen von Benutzern, Rollen und Richtlinien) und Richtlinien durchgeführt werden, die durch einen Identitäts- und Zugriffsverwaltungsdienst 102 eines Cloud-Anbieternetzwerks 100 definiert sind. Ein Cloud-Anbieternetzwerk 100 (manchmal einfach als „Cloud“ bezeichnet) bezieht sich auf einen Pool von über das Netzwerk zugänglichen Rechenressourcen (wie etwa Rechen-, Speicher- und Netzwerkressourcen, Anwendungen und Dienste), die virtualisiert oder ein Bare-Metal-System sein können. Die Cloud kann bequemen, bedarfsgesteuerten Netzwerkzugriff auf einen gemeinsamen Pool konfigurierbarer Rechenressourcen bereitstellen, die als Reaktion auf Kundenbefehle programmgesteuert vorgesehen und freigegeben werden können. Diese Ressourcen können dynamisch vorgesehen und neu konfiguriert werden, um sie an variable Lasten anzupassen. Unter Cloud Computing können somit sowohl die Anwendungen verstanden werden, die als Dienste über ein öffentlich zugängliches Netzwerk (z. B. das Internet, ein Mobilfunknetz) bereitgestellt werden, als auch die Hardware und Software in den Rechenzentren von Cloud-Anbietern, die diese Dienste bereitstellen.
  • Ein Anbieternetzwerk 100 (oder „Cloud“-Anbietemetzwerk) stellt Benutzern die Möglichkeit bereit, eine oder mehrere einer Vielfalt von berechnungsbezogenen Ressourcen 160 zu nutzen, wie etwa Rechenressourcen (z. B. Ausführen von Instanzen oder Containern virtueller Maschinen (VM), Ausführen von Batch-Jobs, Ausführen von Code ohne Vorsehen von Servern), Daten-/Speicherressourcen (z. B. Objektspeicher, Speicher auf Blockebene, Datenarchivierungsspeicher, Datenbanken und Datenbanktabellen usw.), netzwerkbezogene Ressourcen (z. B. Konfigurieren virtueller Netzwerke einschließlich Gruppen von Rechenressourcen, Content Delivery Networks (CDNs), Domain Name Service (DNS)), Anwendungsressourcen (z. B. Datenbanken, Anwendungserstellungs-/Einsatzdienste), Zugriffsrichtlinien oder -rollen, Identitätsrichtlinien oder -rollen, Maschinenabbilder, Router und andere Datenverarbeitungsressourcen usw. Diese und andere Rechenressourcen können als Dienste 106 bereitgestellt sein, wie etwa ein Hardware-Virtualisierungsdienst 118, der Recheninstanzen ausführen kann, ein Speicherdienst 110, der Datenobjekte speichern kann usw. Die Benutzer (oder „Kunden“) von Anbieternetzwerken 100 können ein oder mehrere Benutzerkonten nutzen, die mit einem Kundenkonto verknüpft sind, obwohl diese Begriffe je nach Verwendungskontext in gewissem Umfang austauschbar verwendet werden können. Benutzer können mit einem Anbieternetzwerk 100 über ein oder mehrere Zwischennetzwerke 104 (z. B. das Internet) über eine oder mehrere Schnittstelle(n) interagieren, wie etwa durch die Verwendung von Aufrufen einer Anwendungsprogrammierschnittstelle (API), über eine als Website oder Anwendung implementierte Konsole usw. Eine API bezieht sich auf eine Schnittstelle und/oder ein Kommunikationsprotokoll zwischen einem Client und einem Server, sodass, wenn der Client eine Anfrage in einem vordefinierten Format stellt, der Client eine Antwort in einem spezifischen Format empfangen oder eine definierte Aktion einleiten sollte. Im Kontext des Cloud-Anbieternetzwerks stellen APIs ein Gateway für Kunden zum Zugriff auf die Cloud-Infrastruktur bereit, indem sie es Kunden ermöglichen, Daten von dem Cloud-Anbieternetzwerk zu erlangen oder Aktionen innerhalb des Cloud-Anbieternetzwerks zu veranlassen, wodurch die Entwicklung von Anwendungen ermöglicht wird, die mit im Cloud-Anbieternetzwerk gehosteten Ressourcen und Diensten interagieren. APIs können es auch unterschiedliche Diensten des Cloud-Anbieternetzwerks ermöglichen, Daten untereinander auszutauschen. Die Schnittstelle(n) kann/können Teil einer Steuerebene des Anbieternetzwerks 100 sein oder als Frontend dafür dienen, die „Backend“-Dienste beinhaltet, die die Dienste unterstützen und ermöglichen, die Kunden direkter angeboten werden können.
  • Ein Cloud-Anbieternetzwerk 100 kann aus einer Anzahl von Regionen gebildet sein, wobei eine Region ein geografisches Gebiet ist, in dem der Cloud-Anbieter Rechenzentren gruppiert. Jede Region beinhaltet mehrere (z. B. zwei oder mehr) Verfügbarkeitszonen (availability zones - AZs), die über ein privates Hochgeschwindigkeitsnetzwerk, beispielsweise eine Glasfaserkommunikationsverbindung, miteinander verbunden sind. Eine AZ (auch als Verfügbarkeitsdomäne oder einfach als „Zone“ bekannt) stellt eine isolierte Ausfalldomäne bereit, die eine oder mehrere Rechenzentrumseinrichtungen mit separater Stromversorgung, separater Vernetzung und separater Kühlung von denen in einer anderen AZ beinhaltet. Ein Rechenzentrum bezieht sich auf ein physisches Gebäude oder Gehäuse, das Server des Cloud-Anbieternetzwerks beherbergt und diese mit Strom und Kühlung versorgt. Vorzugsweise sind AZs innerhalb einer Region weit genug voneinander entfernt, sodass eine Naturkatastrophe (oder ein anderes ausfallverursachendes Ereignis) nicht mehr als eine AZ gleichzeitig beeinträchtigen oder offline nehmen sollte.
  • Kunden können sich über ein öffentlich zugängliches Netzwerk (z. B. das Internet, ein Mobilfunknetz), z. B. mittels eines Transitzentrums (transit center - TC), mit AZ des Cloud-Anbieternetzwerks 100 verbinden. TCs sind die primären Backbone-Standorte, die Kunden mit dem Cloud-Anbieternetzwerk verlinken, und können bei anderen Netzwerkanbietern (z. B. Internetdienstanbietern (Internet service providers - ISPs), Telekommunikationsanbietern) untergebracht und sicher (z. B. über ein VPN oder eine Direktverbindung) mit den AZs verbunden sein. Jede Region kann aus Redundanzgründen zwei oder mehr TCs betreiben. Regionen sind mit einem globalen Netzwerk verbunden, das eine private Netzwerkinfrastruktur (z. B. durch den Cloud-Anbieter kontrollierte Glasfaserverbindungen) beinhaltet, die jede Region mit mindestens einer anderen Region verbindet. Das Cloud-Anbieternetzwerk kann über Edge-Standorte und regionale Edge-Cache-Server Inhalte von nächstgelegenen Netzzugängen (points of presence - „POPs“) außerhalb dieser Regionen, aber mit diesen vernetzt, bereitstellen. Diese Unterteilung und geografische Verteilung der Rechenhardware ermöglicht es dem Cloud-Anbieternetzwerk, Kunden auf globaler Ebene Ressourcenzugriff mit geringer Latenz und einem hohen Maß an Fehlertoleranz und Stabilität bereitzustellen.
  • Im Allgemeinen können der Datenverkehr und die Vorgänge eines Anbieternetzwerks grob in zwei Kategorien unterteilt werden: Vorgänge auf Steuerebene, die über eine logische Steuerebene übertragen werden, und Vorgänge auf Datenebene, die über eine logische Datenebene übertragen werden. Während die Datenebene die Bewegung von Benutzerdaten durch das verteilte Rechensystem darstellt, stellt die Steuerebene die Bewegung von Steuersignalen durch das verteilte Rechensystem dar. Die Steuerebene beinhaltet im Allgemeinen eine oder mehrere Steuerebenenkomponenten, die über einen oder mehrere Steuerungsserver verteilt und durch diese implementiert sind. Der Datenverkehr auf Steuerebene beinhaltet im Allgemeinen administrative Vorgänge, wie etwa Systemkonfiguration und -verwaltung (z. B. Ressourcenplatzierung, Hardwarekapazitätsverwaltung, Diagnoseüberwachung, Systemstatusinformationen). Die Datenebene beinhaltet Kundenressourcen, die im Anbieternetzwerk implementiert sind (z. B. Recheninstanzen, Container, Blockspeichervolumen, Datenbanken, Dateispeicher). Der Datenverkehr auf Datenebene beinhaltet im Allgemeinen nichtadministrative Vorgänge, wie etwa die Übermittlung von Kundendaten zu und von den Kundenressourcen. Die Steuerebenenkomponenten werden typischerweise auf einem von den Datenebenenservern getrennten Serversatz implementiert, und Datenverkehr auf Steuerebene und Datenverkehr auf Datenebene können über separate/verschiedene Netzwerke gesendet werden.
  • Um diese und andere Rechenressourcendienste bereitzustellen, greifen Anbieternetzwerke 100 häufig auf Virtualisierungstechniken zurück. Beispielsweise können Virtualisierungstechnologien verwendet werden, um Benutzern die Möglichkeit bereitzustellen, Rechenressourcen zu steuern oder zu nutzen (z. B. eine „Recheninstanz“ wie eine VM unter Verwendung eines Gastbetriebssystems (O/S), das unter Verwendung eines Hypervisors arbeitet, der möglicherweise auf einem zugrunde liegenden Host-Betriebssystem betrieben werden kann, ein Container, der möglicherweise in einer VM betrieben werden kann, eine Recheninstanz, die auf „Bare-Metal“-Hardware ohne einen zugrunde liegenden Hypervisor ausgeführt werden kann), wobei eine oder mehrere Rechenressourcen unter Verwendung einer einzelnen elektronischen Vorrichtung implementiert sein können. Somit kann ein Benutzer direkt eine durch das Anbieternetzwerk gehostete Rechenressource (z. B. durch einen Hardware-Virtualisierungsdienst bereitgestellt) nutzen, um eine Vielzahl von Rechenaufgaben durchzuführen. Zusätzlich oder alternativ kann ein Benutzer indirekt eine Rechenressource nutzen, indem er Code abschickt, der durch das Anbieternetzwerk ausgeführt werden soll (z. B. über einen On-Demand-Codeausführungsdienst), der wiederum eine oder mehrere Rechenressourcen nutzt, um den Code auszuführen - typischerweise ohne dass der Benutzer Kontrolle oder Wissen über die beteiligten zugrunde liegenden Recheninstanzen hat.
  • Beispielsweise kann eine „serverlose“ Funktion in verschiedenen Ausführungsformen Code beinhalten, der durch einen Benutzer oder eine andere Entität - wie etwa das Anbieternetzwerk selbst - bereitgestellt wird und bei Bedarf ausgeführt werden kann. Serverlose Funktionen können innerhalb des Anbieternetzwerks 100 durch einen On-Demand-Codeausführungsdienst unterhalten werden und können mit einem konkreten Benutzer oder Konto verknüpft sein oder allgemein für mehrere Benutzer/Konten zugänglich sein. Eine serverlose Funktion kann mit einem Uniform Resource Locator (URL), einem Uniform Resource Identifier (URI) oder einer anderen Referenz verknüpft sein, die zum Aufrufen der serverlosen Funktion verwendet werden kann. Eine serverlose Funktion kann durch eine Rechenressource, wie etwa eine virtuelle Maschine, einen Container usw., ausgeführt werden, wenn sie ausgelöst oder aufgerufen wird. In einigen Ausführungsformen kann eine serverlose Funktion über einen Aufruf einer Anwendungsprogrammierschnittstelle (API) oder eine speziell formatierte HyperText-Transport-Protocol(HTTP)-Anforderungsnachricht aufgerufen werden. Dementsprechend können Benutzer serverlose Funktionen definieren, die bei Bedarf ausgeführt werden können, ohne dass der Benutzer eine dedizierte Infrastruktur zum Ausführen der serverlosen Funktion unterhalten muss. Stattdessen können die serverlosen Funktionen bei Bedarf unter Verwendung von Ressourcen ausgeführt werden, die durch das Anbieternetzwerk 100 unterhalten werden. In einigen Ausführungsformen können diese Ressourcen in einem „bereiten“ Zustand gehalten werden (z. B. mit einer vorinitialisierten Laufzeitumgebung, die dazu konfiguriert ist, die serverlosen Funktionen auszuführen), wodurch die serverlosen Funktionen nahezu in Echtzeit ausgeführt werden können.
  • Der Hardware-Virtualisierungsdienst 118 (in verschiedenen Implementierungen als elastischer Rechendienst, Dienst für virtuelle Maschinen, Computing-Cloud-Dienst, Rechen-Engine oder Cloud-Rechendienst bezeichnet) kann es Benutzern des Anbieternetzwerks 100 ermöglichen, Rechenressourcen, wie etwa Instanzen virtueller Maschinen, bereitzustellen und zu verwalten. Die Technologie für virtuelle Maschinen kann einen physischen Server verwenden, um das Äquivalent vieler Server (von denen jeder als virtuelle Maschine bezeichnet wird) auszuführen, beispielsweise unter Verwendung eines Hypervisors, der mindestens auf einer Offload-Karte des Servers ausgeführt werden kann (z. B. einer Karte, die über PCI oder PCIe mit den physischen CPUs verbunden ist), und andere Komponenten des Virtualisierungshosts können für einige Virtualisierungsverwaltungskomponenten verwendet werden. Eine solche Offload-Karte des Hosts kann eine oder mehrere CPUs beinhalten, die Kundeninstanzen nicht zur Verfügung stehen, sondern stattdessen auf Instanzverwaltungsaufgaben, wie etwa Verwaltung virtueller Maschinen (z. B. Hypervisor), die Eingabe-/Ausgabevirtualisierung für an das Netzwerk angeschlossene Speichervolumen, lokale Migrationsverwaltungsaufgaben, Überwachung des Instanzzustands und dergleichen spezialisiert sind. Virtuelle Maschinen werden üblicherweise als Recheninstanzen oder einfach „Instanzen“ bezeichnet. Im hierin verwendeten Sinne beinhaltet das Vorsehen einer virtuellen Recheninstanz im Allgemeinen Reservieren von Ressourcen (z. B. Rechen- und Speicherressourcen) einer zugrunde liegenden physischen Recheninstanz für den Client (z. B. aus einem Pool verfügbarer physischer Recheninstanzen und anderer Ressourcen), Installieren oder Starten erforderlicher Software (z. B. Betriebssystem) und Verfügbarmachen der virtuellen Recheninstanz für den Client zum Durchführen von durch den Client festgelegten Aufgaben.
  • In einigen Ausführungsformen beinhaltet das Anbieternetzwerk 100 einen Containerdienst. Der Containerdienst kann ein Container-Orchestrierungs- und Verwaltungsdienst sein (in verschiedenen Implementierungen als Containerdienst, Cloud-Containerdienst, Container-Engine oder Container-Cloud-Dienst bezeichnet), der es Benutzern des Cloud-Anbieternetzwerks ermöglicht, Container zu instanziieren und zu verwalten. In einigen Ausführungsformen kann der Containerdienst ein Kubernetes-basierter Container-Orchestrierungs- und Verwaltungsdienst sein (in verschiedenen Implementierungen als Containerdienst für Kubernetes, Azure-Kubernetes-Dienst, IBM-Cloud-Kubemetes-Dienst, Kubernetes-Engine oder Container-Engine für Kubernetes bezeichnet). Ein Container, wie hierin bezeichnet, bündelt Code und alle seine Abhängigkeiten, sodass eine Anwendung (in verschiedenen Containerdiensten auch als Task, Pod oder Cluster bezeichnet) schnell und zuverlässig von einer Rechenumgebung zu einer anderen gebracht werden kann. Ein Containerbild ist ein eigenständiges, ausführbares Softwarepaket, das alles beinhaltet, was zum Ausführen eines Anwendungsprozesses erforderlich ist: Code, Laufzeit, Systemtools, Systembibliotheken und Einstellungen. Containerbilder werden zur Laufzeit zu Containern. Container sind somit eine Abstraktion der Anwendungsschicht (das heißt, jeder Container simuliert einen anderen Softwareanwendungsprozess). Obwohl jeder Container isolierte Prozesse ausführt, können mehrere Container ein gemeinsames Betriebssystem nutzen, indem sie beispielsweise innerhalb derselben virtuellen Maschine gestartet werden. Im Gegensatz dazu sind virtuelle Maschinen eine Abstraktion der Hardwareschicht (das bedeutet, dass jede virtuelle Maschine eine physische Maschine simuliert, auf der Software ausgeführt werden kann). Während mehrere virtuelle Maschinen auf einer physischen Maschine ausgeführt werden können, verfügt jede virtuelle Maschine normalerweise über eine eigene Kopie eines Betriebssystems sowie der Anwendungen und der zugehörigen Dateien, Bibliotheken und Abhängigkeiten. Einige Container können auf Instanzen ausgeführt werden, auf denen ein Containeragent ausgeführt wird, und einige Container können auf Bare-Metal-Servern oder auf einer Offload-Karte eines Servers ausgeführt werden.
  • In einigen Ausführungsformen ist ein Identitäts- und Zugriffsverwaltungsdienst 102 ein Dienst, der es Benutzern ermöglicht, den Zugriff auf Ressourcen des Cloud-Anbieternetzwerks sicher zu steuern (z. B. Ressourcen 160, die mit verschiedenen Anbieternetzwerkdiensten 106 verknüpft sind, wie etwa Speicherobjekte 108, die mit einem Speicherdienst 110 verknüpft sind, Datenbanken 112, die mit einem Datenbankdienst 114 verknüpft sind, Recheninstanzen 116, die mit einem Hardware-Virtualisierungsdienst 118 verknüpft sind, und dergleichen). Der Identitäts- und Zugriffsverwaltungsdienst 102 wird verwendet, um zu steuern, wer sich beim Cloud-Anbieternetzwerk 100 authentifizieren (z. B. anmelden) darf und wer autorisiert ist (z. B. über Berechtigungen verfügt), die durch das Cloud-Anbieternetzwerk bereitgestellten Ressourcen zu verwenden. Im Allgemeinen ist eine Ressource ein Konzept, das zum Erfassen der Domäne von Elementen verwendet wird, die durch Kunden in einem Cloud-Anbieternetzwerk 100 erstellt, gelesen, geändert oder gelöscht werden können. Beispiele für Ressourcen beinhalten auch Prinzipale (z. B. Prinzipale 120, einschließlich Beispielbenutzern 122A-122N und Rollen 124A-124N) und Richtlinien 126 (z. B. einschließlich identitätsbasierter Richtlinien 128, ressourcenbasierter Richtlinien 130 und anderer Richtlinien 132). 1 veranschaulicht ferner das Konzept einer Organisation 134, die eine beliebige Anzahl verknüpfter Konten 136A-136N beinhalten kann, die wiederum eine beliebige Anzahl von Benutzern und Rollen (z. B. Rolle(n) 138, die mit dem Konto 136B verknüpft sind, und Rolle(n) 140, die mit dem Konto 136N verknüpft sind) beinhalten können.
  • Wenn in einigen Ausführungsformen eine Person zum ersten Mal ein Konto beim Cloud-Anbieternetzwerk 100 erstellt, beginnt die Person mit einer einzelnen Anmeldeidentität, die vollständigen Zugriff auf alle Cloud-Anbieternetzwerkdienste und Ressourcen hat, die mit dem Konto verknüpft sind (z. B. ein Root-Benutzer der Prinzipalen 120). Auf die Root-Benutzeridentität kann beispielsweise zugegriffen werden, indem man sich mit einem Benutzernamen (z. B. einer E-Mail-Adresse) und einem Passwort anmeldet, die zum Erstellen des Kontos verwendet wurden. Cloud-Anbieternetzwerke 100 raten Benutzern oft, für die meisten Aufgaben keinen Root-Benutzer zu verwenden und stattdessen zusätzliche Benutzerkonten mit definierten Berechtigungen zu erstellen (z. B. einschließlich eines oder mehrerer der Benutzerkonten 122A-122N). In einigen Ausführungsformen kann ein Benutzer unterschiedlichen Benutzerkonten für unterschiedliche Ressourcen unterschiedliche Berechtigungen erteilen. Beispielsweise könnte ein Benutzerkonto so konfiguriert werden, dass es einigen Benutzern vollständigen Zugriff auf einen Hardware-Virtualisierungsdienst 118, einen Speicherdienst 110 und andere Ressourcen des Cloud-Anbieternetzwerks 100 ermöglicht. Für andere Benutzer ermöglicht ein Benutzerkonto möglicherweise nur Lesezugriff auf einige Speicher-Buckets oder die Berechtigung zur Verwaltung einiger Instanzen 116 usw.
  • In einigen Ausführungsformen beinhaltet ein Konto identitätsbezogene Objekte, die als Teil des Identitäts- und Zugriffsverwaltungsdienstes 102 gespeichert sind, einschließlich beispielsweise Benutzern 122A-122N, Gruppen (nicht veranschaulicht), Rollen 124A-124N, Richtlinien 126 und dergleichen. Diese Ressourcen können durch Benutzer des Cloud-Anbieternetzwerks 100 mit ausreichenden Berechtigungen hinzugefügt, bearbeitet und entfernt werden, z. B. unter Verwendung einer webbasierten Konsole, API, CLI oder einer anderen durch den Identitäts- und Zugriffsverwaltungsdienst 102 bereitgestellten Schnittstelle.
  • In einigen Ausführungsformen stellt ein Prinzipal 120 eine Person oder Anwendung dar, die eine Anfrage für eine Aktion oder einen Vorgang auf einer Ressource des Cloud-Anbieternetzwerks 100 (z. B. einer Ressource 160 oder einer Ressource des Identitäts- und Zugriffsverwaltungsdienstes 102) stellen kann. Der mit einem Konto 136A verknüpfte Satz von Prinzipalen 120 kann eine beliebige Anzahl von Benutzern 122A-122N und Rollen 124A-124N beinhalten. Eine Anfrage des Cloud-Anbieternetzwerks erfolgt, wenn ein Prinzipal (z. B. ein Benutzer oder eine Rolle) eine Anfrage für eine Aktion oder einen Vorgang auf einer Ressource sendet. Eine Anfrage kann einige oder alle der folgenden Informationen beinhalten: die Aktion oder Vorgänge, die der Prinzipal durchführen möchte, das Ressourcenobjekt, auf dem die Aktionen oder Vorgänge durchgeführt werden, die Person oder Anwendung, die eine Entität (z. B. einen Benutzer oder eine Rolle) verwendet hat, um die Anfrage zu senden, Umgebungsdaten (z. B. Informationen über die IP-Adresse, Benutzeragent, SSL-Aktivierungsstatus, Tageszeit usw.) und Ressourcendaten (z. B. Daten im Zusammenhang mit der angefragten Ressource, wie etwa eine Ressourcenkennung oder ein Tag-Name). Der Identitäts- und Zugriffsverwaltungsdienst 102 sammelt die in einer Anfrage enthaltenen Informationen in einem Anfragekontext, wobei der Anfragekontext zur Bewertung und Autorisierung der Anfrage verwendet wird.
  • In einigen Ausführungsformen bestimmt der Identitäts- und Zugriffsverwaltungsdienst 102, damit eine Anfrage abgeschlossen werden kann, ob der anfragende Prinzipal autorisiert (z. B. berechtigt) ist, die Anfrage abzuschließen. Während der Autorisierung verwendet der Identitäts- und Zugriffsverwaltungsdienst 102 im Anfragekontext beinhaltete Werte, um auf Richtlinien zu überprüfen, die für die Anfrage gelten (z. B. eine oder mehrere der Richtlinien 126). Der Identitäts- und Zugriffsverwaltungsdienst 102 verwendet die Richtlinien 126, um zu bestimmen, ob die Anfrage zugelassen oder abgelehnt werden soll. In einigen Ausführungsformen sind die Richtlinien 126 im Identitäts- und Zugriffsverwaltungsdienst 102 als JavaScript-Object-Notation(JSON)-Dokumente (oder unter Verwendung eines anderen Datenformats) gespeichert und legen die Berechtigungsaussagen fest, die für Prinzipalentitäten, Ressourcen oder Kombinationen davon gelten. In einigen Ausführungsformen gibt es mehrere Arten von Richtlinien 126, die sich darauf auswirken können, ob eine gegebene Anfrage autorisiert ist, einschließlich z. B. identitätsbasierter Richtlinien 128, ressourcenbasierter Richtlinien 130 und anderer möglichen Arten von Richtlinien 132. Um Benutzern beispielsweise Berechtigungen für den Zugriff auf Ressourcen in ihrem eigenen Konto bereitzustellen, können identitätsbasierte Richtlinien konfiguriert werden, während ressourcenbasierte Richtlinien für die Gewährung kontoübergreifenden Zugriffs auf Ressourcen verwendet werden können. In einigen Ausführungsformen überprüft der Identitäts- und Zugriffsverwaltungsdienst 102 jede Richtlinie, die für den Kontext einer Anfrage gilt. Wenn eine einzelne Berechtigungsrichtlinie eine verweigerte Aktion beinhaltet, kann der Identitäts- und Zugriffsverwaltungsdienst 102 die gesamte Anfrage ablehnen. In einigen Ausführungsformen lehnt ein Identitäts- und Zugriffsverwaltungsdienst 102 Anfragen standardmäßig ab, sodass eine Anfrage nur dann autorisiert ist, wenn jeder Teil einer Anfrage durch geltende Berechtigungsrichtlinien zulässig ist.
  • In einigen Ausführungsformen bestätigt der Identitäts- und Zugriffsverwaltungsdienst 102 die Aktionen oder Vorgänge in der Anfrage, sobald eine Anfrage authentifiziert und autorisiert ist. Vorgänge werden durch einen Dienst definiert und beinhalten Aktionen, die auf oder relativ zu einer Ressource durchgeführt werden können, wie etwa Anzeigen, Erstellen, Bearbeiten und Löschen dieser Ressource. Beispielsweise kann der Identitäts- und Zugriffsverwaltungsdienst 102, neben vielen anderen möglichen Aktionen, Aktionen wie BenutzerErstellen, BenutzerLöschen, RolleErstellen und RolleAnnehmen unterstützen. Damit ein Prinzipal einen Vorgang durchführen kann, wird die Aktion in eine Richtlinie aufgenommen, die für den Prinzipal oder die betroffene Ressource gilt.
  • In einigen Ausführungsformen sind identitätsbasierte Richtlinien 128 Berechtigungsrichtlinien, die einer Identität hinzugefügt sind, wie etwa einem Benutzer, einer Gruppe oder einer Rolle in einem Konto. In einigen Ausführungsformen sind ressourcenbasierte Richtlinien Berechtigungsrichtlinien, die einer Ressource hinzugefügt sind, wie etwa einem Speicherobjekt 108 oder einer Rollenvertrauensrichtlinie. Eine ressourcenbasierte Richtlinie steuert, welche Aktionen ein spezifischer Prinzipal auf dieser Ressource durchführen kann und unter welchen Bedingungen. In einigen Ausführungsformen unterstützt der Identitäts- und Zugriffsverwaltungsdienst 102 ferner Vertrauensrichtlinien, die einer Rolle hinzugefügt werden können (z. B. einer oder mehreren der Rollen 124A-124N). Da es sich bei einer Rolle sowohl um eine Identität als auch um eine Ressource handelt, die ressourcenbasierte Richtlinien unterstützt, wird in einigen Ausführungsformen einer Rolle sowohl eine Vertrauensrichtlinie als auch eine identitätsbasierte Richtlinie hinzugefügt. Vertrauensrichtlinien definieren, welche Prinzipalentitäten (Konten, Benutzer, Rollen und Verbundbenutzer) die Rolle annehmen können.
  • In einigen Ausführungsformen ist eine Rolle eine Identität, die ein Benutzer in einem Konto erstellt, das über spezifische Berechtigungen verfügt. Eine Rolle ähnelt einem Benutzer, da es sich um eine Identität mit Berechtigungsrichtlinien handelt, die bestimmen, was die Identität tun kann und was nicht. Eine Rolle ist jedoch nicht eindeutig mit einer Person verknüpft, sondern soll von jedem angenommen werden können, der sie benötigt. Außerdem sind mit einer Rolle möglicherweise keine standardmäßigen langfristigen Anmeldeinformationen, wie etwa ein Kennwort oder Zugriffsschlüssel, verknüpft. Wenn eine Entität stattdessen eine Rolle annimmt, werden ihr temporäre Sicherheitsanmeldeinformationen für eine Rollensitzung bereitgestellt. Rollen können verwendet werden, um den Zugriff an Benutzer, Anwendungen oder Dienste zu delegieren, die normalerweise keinen Zugriff auf die Ressource haben. Beispielsweise möchte eine Person möglicherweise Benutzern in einem Konto Zugriff auf Ressourcen gewähren, auf die diese Benutzer normalerweise keinen Zugriff haben, oder Benutzern in einem Konto Zugriff auf Ressourcen in einem anderen Konto gewähren.
  • Wie vorstehend erwähnt, möchten Benutzer möglicherweise häufig die Gewissheit erlangen, dass ihre konfigurierten Richtlinien so konfiguriert sind, dass sie zum Schutz ihrer Daten und Ressourcen beitragen. In einigen Ausführungsformen verwendet ein Richtlinienanalysedienst 146 verschiedene Arten automatisierter Schlussfolgerungen, um solche Analysen durchzuführen und Benutzern basierend auf den Analysen Richtlinienergebnisse zu präsentieren. Auf einer höheren Ebene ist automatisiertes Schlussfolgern ein Verfahren der formalen Verifizierung, die automatisch mathematische Beweise generiert und überprüft, die dabei helfen, die Korrektheit von Systemen zu bestätigen (z. B. um Richtlinien und die zukünftigen Konsequenzen von Richtlinien zu analysieren). Wie vorstehend angegeben, geben Richtlinien vor, wer konkrete Aktionen in Bezug auf konkrete Ressourcen durchführen kann (oder nicht), und ein Richtlinienanalysedienst 146 kann automatisierte Schlussfolgerungen verwenden, um die Eigenschaften der Richtlinien zu überprüfen. Obwohl sich einige der Beispiele in dieser Schrift auf die Analyse von Richtlinien beziehen, die durch einen Identitäts- und Zugriffsverwaltungsdienst 102 verwaltet werden, können ähnliche automatisierte Schlussfolgerungstechniken verwendet werden, um die Korrektheit von Quellcode zu analysieren, Netzwerkkonfigurationen zu analysieren oder allgemein jede Art von Analyse im Zusammenhang mit verschiedene Arten von Rechenressourcen oder Rechensystemen durchzuführen.
  • In einigen Ausführungsformen übersetzt ein Richtlinienanalysedienst 146 zur Durchführung solcher Analysen Richtlinien in äquivalente logische Aussagen und führt eine Reihe allgemeiner und spezialisierter logischer Solver (z. B. SMT-Solver) für das Problem aus. Im Allgemeinen verwendet ein SMT-Solver eine Mischung aus Zahlen, Strings, regulären Ausdrücken, Datumsangaben und IP-Adressen usw., um logische Formeln zu bestätigen und zu widerlegen. Ein Richtlinienanalysedienst 146 untersucht möglicherweise beispielsweise keine Zugriffsprotokolle, um zu bestimmen, ob eine externe Entität auf eine Ressource innerhalb einer Vertrauenszone zugegriffen hat. Vielmehr kann er ein Ergebnis generieren, wenn eine ressourcenbasierte Richtlinie den Zugriff auf eine Ressource zulässt, selbst wenn auf die Ressource noch nicht von einer externen Entität zugegriffen wurde. Darüber hinaus berücksichtigt der Dienst bei der Durchführung solcher Analysen bei seiner Entscheidung möglicherweise nicht den Zustand externer Konten.
  • In 1 veranschaulichen die mit „1“ bis „6“ beschrifteten nummerierten Kreise einen Prozess, bei dem ein oder mehrere Benutzer Konten, Prinzipale, Richtlinien usw. über einen Identitäts- und Zugriffsverwaltungsdienst 102 und einen Richtlinienanalysedienst 146, der eine Analyse einer oder mehrerer Richtlinien der Benutzer durchführt, konfigurieren, wie vorstehend beschrieben. Insbesondere beinhaltet der veranschaulichte Prozess das Verteilen der Verarbeitung einer oder mehrerer SMT-Abfragen, die in Aussagenlogik mit Stringvariablen ausgedrückt sind, über mehrere Rechenressourcen (z. B. über mehrere Rechenvorrichtungen 150), wie im Folgenden ausführlicher beschrieben wird.
  • In einigen Ausführungsformen verwenden bei Kreis „1“ in 1 ein oder mehrere Benutzer, die mit einer Organisation 134 verknüpft sind, (eine) elektronische Vorrichtung(en) 144, um (eine) Konto- und Richtlinienkonfigurationsanfrage(n) 142 zu generieren, um einen Satz von Konten 136A-136N, Prinzipale 120, die mit einer Organisation (z. B. einer durch die Organisation 134 repräsentierte Organisation) verknüpft sind, usw. zu konfigurieren, und um ferner Richtlinien 126, die mit einigen oder allen dieser Prinzipale und Ressourcen 160 verknüpft sind, die mit einer Organisation verknüpft sind, zu konfigurieren. Diese Prinzipale können beispielsweise erstellt werden, um eine Authentifizierung für Benutzer und Prozesse innerhalb von Konten (z. B. Konto 136A-136N) des Cloud-Anbieternetzwerks 100 bereitzustellen. Wie vorstehend erwähnt, stellen Identitäten einen Benutzer dar und können authentifiziert und dann autorisiert werden, um Aktionen im Cloud-Anbieternetzwerk 100 durchzuführen, und jede Identität kann mit einer oder mehreren Richtlinien 126 verknüpft werden, um zu bestimmen, welche Aktionen ein Benutzer oder eine Rolle bei welchen Cloud-Anbieternetzwerkressourcen und unter welchen Bedingungen vornehmen kann. Die Sammlung von Konten, Prinzipalen und Richtlinien kann beispielsweise durch eine Organisation erstellt werden, die beabsichtigt, verschiedene Dienste 106 des Cloud-Anbieternetzwerks 100 für verschiedene Zwecke zu verwenden. Darüber hinaus kann die Sammlung von Konten, Prinzipalen und Richtlinien, die eine Organisation umfasst, im Laufe der Zeit je nach Wunsch der Organisation geändert werden.
  • In einigen Ausführungsformen erstellt und speichert der Identitäts- und Zugriffsverwaltungsdienst 102 bei Kreis „2“ als Reaktion auf die Konto- und Richtlinienkonfigurationsanfrage(n) 142 Daten, die die Konten, Prinzipalen und Richtlinien darstellen. Wie ferner vorstehend erwähnt, können diese Prinzipalen und Richtlinien durch externe Benutzer des Cloud-Anbieternetzwerks 100 mit ausreichenden Berechtigungen hinzugefügt, bearbeitet und entfernt werden, z. B. unter Verwendung einer webbasierten Konsole, API, CLI oder einer anderen Schnittstelle, die durch den Identitäts- und Zugriffsverwaltungsdienst 102 bereitgestellt ist, und Daten, die die Prinzipalen und Richtlinien darstellen, können unter Verwendung verschiedener Arten von Speicherressourcen, die durch den Identitäts- und Zugriffsverwaltungsdienst 102 verwaltet werden, gespeichert werden.
  • Sobald ein Benutzer oder eine Organisation eine oder mehrere Richtlinien erstellt hat, möchten die Benutzer möglicherweise die Richtlinien analysieren, um Sicherheit zu erlangen, dass die konfigurierten Richtlinien so konfiguriert sind, dass sie dazu beitragen, ihre Daten und Ressourcen zu schützen (z. B. um dazu beizutragen sicherzustellen, dass Ressourcen für unerwünschte Entitäten nicht zugänglich sind, um dazu beizutragen sicherzustellen, dass Benutzern nicht versehentlich die Durchführung unerwünschter Aktionen gestattet wird usw.). In einigen Ausführungsformen fordert ein Benutzer bei Kreis „3“ optional bei 158 an, eine oder mehrere Analysen seiner Richtlinien durchzuführen, z. B. unter Verwendung einer webbasierten Konsole oder einer anderen Schnittstelle. In anderen Ausführungsformen führt ein Richtlinienanalysedienst 146 automatisch eine oder mehrere Analysen durch, z. B. als Reaktion auf Anfragen zum Anzeigen allgemeinerer Informationen über verschiedene Arten von Ressourcen 160, die mit einem oder mehreren Benutzerkonten verknüpft sind.
  • Bei Kreis „4“ erlangt der Richtlinienanalysedienst 146 eine oder mehrere Richtlinien 148, die für die angeforderte Analyse relevant sind. Wenn die angeforderte Analyse beispielsweise eine Bestimmung involviert, ob eine externe Entität auf eine oder mehrere mit einem Benutzerkonto verknüpfte Ressourcen zugreifen darf, kann der Richtlinienanalysedienst 146 eine oder mehrere ressourcenbasierte Richtlinien erlangen, die mit den anwendbaren Ressourcen 160 verknüpft sind. In anderen Beispielen können je nach Art der durchzuführenden Analyse identitätsbasierte Richtlinien oder andere Richtlinien 132 erlangt werden.
  • Bei Kreis „5“ generiert der Richtlinienanalysedienst 146 eine codierte Version der einen oder mehreren Richtlinien 148 und verwendet einen oder mehrere SMT-Solver 152, um eine oder mehrere Eigenschaften der Richtlinien zu überprüfen. In einigen Ausführungsformen wird die codierte Richtlinie 154 durch Übersetzen der in einer oder mehreren Richtlinien 126 enthaltenen Berechtigungsaussagen (z. B. ausgedrückt in einem JSON-basierten Format oder einer anderen Syntax) in Abhängigkeiten generiert, die unter Verwendung von Logik erster Ordnung ausgedrückt sind (z. B. ausgedrückt unter Verwendung des SMT-LIB-Formats oder einer anderen formalen Syntax). Auf einer hohen Ebene beinhaltet die codierte Richtlinie einen Satz von Abhängigkeiten, der bei Analyse durch einen SMT-Solver 152 eine Ausgabe generiert, die angibt, dass die zugehörige Formel (z. B. die Formulierung der zu prüfenden Eigenschaften) erfüllbar ist, falls eine Zuweisung von Werten zu den Variablen der Abhängigkeiten, für welche die Formel erfüllt ist, vorliegt; andernfalls ist die Formel nicht erfüllbar, wenn keine solche Zuweisung von Werten zu den Variablen vorhanden ist.
  • 2 ist ein Diagramm, das gemäß einigen Ausführungsformen einen Prozess zum Codieren von durch eine Richtlinie definierten Berechtigungen in aussagenlogische Aussagen einschließlich Stringvariablen veranschaulicht. In 2 wird eine Ressourcenrichtlinie (z. B. einschließlich eines Ressourcenrichtlinienfragments 200) als Eingabe an einen Sprachcodierer 202 erster Ordnung bereitgestellt, um eine codierte Richtlinie (z. B. einschließlich eines beispielhaften codierten Richtlinienfragments 204) zu generieren. In einigen Ausführungsformen implementiert der Sprachcodierer 202 erster Ordnung die Satisfiability-Modulo-Theory Library and Standard (SMT-LIB) oder eine andere Syntax zur formalen Spezifizierung von Formeln im Zusammenhang mit Richtlinien eines Cloud-Anbieternetzwerks 100. Wie gezeigt, beinhaltet die codierte Richtlinie eine Anzahl von Variablen (z. B. einschließlich einer Stringvariablen 206) und booleschen Operatoren (z. B. der boolesche Operator 208, der dem logischen UND-Operator entspricht), die zusammen verschiedene Abhängigkeiten bilden können (z. B. einschließlich einer Abhängigkeit 210). In einigen Ausführungsformen definiert eine Sammlung einer oder mehrerer Abhängigkeiten eine Formel, die an einen Solver übergeben werden kann, wobei der Solver die Erfüllbarkeit der Formel überprüft, indem er bestimmt, ob eine zufriedenstellende Zuweisung für die Variablen vorliegt. Obwohl die Formel in diesem Beispiel Stringvariablen beinhaltet, können in anderen Beispielen abhängig von der Art der zu analysierenden Informationen andere Arten von Theorievariablen in die codierte Darstellung einbezogen werden. Beispielsweise kann in anderen Ausführungsformen eine codierte Darstellung von zu analysierenden Informationen Variablen beinhalten, die mit einer Theorie von Ganzzahlen, einer Theorie reeller Arithmetik, einer Theorie von Bitvektoren, einer Theorie von Arrays, einer Theorie von Listenstrukturen usw. verknüpft sind.
  • In einigen Ausführungsformen partitioniert der Richtlinienanalysedienst 146 die durch eine codierte Richtlinie definierte Formel in eine Vielzahl von Unterformeln, um die Verarbeitung von SMT-Abfragen zu verteilen, die wie oben beschrieben in Logik erster Ordnung ausgedrückt sind. Jede der Unterformeln kann durch einen SMT-Solver verarbeitet werden, der auf einer unabhängigen Rechenressource ausgeführt wird (z. B. als separater Prozess, unabhängig ausführbarer Thread, VM-Instanz, Container, bei Bedarf ausführbare Funktion usw.). Auf diese Weise teilt die Vielzahl von Unterformeln den gesamten Suchraum für eine zufriedenstellende Zuweisung für die Formel auf den Satz von Unterformeln auf, deren Verarbeitung wie vorstehend beschrieben parallelisiert werden kann, wodurch die zur Lösung der Formel erforderliche Zeit in den meisten Fällen deutlich reduziert wird. Einige der hierin bereitgestellten Beispiele veranschaulichen die Partitionierung einer Formel gemäß den in der Formel identifizierten Stringvariablen; im Allgemeinen können die beschriebenen Techniken verwendet werden, um Formeln auf theoriebasierte Weise zu partitionieren, z. B. abhängig von einer Art oder Arten von Theorievariablen, die in der SMT-Abfrage enthalten sind.
  • 3 ist ein Diagramm, das gemäß einigen Ausführungsformen einen Prozess zum Partitionieren eines Suchraums, der mit einer Formel verknüpft ist, die in Logik erster Ordnung ausgedrückt ist und Stringvariablen beinhaltet, in einen Satz von Unterformeln veranschaulicht, deren Ausführung auf mehrere Rechenressourcen 314A-314N verteilt werden kann. In 3 nimmt ein Prozess eines Koordinators 300 eines Richtlinienanalysedienstes 146 eine oder mehrere codierte Richtlinien (z. B. veranschaulicht durch codierte Richtlinienfragmente 204) als Eingabe und veranlasst einen Formelpartitionierer 302, einen Satz von Prädikaten 306 zu identifizieren, der zur Partitionierung der durch die codierten Richtlinien dargestellten Formel in einen Satz von Unterformeln 308 (z. B. einschließlich der Unterformeln 310A-310N) verwendet wird. Ein veranschaulichender Algorithmus zum Partitionieren einer Formel in einen Satz von Unterformeln 308 ist wie folgt:
    Figure DE112022001944T5_0001
  • Im vorstehenden Beispiel nimmt die Routine pulp eine Formelf(z. B. definiert durch die codierte Richtlinie) als Eingabe und gibt einen Satz Unterformeln zurück, dargestellt durch den Satz pulped. Die Routine „Prädikate(f)" generiert Prädikate über Strings in Formel f, die die am häufigsten genannte Stringvariable nennen. Beispielsweise ist im codierten Richtlinienfragment 204 die Stringvariable csp:crn die am häufigsten genannte Stringvariable (z. B. wird sie häufiger genannt als die Stringvariablen csp:crn_Präfix und csp:crn_Region). In diesem Beispiel teilt die Routine Prädikate(f) die Formel, die die Stringvariable enthält, in einen Satz von Prädikaten auf, die eine Instanz der am häufigsten genannten Stringvariablen csp: crn enthalten (z. B. „(= „am:aws:sts::111 :AAA“ |aws:arn|)", „(str.Präfixvon „am:aws:sts::111:BBB/“ |aws:arn|)", „(= „am:aws:sts::111: CCC“ |aws:arn|)", „(= „arn:aws:sts::111:DDD“ |aws:arn|)", usw.). In einigen Ausführungsformen ist jedes Prädikat somit eine binärwertige Funktion mindestens einer in der Formel enthaltenen Stringvariablen. In anderen Ausführungsformen können andere Prädikatgenerierungstechniken verwendet werden, beispielsweise durch Aufteilen der Formel in Prädikate, die die obersten N am häufigsten vorkommenden Stringvariablen enthalten, in Prädikate mit ungefähr gleicher rechnerischer Komplexität usw. In einigen Ausführungsformen können Prädikate beispielsweise basierend auf einer geschätzten rechnerischen Komplexität der Schlussfolgerung über die in jedem Prädikat enthaltene(n) Theorievariable(n) kategorisiert werden. Eine Formel kann dann partitioniert werden, indem Prädikate basierend auf ihrer geschätzten rechnerischen Komplexität in eine Vielzahl von Prädikatsgruppen gruppiert werden (z. B. können mehrere Prädikate geringerer Komplexität in einer einzigen Partition gruppiert werden, während Prädikate höherer Komplexität separat partitioniert werden können usw.).
  • Die Routine iteriert weiter durch die erlangte Liste von Prädikaten(f) und fügt für jedes Prädikat eine Unterformel zum Satz pulpled hinzu, wobei die Unterformel die Formel unter der Annahme beinhaltet, dass das Prädikat entweder wahr oder falsch ist. Auf diese Weise beschränkt jede Unterformel den Suchraum, der mit der ursprünglichen Formel verknüpft ist, auf eine Partition des Suchraums, in der eines der Prädikate in Prädikaten(1) entweder wahr oder falsch ist. Jede dieser Unterformeln stellt eine unabhängige Instanz dar, die durch einen SMT-Solver 152 analysiert werden kann und auf einen Satz unabhängiger Rechenressourcen verteilt werden kann (z. B. separate Threads einer Multithread-Ausführungsumgebung, separate Recheninstanzen, Container, bei Bedarf ausführbare Funktionen, die durch verschiedene Dienste eines Cloud-Anbieternetzwerks bereitgestellt werden, usw.), die jeweils einen SMT-Solver ausführen. Wenn in einigen Ausführungsformen einer der SMT-Solver eine Angabe zurückgibt, dass seine Unterformel erfüllbar ist, kann bestimmt werden, dass die Formel erfüllbar ist. Andernfalls kann bestimmt werden, dass die Formel nicht erfüllbar ist, wenn alle SMT-Solver eine Angabe zurückgeben, dass die jeweiligen Unterformeln nicht erfüllbar sind.
  • 4 ist ein Diagramm, das gemäß einigen Ausführungsformen die Verwendung eines SMT-Solver veranschaulicht, der über mehrere Rechenressourcen hinweg ausgeführt wird, um einen Satz von Unterformeln zu analysieren, die aus einer Formel abgeleitet sind, die in Logik erster Ordnung ausgedrückt ist und Stringvariablen beinhaltet. Wie gezeigt, führt jede der Vielzahl von Rechenressourcen 314A-314N einen SMT-Solver 152 aus und wird durch den Koordinator 300 einer jeweiligen Unterformel eines Satzes von Unterformeln 308 zugewiesen (z. B. wird der Rechenressource 314A Unterformel 310A zugewiesen, wird der Rechenressource 314B Unterformel 310B zugewiesen und wird der Rechenressource 314N Unterformel 310N zugewiesen). Im Allgemeinen können die Unterformeln des Satzes von Unterformeln 308 auf beliebige Weise auf die mehreren Rechenressourcen verteilt werden, beispielsweise abhängig von einer Anzahl von Unterformeln und einer Anzahl verfügbarer Rechenressourcen.
  • In einigen Ausführungsformen wird nachstehend ein beispielhafter Algorithmus veranschaulicht, der durch einen Prozess des Koordinators 300 ausgeführt wird, um die Erfüllbarkeit einer Formel funter Verwendung eines Satzes von Rechenressourcen zu bestimmen:
    Figure DE112022001944T5_0002
  • Im obigen Beispiel wird eine Routine Worker definiert, die als Eingabe einen Solver s und eine Formel g nimmt und eine Angabe zurückgibt, dass die Formelfentweder erfüllbar (SAT) ist (z. B. wenn eine zufriedenstellende Zuweisung von Werten zu den Variablen der Unterformel vorliegt) oder nicht erfüllbar (UNSAT) (z. B. wenn bestimmt wird, dass keine zufriedenstellende Zuweisung von Werten zu den Variablen der Unterformel vorliegt). In einigen Ausführungsformen beinhaltet jede der Rechenressourcen 314A-314N einen Prozess, der eine Routine ähnlich der vorstehend veranschaulichten Worker-Routine unter Verwendung eines SMT-Solvers 152 implementiert.
  • In einigen Ausführungsformen nimmt die Routine Verteilung_Solver als Eingabe eine Formel fund Solver s und gibt eine Angabe zurück, ob die Formel erfüllbar oder nicht erfüllbar ist. Insbesondere generiert die Routine Verteilung_Solver den pulped Satz von Unterformeln, der vorstehen mit Bezug auf 3 beschrieben wurde, und verteilt die Unterformeln an eine Vielzahl separater Worker (z. B. eine Vielzahl separater Rechenressourcen 314A, die separate Prozesse, Threads, Recheninstanzen, Container, bei Bedarf ausführbare Funktionen usw. beinhalten kann). In einigen Ausführungsformen gibt die Routine Verteilung_Solver eine Angabe zurück, dass die Formel erfüllbar ist, sobald einer der Worker eine Angabe zurückgibt, dass eine jeweilige Unterformel erfüllbar ist. Andernfalls, wenn keiner der Worker eine Angabe zurückgibt, dass die Formel erfüllbar ist (z. B. alle Worker eine Angabe zurückgeben, dass ihre jeweilige Unterformel nicht erfüllbar ist), gibt die Routine eine Angabe zurück, dass die Formel nicht erfüllbar ist. In einigen Ausführungsformen kann die Routine eine Angabe zurückgeben, dass die Formel nicht erfüllbar ist (z. B. noch bevor alle Worker eine Angabe zurückgeben, dass ihre jeweilige Unterformel nicht erfüllbar ist), wenn von jeweiligen Workern eine Angabe empfangen wird, dass eine Unterformel sowohl unter der Annahme, dass ihr Prädikat wahr ist, als auch unter der Annahme, dass ihr Prädikat falsch ist, nicht erfüllbar ist.
  • In 4 verarbeitet beispielsweise die Rechenressource 314A-314N jeweils eine jeweilige Unterformel aus den Unterformeln 310A-310N. Zum Zeitpunkt 406A entlang der gesamten Ausführungszeit 410 der Worker gibt die Rechenressource 314N eine Angabe, dass ihre Unterformel 310N nicht erfüllbar ist, als nicht erfüllbares Ergebnis 400 zurück. Zum Zeitpunkt 406B gibt die Rechenressource 314A ein erfüllbares Ergebnis 402 zurück, das angibt, dass ihre Unterformel 310A erfüllbar ist. Wie vorstehend erwähnt, kann der Prozess des Koordinators 300 bestimmen, dass die Gesamtformelferfüllbar ist, da die Unterformel 310A erfüllbar ist. In einigen Ausführungsformen kann der Prozess des Koordinators 300 optional die Verarbeitung anderer Unterformeln durch andere Worker-Rechenressourcen beenden (z. B. wie durch die an die Rechenressource 314B gesendete Analysebeendigungsanforderung 404 veranschaulicht). Während also das Lösen der Formel als Ganzes mindestens bis zum Zeitpunkt 406N dauern kann, um zu bestimmen, ob die Formel erfüllbar ist, dauert die verteilte Verarbeitung der Formel nur bis zum Zeitpunkt 406B, zu dem bestimmt wird, dass eine der Unterformeln erfüllbar ist.
  • Zurückkehrend zu 1 generiert der Richtlinienanalysedienst 146 in einigen Ausführungsformen basierend auf der durch die SMT-Solver 152 durchgeführten Analyse bei Kreis „5“ Richtlinienergebnisse 156. Die Richtlinienergebnisse 156 können im Allgemeinen alle Informationen beinhalten, die auf Grundlage der im Zusammenhang mit der einen oder den mehreren Richtlinien 148 durchgeführten Schlussfolgerungen erlangt werden. Beispielsweise können die Richtlinienergebnisse eine Angabe dazu beinhalten, dass eine oder mehrere Ressourcen 160 für eine oder mehrere Entitäten außerhalb einer definierten Vertrauenszone zugänglich sind, dass eine Richtlinie die Durchführung eines oder mehrerer unbeabsichtigter Vorgänge in Bezug auf eine oder mehrere Ressourcen 160 zulässt, dass ein Benutzer eine Rolle annehmen kann, die der Benutzer nicht übernehmen können sollte, und dergleichen. In einigen Ausführungsformen kann der Koordinator 300 allgemeiner auf Grundlage der durch die SMT-Solver 152 durchgeführten Analyse eine Nachricht übertragen, die angibt, ob die Formel erfüllbar oder nicht erfüllbar ist. Die übertragene Nachricht kann zur Anzeige von Informationen, die mit dem Ergebnis verknüpft sind, führen, kann zur weiteren Analyse an einen oder mehrere nachgeschaltete SMT-Solver oder andere automatisierte Schlussfolgerungstools gesendet oder durch andere Prozesse verwendet werden.
  • 5 ist ein Diagramm, das eine grafische Benutzeroberfläche (GUI) veranschaulicht, die Richtlinienergebnisse anzeigt, die aus einer Analyse einer oder mehrerer Richtlinien gemäß einigen Ausführungsformen abgeleitet wurden. Die GUI 500 veranschaulicht beispielsweise eine Konsolenschnittstelle, die eine Liste von Speicherressourcen anzeigt (z. B. „Beispiel-1-Ressource“, „Beispiel-ab-Ressource“ usw.). In einigen Ausführungsformen beinhaltet die Schnittstelle ferner mindestens ein Richtlinienergebnis 502, das Informationen über eine Ressource angibt, die aus einer automatisierten schlussfolgerungsbasierenden Analyse, wie vorstehend beschrieben, abgeleitet wurden. In diesem Beispiel gibt das Ergebnis 502 an, dass eine der Speicherressourcen für Benutzer außerhalb einer definierten Vertrauenszone zugänglich ist, was einen Benutzer dazu veranlassen kann, die mit der Ressource verknüpften Richtlinien weiter zu analysieren und zu modifizieren, um den unbeabsichtigten Zugriff auf die Ressource abzuschwächen. Im Allgemeinen kann die Darstellung solcher Richtlinienergebnisse in anderen Arten von Schnittstellen (z. B. CLIs, eigenständigen Anwendungsschnittstellen usw.) dargestellt werden und sich auf andere Arten von Richtlinienanalysen beziehen, wie hierin beschrieben.
  • 6 ist ein Ablaufdiagramm, das gemäß einigen Ausführungsformen Vorgänge 600 eines Verfahrens zum Verwenden von Schlussfolgerungstechniken zur Analyse von Formeln veranschaulicht, die in einer Aussagenlogik ausgedrückt sind und Stringvariablen beinhalten. Einige oder alle der Vorgänge 600 (oder andere hierin beschriebene Prozesse oder Variationen und/oder Kombinationen davon) können unter der Steuerung eines oder mehrerer Computersysteme durchgeführt werden, die mit ausführbaren Anweisungen konfiguriert sind, und sind als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), der zusammen auf einem oder mehreren Prozessoren ausgeführt wird, durch Hardware oder Kombinationen davon implementiert. Der Code ist auf einem computerlesbaren Speichermedium gespeichert, zum Beispiel in Form eines Computerprogramms, das Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können. Das computerlesbare Speichermedium ist nichttransitorisch. In einigen Ausführungsformen werden einer oder mehrere (oder alle) der Vorgänge 600 durch einen Richtlinienanalysedienst 146 der anderen Figuren durchgeführt.
  • Die Vorgänge 600 beinhalten bei Block 602 das Empfangen einer Anfrage durch einen Richtlinienanalysedienst eines Cloud-Anbieternetzwerks, um zu bestimmen, ob eine Formel erfüllbar ist, wobei sich die Formel auf eine Analyse von Richtlinien bezieht, die zu einer oder mehreren Rechenressourcen hinzugefügt sind, die mit einem Benutzer des Cloud-Anbieternetzwerks verknüpft sind.
  • Die Vorgänge 600 beinhalten ferner bei Block 604 das Identifizieren eines Satzes von Prädikaten in der Formel basierend auf einer Art der Theorie, die mit dem Satz von Prädikaten verknüpft ist, wobei jedes Prädikat des Satzes von Prädikaten eine binärwertige Funktion mindestens einer Theorievariablen, die in der Formel enthalten ist, ist. Beispielsweise kann die Art der Theorie mindestens eine der Folgenden sein: eine Theorie von Strings, eine Theorie von Ganzzahlen, eine Theorie reeller Arithmetik, eine Theorie von Bitvektoren, eine Theorie von Arrays, eine Theorie von Listenstrukturen usw. In einigen Ausführungsformen handelt es sich bei der Art der Theorie um eine Theorie von Strings und bei der Theorievariablen um eine Stringvariable, und die Vorgänge beinhalten ferner das Identifizieren einer am häufigsten vorkommenden Theorievariablen in der Formel, und wobei jedes Prädikat des Satzes von Prädikaten eine Instanz der am häufigsten vorkommenden Theorievariablen beinhaltet.
  • Die Vorgänge 600 beinhalten ferner in Block 606 das Partitionieren eines Suchraums, der mit der Formel verknüpft ist, in eine Vielzahl von Unterformeln, wobei jede Unterformel die Formel unter einer Annahme beinhaltet, dass ein jeweiliges Prädikat des Satzes von Prädikaten entweder wahr oder falsch ist.
  • Die Vorgänge 600 beinhalten ferner bei Block 608 das Senden einer jeweiligen Unterformel der Vielzahl von Unterformeln an einen SMT-Solver, der auf jeder einer Vielzahl von Rechenressourcen ausgeführt wird. In einigen Ausführungsformen ist jede Rechenressource der Vielzahl von Rechenressourcen ein unabhängig ausführbarer Thread einer Vielzahl von Threads, und wobei die Vielzahl von Threads auf einer oder mehreren Rechenvorrichtungen ausgeführt wird. In einigen Ausführungsformen ist jede Rechenressource der Vielzahl von Rechenressourcen eines von Folgenden: eine Recheninstanz, die durch einen Hardware-Virtualisierungsdienst eines Cloud-Anbieternetzwerks bereitgestellt wird, ein Container, der durch einen Containerdienst des Cloud-Anbieternetzwerks bereitgestellt wird, oder eine bei Bedarf ausführbare Funktion, die durch einen bei Bedarf ausführbaren Codedienst des Cloud-Anbieternetzwerks bereitgestellt wird.
  • Die Vorgänge 600 beinhalten ferner in Block 610 das Empfangen einer Angabe von dem SMT-Solver, der auf einer Rechenressource der Vielzahl von Rechenressourcen ausgeführt wird, dass die jeweilige durch den SMT-Solver, der auf der Rechenressource ausgeführt wird, analysierte Unterformel erfüllbar ist.
  • Die Vorgänge 600 beinhalten ferner bei Block 612 das Übertragen einer Nachricht, die angibt, dass die Formel erfüllbar ist. Beispielsweise kann die Nachricht verwendet werden, um die Anzeige von Informationen zu veranlassen, die angeben, dass die Formel erfüllbar ist, sie kann zur weiteren Analyse an einen oder mehrere nachgeschaltete SMT-Solver oder andere automatisierte Schlussfolgerungstools gesendet oder durch andere Prozesse verwendet werden.
  • In einigen Ausführungsformen bezieht sich die Formel auf mindestens eines von Folgenden: eine Analyse von Richtlinien, die auf eine oder mehrere Rechenressourcen anwendbar sind, die mit einem Benutzer eines Cloud-Anbieternetzwerks verknüpft sind, eine Analyse der Korrektheit eines Computerprogramms oder eine Analyse der Korrektheit einer Computernetzwerkkonfiguration. In einigen Ausführungsformen bestimmt die Erfüllbarkeit der Formel, ob eine Rechenressource, die mit einem Konto oder einer Organisation verknüpft ist, die durch ein Cloud-Anbieternetzwerk definiert ist, für eine Entität außerhalb des Kontos oder der Organisation zugänglich ist, und wobei die Informationen, die angeben, dass die Formel erfüllbar ist, angeben, dass die Rechenressource für eine Entität außerhalb des Kontos oder der Organisation zugänglich ist. In einigen Ausführungsformen identifiziert die Anfrage eine Richtlinie, die durch einen Identitäts- und Zugriffsverwaltungsdienst eines Cloud-Anbieternetzwerks verwaltet wird, und wobei das Verfahren ferner das Generieren der Formel durch Codieren der Richtlinie in ein Logikformat erster Ordnung umfasst.
  • In einigen Ausführungsformen ist die Rechenressource der Vielzahl von Rechenressourcen eine erste Rechenressource und ist die Angabe eine erste Angabe, und wobei die erste Angabe, dass die Formel erfüllbar ist, von dem SMT-Solver empfangen wird, der auf der ersten Rechenressource ausgeführt wird, bevor eine zweite Angabe von einer zweiten Rechenressource der Vielzahl von Rechenressourcen empfangen wird.
  • In einigen Ausführungsformen beinhalten die Vorgänge ferner Folgendes: Empfangen einer zweiten Anfrage, um zu bestimmen, ob eine zweite Formel, die in Logik erster Ordnung ausgedrückt ist, erfüllbar ist; Generieren eines zweiten Satzes von Prädikaten basierend auf der zweiten Formel; Partitionieren eines Suchraums, der mit der zweiten Formel verknüpft ist, in eine zweite Vielzahl von Unterformeln; Senden einer jeweiligen Unterformel der zweiten Vielzahl von Unterformeln an den SMT-Solver, der auf jeder der jeweiligen Vielzahl von zweiten Rechenressourcen ausgeführt wird; Empfangen einer Angabe, dass die jeweilige Unterformel nicht erfüllbar ist, von jedem SMT-Solver, der auf einer Rechenressource der Vielzahl von Rechenressourcen ausgeführt wird; und Übertragen einer Nachricht, die angibt, dass die zweite Formel nicht erfüllbar ist.
  • In einigen Ausführungsformen beinhalten die Vorgänge ferner Folgendes: Empfangen einer zweiten Anfrage, um zu bestimmen, ob eine zweite Formel, die in Logik erster Ordnung ausgedrückt ist, erfüllbar ist; Generieren eines zweiten Satzes von Prädikaten basierend auf der zweiten Formel; Partitionieren eines Suchraums, der mit der zweiten Formel verknüpft ist, in eine zweite Vielzahl von Unterformeln; Senden einer jeweiligen Unterformel der zweiten Vielzahl von Unterformeln an den SMT-Solver, der auf jeder der jeweiligen Vielzahl von zweiten Rechenressourcen ausgeführt wird; Empfangen einer ersten Angabe, dass eine konkrete Unterformel der zweiten Vielzahl von Unterformeln unter einer Annahme, dass ihr jeweiliges Prädikat wahr ist, nicht erfüllbar ist, und einer zweiten Angabe, dass die konkrete Unterformel der zweiten Vielzahl von Unterformeln unter einer Annahme, dass das jeweilige Prädikat falsch ist, nicht erfüllbar ist; und Übertragen einer Nachricht, die angibt, dass die zweite Formel nicht erfüllbar ist.
  • In einigen Ausführungsformen beinhalten die Vorgänge ferner das Gruppieren des Satzes von Prädikaten in eine Vielzahl von Prädikatsgruppen basierend auf einer geschätzten rechnerischen Komplexität, die mit jedem Prädikat des Satzes von Prädikaten verknüpft ist, wobei der Suchraum basierend auf der Vielzahl von Prädikatsgruppen partitioniert wird.
  • In einigen Ausführungsformen beinhalten die Vorgänge ferner das Veranlassen einer Anzeige einer grafischen Benutzeroberfläche (GUI), einschließlich der Informationen, die angeben, dass die Formel erfüllbar ist, wobei die Informationen einen Wert für die mindestens eine Stringvariable angeben, die bewirkt, dass die Formel erfüllbar ist. In einigen Ausführungsformen wird die Nachricht, die angibt, dass die Formel erfüllbar ist, als Eingabe in einen anderen SMT-Solver verwendet.
  • 7 veranschaulicht eine beispielhafte Anbieternetzwerkumgebung (oder „Dienstanbietersystem“) gemäß einigen Ausführungsformen. Ein Anbieternetzwerk 700 kann Kunden Ressourcenvirtualisierung über einen oder mehrere Virtualisierungsdienste 710 bereitstellen, die es Kunden ermöglichen, Instanzen 712 virtualisierter Ressourcen zu kaufen, zu mieten oder auf andere Weise zu erlangen, einschließlich unter anderem Rechen- und Speicherressourcen, die auf Vorrichtungen innerhalb des Anbieternetzwerks oder der Anbieternetzwerke in einem oder mehreren Rechenzentren implementiert sind. Lokale Internetprotokoll(IP)-Adressen 716 können mit den Ressourceninstanzen 712 verknüpft sein; die lokalen IP-Adressen sind die internen Netzwerkadressen der Ressourceninstanzen 712 im Anbieternetzwerk 700. In einigen Ausführungsformen kann das Anbieternetzwerk 700 auch öffentliche IP-Adressen 714 und/oder öffentliche IP-Adressbereiche (z. B. Internet Protocol Version 4 (IPv4)- oder Internet Protocol Version 6 (IPv6)-Adressen) bereitstellen, die Kunden von dem Anbieter 700 erlangen können.
  • Herkömmlicherweise kann das Anbieternetzwerk 700 über die Virtualisierungsdienste 710 einem Kunden des Dienstanbieters (z. B. einem Kunden, der ein oder mehrere Client-Netzwerke 750A-750C einschließlich einer oder mehrerer Kundenvorrichtung(en) 752 betreibt) ermöglichen, mindestens einige öffentliche IP-Adressen 714, die dem Kunden zugewiesen oder zugeteilt sind, mit konkreten Ressourceninstanzen 712, die dem Kunden zugewiesen sind, zu verknüpfen. Das Anbieternetzwerk 700 kann es dem Kunden auch ermöglichen, eine öffentliche IP-Adresse 714, die zuvor einer dem Kunden zugeteilten virtualisierten Rechenressourceninstanz 712 zugeordnet war, einer anderen virtualisierten Rechenressourceninstanz 712, die ebenfalls dem Kunden zugeteilt ist, neu zuzuordnen. Unter Verwendung der durch den Dienstanbieter bereitgestellten virtualisierten Rechenressourceninstanzen 712 und öffentlichen IP-Adressen 714 kann ein Kunde des Dienstanbieters, wie etwa der Betreiber des Kundennetzwerks bzw. der Kundennetzwerke 750A-750C, beispielsweise kundenspezifische Anwendungen implementieren und die Kundenanwendungen in einem Zwischennetzwerk 740, wie etwa dem Internet, präsentieren. Andere Netzwerkentitäten 720 in dem Zwischennetzwerk 740 können dann Datenverkehr zu einer öffentlichen Ziel-IP-Adresse 714 generieren, die durch das bzw. die Kundennetzwerk(e) 750A-750C veröffentlicht wird; der Datenverkehr wird zum Rechenzentrum des Dienstanbieters geroutet und in dem Rechenzentrum über ein Netzwerksubstrat an die lokale IP-Adresse 716 der virtualisierten Rechenressourceninstanz 712 geroutet, die aktuell der öffentlichen Ziel-IP-Adresse 714 zugeordnet ist. In ähnlicher Weise kann der Antwortdatenverkehr von der virtualisierten Rechenressourceninstanz 712 über das Netzwerksubstrat zurück auf das Zwischennetzwerk 740 zur Quellentität 720 geroutet werden.
  • Lokale IP-Adressen im hierin verwendeten Sinne beziehen sich auf die internen oder „privaten“ Netzwerkadressen, beispielsweise von Ressourceninstanzen in einem Anbieternetzwerk. Lokale IP-Adressen können innerhalb von durch Internet Engineering Task Force (IETF) Request for Comments (RFC) 1918 reservierten Adressblöcken und/oder einem durch IETF RFC 4193 spezifizierten Adressformat liegen und können innerhalb des Anbieternetzwerks veränderbar sein. Netzwerkdatenverkehr von außerhalb des Anbieternetzwerks wird nicht direkt an lokale IP-Adressen geroutet; stattdessen verwendet der Datenverkehr öffentliche IP-Adressen, die den lokalen IP-Adressen der Ressourceninstanzen zugeordnet sind. Das Anbieternetzwerk kann Netzwerkvorrichtungen oder -geräte beinhalten, die Netzwerkadressenübersetzung (Network Address Translation - NAT) oder ähnliche Funktionen bereitstellen, um die Zuordnung von öffentlichen IP-Adressen zu lokalen IP-Adressen und umgekehrt durchzuführen.
  • Öffentliche IP-Adressen sind im Internet veränderbare Netzwerkadressen, die entweder durch den Dienstanbieter oder durch den Kunden Ressourceninstanzen zugewiesen werden. Der an eine öffentliche IP-Adresse geroutete Datenverkehr wird beispielsweise mittels 1:1-NAT übersetzt und an die jeweilige lokale IP-Adresse einer Ressourceninstanz weitergeleitet.
  • Einige öffentliche IP-Adressen können durch die Netzwerkinfrastruktur des Anbieters konkreten Ressourceninstanzen zugewiesen werden; diese öffentlichen IP-Adressen können als öffentliche Standard-IP-Adressen oder einfach als Standard-IP-Adressen bezeichnet werden. In einigen Ausführungsformen ist die Zuordnung einer Standard-IP-Adresse zu einer lokalen IP-Adresse einer Ressourceninstanz die Standardstartkonfiguration für alle Arten von Ressourceninstanzen.
  • Zumindest einige öffentliche IP-Adressen können Kunden des Anbieternetzwerks 700 zugeteilt oder von diesen erlangt werden; ein Kunde kann dann seine zugeteilte öffentlichen IP-Adressen konkreten, dem Kunden zugeteilten Ressourceninstanzen zuweisen. Diese öffentlichen IP-Adressen können als öffentliche Kunden-IP-Adressen oder einfach als Kunden-IP-Adressen bezeichnet werden. Anstatt wie im Fall von Standard-IP-Adressen durch das Anbieternetzwerk 700 Ressourceninstanzen zugewiesen zu werden, können Kunden-IP-Adressen durch den Kunden Ressourceninstanzen zugewiesen werden, beispielsweise über eine durch den Dienstanbieter bereitgestellte API. Im Gegensatz zu Standard-IP-Adressen werden Kunden-IP-Adressen Kundenkonten zugeteilt und können durch den jeweiligen Kunden bei Bedarf oder nach Wunsch anderen Ressourceninstanzen neu zugeordnet werden. Eine Kunden-IP-Adresse ist mit einem Kundenkonto verknüpft, nicht mit einer konkreten Ressourceninstanz, und der Kunde kontrolliert diese IP-Adresse, bis er sie freigibt. Im Gegensatz zu herkömmlichen statischen IP-Adressen ermöglichen Kunden-IP-Adressen dem Kunden, Ausfälle von Ressourceninstanzen oder Verfügbarkeitszonen zu maskieren, indem er die öffentlichen IP-Adressen des Kunden jeder Ressourceninstanz neu zuordnet, die mit dem Konto des Kunden verknüpft ist. Die Kunden-IP-Adressen ermöglichen einem Kunden beispielsweise, Probleme mit den Ressourceninstanzen oder der Software des Kunden zu umgehen, indem er Kunden-IP-Adressen Ersatzressourceninstanzen neu zuordnet.
  • 8 ist ein Blockdiagramm eines beispielhaften Anbieternetzwerks, das gemäß einigen Ausführungsformen Kunden einen Speicherdienst und einen Hardware-Virtualisierungsdienst bereitstellt. Der Hardware-Virtualisierungsdienst 820 stellt Kunden mehrere Rechenressourcen 824 (z. B. Recheninstanzen 825 wie VMs) bereit. Die Rechenressourcen 824 können beispielsweise von Kunden des Anbieternetzwerks 800 gemietet oder geleast werden (z. B. von einem Kunden, der das Kundennetzwerk 850 implementiert). Jede Rechenressource 824 kann mit einer oder mehreren lokalen IP-Adressen ausgestattet sein. Das Anbieternetzwerk 800 kann so konfiguriert sein, dass es Pakete von den lokalen IP-Adressen der Rechenressourcen 824 an öffentliche Internetziele und von öffentlichen Internetquellen an die lokalen IP-Adressen der Rechenressourcen 824 routet.
  • Das Anbieternetzwerk 800 kann einem Kundennetzwerk 850, das beispielsweise über ein lokales Netzwerk 856 mit einem Zwischennetzwerk 840 gekoppelt ist, die Möglichkeit bereitstellen, virtuelle Rechensysteme 892 über den Hardware-Virtualisierungsdienst 820, der mit dem Zwischennetzwerk 840 und dem Anbieternetzwerk 800 gekoppelt ist, zu implementieren. In einigen Ausführungsformen kann der Hardware-Virtualisierungsdienst 820 eine oder mehrere APIs 802 bereitstellen, beispielsweise eine Webdienstschnittstelle, über die ein Kundennetzwerk 850 auf die durch den Hardware-Virtualisierungsdienst 820 bereitgestellten Funktionen zugreifen kann, beispielsweise über eine Konsole 894 (z. B. eine webbasierte Anwendung, eigenständige Anwendung, mobile Anwendung usw.). In einigen Ausführungsformen kann in dem Anbieternetzwerk 800 jedes virtuelle Rechensystem 892 im Kundennetzwerk 850 einer Rechenressource 824 entsprechen, die für das Kundennetzwerk 850 geleast, gemietet oder diesem auf andere Weise bereitgestellt wird.
  • Von einer Instanz eines virtuellen Rechensystems 892 und/oder einer anderen Kundenvorrichtung 890 (z. B. über die Konsole 894) kann der Kunde auf die Funktionalität des Speicherdienstes 810 zugreifen, beispielsweise über eine oder mehrere APIs 802, um auf Daten in Speicherressourcen 818A-818N eines virtuellen Datenspeichers 816 (z. B. einen Ordner oder „Bücket“, ein virtualisiertes Volumen, eine Datenbank usw.), der durch das Anbieternetzwerk 800 bereitgestellt wird, zuzugreifen und Daten in diese zu speichern. In einigen Ausführungsformen kann in dem Kundennetzwerk 850 ein virtualisiertes Datenspeicher-Gateway (nicht gezeigt) bereitgestellt werden, das zumindest einige Daten lokal zwischenspeichern kann, beispielsweise häufig aufgerufene oder kritische Daten, und das über einen oder mehrere Kommunikationskanäle mit dem Speicherdienst 810 kommunizieren kann, um neue oder modifizierte Daten aus einem lokalen Zwischenspeicher hochzuladen, sodass der primäre Datenspeicher (virtualisierter Datenspeicher 816) erhalten bleibt. In einigen Ausführungsformen kann ein Benutzer über ein virtuelles Rechensystem 892 und/oder auf einer anderen Kundenvorrichtung 890 über den Speicherdienst 810, der als Speichervirtualisierungsdienst fungiert, Volumen des virtuellen Datenspeichers 816 laden und darauf zugreifen, und diese Volumen können für den Benutzer als lokaler (virtualisierter) Speicher 898 erscheinen.
  • Obwohl in 8 nicht gezeigt, kann auf den/die Virtualisierungsdienst(e) auch von Ressourceninstanzen innerhalb des Anbieternetzwerks 800 über die API(s) 802 zugegriffen werden. Beispielsweise kann ein Kunde, ein Gerätedienstanbieter oder eine andere Entität über eine API 802 von innerhalb eines jeweiligen virtuellen Netzwerks im Anbieternetzwerk 800 auf einen Virtualisierungsdienst zugreifen, um die Zuteilung einer oder mehrerer Ressourceninstanzen innerhalb des virtuellen Netzwerks oder innerhalb eines anderen virtuellen Netzwerks anzufordern.
  • In einigen Ausführungsformen kann ein System, das einen Teil oder alle der hierin beschriebenen Techniken implementiert, ein Universal-Computersystem beinhalten, das ein oder mehrere computerzugängliche Medien beinhaltet oder für einen Zugriff auf diese konfiguriert ist, wie etwa das in 9 veranschaulichte Computersystem 900. In der veranschaulichten Ausführungsform beinhaltet das Computersystem 900 einen oder mehrere Prozessoren 910, die über eine Eingabe-/Ausgabeschnittstelle (E/A-Schnittstelle) 930 mit einem Systemspeicher 920 gekoppelt sind. Das Computersystem 900 beinhaltet ferner eine Netzwerkschnittstelle 940, die mit der E/A-Schnittstelle 930 gekoppelt ist. Während 9 das Computersystem 900 als einzelne Rechenvorrichtung zeigt, kann ein Computersystem 900 in verschiedenen Ausführungsformen eine Rechenvorrichtung oder eine beliebige Anzahl von Rechenvorrichtungen beinhalten, die so konfiguriert sind, dass sie als einzelnes Computersystem 900 zusammenarbeiten.
  • In verschiedenen Ausführungsformen kann das Computersystem 900 ein Einprozessorsystem mit einem Prozessor 910 oder ein Multiprozessorsystem mit mehreren Prozessoren 910 (z. B. zwei, vier, acht oder eine andere geeignete Anzahl) sein. Bei den Prozessoren 910 kann es sich um alle geeigneten Prozessoren handeln, die Anweisungen ausführen können. Beispielsweise kann es sich bei den Prozessoren 910 in verschiedenen Ausführungsformen um Universalprozessoren oder eingebettete Prozessoren handeln, die eine beliebige von verschiedenen Anweisungssatzarchitekturen (instruction set architectures - ISAs) implementieren, wie etwa x86-, ARM-, PowerPC-, SPARC- oder MIPS-ISAs oder jede andere geeignete ISA. In Multiprozessorsystemen kann jeder der Prozessoren 910 üblicherweise, aber nicht unbedingt, dieselbe ISA implementieren.
  • Der Systemspeicher 920 kann Anweisungen und Daten speichern, auf die der/die Prozessor(en) 910 zugreifen kann/können. In verschiedenen Ausführungsformen kann der Systemspeicher 920 unter Verwendung einer beliebigen geeigneten Speichertechnologie implementiert sein, wie etwa Direktzugriffsspeicher (random-access memory - RAM), statischer RAM (SRAM), synchroner dynamischer RAM (SDRAM), nichtflüchtiger Speicher/Flash-Speicher oder jede andere Art von Speicher. In der veranschaulichten Ausführungsform sind Programmanweisungen und Daten, die eine oder mehrere gewünschte Funktionen implementieren, wie etwa die vorstehend beschriebenen Verfahren, Techniken und Daten, im Systemspeicher 920 als Richtlinienanalysedienstcode 925 (z. B. ausführbar, um den Richtlinienanalysedienst 146 vollständig oder teilweise zu implementieren) und Daten 926 gespeichert gezeigt.
  • In einer Ausführungsform kann die E/A-Schnittstelle 930 so konfiguriert sein, dass sie den E/A-Datenverkehr zwischen dem Prozessor 910, dem Systemspeicher 920 und allen Peripheriegeräten in der Vorrichtung, einschließlich der Netzwerkschnittstelle 940 oder anderen Peripherieschnittstellen, koordiniert. In einigen Ausführungsformen kann die E/A-Schnittstelle 930 alle erforderlichen Protokoll-, Zeitsteuerungs- oder anderen Datentransformationen durchführen, um Datensignale von einer Komponente (z. B. Systemspeicher 920) in ein Format umzuwandeln, das für die Verwendung durch eine andere Komponente (z. B. Prozessor 910) geeignet ist. In einigen Ausführungsformen kann die E/A-Schnittstelle 930 Unterstützung für Vorrichtungen beinhalten, die über verschiedene Arten von Peripheriebussen angeschlossen sind, wie etwa eine Variante des Peripheral-Component-Interconnect(PCI)-Busstandards oder des Universal-Serial-Bus(USB)-Standards. In einigen Ausführungsformen kann die Funktion der E/A-Schnittstelle 930 in zwei oder mehr separate Komponenten aufgeteilt sein, wie beispielsweise eine Nordbrücke und eine Südbrücke. Außerdem können in einigen Ausführungsformen einige oder alle Funktionen der E/A-Schnittstelle 930, wie etwa eine Schnittstelle zum Systemspeicher 920, direkt in den Prozessor 910 integriert sein.
  • Die Netzwerkschnittstelle 940 kann so konfiguriert sein, dass sie den Datenaustausch zwischen dem Computersystem 900 und anderen Vorrichtungen 960 ermöglicht, die an ein Netzwerk oder Netzwerke 950 angeschlossen sind, wie beispielsweise andere Computersysteme oder Vorrichtungen, wie in 1 veranschaulicht. In verschiedenen Ausführungsformen kann die Netzwerkschnittstelle 940 die Kommunikation über alle geeigneten drahtgebundenen oder drahtlosen allgemeinen Datennetzwerke unterstützen, wie etwa Arten von Ethernet-Netzwerken. Darüber hinaus kann die Netzwerkschnittstelle 940 die Kommunikation über Telekommunikations-/Telefonnetze, wie etwa analoge Sprachnetze oder digitale Glasfaserkommunikationsnetze, über Speicherbereichsnetzwerke (Storage Area Networks - SANs), wie etwa Fibre-Channel-SANs, oder über E/A jeder anderen geeigneten Art von Netzwerk und/oder Protokoll unterstützen.
  • In einigen Ausführungsformen beinhaltet ein Computersystem 900 eine oder mehrere Offload-Karten 970A oder 970B (einschließlich eines oder mehrerer Prozessoren 975 und möglicherweise einschließlich der einen oder mehreren Netzwerkschnittstellen 940), die unter Verwendung einer E/A-Schnittstelle 930 verbunden sind (z. B. über einen Bus, der eine Version des Peripheral-Component-Interconnect-Express-(PCI-E)-Standards implementiert, oder eine andere Zusammenschaltung, wie QuickPath Interconnect (QPI) oder UltraPath-Interconnect (UPI)). Beispielsweise kann das Computersystem 900 in einigen Ausführungsformen als elektronische Hostvorrichtung fungieren (z. B. als Teil eines Hardware-Virtualisierungsdienstes betrieben werden), die Rechenressourcen wie Recheninstanzen hostet, und die eine oder mehreren Offload-Karten 970A oder 970B führen einen Virtualisierungsmanager aus, der Recheninstanzen verwalten kann, die auf der elektronischen Hostvorrichtung ausgeführt werden. Beispielsweise kann/können die Offload-Karte(n) 970A oder 970B in einigen Ausführungsformen Recheninstanzverwaltungsvorgänge durchführen, wie etwa Anhalten und/oder Neustarten von Recheninstanzen, Starten und/oder Beenden von Recheninstanzen, Durchführen von Speichertransfer-/Kopiervorgängen usw. Diese Verwaltungsvorgänge können in einigen Ausführungsformen durch die Offload-Karte(n) 970A oder 970B in Koordination mit einem Hypervisor (z. B. auf Anfrage von einem Hypervisor) durchgeführt werden, der durch die anderen Prozessoren 910A-910N des Computersystems 900 ausgeführt wird. In einigen Ausführungsformen kann der durch die Offload-Karte(n) 970A oder 970B implementierte Virtualisierungsmanager jedoch Anfragen von anderen Entitäten (z. B. von Recheninstanzen selbst) berücksichtigen und muss möglicherweise nicht mit einem separaten Hypervisor koordinieren (oder diesen bedienen).
  • In einigen Ausführungsformen kann der Systemspeicher 920 eine Ausführungsform eines computerzugänglichen Mediums sein, das zum Speichern von Programmanweisungen und Daten, wie vorstehend beschrieben, konfiguriert ist. In anderen Ausführungsformen können Programmanweisungen und/oder Daten jedoch auf unterschiedlichen Arten von computerzugänglichen Medien empfangen, gesendet oder gespeichert werden. Im Allgemeinen kann ein computerzugängliches Medium nichttransitorische Speichermedien oder Speichermedien wie magnetische oder optische Medien beinhalten, z. B. eine Festplatte oder DVD/CD, die über die E/A-Schnittstelle 930 mit dem Computersystem 900 verbunden sind. Ein nichttransitorisches, computerzugängliches Speichermedium kann auch beliebige flüchtige oder nichtflüchtige Medien wie RAM (z. B. SDRAM, Doppeldatenraten (DDR)-SDRAM, SRAM usw.), Nur-Lese-Speicher (read-only memory - ROM) usw. beinhalten, die in einigen Ausführungsformen des Computersystems 900 als Systemspeicher 920 oder eine andere Art von Speicher beinhaltet sein können. Darüber hinaus kann ein computerzugängliches Medium Übertragungsmedien oder Signale, wie etwa elektrische, elektromagnetische oder digitale Signale, beinhalten, die über ein Kommunikationsmedium, wie etwa ein Netzwerk und/oder einen drahtlosen Link, übermittelt werden, wie es etwa über die Netzwerkschnittstelle 940 implementiert werden kann.
  • Verschiedene hierin erörterte oder vorgeschlagene Ausführungsformen können in einer breiten Vielfalt von Betriebsumgebungen implementiert sein, zu denen in einigen Fällen ein oder mehrere Benutzercomputer, Rechenvorrichtungen oder Verarbeitungsvorrichtung gehören können, die verwendet werden können, um eine beliebige einer Reihe von Anwendungen zu betreiben. Benutzer- oder Client-Vorrichtungen können eine beliebige Anzahl von Universalcomputern beinhalten, wie etwa Desktop- oder Laptop-Computer, auf denen ein standardmäßiges Betriebssystem ausgeführt wird, sowie Mobilfunk-, drahtlose und tragbare Vorrichtungen, auf denen mobile Software ausgeführt wird und die dazu in der Lage sind, eine Reihe von Networking- und Messaging-Protokollen zu unterstützen. Ein derartiges System kann zudem eine Reihe von Workstations beinhalten, auf denen ein beliebiges einer Vielfalt von handelsüblichen Betriebssystemen und sonstige bekannte Anwendungen für Zwecke wie etwa Entwicklung und Datenbankverwaltung ausgeführt werden. Diese Vorrichtungen können zudem andere elektronische Vorrichtungen beinhalten, wie etwa Dummy Terminals, Thin Clients, Spielesysteme und/oder andere Vorrichtungen, die dazu in der Lage sind, über ein Netzwerk zu kommunizieren.
  • Die meisten Ausführungsformen nutzen mindestens ein Netzwerk, das dem Fachmann vertraut ist, um die Kommunikation unter Verwendung einer Vielzahl allgemein verfügbarer Protokolle zu unterstützen, wie etwa Transmission Control Protocol/Internet Protocol (TCP/IP), File Transfer Protocol (FTP), Universal Plug and Play (UPnP), Network File System (NFS), Common Internet File System (CIFS), Extensible Messaging and Presence Protocol (XMPP), AppleTalk usw. Das/die Netzwerk(e) kann/können beispielsweise ein lokales Netzwerk (local area network - LAN), ein Weitverkehrsnetzwerk (wide-area network - WAN), ein virtuelles privates Netzwerk (VPN), das Internet, ein Intranet, ein Extranet, ein öffentliches Telefonnetz (public switched telephone network - PSTN), ein Infrarotnetzwerk, ein drahtloses Netzwerk und jede Kombination davon beinhalten.
  • In Ausführungsformen, die einen Webserver nutzen, kann der Webserver eine Vielfalt von Server- oder Mid-Tier-Anwendungen ausführen, einschließlich HTTP-Servern, File-Transfer-Protocol(FTP)-Servern, Common-Gateway-Interface(CGI)-Servern, Datenservern, Java-Servern, Firmenanwendungsservern usw. Der bzw. die Server kann bzw. können zudem dazu in der Lage sein, Programme oder Skripte als Reaktion auf Anfragen von Benutzervorrichtungen auszuführen, wie etwa durch Ausführen einer oder mehrerer Webanwendungen, die als ein oder mehrere Skripte oder Programme implementiert sein können, die in einer beliebigen Programmiersprache geschrieben sind, wie etwa Java®, C, C# oder C++ oder einer beliebigen Skriptsprache, wie etwa Ruby, PHP, Perl, Python oder TCL, sowie Kombinationen daraus. Der/die Servern kann/können auch Datenbankserver beinhalten, einschließlich unter anderem derjenigen, die kommerziell von Oracle®, Microsoft®, Sybase®, IBM® usw. erhältlich sind. Die Datenbankserver können relational oder nicht relational (z. B. „NoSQL“), verteilt oder nicht verteilt usw. sein.
  • Hierin offenbarte Umgebungen können eine Vielfalt von Datenspeichern und anderem Speicher und anderen Speichermedien, wie vorstehend erörtert, beinhalten. Diese können an einer Vielfalt von Stellen angeordnet sein, wie etwa auf einem Speichermedium, das zu einem oder mehreren der Computer lokal (und/oder darin angeordnet) ist oder von beliebigen oder allen der Computer über das Netzwerk hinweg entfernt ist. In einem konkreten Satz von Ausführungsformen können sich die Informationen in einem Speicherbereichsnetzwerk (SAN) befinden, das dem Fachmann vertraut ist. Gleichmaßen können beliebige erforderliche Dateien zum Durchführen der Funktionen, die den Computern, Servern oder anderen Netzwerkvorrichtungen zugeschrieben sind, gegebenenfalls lokal und/oder entfernt gespeichert werden. Wenn ein System computergestützte Vorrichtungen beinhaltet, kann jede derartige Vorrichtung Hardwareelemente, beinhalten, die über einen Bus elektrisch gekoppelt sein können, wobei die Elemente zum Beispiel mindestens eine zentrale Verarbeitungseinheit (central processing unit - CPU), mindestens eine Eingabevorrichtung (z. B. eine Maus, eine Tastatur, einen Controller, einen Touchscreen oder ein Tastenfeld) und/oder mindestens eine Ausgabevorrichtung (z. B. eine Anzeigevorrichtung, einen Drucker oder einen Lautsprecher) beinhalten. Ein derartiges System kann zudem eine oder mehrere Speichervorrichtungen beinhalten, wie etwa Plattenlaufwerke, optische Speichervorrichtungen und Solid-State-Speichervorrichtungen, wie etwa Direktzugriffsspeicher (RAM) oder Festwertspeicher (ROM), sowie entfernbare Medienvorrichtungen, Speicherkarten, Flash-Karten usw.
  • Derartige Vorrichtungen können zudem ein computerlesbares Speichermedien-Lesegerät, eine Kommunikationsvorrichtung (z. B. ein Modem, eine Netzwerkkarte (drahtlos oder drahtgebunden), eine Infrarot-Kommunikationsvorrichtung usw.) und Arbeitsspeicher beinhalten, wie vorstehend beschrieben. Das computerlesbare Speichermedien-Lesegerät kann mit einem computerlesbaren Speichermedium, das entfernte, lokale, feste und/oder entfernbare Speichervorrichtungen sowie Speichermedien für vorübergehendes und/oder dauerhaftes Enthalten, Speichern, Übertragen und Abrufen von computerlesbaren Information darstellt, verbunden sein oder dazu konfiguriert sein, dieses aufzunehmen. Das System und die verschiedenen Vorrichtungen beinhalten zudem üblicherweise eine Reihe von Softwareanwendungen, Modulen, Diensten oder anderen Elementen, die innerhalb zumindest einer Arbeitsspeichervorrichtung angeordnet sind, einschließlich eines Betriebssystems und Anwendungsprogrammen, wie etwa einer Kundenanwendung oder eines Webbrowsers. Es versteht sich, dass alternative Ausführungsformen zahlreiche Abwandlungen von der vorstehend beschriebenen aufweisen können. Zum Beispiel kann zudem kundenspezifische Hardware verwendet werden und/oder können konkrete Elemente in Hardware, Software (einschließlich portabler Software wie etwa Applets) oder beiden implementiert sein. Ferner kann eine Verbindung zu anderen Rechenvorrichtungen, wie etwa Netzwerk-Eingabe/AusgabeVorrichtungen, eingesetzt werden.
  • Speichermedien und computerlesbare Medien, die Code oder Teile von Code enthalten, können beliebige zweckmäßige Medien beinhalten, die auf dem Fachgebiet bekannt sind oder verwendet werden, einschließlich Speichermedien und Kommunikationsmedien, wie etwa unter anderem flüchtige und nichtflüchtige, entfernbare und nicht entfernbare Medien, die in einem beliebigen Verfahren oder einer beliebigen Technik zur Speicherung und/oder Übertragung von Informationen implementiert sind, wie etwa computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten, darunter RAM, ROM, elektrisch löschbarer programmierbarer Festwertspeicher (EEPROM), Flash-Speicher oder eine andere Speichertechnik, Compact-Disc-Festwertspeicher (CD-ROM), Digital Versatile Disk (DVD) oder ein anderer optischer Speicher, Magnetkassetten, ein Magnetband, ein Magnetplattenspeicher oder eine andere Magnetspeichervorrichtungen oder ein beliebiges anderes Medium, das dazu verwendet werden kann, die gewünschten Information zu speichern, und auf das durch eine Systemvorrichtung zugegriffen werden kann. Auf Grundlage der Offenbarung und der hierin bereitgestellten Lehren versteht der Durchschnittsfachmann, dass andere Möglichkeiten und/oder Verfahren vorhanden sind, um die verschiedenen Ausführungsformen zu implementieren.
  • In der vorangehenden Beschreibung wurden verschiedene Ausführungsformen beschrieben. Zu Zwecken der Erläuterung werden spezifische Konfigurationen und Einzelheiten dargelegt, um ein umfassendes Verständnis der Ausführungsformen bereitzustellen. Dem Fachmann ist jedoch außerdem ersichtlich, dass die Ausführungsformen ohne die spezifischen Einzelheiten in die Praxis umgesetzt werden können. Ferner können hinlänglich bekannte Merkmale weggelassen oder vereinfacht werden, damit die beschriebene Ausführungsform nicht unklar wird.
  • Text in Klammern und Blöcke mit gestrichelten Rändern (z. B. große Striche, kleine Striche, Punkt-Strich und Punkte) werden hierin verwendet, um optionale Vorgänge zu veranschaulichen, die einigen Ausführungsformen zusätzliche Merkmale hinzufügen. Eine solche Notation sollte jedoch nicht so verstanden werden, dass diese die einzigen Optionen oder optionalen Operationen sind und/oder dass Blöcke mit durchgezogenen Rändern in gewissen Ausführungsformen nicht optional sind.
  • Bezugszeichen mit angehängten Buchstaben (z. B. 818A-818N) können verwendet werden, um anzugeben, dass es in verschiedenen Ausführungsformen eine oder mehrere Instanzen der referenzierten Entität geben kann, und wenn es mehrere Instanzen gibt, müssen nicht alle identisch sein, sondern können sich stattdessen einige allgemeine Eigenschaften teilen oder sich auf gemeinsame Weise verhalten. Darüber hinaus bedeuten die verwendeten Suffixe nicht, dass eine konkrete Menge der Entität vorhanden ist, es sei denn, es wird ausdrücklich etwas anderes angegeben. Somit können zwei Entitäten, die dieselben oder unterschiedliche Suffixbuchstaben verwenden, in verschiedenen Ausführungsformen die gleiche Anzahl von Instanzen aufweisen oder nicht.
  • Bezugnahmen auf „eine Ausführungsform“, „ein Ausführungsbeispiel“ usw. geben an, dass die beschriebene Ausführungsform ein konkretes Merkmal, eine konkrete Struktur oder Eigenschaft beinhalten kann, doch es muss nicht notwendigerweise jede Ausführungsform das konkrete Merkmal, die konkrete Struktur oder Eigenschaft beinhalten. Darüber hinaus beziehen sich derartige Formulierungen nicht unbedingt auf ein und dieselbe Ausführungsform. Des Weiteren sei darauf hingewiesen, dass, wenn ein konkretes Merkmal, eine konkrete Struktur oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben wird, es im Bereich des Fachwissens des Fachmanns liegt, ein derartiges Merkmal, eine derartige Struktur oder Eigenschaft in Verbindung mit anderen Ausführungsformen hervorzubringen, ob dies nun ausdrücklich beschrieben ist oder nicht.
  • Darüber hinaus soll in den verschiedenen vorstehend beschriebenen Ausführungsformen, sofern nicht ausdrücklich anders angegeben, disjunktive Sprache wie der Ausdruck „mindestens eines von A, B oder C“ so verstanden werden, dass er entweder A, B oder C oder eine beliebige Kombination davon (z. B. A, B und/oder C) bedeutet. Daher ist es nicht beabsichtigt und sollte auch nicht so verstanden werden, dass disjunktive Sprache impliziert, dass für eine gegebene Ausführungsform jeweils mindestens eines von A, mindestens eines von B oder mindestens eines von C vorhanden sein muss.
  • Sofern nicht ausdrücklich anders angegeben, sollten Artikel wie „ein“ oder „eine“ im Allgemeinen so interpretiert werden, dass sie ein oder mehrere beschriebene Elemente beinhalten. Dementsprechend sollen Formulierungen wie „eine Vorrichtung, die dazu konfiguriert ist“ eine oder mehrere der genannten Vorrichtungen beinhalten. Eine solche oder mehrere der genannten Vorrichtungen können auch gemeinsam konfiguriert werden, um die genannten Rezitationen auszuführen. Beispielsweise kann „ein Prozessor, der zur Ausführung der Rezitationen A, B und C konfiguriert ist“ einen ersten Prozessor beinhalten, der zur Ausführung der Rezitationen A konfiguriert ist und in Verbindung mit einem zweiten Prozessor arbeitet, der zur Ausführung der Rezitationen B und C konfiguriert ist.
  • Mindestens einige Ausführungsformen der vorliegenden Technologien können im Hinblick auf die folgenden Absätze beschrieben werden:
    1. 1. Computerimplementiertes Verfahren, das Folgendes umfasst:
      • Empfangen einer Anfrage durch einen Richtlinienanalysedienst eines Cloud-Anbieternetzwerks, um zu bestimmen, ob eine Formel erfüllbar ist, wobei sich die Formel auf eine Analyse einer oder mehrerer Richtlinien bezieht, die auf eine oder mehrere Rechenressourcen anwendbar sind, die mit einem Benutzer des Cloud-Anbieternetzwerks verknüpft sind;
      • Identifizieren eines Satzes von Prädikaten in der Formel basierend auf Stringvariablen, die in der Formel beinhaltet sind, wobei jedes Prädikat des Satzes von Prädikaten eine binärwertige Funktion mindestens einer Stringvariablen, die in der Formel enthalten ist, ist;
      • Partitionieren eines Suchraums, der mit der Formel verknüpft ist, in eine Vielzahl von Unterformeln, wobei jede Unterformel der Vielzahl von Unterformeln die Formel unter einer Annahme beinhaltet, dass ein jeweiliges Prädikat des Satzes von Prädikaten entweder wahr oder falsch ist;
      • Senden einer jeweiligen Unterformel der Vielzahl von Unterformeln an einen Erfüllbarkeits-Modulo-Theorien-Solver (SMT-Solver), der auf jeder einer Vielzahl von Rechenressourcen ausgeführt wird;
      • Empfangen einer Angabe von dem SMT-Solver, der auf einer Rechenressource der Vielzahl von Rechenressourcen ausgeführt wird, dass die jeweilige durch den SMT-Solver, der auf der Rechenressource ausgeführt wird, analysierte Unterformel erfüllbar ist; und
      • Bewirken einer Anzeige von Informationen, die angeben, dass die Formel erfüllbar ist.
    2. 2. Computerimplementiertes Verfahren nach Absatz 1, ferner umfassend Identifizieren einer am häufigsten vorkommenden Stringvariablen in der Formel, und wobei jedes Prädikat des Satzes von Prädikaten eine Instanz der Stringvariablen beinhaltet.
    3. 3. Computerimplementiertes Verfahren nach einem der Absätze 1-2, wobei jede Rechenressource der Vielzahl von Rechenressourcen eines von Folgendem ist: ein unabhängig ausführbarer Thread, eine Recheninstanz, ein Container oder eine bei Bedarf ausführbare Funktion.
    4. 4. Computerimplementiertes Verfahren, das Folgendes umfasst:
      • Empfangen einer Anfrage durch einen Koordinatorprozess, der auf einer ersten Rechenressourcen ausgeführt wird, um zu bestimmen, ob eine in Aussagenlogik ausgedrückte Formel erfüllbar ist;
      • Identifizieren eines Satzes von Prädikaten in der Formel basierend auf einer Art der Theorie, die mit dem Satz von Prädikaten verknüpft ist, wobei jedes Prädikat des Satzes von Prädikaten eine binärwertige Funktion mindestens einer Theorievariablen, die in der Formel enthalten ist, ist;
      • Partitionieren eines Suchraums, der mit der Formel verknüpft ist, in eine Vielzahl von Unterformeln, wobei jede Unterformel der Vielzahl von Unterformeln die Formel unter einer Annahme beinhaltet, dass ein jeweiliges Prädikat des Satzes von Prädikaten entweder wahr oder falsch ist;
      • Senden einer jeweiligen Unterformel der Vielzahl von Unterformeln an einen Erfüllbarkeits-Modulo-Theorien-Solver (SMT-Solver), der auf jeder einer jeweiligen Vielzahl von zweiten Rechenressourcen ausgeführt wird;
      • Empfangen einer Angabe von dem SMT-Solver, der auf einer Rechenressource der Vielzahl von Rechenressourcen ausgeführt wird, dass die Formel erfüllbar ist; und
      • Übertragen einer Nachricht, die angibt, dass die Formel erfüllbar ist.
    5. 5. Computerimplementiertes Verfahren nach Absatz 4, wobei die Art der Theorie eine Theorie von Strings ist und die Theorievariable eine Stringvariable ist und wobei das Verfahren ferner Identifizieren einer am häufigsten vorkommenden Theorievariablen in der Formel umfasst und wobei jedes Prädikat des Satzes von Prädikaten eine Instanz der am häufigsten vorkommenden Theorievariablen beinhaltet.
    6. 6. Computerimplementiertes Verfahren nach einem der Absätze 4-5, wobei jede Rechenressource der Vielzahl von Rechenressourcen ein unabhängig ausführbarer Thread einer Vielzahl von Threads ist und wobei die Vielzahl von Threads auf einer oder mehreren Rechenvorrichtungen ausgeführt wird.
    7. 7. Computerimplementiertes Verfahren nach einem der Absätze 4-6, wobei die Art der Theorie mindestens eine von Folgenden ist: eine Theorie von Strings, eine Theorie von Ganzzahlen, eine Theorie reeller Arithmetik, eine Theorie von Bitvektoren, eine Theorie von Arrays oder eine Theorie von Listenstrukturen.
    8. 8. Computerimplementiertes Verfahren nach einem der Absätze 4-7, wobei jede Rechenressource der Vielzahl von Rechenressourcen eines von Folgenden ist: eine Recheninstanz, die durch einen Hardware-Virtualisierungsdienst eines Cloud-Anbieternetzwerks bereitgestellt wird, ein Container, der durch einen Containerdienst des Cloud-Anbieternetzwerks bereitgestellt wird, oder eine bei Bedarf ausführbare Funktion, die durch einen bei Bedarf ausführbaren Codedienst des Cloud-Anbieternetzwerks bereitgestellt wird.
    9. 9. Computerimplementiertes Verfahren nach einem der Absätze 4-8, wobei sich die Formel auf mindestens eines von Folgenden bezieht: eine Analyse von Richtlinien, die auf eine oder mehrere Rechenressourcen anwendbar sind, die mit einem Benutzer eines Cloud-Anbieternetzwerks verknüpft sind, eine Analyse der Korrektheit eines Computerprogramms oder eine Analyse der Korrektheit einer Computernetzwerkkonfiguration.
    10. 10. Computerimplementiertes Verfahren nach einem der Absätze 4-9, wobei die Erfüllbarkeit der Formel bestimmt, ob eine Rechenressource, die mit einem Konto oder einer Organisation verknüpft ist, das bzw. die durch ein Cloud-Anbieternetzwerk definiert ist, für eine Entität außerhalb des Kontos oder der Organisation zugänglich ist, und wobei die Nachricht, die angibt, dass die Formel erfüllbar ist, angibt, dass die Rechenressource für eine Entität außerhalb des Kontos oder der Organisation zugänglich ist.
    11. 11. Computerimplementierte Verfahren nach einem der Absätze 4-10, wobei die Anfrage eine Richtlinie identifiziert, die durch einen Identitäts- und Zugriffsverwaltungsdienst eines Cloud-Anbieternetzwerks verwaltet wird, und wobei das Verfahren ferner Generieren der Formel durch Codieren der Richtlinie in ein Logikformat erster Ordnung umfasst.
    12. 12. Computerimplementiertes Verfahren nach einem der Absätze 4-11, wobei die Rechenressource der Vielzahl von Rechenressourcen eine erste Rechenressource ist und die Angabe eine erste Angabe ist und wobei die erste Angabe, dass die Formel erfüllbar ist, von dem SMT-Solver empfangen wird, der auf der ersten Rechenressource ausgeführt wird, bevor eine zweite Angabe von einer zweiten Rechenressource der Vielzahl von Rechenressourcen empfangen wird.
    13. 13. Computerimplementiertes Verfahren nach einem der Absätze 4-12, ferner umfassend:
      • Empfangen einer zweiten Anfrage, um zu bestimmen, ob eine zweite Formel, die in Logik erster Ordnung ausgedrückt ist, erfüllbar ist;
      • Generieren eines zweiten Satzes von Prädikaten basierend auf der zweiten Formel;
      • Partitionieren eines Suchraums, der mit der zweiten Formel verknüpft ist, in eine zweite Vielzahl von Unterformeln;
      • Senden einer jeweiligen Unterformel der zweiten Vielzahl von Unterformeln an den SMT-Solver, der auf jeder der jeweiligen Vielzahl von zweiten Rechenressourcen ausgeführt wird;
      • Empfangen einer Angabe von jedem SMT-Solver, der auf einer Rechenressource der Vielzahl von Rechenressourcen ausgeführt wird, dass die jeweilige Formel nicht erfüllbar ist; und
      • Übertragen einer Nachricht, die angibt, dass die zweite Formel nicht erfüllbar ist.
    14. 14. Computerimplementiertes Verfahren nach einem der Absätze 4-12, ferner umfassend:
      • Empfangen einer zweiten Anfrage, um zu bestimmen, ob eine zweite Formel, die in Logik erster Ordnung ausgedrückt ist, erfüllbar ist;
      • Generieren eines zweiten Satzes von Prädikaten basierend auf der zweiten Formel;
      • Partitionieren eines Suchraums, der mit der zweiten Formel verknüpft ist, in eine zweite Vielzahl von Unterformeln;
      • Senden einer jeweiligen Unterformel der zweiten Vielzahl von Unterformeln an den SMT-Solver, der auf jeder der jeweiligen Vielzahl von zweiten Rechenressourcen ausgeführt wird;
      • Empfangen einer ersten Angabe, dass eine konkrete Unterformel der zweiten Vielzahl von Unterformeln unter einer Annahme, dass ihr jeweiliges Prädikat wahr ist, nicht erfüllbar ist, und einer zweiten Angabe, dass die konkrete Unterformel der zweiten Vielzahl von Unterformeln unter einer Annahme, dass ihr jeweiliges Prädikat falsch ist, nicht erfüllbar ist; und
      • Übertragen einer Nachricht, die angibt, dass die zweite Formel nicht erfüllbar ist.
    15. 15. Computerimplementiertes Verfahren nach einem der Absätze 4-14, ferner umfassend:
      • Gruppieren des Satzes von Prädikaten in eine Vielzahl von Prädikatsgruppen basierend auf einer geschätzten rechnerischen Komplexität, die mit jedem Prädikat des Satzes von Prädikaten verknüpft ist, wobei der Suchraum basierend auf der Vielzahl von Prädikatsgruppen partitioniert wird.
    16. 16. Computerimplementiertes Verfahren nach einem der Absätze 4-15, ferner umfassend Bewirken einer Anzeige einer grafischen Benutzeroberfläche (GUI), die Informationen beinhaltet, die angeben, dass die Formel erfüllbar ist, wobei die Informationen einen Wert für die mindestens eine Stringvariable angeben, der bewirkt, dass die Formel erfüllbar ist.
    17. 17. Computerimplementiertes Verfahren nach einem der Absätze 4-16, wobei die Nachricht, die angibt, dass die Formel erfüllbar ist, als Eingabe in einen anderen SMT-Solver verwendet wird.
    18. 18. System, das Folgendes umfasst:
      • eine oder mehrere erste elektronische Vorrichtungen zum Implementieren eines Richtlinienanalysedienstes in einem mehrinstanzenfähigen Anbieternetzwerk, wobei der Richtlinienanalysedienst Anweisungen beinhaltet, die bei Ausführung den Richtlinienanalysedienst zu Folgendem veranlassen:
        • Empfangen einer Anfrage, um zu bestimmen, ob eine Formel erfüllbar ist, wobei sich die Formel auf eine Analyse einer oder mehrerer Richtlinien bezieht, die auf eine oder mehrere Rechenressourcen anwendbar sind, die mit einem Benutzer des mehrinstanzenfähigen Anbieternetzwerks verknüpft sind,
        • Identifizieren eines Satzes von Prädikaten in der Formel basierend auf einer Art der Theorie, die mit der Formel verknüpft ist, wobei jedes Prädikat des Satzes von Prädikaten eine binärwertige Funktion mindestens einer Stringvariablen, die in der Formel enthalten ist, ist,
        • Partitionieren eines Suchraums, der mit der Formel verknüpft ist, in eine Vielzahl von Unterformeln, wobei jede Unterformel der Vielzahl von Unterformeln die Formel unter einer Annahme beinhaltet, dass ein jeweiliges Prädikat des Satzes von Prädikaten entweder wahr oder falsch ist,
        • Senden einer jeweiligen Unterformel der Vielzahl von Unterformeln an einen Erfüllbarkeits-Modulo-Theorien-Solver (SMT-Solver), der auf jeder einer Vielzahl von Rechenressourcen ausgeführt wird,
        • Empfangen einer Angabe von dem SMT-Solver, der auf einer Rechenressource der Vielzahl von Rechenressourcen ausgeführt wird, dass die jeweilige durch den SMT-Solver, der auf der Rechenressource ausgeführt wird, analysierte Unterformel erfüllbar ist, und
        • Übertragen einer Nachricht, die angibt, dass die Formel erfüllbar ist; und
      • eine oder mehrere zweite elektronische Vorrichtungen zum Implementieren des SMT-Solvers in dem mehrinstanzenfähigen Anbieternetzwerk, wobei der SMT-Solver Anweisungen beinhaltet, die bei Ausführung den SMT-Solver zu Folgendem veranlassen:
        • Empfangen der jeweiligen Unterformel der Vielzahl von Unterformeln, Bestimmen, ob die Unterformel erfüllbar ist, und Senden der Angabe, dass die jeweilige Unterformel erfüllbar ist.
    19. 19. System nach Absatz 18, wobei der Richtlinienanalysedienst ferner Anweisungen beinhaltet, die bei Ausführung den Richtlinienanalysedienst veranlassen, eine am häufigsten vorkommende Stringvariable in der Formel zu identifizieren, und wobei jedes Prädikat des Satzes von Prädikaten eine einzelne Instanz der Stringvariablen beinhaltet.
    20. 20. System nach einem der Absätze 18-19, wobei jede Rechenressource der Vielzahl von Rechenressourcen eines von Folgenden ist: eine Recheninstanz, die durch einen Hardware-Virtualisierungsdienst eines Cloud-Anbieternetzwerks bereitgestellt wird, ein Container, der durch einen Containerdienst des Cloud-Anbieternetzwerks bereitgestellt wird, oder eine bei Bedarf ausführbare Funktion, die durch einen bei Bedarf ausführbaren Funktionsdienst des Cloud-Anbieternetzwerks bereitgestellt wird.
  • Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden und nicht einschränkenden Sinne zu verstehen. Es ist j edoch ersichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom weiteren Geist und Umfang der Offenbarung, wie in den Patentansprüchen dargelegt, abzuweichen.

Claims (15)

  1. Computerimplementiertes Verfahren, das Folgendes umfasst: Empfangen einer Anfrage durch einen Koordinatorprozess, der auf ersten Rechenressourcen ausgeführt wird, um zu bestimmen, ob eine in Aussagenlogik ausgedrückte Formel erfüllbar ist; Identifizieren eines Satzes von Prädikaten in der Formel basierend auf einer Art der Theorie, die mit dem Satz von Prädikaten verknüpft ist, wobei jedes Prädikat des Satzes von Prädikaten eine binärwertige Funktion mindestens einer Theorievariablen, die in der Formel enthalten ist, ist; Partitionieren eines Suchraums, der mit der Formel verknüpft ist, in eine Vielzahl von Unterformeln, wobei jede Unterformel der Vielzahl von Unterformeln die Formel unter einer Annahme beinhaltet, dass ein jeweiliges Prädikat des Satzes von Prädikaten entweder wahr oder falsch ist; Senden einer jeweiligen Unterformel der Vielzahl von Unterformeln an einen Erfüllbarkeits-Modulo-Theorien-Solver (SMT-Solver), der auf jeder einer jeweiligen Vielzahl von zweiten Rechenressourcen ausgeführt wird; Empfangen einer Angabe von dem SMT-Solver, der auf einer Rechenressource der Vielzahl von Rechenressourcen ausgeführt wird, dass die Formel erfüllbar ist; und Übertragen einer Nachricht, die angibt, dass die Formel erfüllbar ist.
  2. Computerimplementiertes Verfahren nach Anspruch 1, wobei die Art der Theorie eine Theorie von Strings ist und die Theorievariable eine Stringvariable ist und wobei das Verfahren ferner Identifizieren einer am häufigsten vorkommenden Theorievariablen in der Formel umfasst und wobei jedes Prädikat des Satzes von Prädikaten eine Instanz der am häufigsten vorkommenden Theorievariablen beinhaltet.
  3. Computerimplementiertes Verfahren nach einem der Ansprüche 1-2, wobei jede Rechenressource der Vielzahl von Rechenressourcen ein unabhängig ausführbarer Thread einer Vielzahl von Threads ist und wobei die Vielzahl von Threads auf einer oder mehreren Rechenvorrichtungen ausgeführt wird.
  4. Computerimplementiertes Verfahren nach einem der Ansprüche 1-3, wobei die Art der Theorie mindestens eine von Folgenden ist: eine Theorie von Strings, eine Theorie von Ganzzahlen, eine Theorie reeller Arithmetik, eine Theorie von Bitvektoren, eine Theorie von Arrays oder eine Theorie von Listenstrukturen.
  5. Computerimplementiertes Verfahren nach einem der Ansprüche 1-4, wobei jede Rechenressource der Vielzahl von Rechenressourcen eines von Folgenden ist: eine Recheninstanz, die durch einen Hardware-Virtualisierungsdienst eines Cloud-Anbieternetzwerks bereitgestellt wird, ein Container, der durch einen Containerdienst des Cloud-Anbieternetzwerks bereitgestellt wird, oder eine bei Bedarf ausführbare Funktion, die durch einen bei Bedarf ausführbaren Codedienst des Cloud-Anbieternetzwerks bereitgestellt wird.
  6. Computerimplementiertes Verfahren nach einem der Ansprüche 1-5, wobei sich die Formel auf mindestens eines von Folgenden bezieht: eine Analyse von Richtlinien, die auf eine oder mehrere Rechenressourcen anwendbar sind, die mit einem Benutzer eines Cloud-Anbieternetzwerks verknüpft sind, eine Analyse der Korrektheit eines Computerprogramms oder eine Analyse der Korrektheit einer Computernetzwerkkonfiguration.
  7. Computerimplementiertes Verfahren nach einem der Ansprüche 1-6, wobei die Erfüllbarkeit der Formel bestimmt, ob eine Rechenressource, die mit einem Konto oder einer Organisation verknüpft ist, das bzw. die durch ein Cloud-Anbieternetzwerk definiert ist, für eine Entität außerhalb des Kontos oder der Organisation zugänglich ist, und wobei die Nachricht, die angibt, dass die Formel erfüllbar ist, angibt, dass die Rechenressource für eine Entität außerhalb des Kontos oder der Organisation zugänglich ist.
  8. Computerimplementierte Verfahren nach einem der Ansprüche 1-7, wobei die Anfrage eine Richtlinie identifiziert, die durch einen Identitäts- und Zugriffsverwaltungsdienst eines Cloud-Anbieternetzwerks verwaltet wird, und wobei das Verfahren ferner Generieren der Formel durch Codieren der Richtlinie in ein Logikformat erster Ordnung umfasst.
  9. Computerimplementiertes Verfahren nach einem der Ansprüche 1-8, wobei die Rechenressource der Vielzahl von Rechenressourcen eine erste Rechenressource ist und die Angabe eine erste Angabe ist und wobei die erste Angabe, dass die Formel erfüllbar ist, von dem SMT-Solver empfangen wird, der auf der ersten Rechenressource ausgeführt wird, bevor eine zweite Angabe von einer zweiten Rechenressource der Vielzahl von Rechenressourcen empfangen wird.
  10. Computerimplementiertes Verfahren nach einem der Ansprüche 1-9, das ferner Folgendes umfasst: Empfangen einer zweiten Anfrage, um zu bestimmen, ob eine zweite Formel, die in Logik erster Ordnung ausgedrückt ist, erfüllbar ist; Generieren eines zweiten Satzes von Prädikaten basierend auf der zweiten Formel; Partitionieren eines Suchraums, der mit der zweiten Formel verknüpft ist, in eine zweite Vielzahl von Unterformeln; Senden einer jeweiligen Unterformel der zweiten Vielzahl von Unterformeln an den SMT-Solver, der auf jeder der jeweiligen Vielzahl von zweiten Rechenressourcen ausgeführt wird; Empfangen einer Angabe von jedem SMT-Solver, der auf einer Rechenressource der Vielzahl von Rechenressourcen ausgeführt wird, dass die jeweilige Formel nicht erfüllbar ist; und Übertragen einer Nachricht, die angibt, dass die zweite Formel nicht erfüllbar ist.
  11. Computerimplementiertes Verfahren nach einem der Ansprüche 1-9, das ferner Folgendes umfasst: Empfangen einer zweiten Anfrage, um zu bestimmen, ob eine zweite Formel, die in Logik erster Ordnung ausgedrückt ist, erfüllbar ist; Generieren eines zweiten Satzes von Prädikaten basierend auf der zweiten Formel; Partitionieren eines Suchraums, der mit der zweiten Formel verknüpft ist, in eine zweite Vielzahl von Unterformeln; Senden einer jeweiligen Unterformel der zweiten Vielzahl von Unterformeln an den SMT-Solver, der auf jeder der jeweiligen Vielzahl von zweiten Rechenressourcen ausgeführt wird; Empfangen einer ersten Angabe, dass eine konkrete Unterformel der zweiten Vielzahl von Unterformeln unter einer Annahme, dass ihr jeweiliges Prädikat wahr ist, nicht erfüllbar ist, und einer zweiten Angabe, dass die konkrete Unterformel der zweiten Vielzahl von Unterformeln unter einer Annahme, dass ihr jeweiliges Prädikat falsch ist, nicht erfüllbar ist; und Übertragen einer Nachricht, die angibt, dass die zweite Formel nicht erfüllbar ist.
  12. Computerimplementiertes Verfahren nach einem der Ansprüche 1-11, das ferner Folgendes umfasst: Gruppieren des Satzes von Prädikaten in eine Vielzahl von Prädikatsgruppen basierend auf einer geschätzten rechnerischen Komplexität, die mit jedem Prädikat des Satzes von Prädikaten verknüpft ist, wobei der Suchraum basierend auf der Vielzahl von Prädikatsgruppen partitioniert wird.
  13. Computerimplementiertes Verfahren nach einem der Ansprüche 1-12, ferner umfassend Bewirken einer Anzeige einer grafischen Benutzeroberfläche (GUI), die Informationen beinhaltet, die angeben, dass die Formel erfüllbar ist, wobei die Informationen einen Wert für die mindestens eine Stringvariable angeben, der bewirkt, dass die Formel erfüllbar ist.
  14. System, das Folgendes umfasst: eine oder mehrere erste elektronische Vorrichtungen zum Implementieren eines Richtlinienanalysedienstes in einem mehrinstanzenfähigen Anbieternetzwerk, wobei der Richtlinienanalysedienst Anweisungen beinhaltet, die bei Ausführung den Richtlinienanalysedienst zu Folgendem veranlassen: Empfangen einer Anfrage, um zu bestimmen, ob eine Formel erfüllbar ist, wobei sich die Formel auf eine Analyse einer oder mehrerer Richtlinien bezieht, die auf eine oder mehrere Rechenressourcen anwendbar sind, die mit einem Benutzer des mehrinstanzenfähigen Anbieternetzwerks verknüpft sind, Identifizieren eines Satzes von Prädikaten in der Formel basierend auf einer Art der Theorie, die mit der Formel verknüpft ist, wobei jedes Prädikat des Satzes von Prädikaten eine binärwertige Funktion mindestens einer Stringvariablen, die in der Formel enthalten ist, ist, Partitionieren eines Suchraums, der mit der Formel verknüpft ist, in eine Vielzahl von Unterformeln, wobei jede Unterformel der Vielzahl von Unterformeln die Formel unter einer Annahme beinhaltet, dass ein jeweiliges Prädikat des Satzes von Prädikaten entweder wahr oder falsch ist, Senden einer jeweiligen Unterformel der Vielzahl von Unterformeln an einen Erfüllbarkeits-Modulo-Theorien-Solver (SMT-Solver), der auf jeder einer Vielzahl von Rechenressourcen ausgeführt wird, Empfangen einer Angabe von dem SMT-Solver, der auf einer Rechenressource der Vielzahl von Rechenressourcen ausgeführt wird, dass die jeweilige durch den SMT-Solver, der auf der Rechenressource ausgeführt wird, analysierte Unterformel erfüllbar ist, und Übertragen einer Nachricht, die angibt, dass die Formel erfüllbar ist; und eine oder mehrere zweite elektronische Vorrichtungen zum Implementieren des SMT-Solvers in dem mehrinstanzenfähigen Anbieternetzwerk, wobei der SMT-Solver Anweisungen beinhaltet, die bei Ausführung den SMT-Solver zu Folgendem veranlassen: Empfangen der jeweiligen Unterformel der Vielzahl von Unterformeln, Bestimmen, ob die Unterformel erfüllbar ist, und Senden der Angabe, dass die jeweilige Unterformel erfüllbar ist.
  15. System nach Anspruch 14, wobei der Richtlinienanalysedienst ferner Anweisungen beinhaltet, die bei Ausführung den Richtlinienanalysedienst veranlassen, eine am häufigsten vorkommende Stringvariable in der Formel zu identifizieren, und wobei jedes Prädikat des Satzes von Prädikaten eine einzelne Instanz der Stringvariablen beinhaltet.
DE112022001944.1T 2021-03-31 2022-03-30 Verteilte dekomposition von string-automatisierter schlussfolgerung unter verwendung von prädikaten Pending DE112022001944T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/218,541 2021-03-31
US17/218,541 US11861409B2 (en) 2021-03-31 2021-03-31 Distributed decomposition of string-automated reasoning using predicates
PCT/US2022/022646 WO2022212579A1 (en) 2021-03-31 2022-03-30 Distributed decomposition of string-automated reasoning using predicates

Publications (1)

Publication Number Publication Date
DE112022001944T5 true DE112022001944T5 (de) 2024-03-14

Family

ID=81580272

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022001944.1T Pending DE112022001944T5 (de) 2021-03-31 2022-03-30 Verteilte dekomposition von string-automatisierter schlussfolgerung unter verwendung von prädikaten

Country Status (5)

Country Link
US (1) US11861409B2 (de)
CN (1) CN116940931A (de)
DE (1) DE112022001944T5 (de)
GB (1) GB2618928A (de)
WO (1) WO2022212579A1 (de)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8005661B2 (en) * 2007-05-07 2011-08-23 Nec Laboratories America, Inc. Modeling and verification of concurrent systems using SMT-based BMC
US8897820B2 (en) * 2010-11-16 2014-11-25 Jack L. Marovets System, method, and apparatus for storing, transmitting, receiving, and using structured data using un-structured text message bodies
US11829420B2 (en) * 2019-12-19 2023-11-28 Oracle International Corporation Summarized logical forms for controlled question answering

Also Published As

Publication number Publication date
US11861409B2 (en) 2024-01-02
GB2618928A (en) 2023-11-22
CN116940931A (zh) 2023-10-24
WO2022212579A1 (en) 2022-10-06
GB202312513D0 (en) 2023-09-27
US20220318059A1 (en) 2022-10-06

Similar Documents

Publication Publication Date Title
DE112011101729B4 (de) Verwaltung von Ressourcenzugriff
DE112015004562B4 (de) Kontextbasiertes Cloud-System für die Zusicherung von Sicherheit
DE102012203561A1 (de) Die Personifikation/Bevollmächtigung eines Benutzers in einem Merkmal-basierenden Authentifizierungssystem
DE112019001481T5 (de) Selektives bereitstellen gegenseitiger transportschichtsicherheit mittels alternativer servernamen
DE102016222034A1 (de) Dynamische Kennworterzeugung
DE112012002741T5 (de) Identitäts- und Berechtigungsprüfungsverfahren für die Sicherheit einer Cloud-Datenverarbeitungsplattform
DE112018004411T5 (de) Zugriffssteuerung in mikrodienst-architekturen
DE102019131123A1 (de) Technologien zur transparenten function-as-a-service-arbitrierung für edge-systeme
DE112018004390B4 (de) Sichere zugriffsverwaltung für werkzeuge innerhalb einer sicheren umgebung
DE112012003977T5 (de) Eingriffsfreies Verfahren und Vorrichtung zum automatischen Zuteilen von Sicherheitsregelnin einer Cloud-Umgebung
DE112013002544T5 (de) Cloudbasiertes Teilen von Datenpunkten und Zusammenarbeit unter Benutzergruppen
DE202020005715U1 (de) Dynamische Maskierung geteilter Datenobjekte
DE112011103522T5 (de) Erstellung eines Multidimensionalen Modells von Software-Angeboten
DE112021002797T5 (de) Datenschutzerhaltende architektur für genehmigungspflichtige blockchains
DE112021002245T5 (de) Verhindern einer unberechtigten bereitstellung von paketen in clustern
DE112019001433T5 (de) Datenanonymisierung
DE112016000790B4 (de) Instanziierung von Broadcast-Verschlüsselungsschemata zur Laufzeit
DE112020002343T5 (de) Verteilung von Sicherheitsberechtigungsnachweisen
DE102021130396A1 (de) Datenzugriffsüberwachung und -steuerung
DE112021004945T5 (de) Techniken der kompositionellen verifikation für rollenerreichbarkeitsanalysen in identitätssystemen
DE112021000376T5 (de) Vertrauensaufbau durch eskalation
DE112021006372T5 (de) Sichere bereitstellung einer datenverarbeitungsressource unter verwendung einer homomorphen verschlüsselung
DE112021005636T5 (de) Migrieren von komplexen legacy-anwendungen
DE112021005862T5 (de) Selbstprüfende blockchain
DE202020005751U1 (de) Verwalten von Benutzeridentitäten in einem verwalteten Multi-Tenant-Dienst

Legal Events

Date Code Title Description
R012 Request for examination validly filed