Cloud SQL のパラメータ化されたセキュアビュー

Cloud SQL for PostgreSQL のパラメータ化されたセキュアビューは、SQL をサポートしながら、アプリケーションにデータ セキュリティと行アクセス制御を提供します。 これらのビューは、データ値の抽出(列から 特定のデータ部分を取得するプロセス)をサポートし、 プロンプトインジェクション攻撃に対する保護に役立ちます。 パラメータ化されたセキュアなビューを使用すると、エンドユーザーがアクセスする必要があるデータのみを表示できます。

パラメータ化されたビューは PostgreSQL ビューの拡張機能であり、ビュー定義でアプリケーション固有の名前付きビュー パラメータを使用できます。この機能は、クエリと名前付きパラメータの値を受け取るインターフェースを提供します。ビューは、その値を使用してクエリを実行します。この値は、クエリの実行全体で使用されます。

パラメータ化されたセキュアビューの例を次に示します。

CREATE VIEW user_specific_items WITH (security_barrier) AS
       SELECT item_id, item_name, description
       FROM items t
       WHERE owner_id = $@app_user_id;

ビューに対してクエリを実行するには、execute_parameterized_query 関数を使用するか、EXECUTE .. WITH VIEW PARAMETERS ステートメントを実行します。

ユースケース

パラメータ化されたセキュアビューは、自然言語クエリから変換されたクエリなど、信頼できないソースからのアドホック クエリに対するデータベース レベルでのデータ セキュリティを提供します。たとえば、パラメータ化されたセキュアビューを使用して、ユーザーが「注文を表示」などの自然言語でクエリを発行できるアプリケーションのデータ セキュリティを提供できます。

パラメータ化されたセキュアなビューを使用すると、Cloud SQL for PostgreSQL がこのクエリを実行する方法に次の要件を適用できます。

  • このクエリは、データベースのパラメータ化されたセキュアなビューにリストされているデータベース オブジェクトと列のみを読み取ります。
  • このクエリは、クエリを送信したユーザーに関連付けられているデータベース行のみを読み取ります。返された行は、ユーザーのテーブル行とデータ関係があります。

セキュリティとアクセス制御の構成の詳細については、 パラメータ化されたセキュアなビューを使用してアプリケーション データ セキュリティを管理するをご覧ください。

パラメータ化されたセキュアなビューは、エンドユーザーがデータベース テーブルで信頼できないクエリ(自然言語クエリなど)を実行できるようにした場合に発生するセキュリティ リスクの軽減に役立ちます。セキュリティ上のリスクには、次のものがあります。

  • ユーザーはプロンプト インジェクション攻撃を送信し、基盤となるモデルを操作して、アプリケーションがアクセスできるすべてのデータを公開しようとする可能性があります。
  • 自然言語から SQL(NL2SQL)モデルは、データ セキュリティ上の理由から適切なものよりも範囲の広い SQL クエリを生成する場合があります。このセキュリティ リスクにより、善意のユーザークエリに対してもセンシティブ データを返す可能性があります。

パラメータ化されたセキュアなビューを使用すると、信頼できないクエリがデータを取得できるテーブルと列を定義できます。これらのビューを使用すると、個々のアプリケーション ユーザーが使用できる行の範囲を制限できます。また、これらの制限により、ユーザーがクエリのフレーズに関係なく、アプリケーション ユーザーが自然言語クエリで表示できるデータを厳密に制御できます。

データ セキュリティ

パラメータ化されたセキュアなビューを使用すると、アプリケーション デベロッパーは次の方法でデータ セキュリティと行アクセス制御を制御できます。

  • WITH (security barrier) 句を使用して作成されたビューは、ビューが処理を完了するまで、悪意を持って選択された 関数と演算子に行から値が渡されないようにすることで、行レベルのセキュリティを提供します。WITH (security barrier) 句の詳細については、ルールと権限をご覧ください。
  • 名前付きビュー パラメータを使用すると、値でパラメータ化されたデータベースの制限付きビューを表示できます。値は、エンドユーザー認証などのアプリケーション レベルのセキュリティに基づいて、アプリケーションから提供されます。
  • パラメータ化されたビューにアクセスするクエリに対する追加の制限の適用。これにより、指定されたパラメータ値に基づいてビュー内のチェックをエスケープする攻撃を防ぐことができます。詳細については、クエリに対する適用される制限をご覧ください。

制限事項

  • パラメータ化されたセキュアビューを使用するには、Cloud SQL インスタンスの cloudsql.enable_parameterized_views データベース フラグを有効にする必要があります。これにはデータベースの再起動が必要です。

  • parameterized_views 拡張機能は、パラメータ化されたセキュアビューを作成するデータベースごとに作成する必要があります。

  • パラメータ化されたセキュアなビューで使用される API を使用して 呼び出されるユーザー定義関数でパラメータ化されたビューが参照されると、 エラーが発生します。親クエリでパラメータ化されたビューを直接参照する必要があります。

次のステップ