DML オペレーションのマスキング動作について - Amazon Aurora

DML オペレーションのマスキング動作について

pg_columnmask は、INSERT、UPDATE、DELETE、MERGE ステートメントを含むすべての DML オペレーションに一貫して適用されます。これらのオペレーションを実行すると、Aurora PostgreSQL はコア原則に従ってデータをマスクします。ストレージから読み取られたデータは、現在のユーザーの適用可能なポリシーに従ってマスクされます。

マスキングは、次のようなクエリコンポーネントの一部に影響します。

  • WHERE 句

  • JOIN 条件

  • サブクエリ

  • RETURNING 句

これらのコンポーネントはすべて、元のデータではなくマスクされた値で動作します。データはマスクされていない状態でストレージに書き込まれますが、ユーザーが読み返すときにはマスクされたビューのみが表示されます。

Aurora PostgreSQL は、マスクされた値ではなく、実際の保存値に対してすべてのデータベース制約 (NOT NULL、UNIQUE、CHECK、FOREIGN KEY) を適用します。これにより、マスキング関数が慎重に設計されていない場合に、明らかな不整合が生じることがあります。

マスキングは列レベルのアクセス許可とともに機能します。

  • SELECT 権限のないユーザーは列を読み取ることができません

  • SELECT 権限を持つユーザーは、該当するポリシーに従ってマスクされた値を表示します。