Benutzerdefinierte IAM Datenzugriffs-Richtlinienerklärungen für Amazon Neptune - Amazon Neptune

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Benutzerdefinierte IAM Datenzugriffs-Richtlinienerklärungen für Amazon Neptune

Neptune-Datenzugriff-Richtlinienanweisungen verwenden Datenzugriffsaktionen, Ressourcen und Bedingungsschlüssel, denen jeweils das Präfix neptune-db: vorangestellt ist.

Verwenden von Abfrageaktionen in Neptune-Datenzugriff-Richtlinienanweisungen

Es gibt drei Neptune-Abfrageaktionen, die in Datenzugriff-Richtlinienanweisungen verwendet werden können, ReadDataViaQuery, WriteDataViaQuery und DeleteDataViaQuery. Eine bestimmte Abfrage benötigt möglicherweise Berechtigungen, um mehr als eine dieser Aktionen auszuführen, und es möglicherweise nicht immer offensichtlich, welche Kombination dieser Aktionen zulässig sein muss, um eine Abfrage auszuführen.

Neptune ermittelt vor der Ausführung einer Abfrage die Berechtigungen, die für die Ausführung der einzelnen Schritte der Abfrage erforderlich sind, und kombiniert diese zu einem vollständigen Satz der Berechtigungen, die für die Abfrage erforderlich sind. Beachten Sie, dass dieser vollständige Satz von Berechtigungen alle Aktionen enthält, die die Abfrage möglicherweise ausführt. Dabei handelt es sich nicht notwendigerweise um den Satz von Aktionen, den die Abfrage tatsächlich für Ihre Daten ausführt.

Das bedeutet, dass Sie Berechtigungen für alle Aktionen bereitstellen müssen, die die Abfrage möglicherweise ausführt, um die Ausführung einer bestimmten Abfrage zu ermöglichen, unabhängig davon, ob die Abfrage diese Aktionen tatsächlich ausführt oder nicht.

Dies sind einige Beispiele für Gremlin-Abfragen, die dies im Detail zeigen:

  • g.V().count()

    g.V() und count() benötigen lediglich Lesezugriff, sodass die Abfrage insgesamt lediglich einen ReadDataViaQuery-Zugriff benötigt.

  • g.addV()

    addV() muss überprüfen, ob ein Eckpunkt mit einer bestimmten ID vorhanden ist oder nicht, bevor ein neuer Eckpunkt eingefügt wird. Das bedeutet, dass die Abfrage einen ReadDataViaQuery- und einen WriteDataViaQuery-Zugriff benötigt.

  • g.V('1').as('a').out('created').addE('createdBy').to('a')

    g.V('1').as('a') und out('created') benötigen lediglich Lesezugriff. addE().from('a') benötigt jedoch sowohl Lese- als auch Schreibzugriff, da addE() die Eckpunkte to und from lesen muss und prüfen muss, ob bereits eine Kante mit derselben ID vorhanden ist, bevor eine neue Kante hinzugefügt wird. Die Abfrage benötigt daher insgesamt einen ReadDataViaQuery- und einen WriteDataViaQuery-Zugriff.

  • g.V().drop()

    g.V() benötigt lediglich Lesezugriff. drop() benötigt einen Lese- und Löschzugriff, da Eckpunkte oder Kanten vor dem Löschen gelesen werden müssen. Daher benötigt die Abfrage insgesamt einen ReadDataViaQuery- und einen DeleteDataViaQuery-Zugriff.

  • g.V('1').property(single, 'key1', 'value1')

    g.V('1') benötigt lediglich Lesezugriff. property(single, 'key1', 'value1') benötigt jedoch einen Lese-, Schreib- und Löschzugriff. Hier werden im Schritt property() Schlüssel und Wert eingefügt, falls noch nicht im Eckpunkt vorhanden. Falls jedoch bereits vorhanden, wird der vorhandene Eigenschaftswert gelöscht und es wird ein neuer Wert eingefügt. Daher benötigt die Abfrage insgesamt einen ReadDataViaQuery-, WriteDataViaQuery- und DeleteDataViaQuery-Zugriff.

    Jede Abfrage, die den Schritt property() enthält, benötigt ReadDataViaQuery-, WriteDataViaQuery- und DeleteDataViaQuery-Berechtigungen.

Hier sind einige Beispiele: openCypher

  • MATCH (n) RETURN n

    Diese Abfrage liest alle Knoten in der Datenbank und gibt sie zurück. Hierfür wird lediglich ein ReadDataViaQuery-Zugriff benötigt.

  • MATCH (n:Person) SET n.dept = 'AWS'

    Diese Abfrage benötigt einen ReadDataViaQuery-, WriteDataViaQuery- und DeleteDataViaQuery-Zugriff. Sie liest alle Knoten mit der Bezeichnung 'Person' und fügt ihnen entweder eine neue Eigenschaft mit dem Schlüssel dept und dem Wert AWS hinzu oder (wenn die Eigenschaft dept bereits vorhanden ist) löscht den alten Wert und fügt stattdessen AWS ein. Wenn der festzulegende Wert null ist, löscht SET die Eigenschaft vollständig.

    Da die SET-Klausel in einigen Fällen möglicherweise einen vorhandenen Wert löschen muss, benötigt sie stets DeleteDataViaQuery-, ReadDataViaQuery- und WriteDataViaQuery-Berechtigungen.

  • MATCH (n:Person) DETACH DELETE n

    Diese Abfrage benötigt ReadDataViaQuery- und DeleteDataViaQuery-Berechtigungen. Sie sucht alle Knoten mit der Bezeichnung Person und löscht sie zusammen mit den Kanten, die mit diesen Knoten verbunden sind, und allen zugehörigen Bezeichnungen und Eigenschaften.

  • MERGE (n:Person {name: 'John'})-[:knows]->(:Person {name: 'Peter'}) RETURN n

    Diese Abfrage benötigt ReadDataViaQuery- und WriteDataViaQuery-Berechtigungen. Die MERGE-Klausel stimmt entweder mit einem angegebenen Muster überein oder erstellt es. Da ein Schreibvorgang erfolgen kann, wenn das Muster nicht übereinstimmt, sind Schreib- und Leseberechtigungen erforderlich.