기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Neptune의 데이터에 액세스하기 위한 사용자 지정 IAM 정책 설명 생성
Neptune 데이터 액세스 정책 명령문은 데이터 액세스 작업, 리소스 및 조건 키를 사용하며, 모두 앞에 neptune-db: 접두사가 붙습니다.
주제
Neptune 데이터 액세스 정책문에서 쿼리 작업 사용
데이터 액세스 정책문에 사용할 수 있는 3가지 Neptune 쿼리 작업(ReadDataViaQuery, WriteDataViaQuery, DeleteDataViaQuery)이 있습니다. 특정 쿼리에는 이러한 작업을 2개 이상 수행할 수 있는 권한이 필요할 수 있으며, 쿼리를 실행하기 위해 이러한 작업의 조합을 허용해야 하는지 명확하지 않을 수 있습니다.
Neptune은 쿼리를 실행하기 전에 쿼리의 각 단계를 실행하는 데 필요한 권한을 결정하고, 이를 쿼리에 필요한 전체 권한 세트로 결합합니다. 이 전체 권한 세트에는 쿼리가 수행할 수 있는 모든 작업이 포함된다는 점에 유의하세요. 이는 데이터를 대상으로 실행될 때 쿼리가 실제로 수행하는 작업 세트일 필요는 없습니다.
즉, 특정 쿼리를 실행하도록 허용하려면 실제로 수행하는지 여부에 관계없이 쿼리가 수행할 수 있는 모든 작업에 대한 권한을 제공해야 합니다.
다음은 이에 대해 더 자세히 설명하는 몇 가지 Gremlin 쿼리 샘플입니다.
-
g.V().count()g.V()및count()는 읽기 액세스 권한만 필요하므로, 전체 쿼리에는ReadDataViaQuery액세스만 필요합니다. -
g.addV()addV()는 새 버텍스를 삽입하기 전에 주어진 ID를 가진 버텍스가 존재하는지 여부를 확인해야 합니다. 즉,ReadDataViaQuery및WriteDataViaQuery액세스가 둘 다 필요합니다. -
g.V('1').as('a').out('created').addE('createdBy').to('a')g.V('1').as('a')및out('created')은 읽기 액세스 권한만 필요하지만,addE().from('a')은 읽기 액세스 권한과 쓰기 액세스 권한이 모두 필요합니다.addE()는 새로 추가하기 전에from및to버텍스를 읽고 ID가 같은 엣지가 이미 존재하는지 확인해야 하기 때문입니다. 따라서 전체 쿼리에는ReadDataViaQuery및WriteDataViaQuery액세스가 모두 필요합니다. -
g.V().drop()g.V()는 읽기 액세스 권한만 필요합니다.drop()은 버텍스나 엣지를 삭제하기 전에 읽어야 하므로, 읽기 액세스 권한과 삭제 액세스 권한이 모두 필요합니다. 따라서 전체 쿼리에는ReadDataViaQuery및DeleteDataViaQuery액세스가 모두 필요합니다. -
g.V('1').property(single, 'key1', 'value1')g.V('1')는 읽기 액세스 권한만 필요하지만,property(single, 'key1', 'value1')는 읽기, 쓰기, 삭제 액세스 권한이 필요합니다. 이property()단계에서는 버텍스에 키와 값이 아직 없으면 해당 키와 값을 삽입하지만, 이미 존재하는 경우 기존 속성값을 삭제하고 그 자리에 새 값을 삽입합니다. 따라서 전체 쿼리에는ReadDataViaQuery,WriteDataViaQuery,DeleteDataViaQuery액세스 권한이 필요합니다.property()단계가 포함된 모든 쿼리에는ReadDataViaQuery,WriteDataViaQuery,DeleteDataViaQuery권한이 필요합니다.
다음은 몇 가지 openCypher 예입니다.
-
MATCH (n) RETURN n이 쿼리는 데이터베이스의 모든 노드를 읽고 반환하며,
ReadDataViaQuery액세스만 필요합니다. -
MATCH (n:Person) SET n.dept = 'AWS'이 쿼리에는
ReadDataViaQuery,WriteDataViaQuery,DeleteDataViaQuery액세스가 필요합니다. 레이블이 'Person'인 모든 노드를 읽고 키dept와 값AWS가 포함된 새 속성을 추가하거나,dept속성이 이미 있는 경우 이전 값을 삭제하고 대신AWS를 삽입합니다. 또한 설정할 값이null인 경우SET는 속성을 모두 삭제합니다.SET절에서 기존 값을 삭제해야 하는 경우도 있기 때문에 항상DeleteDataViaQuery권한과ReadDataViaQuery및WriteDataViaQuery권한이 필요합니다. -
MATCH (n:Person) DETACH DELETE n이 쿼리는
ReadDataViaQuery및DeleteDataViaQuery권한을 필요로 합니다.Person레이블이 있는 모든 노드를 찾아 해당 노드에 연결된 엣지와 관련 레이블 및 속성과 함께 삭제합니다. -
MERGE (n:Person {name: 'John'})-[:knows]->(:Person {name: 'Peter'}) RETURN n이 쿼리는
ReadDataViaQuery및WriteDataViaQuery권한을 필요로 합니다.MERGE절은 지정된 패턴과 일치하거나 패턴을 생성합니다. 패턴이 일치하지 않으면 쓰기가 발생할 수 있으므로, 읽기 권한뿐만 아니라 쓰기 권한도 필요합니다.