ডাটাবেস মালিকদের জন্য বিশেষাধিকার; অ্যাপ্লিকেশন ব্যবহারকারী


15

দ্রুত সংস্করণ:

কোনও ডাটাবেস মালিককে এই ডাটাবেসে টেবিলগুলি অ্যাক্সেস করার অনুমতি দেওয়ার জন্য আমার কোন আদেশ জারি করা উচিত এবং এটি কি সেই মালিকের অ্যাকাউন্ট থেকে করা যেতে পারে?


দীর্ঘ সংস্করণ:

আমি আরডিএসে একটি ডাটাবেস তৈরি করছি। আমার একটি 'রুট' ব্যবহারকারী আছে যা আমি অ্যামাজনের সাথে কনফিগার করেছি।

অ্যামাজন স্বয়ংক্রিয়ভাবে 'rds_superuser' গ্রুপের ভূমিকা তৈরি করে যা অত্যন্ত সুবিধাজনক, তবে আসলে কোনও সুপারভাইজার নয়।

আমি নিম্নলিখিত হিসাবে অ্যাপ্লিকেশনটির জন্য একটি ডাটাবেস এবং ব্যবহারকারী তৈরি করছি:

create database master_integration;
CREATE ROLE master_application LOGIN ENCRYPTED PASSWORD '...' VALID UNTIL 'infinity';
GRANT ALL ON DATABASE master_integration TO GROUP rds_superuser WITH GRANT OPTION;
GRANT ALL ON DATABASE master_integration TO GROUP master_application;

\c master_integration;
ALTER DEFAULT PRIVILEGES GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES TO rds_superuser;

আমার কীভাবে এটি পরিচালনা করা উচিত সে সম্পর্কে ক্রেগ রিংারের পরামর্শ প্রতিফলিত করার জন্য আমি এই স্ক্রিপ্টটি আপডেট করেছি।

অ্যাপ্লিকেশনটি যখন সংযুক্ত হয় (মাস্টার_প্লিকেশন শংসাপত্রগুলির সাথে) এটি সারণীগুলি তৈরি করে (এবং তাই মালিকানাধীন)।

আমার সমস্যাটি হ'ল আমি অনুসন্ধান চালাতে আমার প্রশাসনিক (মূল) লগ ইন ব্যবহার করতে পারি না কারণ সেই ব্যবহারকারীর টেবিলে কোনও সুবিধা নেই privile

আমি অ্যাপ্লিকেশন অ্যাকাউন্ট থেকে নিম্নলিখিতটি চালিয়ে আগে এটি সমাধান করতে সক্ষম হয়েছি:

GRANT ALL privileges ON ALL TABLES IN SCHEMA public to rds_superuser;

তবে প্রশাসনিক ব্যবহারকারীর কাছে অধস্তন ব্যবহারকারী অনুদানের মালিকানা ফিরিয়ে দেওয়া হ্যাকি বলে মনে হচ্ছে।

সুতরাং ... এমন কোনও আদেশ আছে যা আমি অ্যাপ্লিকেশন থেকে টেবিলগুলি তৈরি করার আগে বা তার পরে চালাতে পারি যা নিশ্চিত করে যে ডাটাবেসের মালিক ডাটাবেসের মধ্যে থাকা সারণীগুলি অ্যাক্সেস করতে পারে?


পরিবর্তিত ডিফল্ট সুবিধাগুলি পুনরায় চেষ্টা করার পরে আপডেট করুন ...

এটি এখনও টেবিলগুলিতে অ্যাক্সেস দেয় না; আমি এটি অন্য কোথাও প্রস্তাবিত দেখছি এবং এটি পুরোপুরি অর্থপূর্ণ, তবে এটি আমার পক্ষে কাজ করছে না। একটি পিএসকিএল শেল থেকে:

master_integration=> \ddp
                           Default access privileges
      Owner       | Schema | Type  |             Access privileges             
------------------+--------+-------+-------------------------------------------
 integration_root |        | table | integration_root=arwdDxt/integration_root+
                  |        |       | rds_superuser=arwdDxt/integration_root
(1 row)

master_integration=> \dp users
                           Access privileges
 Schema | Name  | Type  | Access privileges | Column access privileges 
--------+-------+-------+-------------------+--------------------------
 public | users | table |                   | 
(1 row)

ইন্টিগ্রেশন_রুট হ'ল আমার অতি ব্যবহারকারী-ইশ ব্যবহারকারী এবং ব্যবহারকারীরা আমার ডাটাবেসের মধ্যে একটি সারণী।


হালনাগাদ

আমাজনের একজনের কাছ থেকে আমি মোটামুটি অকেজো সাড়া পেয়েছি।

তারা আমাকে মাস্টার_প্লিকেশন লগইন থেকে ALTER DEIFULT PRIVILEGES এ কল করতে বলেছে। যদিও এটি সম্ভবত কার্যকর হবে, এটি আমার প্রশ্নের উত্তর দেবে না (যা আমি সম্পূর্ণভাবে rds_superuser অ্যাকাউন্ট থেকে এটি করতে পারি)।

আমি তাদের এটি পরিষ্কার করতে বললাম এবং তারা চলে গেলেন।

উত্তর:


9

আপনি চান ALTER DEFAULT PRIVILEGES

rds_superuserসমস্ত নতুন টেবিলগুলিতে ডিফল্ট অ্যাক্সেসের অধিকার দিন ।

এটি কেবলমাত্র পরে তৈরি টেবিলগুলিকে প্রভাবিত করে ALTER। বিদ্যমান সারণীগুলির জন্য আপনাকে অবশ্যই GRANTঅধিকার দিতে হবে ।


আমি এটি করার চেষ্টা করেছি। আমি মূল প্রশ্নটিতে এটি দুর্বলভাবে বলেছি, আমি যে আদেশটি সম্পাদন করেছিলাম তা ঠিক প্রদর্শন করতে এটি সম্পাদনা করেছি। আমি কি কিছু ভুল পেয়েছি?
অ্যান্ডি ডেভিস

এটি কেবলমাত্র পরে তৈরি টেবিলগুলিকে প্রভাবিত করে ALTER। আপনি কখন এটা করবেন? বিদ্যমান সারণীগুলির জন্য আপনাকে অবশ্যই GRANTঅধিকার দিতে হবে ।
ক্রেগ রিঞ্জার

আমি ডিফল্ট ছদ্মবেশগুলি পরিবর্তন করেছি, তারপরে সারণীগুলি তৈরি করেছি। আমি আবার চেষ্টা করতে যাচ্ছি, সম্ভবত আমি ভুল করেছি।
অ্যান্ডি ডেভিস

এখনও এটির সাথে ভাগ্য নেই, যদিও এটি একেবারে কমান্ডের মতো মনে হচ্ছে যা সমস্যার সমাধান করতে পারে। আমি একটি সারণী থেকে \ ddp এবং \ dp থেকে আউটপুট অন্তর্ভুক্ত করার জন্য কমান্ডটি আপডেট করেছি।
অ্যান্ডি ডেভিস

খুব অদ্ভুত। আপনি কি কোনও নিয়মিত (নন-আরডিএস) পোস্টগ্রিজ এসকিউএলে সমস্যাটি পুনরুত্পাদন করতে পারেন?
ক্রেগ রিঞ্জার

0

পাবলিক স্কিমাটি সমস্ত ব্যবহারকারীর দ্বারা দৃশ্যমান বলে মনে করা হচ্ছে। আপনার পাবলিক স্কিমার অধিকারগুলি কেবল একটি গোষ্ঠীতে সীমাবদ্ধ করা উচিত নয়।

সুতরাং, যদি আপনি ব্যবহার না করেন:

GRANT ALL ON SCHEMA public TO GROUP rds_superuser WITH GRANT OPTION;

আপনি সমস্ত অ্যাকাউন্টের সাথে পাবলিক স্কিমা দিয়ে নিরাপদে কাজ করতে পারেন।

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

CREATE USER mywebuser WITH PASSWORD '*****';
REVOKE ALL PRIVILEGES ON SCHEMA public FROM mywebuser;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mywebuser; (or whatever rights you need to provide)

আপনি এটি করার চেষ্টা করার মতো অন্য উপায় নয়।


তাই না? এ অ্যাক্সেসের অধিকারগুলি হ্রাসGRANT করতে সক্ষম হবে না । আমি সন্তুষ্ট নই. মনে রাখবেন যে কোনও স্কিমায় অধিকারগুলি সেই স্কিমাতে নতুন টেবিলগুলির দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হবে না, সুতরাং স্কিমে অ্যাক্সেস থাকার অর্থ এই নয় যে আপনি এর মধ্যে সারণী ব্যবহার করতে পারবেন। public
ক্রেগ রিঞ্জার

অবশেষে আমি এটি চেষ্টা করে দেখতে পেলাম এবং এটি পরিস্থিতিটিকে সহায়তা করে না।
অ্যান্ডি ডেভিস

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