As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Criação de declarações de política personalizadas do IAM para acessar dados no Amazon Neptune
As declarações de política de acesso a dados do Neptune usam ações de acesso a dados, recursos e chaves de condição, todos precedidos por um prefixo neptune-db:.
Tópicos
Usar ações de consulta nas declarações de política de acesso a dados do Neptune
Há três ações de consulta do Neptune que podem ser usadas em declarações de política de acesso a dados, a saber, ReadDataViaQuery, WriteDataViaQuery e DeleteDataViaQuery. Uma consulta específica pode precisar de permissões para realizar mais de uma dessas ações e nem sempre é óbvio qual combinação dessas ações deve ser permitida para executar uma consulta.
Antes de executar uma consulta, o Neptune determina as permissões necessárias para executar cada etapa da consulta e as combina no conjunto completo de permissões que a consulta exige. Observe que esse conjunto completo de permissões inclui todas as ações que a consulta pode realizar, o que não é necessariamente o conjunto de ações que a consulta realmente executará quando for realizada em seus dados.
Isso significa que, para permitir que uma consulta específica seja executada, é necessário conceder permissões para cada ação que a consulta possa realizar, independentemente de ela realmente as executar ou não.
Veja alguns exemplos de consulta do Gremlin em que isso é explicado com mais detalhes:
-
g.V().count()g.V()ecount()exigem apenas acesso de leitura, portanto, a consulta como um todo exige apenas acessoReadDataViaQuery. -
g.addV()addV()precisa conferir se um vértice com um ID específico existe ou não antes de inserir um novo. Isso significa que ele exige acessoReadDataViaQueryeWriteDataViaQuery. -
g.V('1').as('a').out('created').addE('createdBy').to('a')g.V('1').as('a')eout('created')exigem apenas acesso de leitura, masaddE().from('a')requer acesso de leitura e gravação porqueaddE()precisa ler os vérticesfrometoe conferir se uma borda com o mesmo ID já existe antes de adicionar uma nova. A consulta como um todo, portanto, precisa de acessoReadDataViaQueryeWriteDataViaQuery. -
g.V().drop()g.V()exige apenas acesso de leitura.drop()requer acesso de leitura e exclusão porque precisa ler um vértice ou uma borda antes de excluí-lo, portanto, a consulta como um todo exige acessoReadDataViaQueryeDeleteDataViaQuery. -
g.V('1').property(single, 'key1', 'value1')g.V('1')requer apenas acesso de leitura, masproperty(single, 'key1', 'value1')exige acesso de leitura, gravação e exclusão. Aqui, a etapaproperty()vai inserir a chave e o valor se eles ainda não existirem no vértice, mas se já existirem, ela vai excluir o valor da propriedade existente e inserir um novo valor em seu lugar. Portanto, a consulta como um todo exige acessoReadDataViaQuery,WriteDataViaQueryeDeleteDataViaQuery.Qualquer consulta que contenha uma etapa
property()precisará de permissõesReadDataViaQuery,WriteDataViaQueryeDeleteDataViaQuery.
Veja a seguir alguns exemplos do openCypher:
-
MATCH (n) RETURN nEssa consulta lê todos os nós no banco de dados e os gera, o que exige apenas acesso
ReadDataViaQuery. -
MATCH (n:Person) SET n.dept = 'AWS'Essa consulta exige acesso
ReadDataViaQuery,WriteDataViaQueryeDeleteDataViaQuery. Ela lê todos os nós com o rótulo “Pessoa” e adiciona uma nova propriedade com a chavedepte o valorAWSa eles ou, se a propriedadedeptjá existir, vai excluir o valor antigo e inserirAWSem seu lugar. Além disso, se o valor a ser definido fornull,SETexcluirá completamente a propriedade.Como, em alguns casos, a cláusula
SETtalvez precise excluir um valor existente, ela sempre precisará de permissõesDeleteDataViaQuery, além de permissõesReadDataViaQueryeWriteDataViaQuery. -
MATCH (n:Person) DETACH DELETE nEssa consulta precisa das permissões
ReadDataViaQueryeDeleteDataViaQuery. Ela encontra todos os nós com o rótuloPersone os exclui junto com as bordas conectadas a esses nós e todas as propriedades e os rótulos associados. -
MERGE (n:Person {name: 'John'})-[:knows]->(:Person {name: 'Peter'}) RETURN nEssa consulta precisa das permissões
ReadDataViaQueryeWriteDataViaQuery. A cláusulaMERGEcorresponde a um padrão especificado ou o cria. Como uma gravação poderá ocorrer se não houver correspondência ao padrão, são necessárias permissões de gravação e leitura.