翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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句は、指定されたパターンと一致するか、それを作成します。パターンが一致しないと書き込みが発生する可能性があるため、読み取りアクセス許可だけでなく書き込みアクセス許可も必要です。