翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Neptune のデータにアクセスするためのカスタム IAM ポリシーステートメントの作成
Neptune データアクセスポリシーステートメントは、データアクセスアクション、リソース、および条件キーを使用し、これらはすべて neptune-db:
プレフィックスが付きます。
トピック
Neptune データアクセスポリシーステートメントでのクエリアクションの使用
データアクセスポリシーステートメントで使用できる Neptune クエリアクションには、ReadDataViaQuery
、WriteDataViaQuery
、DeleteDataViaQuery
の 3 つがあります。特定のクエリには、これらのアクションを複数実行するためのアクセス許可が必要な場合があり、クエリを実行するためにこれらのアクションのどの組み合わせを許可する必要があるかが常に明確であるとは限りません。
クエリを実行する前に、Neptune はクエリの各ステップを実行するのに必要なアクセス許可を決定し、それらを組み合わせてクエリに必要なアクセス許可のフルセットにします。このフルセットのアクセス許可には、クエリが実行する可能性のあるすべてのアクションが含まれますが、必ずしもクエリがデータに対して実際に実行するアクションのセットではないことに注意してください。
つまり、特定のクエリの実行を許可するには、そのクエリが実際に実行するかどうかにかかわらず、そのクエリが実行する可能性のあるすべてのアクションにアクセス許可を与える必要があります。
以下に、Gremlin クエリの例をいくつか示します。これについてさらに詳しく説明しています。
-
g.V().count()
g.V()
およびcount()
は読み取りアクセスだけを必要とするため、クエリ全体として必要なのはReadDataViaQuery
アクセスのみです。 -
g.addV()
addV()
は、新しい ID の頂点を挿入する前に、特定の 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 のエッジを追加する前に、同じ 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
の付いたノードをすべrて検索し、それらのノードに接続されているエッジや関連するラベルやプロパティとともに削除します。 -
MERGE (n:Person {name: 'John'})-[:knows]->(:Person {name: 'Peter'}) RETURN n
このクエリには
ReadDataViaQuery
およびWriteDataViaQuery
アクセス許可が必要です。MERGE
句は、指定されたパターンと一致するか、それを作成します。パターンが一致しないと書き込みが発生する可能性があるため、読み取りアクセス許可だけでなく書き込みアクセス許可も必要です。