この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 13251|答える: 0

[出典] Oracleデータベースの列レベルの権限管理

[リンクをコピー]
掲載地 2015/12/11 23:47:14 | | |
顧客には150以上のフィールドのテーブルが必要ですが、顧客はスキャン会社のスタッフに見えるフィールドの一部だけを必要としています。この要件はビューで簡単に実現できます。顧客も要求しますが、これらのフィールドはスキャン会社は個別のフィールドしか変更できません。私はこれまでカラムレベルでこのような権限管理の必要性に遭遇したことがありません。実験をしてみましたが、とても興味深いと感じました。記録してください

顧客は一つ持っています需要150以上のフィールドがあるテーブルでは、顧客は会社をスキャンする人に一部のフィールドだけを見せてほしいと求めました。需要ビューで簡単に実装でき、顧客からこれらのフィールド、スキャン会社は個々のフィールドしか変更できないと要求されています。私はこれまでカラムレベルでの権限管理の必要性に遭遇したことがなく、実験をしてみましたが、とても興味深いと感じました。記録してみてください試験プロセス。

1. テストテーブルを作成し、ポイントテストデータを挿入:

  SQL> table test(id number,table_name varchar2(50) を作成する

所有者はヴァルハル2(50),TABLESPACE_NAMEヴァルハル2(50));

テーブル作成。

SQL> insert in test select、rownum,table_name,owner,

TABLESPACE_NAME dba_tables;

5490行が作成されました。

SQL>コミット;

コミット完了。

2. テストユーザーを作成し、基本的な権限を与える:

SQL> CONN / AS SYSDBA

繋がっている。

SQL>ストリームのデフォルトテーブルスペースユーザーで識別されるユーザーストリームを作成すること;

ユーザーが作成しました。

SQL>grant connect,resource to stream;

グラントは成功しました。

3. テストユーザーにカラムレベルの権限を付与する:

SQL> conn auth/auth

繋がっている。

SQL>テストからストリームへの更新(id)を付与します。

グラントは成功しました。

SQL>テストからストリームへの挿入(table_name)を付与します。

グラントは成功しました。

SQL>

SQL> grant selectをテストからストリームへ;

グラントは成功しました。

4. カラムレベルの権限設定情報をクエリ:

SQL>GRANTEE、OWNER、TABLE_NAME、COLUMN_NAME、GRANTOR、PRIVILEGEを選択してください。

user_col_privsからの授与可能;

譲受人所有者 GRAの付与者特権TABLE_NAME COLUMN_NAME

------- ----- ---------- ----------- ------- --------- ---

ストリーム認証テストTABLE_NAME認証挿入番号

AUT AUTH TEST ID AUTH INSERT NO

AUT AUTH TEST ID AUTH UPDATE NO

ストリーム認証テスト ID 認証更新番号

5. ログインテストユーザーがSELECT権限を確認する:

SQL> conn stream/stream

繋がっている。

SQL> * を選択(auth.test orderから * を1分ずつ選択)。ここでrownum< =10;

所有者のテーブルスペースTABLE_NAME

---------- -------------------- ---------- ----------

1 ICOL$ SYS システム

2 IND$ システム

3 COL$ システム

4 CLU$ SYS システム

5 TAB$ システム

6 LOB$ システム

7 COLTYPE$ システム

8 SUBCOLTYPE$ SYS SYSTEM

9 NTAB$ システム

10 REFCON$ システム

10行選択。

6. カラムレベルのUPDATE権限制御の検証:

SQL> update auth.test set owner='STREAM' (id =1)

更新:auth.test set owner='STREAM' ここで id =1

  *

1行目のエラー:

  ORA-01031: insufficient privileges

テストテーブルのOWNERフィールドの値は変更が許可されていないことがわかります。報告ORA-01031:権限不足。上記はテストユーザーにテストテーブルのIDフィールドを変更する権限を与えているため、IDフィールドを変更することは可能です。

SQL> update auth.test set id=10 (id=1;

1行更新。

SQL>ロールバック;

ロールバック完了。

7. カラムレベルのINSERT権限制御の検証:

SQL>auth.test値(1,'stream','stream','users')に挿入します。

auth.testに値(1,'stream','stream','users')を挿入します。

  *

1行目のエラー:

  ORA-01031: insufficient privileges

上記によりテストユーザーはテストテーブルのTABLE_NAMEフィールドを修正する権限が与えられているため、他のフィールドにNOT SOME(あるものの)制約がない場合に限りTABLE_NAMEフィールドを挿入することが可能です。

SQL>auth.test(table_name)に値(「stream」)を挿入します。

1行作成済み。

SQL>ロールバック;

ロールバック完了。






先の:Oracle 10Gの詳細なインストール手順チュートリアル
次に:Tencent Analyticsを有効にした後はシステムが忙しいので、後で再度お試しください
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com