Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Creación de declaraciones de política de IAM personalizadas para acceder a los datos de Amazon Neptune
Las declaraciones de políticas de acceso a los datos de Neptune utilizan acciones de acceso a los datos, recursos y claves de condición de acceso a los datos, todos ellos precedidas por un prefijo neptune-db:
.
Temas
Uso de acciones de consulta en las declaraciones de políticas de acceso a datos de Neptune
Acciones de IAM para el acceso a los datos en Amazon Neptune
Tipos de recursos de IAM para acceder a los datos en Amazon Neptune
Claves de condición de IAM para acceder a los datos en Amazon Neptune
Creación de políticas de acceso a datos de IAM en Amazon Neptune
Uso de acciones de consulta en las declaraciones de políticas de acceso a datos de Neptune
Hay tres acciones de consulta de Neptune que se pueden utilizar en las declaraciones de políticas de acceso a los datos: ReadDataViaQuery
, WriteDataViaQuery
y DeleteDataViaQuery
. Es posible que una consulta en particular necesite permisos para realizar varias de estas acciones, y puede que no siempre sea evidente qué combinación de estas acciones debe permitirse para ejecutar una consulta.
Antes de ejecutar una consulta, Neptune determina los permisos necesarios para ejecutar cada paso de la consulta y los combina en el conjunto completo de permisos que requiere la consulta. Tenga en cuenta que este conjunto completo de permisos incluye todas las acciones que puede realizar la consulta, que no es necesariamente el conjunto de acciones que la consulta realizará realmente cuando se ejecute en sus datos.
Esto significa que, para permitir que se ejecute una consulta determinada, debe proporcionar permisos para todas las acciones que la consulta pueda realizar, tanto si las acaba realizando como si no.
Estos son algunos ejemplos de consultas de Gremlin en las que esto se explica con más detalle:
-
g.V().count()
g.V()
ycount()
solo requieren acceso de lectura, por lo que la consulta en su conjunto solo requiere accesoReadDataViaQuery
. -
g.addV()
addV()
necesita comprobar si existe o no un vértice con un identificador determinado antes de insertar uno nuevo. Esto significa que requiere tanto accesoReadDataViaQuery
comoWriteDataViaQuery
. -
g.V('1').as('a').out('created').addE('createdBy').to('a')
g.V('1').as('a')
yout('created')
solo requieren acceso de lectura, peroaddE().from('a')
requiere acceso de lectura y escritura, ya queaddE()
necesita leer los vérticesfrom
yto
y comprobar si ya existe un borde con el mismo identificador antes de añadir uno nuevo. Por lo tanto, la consulta en su conjunto necesita tanto el accesoReadDataViaQuery
comoWriteDataViaQuery
. -
g.V().drop()
g.V()
solo requiere acceso de lectura.drop()
necesita acceso de lectura y eliminación porque tiene que leer un vértice o borde antes de eliminarlo, por lo que la consulta en su conjunto requiere tanto accesoReadDataViaQuery
comoDeleteDataViaQuery
. -
g.V('1').property(single, 'key1', 'value1')
g.V('1')
solo requiere acceso de lectura, peroproperty(single, 'key1', 'value1')
requiere acceso de lectura, escritura y eliminación. En este caso, en el pasoproperty()
, se inserta la clave y el valor si aún no existen en el vértice, pero si ya existen, se elimina el valor de la propiedad existente y se inserta un nuevo valor en su lugar. Por lo tanto, la consulta en su conjunto requiere accesoReadDataViaQuery
,WriteDataViaQuery
yDeleteDataViaQuery
.Cualquier consulta que contenga un paso
property()
necesitará permisosReadDataViaQuery
,WriteDataViaQuery
yDeleteDataViaQuery
.
Estos son algunos ejemplos de openCypher:
-
MATCH (n) RETURN n
Esta consulta lee todos los nodos de la base de datos y los devuelve, lo que solo requiere acceso
ReadDataViaQuery
. -
MATCH (n:Person) SET n.dept = 'AWS'
Esta consulta requiere acceso
ReadDataViaQuery
,WriteDataViaQuery
yDeleteDataViaQuery
. Lee todos los nodos con la etiqueta 'Person' y añade una nueva propiedad con la clavedept
y el valorAWS
o, si la propiedaddept
ya existe, elimina el valor anterior e insertaAWS
en su lugar. Además, si el valor que se va a establecer esnull
,SET
elimina la propiedad por completo.Como en algunos casos es posible que la cláusula
SET
necesite eliminar un valor existente, siempre necesitará permisosDeleteDataViaQuery
y permisosReadDataViaQuery
yWriteDataViaQuery
. -
MATCH (n:Person) DETACH DELETE n
Esta consulta necesita permisos
ReadDataViaQuery
yDeleteDataViaQuery
. Busca todos los nodos con la etiquetaPerson
y los elimina junto con los bordes conectados a esos nodos y las etiquetas y propiedades asociadas. -
MERGE (n:Person {name: 'John'})-[:knows]->(:Person {name: 'Peter'}) RETURN n
Esta consulta necesita permisos
ReadDataViaQuery
yWriteDataViaQuery
. La cláusulaMERGE
coincide con un patrón específico o lo crea. Dado que puede producirse una escritura si el patrón no coincide, se necesitan permisos de escritura además de permisos de lectura.