기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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
절은 지정된 패턴과 일치하거나 패턴을 생성합니다. 패턴이 일치하지 않으면 쓰기가 발생할 수 있으므로, 읽기 권한뿐만 아니라 쓰기 권한도 필요합니다.