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 を使用して 呼び出されるユーザー定義関数でパラメータ化されたビューが参照されると、 エラーが発生します。親クエリでパラメータ化されたビューを直接参照する必要があります。