কলাম স্তরের সুরক্ষা


9

একটি সারণীতে নির্দিষ্ট কলামগুলি লুকানোর জন্য আমার একটি সমাধানের প্রয়োজন। আমাদের এমন লোক আছে যাদের এই ডাটাবেসটির বিরুদ্ধে প্রতিবেদন তৈরি করতে হবে এবং বিশেষত এই টেবিলগুলির কয়েকটি গোপনীয় তথ্য সহ কিন্তু তাদের বেতন বা এসএসএন এর মতো আইটেমগুলি দেখার অনুমতি নেই। ব্যবহারকারীদের জন্য নির্দিষ্ট কলামগুলি ফিল্টার করা সম্ভব?


1
ওরাকলের কোন সংস্করণ সংখ্যা (10.1 / 10.2 / 11.1 / 11.2) এবং আপনি এন্টারপ্রাইজ সংস্করণ / স্ট্যান্ডার্ড সংস্করণ ব্যবহার করছেন, পাশাপাশি আপনার কাছে কোনও অতিরিক্ত লাইসেন্সধারী বিকল্প রয়েছে (উদাহরণস্বরূপ ওরাকল অ্যাডভান্সড সিকিউরিটি)?
ফিলি

10 জি আর 2 এন্টারপ্রাইজ সংস্করণ। কোনও অতিরিক্ত লাইসেন্সবিহীন বৈশিষ্ট্য যা আমি সচেতন
রবার্ট

উত্তর:


13

আপনি এটিকে একটি সাধারণ দৃশ্যের সাহায্যে করতে পারেন, যতক্ষণ না জড়িত ব্যবহারকারীরা ইতিমধ্যে বেস টেবিলটিতে অ্যাক্সেস না পেয়ে থাকেন।

উদাহরণ:

SQL> create user reportuser identified by reportuser;

User created.

SQL> grant create session to reportuser;

Grant succeeded.

SQL> grant create synonym to reportuser;

Grant succeeded.

SQL> select user from dual;

USER
------------------------------
PHIL

SQL> create table basetable
(
  id number primary key,
  viewable varchar2(30),
  secret varchar2(30)
);

Table created.

SQL> insert into basetable values ( 1, 'hello world','this is secret' );

1 row created.

SQL> commit;

Commit complete.

SQL> create view reportview
as
select id, viewable
from basetable;

View created.

SQL> grant select on reportview to reportuser;

Grant succeeded.

SQL> conn reportuser/reportuser
Connected.
SQL> select * from phil.basetable;
select * from phil.basetable
                   *
ERROR at line 1:
ORA-00942: table or view does not exist

SQL> select secret from phil.basetable;
select secret from phil.basetable
                        *
ERROR at line 1:
ORA-00942: table or view does not exist

SQL> select * from phil.reportview;

        ID VIEWABLE
---------- ------------------------------
         1 hello world

SQL>

যদি আপনি প্রশ্নের মধ্যে থাকা টেবিলগুলিতে অনুমতিগুলি প্রত্যাহার করে থাকেন এবং প্রতিটি ব্যবহারকারীর মূল প্রতিবেদনের একই শব্দের সাথে একই শব্দের মতামত সহ মতামত তৈরি করেন, তবে এটি স্বচ্ছ হওয়া উচিত।

উদাহরণ:

SQL> select user from dual;

USER
------------------------------
REPORTUSER

SQL> create synonym basetable for phil.reportview;

Synonym created.

SQL> select * from basetable;

        ID VIEWABLE
---------- ------------------------------
         1 hello world

SQL>

ভার্চুয়াল প্রাইভেট ডেটাবেস সহ আপনি এটিও করতে পারেন , তবে আমি মনে করি এটি একটি ব্যয়বহুল অতিরিক্ত লাইসেন্সযুক্ত বিকল্প। আপনার প্রয়োজনীয় প্রাসঙ্গিক সুরক্ষা নীতিগুলি কনফিগার করতে আপনি DBMS_RLS ব্যবহার করেন।


বিস্তারিত উত্তর দেওয়ার জন্য ধন্যবাদ। প্রকৃত টেবিলটিতে নিজেই ফিল্টার করার কোনও উপায় আপনি জানেন না। এটি আমাদের জন্য আরও পরিষ্কার সমাধান হতে পারে কারণ এটি করার জন্য আমাদের কাছে বেশ কয়েকটি টেবিল রয়েছে। আপনার সমাধান যদিও কাজ করতে পারে।
রবার্ট

2
যদি আপনি প্রশ্নে থাকা টেবিলগুলিতে অনুমতিগুলি প্রত্যাহার করে থাকেন এবং প্রতিটি ব্যবহারকারীর মূল প্রতিচ্ছবি একই নামের একই প্রতিশব্দ সহ মতামত তৈরি করেন, তবে এটি স্বচ্ছ হওয়া উচিত।
ফিলি

ঠিক আছে ... এটা বোঝা যায়। আমি ব্যবহারকারীর প্রতিশব্দ তৈরি করার কথা ভাবছিলাম না। সুতরাং আমাকে একটি প্রতিবেদক ব্যবহারকারী তৈরি করতে হবে, তাদের সমস্ত টেবিলগুলিতে অ্যাক্সেস দিতে হবে, তারপরে আমি সুনির্দিষ্ট যে সারণী সম্পর্কে উদ্বিগ্ন তা সরিয়ে ফেলব। এর পরে কলামগুলি লুকানোর জন্য ভিউগুলি তৈরি করা শুরু করুন।
রবার্ট

হা! আর কোনও প্রশ্ন, ফিরে পপ এবং জিজ্ঞাসা বিনামূল্যে। পরীক্ষা করতে ভুলবেন না :)
ফিলিপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.