কীভাবে ডিবি 2-র জন্য টেবিলের ইনসার্ট কার্যক্রম সীমাবদ্ধ করবেন?


0

আমার কাছে একটি টেবিল OAUTH20_TOKEN_CACHE রয়েছে যার জন্য আমি কমান্ডের নীচে চালিয়ে INSERT অপারেশনগুলি সীমাবদ্ধ করেছি। ডিবি 2 ব্যবহারকারী এইচভিডি 121 থেকে HVD121.OAUTH20_TOKEN_CACHE এ সন্নিবেশটি বাতিল করুন

এটি "সিস্টেমটি" টেবিলের জন্য নির্দিষ্ট গ্রান্টী 'এইচভিডি 121' এর জন্য INSERTAUTH = 'N' দেখা যেতে পারে, তবে এখনও আমি দেখতে পেতাম INSERT অপারেশনগুলি নির্দিষ্ট টেবিলের জন্য সফল হয় যেখানে ব্যবহারকারীর এইচভিডি 121 ব্যবহার করে সংযোগ স্থাপন করা হয়েছে।

এই সঠিক পন্থা ??


RHEL 6.5 উপর @mustaccio DB2 সংস্করণ 10.5.4
রেডহ্যাট

উত্তর:


2

ডিবি 2-তে ব্যবহারকারীর ব্যবহারকারীর গোষ্ঠী এবং ভূমিকাগুলির মাধ্যমেও মঞ্জুর করা সুবিধা থাকতে পারে। ডিবি 2 কোনও বিধিনিষেধ নয়, বস্তুগুলিতে অনুমতি সঞ্চয় করে। আপনি যদি কোনও ব্যবহারকারীর কাছ থেকে কোনও বস্তুর উপর বিশেষাধিকার প্রত্যাহার করতে পারবেন না, যদি এই ব্যবহারকারীকে স্পষ্টভাবে এই অনুমতিটি না দেওয়া হয় (আপনি SQL0556Nএই জাতীয় প্রত্যাহার বিবৃতিতে পান)। কারণ আপনি দেখতে INSERTAUTH = 'N'SYSCAT.TABAUTH (SYSIBM.SYSTABAUTH) এ এই ব্যবহারকারীর কিছু অন্যান্য রয়েছে *AUTHএই টেবিলের উপর অনুমতি (গুলি), কিন্তু ঢোকাতে।

সুতরাং, আপনি কোনও ব্যবহারকারীর কাছ থেকে স্পষ্টভাবে কোনও বিশেষাধিকার প্রত্যাহার করতে পারবেন না, যদি এই ব্যবহারকারীর গোষ্ঠী বা ভূমিকাগুলির মাধ্যমে এই অধিকার থাকে (আমরা এখানে এলবিএসি বিবেচনা করি না)।

কিছু নির্দিষ্ট ব্যবহারকারীর কেন কোনও বস্তুর কিছু সুবিধা রয়েছে তা বুঝতে 2 টি চেক করা উচিত। ধ্রুবক পরিবর্তন 'MYUSER', 'MYSCHEMA', 'MYTABLE'নিচের সেই অনুযায়ী।

1) ব্যবহারকারীর যদি ডেটাঅ্যাক্সেস ডাটাবেস কর্তৃপক্ষ থাকে:

SELECT P.GRANTEE, P.GRANTEETYPE
FROM SYSCAT.DBAUTH P
CROSS JOIN TABLE(VALUES 'MYUSER') A (AUTHID)
JOIN TABLE (
SELECT GROUP, 'G' FROM table(AUTH_LIST_GROUPS_FOR_AUTHID(A.AUTHID))
  UNION ALL
select ROLENAME, 'R' from table(AUTH_LIST_ROLES_FOR_AUTHID(A.AUTHID, 'U'))
  UNION ALL
SELECT * FROM TABLE(VALUES ('PUBLIC', 'G'), (A.AUTHID, 'U')) T (AUTHID, AUTHIDTYPE)
) U (AUTHID, AUTHIDTYPE) ON U.AUTHID=P.GRANTEE AND U.AUTHIDTYPE=P.GRANTEETYPE
WHERE P.DATAACCESSAUTH='Y';

2) যদি ব্যবহারকারীর টেবিলে সুবিধা থাকে:

SELECT  
  P.PRIVILEGE, P.OBJECTTYPE, P.OBJECTSCHEMA, P.OBJECTNAME
, U.AUTHID, U.AUTHIDTYPE
FROM SYSIBMADM.PRIVILEGES P
CROSS JOIN TABLE(VALUES 'MYUSER') A (AUTHID)
JOIN TABLE (
SELECT GROUP, 'G' FROM table(AUTH_LIST_GROUPS_FOR_AUTHID(A.AUTHID))
  UNION ALL
select ROLENAME, 'R' from table(AUTH_LIST_ROLES_FOR_AUTHID(A.AUTHID, 'U'))
  UNION ALL
SELECT * FROM TABLE(VALUES ('PUBLIC', 'G'), (A.AUTHID, 'U')) T (AUTHID, AUTHIDTYPE)
) U (AUTHID, AUTHIDTYPE) ON U.AUTHID=P.AUTHID AND U.AUTHIDTYPE=P.AUTHIDTYPE
WHERE P.OBJECTSCHEMA = 'MYSCHEMA' AND P.OBJECTNAME='MYTABLE' AND P.OBJECTTYPE='TABLE'
AND P.PRIVILEGE IN ('INSERT', 'CONTROL')
ORDER BY 2, 3, 4;

@ রেডহাট: উপরের প্রশ্নের ফলাফলগুলি দেখান MYSCHEMA=HVD121, MYTABLE=OAUTH20_TOKEN_CACHE, MYUSER=HVD121

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.