質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

3回答

1788閲覧

ユーザーに見せるtableを制限したい

32nori

総合スコア29

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2018/11/02 07:50

編集2018/11/06 04:54

postgreSQLにて開発者が見れるtable、一般ユーザーが見れるtableを管理、設定したいと思っております。

例えばですが
atable
btable
ctable
とあった場合、開発者は全てのtableを利用する為、全てのtableを見る事が出来る。

ただ、一般ユーザーはatableのみ見せたい場合です。

この場合、roleにてselectを剥奪してselect文を拒否する事を指しているのではなく、
btable,ctableというtable名自身を見せたくない事をいっております。

色々調べて見ましたが、table名を見せなくする情報を見つける事ができずこちらへ質問させて頂きました。

皆様、宜しくお願い致します。

以下追記します。
各ユーザーはodbcドライバよりexcel2010を介してpostgreSQLへアクセスしています。
odbcドライバのユーザーを一般ユーザーに設定しています。
excel2010の画面より
[データ]タブ

[その他データソース]

[データ接続ウィザード]

[ODBC DSN]

[※データ接続ウィザードの任意の名称]

[データベースとテーブルの選択]
こちらの画面の明細にてselectの権限が無いtableが表示されております。
今回の例ではこちらの画面にatableのみ表示したく思っております。

ご検討の程、宜しくお願い致します。

以下更に追記します。
一般ユーザー、開発者の切り分けは、postgreSQLのユーザー(ロール)をそれぞれ
hogeuser、hogeadminなどの名前に分けて管理しています。
一般ユーザーのpcのodbcデータソースの設定画面にてユーザー名覧へhogeuserを設定し
excel上よりアクセスしております。

以上になります。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/11/02 07:56

各ユーザは何を介してPostgreSQLにアクセスしているのでしょうか。(使用している言語とか何かしらのツールとか)
m.ts10806

2018/11/05 02:17

念のため現在のコードを追記された方が良いかと
m.ts10806

2018/11/05 02:20

「開発者」と「一般ユーザー」の切り分けをどのように行っているのでしょうか
guest

回答3

0

自己解決

皆様、色々調べて解決方法を見つけましたので報告致します。
全てのtableが入ったデータベースalldbを作成。
一般ユーザーがアクセスするデータベースuserdbを作成。
userdbへCREATE EXTENSION dblink;を実行してdblinkを利用可能にします。
userdb内に一般ユーザーが見ても良いalldb側のtableへのdblink設定(view作成)を行い。
userdbを一般ユーザーに見てもらう事により解決できました。

皆様、色々ご意見頂き有難う御座いました。

投稿2018/11/07 06:42

32nori

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

開発者はDDL(CREATE TABLE)したユーザーでログインし、一般ユーザーは GRANT — アクセス権限を定義する で atableのみのSELECT権(必要なら DELETE, INSERT, UPDATE権も) を持った別ユーザーでログインしては?

投稿2018/11/03 00:05

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akirafudo6

2018/11/03 04:45

データでなくて、テーブル名(テーブルそのもの)を見せなくしたいということを、言っているのかな?つまり、テーブル名を表示するフォームが存在しているということかな?
Orlofsky

2018/11/03 11:22

DDLユーザーでなく他のユーザーにログインした場合は、DDLユーザーからのSELECT権などの権限のあるテーブルしか見えませんが、何か?
akirafudo6

2018/11/03 11:51

質問の内容だと、REVOKEしても、テーブルは見えると言っているよ。ただ権限がありませんと出ると書いてますけど?
Orlofsky

2018/11/04 21:32

質問に現象を再現できるだけのコードを追記していただいた方が良いですね。
akirafudo6

2018/11/05 05:34

あと、環境も、verとか、開発者以外のユーザーはどのようなツールを使ってDBにアクセスしてるとか
Orlofsky

2018/11/05 22:39

追記されたODBC のやり方では特定のユーザーを非表示にする機能はありません。 適切なコメントをもらえるための質問の仕方は考えましょうね。文章力はどんな職業でも役に立ちます。
akirafudo6

2018/11/06 03:23

一般のツールで(odbc、jdbcなど)postgresで参照、更新する場合、レコードの削除において、削除したレコードが参照できる場合があります。postgresは物理的に削除しているのではなく、postgresシステムで論理的に削除しているため、このような状態になるのだと推測されます。 通常ツールにて一般ユーザーが操作するようなことはしません。むしろ、禁止にします。また、隠れて操作されないためにも、ポート番号を変えて単純に操作されないように工夫します。 一般ユーザーは、オリジナルの言語(c#、vb,netなど)で開発したフォームに操作させるのが一般的です。
guest

0

ユーザーID(分類)によって、実行するselecrt分を分けたら?

投稿2018/11/02 12:08

akirafudo6

総合スコア341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問