ビューの権限について

デスぺマンさん  
(No.1)
ビューを使用する時の権限について質問です。
三好本2025をみて勉強しているのですが、「更新可能なビュー」というタイトルで以下の①②③の全てを満たせば追加・更新・削除がビューに対して可能になるという説明がありました。
①基底表(元の実表)そのものが特定できること
②基底表(元の実表)の行が特定できること
③そもそも基底表(元の実表)が更新可能なこと
私はこの説明で「ビューに対して更新をしようとおもったらその元の表の権限が必要なんだ」と解釈しました。
しかし、その後のページの「ビューと権限」というタイトルでビューを使用する時の権限は
ビューの所有者・・・元表に従う
ビューの所有者以外・・・元表に対する権限の有無は関係なく、ビューに対する権限の有無だけで判断
と説明がありました。
ビューの所有者はいいのですがビューの所有者以外の説明に関しては上記の「更新可能なビュー」の説明と矛盾があるように感じました。
どちらが正しいのかわかる方いたら教えていただけますと幸いです。
2025.09.20 20:42
GinSanaさん 
DB ゴールドマイスター
(No.2)
直感に反し、少なくともpostgresは三好の説明で合っています。
www.postgresql.jp/document/11/html/sql-createview.html
ビューに対する挿入、更新、削除を行うユーザは、ビューに対して対応する挿入、更新、削除権限を持たなければなりません。 さらにビューの所有者は基となるベースリレーションに対する適切な権限を持たなければなりません。 しかし、更新を行うユーザは基となるベースリレーションに対する権限をまったく必要としません(41.5参照)。

なぜこれができるのか?は、よくある「実表は見せない」(実表のSELECT権限を付与していない)がビューで見せる際のことを考えるとそうなります。
www.postgresql.jp/document/11/html/rules-privileges.html
書き換えルールに別々の所有者はいません。 リレーション(テーブルまたはビュー)の所有者は自動的にそれに定義された書き換えルールの所有者となります。 PostgreSQLのルールシステムはデフォルトのアクセス制御システムの振舞いを変更します。 ルールによって使用されるリレーションは、ルールを起動したユーザの権限ではなく、ルール所有者の権限でチェックされます。 このことは、ユーザは問い合わせで明記するテーブル/ビューに対しての権限だけあればよいことを示しています。

ただ、それを更新に当て込むときになぜ違和感をぬぐえないのかは、マニュアルは教えてくれませんでした。postgresを作ったすごい人的には、違和感を感じないみたいですが・・・。
2025.09.20 22:13
maruさん 
(No.3)
三好本 更新権限
そのあと出てくる情報 参照権限
だとおもいますが
2025.09.20 23:21
枝豆5656さん 
(No.4)
ビューと権限の方には、「前提条件:更新可能なビューであること」とあるので①②③は満たしているのが前提になっているのかなと勝手に思っていましたが、GinSanaさんのコメントからすると、それも違うのかも知れませんね。
「ビューに対する権限の有無だけで判断」については、右ページ上のような過去問を解く上でも重要なので、そのまま受け入れました。
2025.09.21 11:25
wowさん 
(No.5)
両者を切り分けて考えると良いと思います。
基底表①〜③はDBレベル(制約)の話でビューの権限とは別の話です。
2025.09.22 10:34

返信投稿用フォーム

※SQL文は全角文字で記載してください。
※宣伝や迷惑行為を防止するため、当サイト、姉妹サイト、IPAサイト以外のURLを含む記事の投稿はできません。

投稿記事削除用フォーム

投稿番号:
パスワード:

その他のスレッド


Pagetop