Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Creazione di IAM policy personalizzate per accedere ai dati in Amazon Neptune
Le dichiarazioni di policy di accesso ai dati di Neptune utilizzano azioni di accesso ai dati, risorse e chiavi di condizione, tutte precedute dal prefisso neptune-db:
.
Argomenti
- Utilizzo delle azioni di query nelle dichiarazioni di policy di accesso ai dati di Neptune
- IAMazioni per l'accesso ai dati in Amazon Neptune
- IAMtipi di risorse per l'accesso ai dati in Amazon Neptune
- IAMchiavi di condizione per l'accesso ai dati in Amazon Neptune
- Creazione di politiche di IAM accesso ai dati in Amazon Neptune
Utilizzo delle azioni di query nelle dichiarazioni di policy di accesso ai dati di Neptune
Esistono tre azioni di query di Neptune che possono essere utilizzate nelle dichiarazioni di policy di accesso ai dati, vale a dire ReadDataViaQuery
, WriteDataViaQuery
e DeleteDataViaQuery
. Una particolare query può richiedere le autorizzazioni per eseguire più di una di queste azioni e potrebbe non essere sempre ovvio quale combinazione di queste azioni debba essere consentita per eseguire una query.
Prima di eseguire una query, Neptune determina le autorizzazioni necessarie per eseguire ogni passaggio della query e le combina nel set completo di autorizzazioni richieste dalla query. Nota che questo set completo di autorizzazioni include tutte le azioni che la query potrebbe eseguire, il che non è necessariamente il set di azioni che la query effettivamente eseguirà quando verrà eseguita sui dati.
Ciò significa che per consentire l'esecuzione di una determinata query, è necessario fornire le autorizzazioni per ogni azione che la query potrebbe eseguire, indipendentemente dal fatto che le esegua effettivamente o meno.
Ecco alcuni esempi di query Gremlin in cui ciò viene spiegato più dettagliatamente:
-
g.V().count()
g.V()
ecount()
richiedono solo l'accesso in lettura, quindi la query nel suo complesso richiede solo l'accessoReadDataViaQuery
. -
g.addV()
addV()
deve verificare se esiste o meno un vertice con un determinato ID prima di inserirne uno nuovo. Ciò significa che richiede sia l'accessoReadDataViaQuery
cheWriteDataViaQuery
. -
g.V('1').as('a').out('created').addE('createdBy').to('a')
g.V('1').as('a')
eout('created')
richiedono solo l'accesso in lettura, maaddE().from('a')
richiede sia l'accesso in lettura che in scrittura perchéaddE()
deve leggere i verticifrom
eto
e verificare se esiste già un arco con lo stesso ID prima di aggiungerne uno nuovo. La query nel suo complesso necessita quindi sia dell'accessoReadDataViaQuery
cheWriteDataViaQuery
. -
g.V().drop()
g.V()
richiede solo l'accesso in lettura.drop()
necessita sia dell'accesso in lettura che di quello di eliminazione perché deve leggere un vertice o uno arco prima di eliminarlo, quindi la query nel suo complesso richiede sia l'accessoReadDataViaQuery
cheDeleteDataViaQuery
. -
g.V('1').property(single, 'key1', 'value1')
g.V('1')
richiede solo l'accesso in lettura, maproperty(single, 'key1', 'value1')
richiede l'accesso in lettura, scrittura ed eliminazione. In questo caso, il passaggioproperty()
inserisce la chiave e il valore se non esistono già nel vertice, ma se esistono già, elimina il valore della proprietà esistente e inserisce un nuovo valore al suo posto. Pertanto, la query nel suo complesso richiede l'accessoReadDataViaQuery
,WriteDataViaQuery
eDeleteDataViaQuery
.Qualsiasi query che contenga un passaggio
property()
avrà bisogno delle autorizzazioniReadDataViaQuery
,WriteDataViaQuery
eDeleteDataViaQuery
.
Ecco alcuni esempi: openCypher
-
MATCH (n) RETURN n
Questa query legge tutti i nodi del database e li restituisce, il che richiede solo l'accesso
ReadDataViaQuery
. -
MATCH (n:Person) SET n.dept = 'AWS'
Questa query richiede l'accesso
ReadDataViaQuery
,WriteDataViaQuery
eDeleteDataViaQuery
. Legge tutti i nodi con l'etichetta 'Person' e vi aggiunge una nuova proprietà con la chiavedept
e il valoreAWS
oppure, se la proprietàdept
esiste già, elimina il vecchio valore e inserisceAWS
al suo posto. Inoltre, se il valore da impostare ènull
,SET
elimina completamente la proprietà.Poiché in alcuni casi può essere necessario eliminare un valore esistente, la clausola
SET
necessita sempre delle autorizzazioniDeleteDataViaQuery
nonché delle autorizzazioniReadDataViaQuery
eWriteDataViaQuery
. -
MATCH (n:Person) DETACH DELETE n
Questa query richiede le autorizzazioni
ReadDataViaQuery
eDeleteDataViaQuery
. Trova tutti i nodi con l'etichettaPerson
e li elimina insieme agli archi collegati a tali nodi e alle etichette e proprietà associate. -
MERGE (n:Person {name: 'John'})-[:knows]->(:Person {name: 'Peter'}) RETURN n
Questa query richiede le autorizzazioni
ReadDataViaQuery
eWriteDataViaQuery
. La clausolaMERGE
cerca la corrispondenza con un modello specificato o lo crea. Poiché può verificarsi un'operazione di scrittura se non viene trovata una corrispondenza con il modello, sono necessarie le autorizzazioni di scrittura oltre a quelle di lettura.