এসকিউএল সার্ভার সমস্যা হিসাবে কার্যকর


13

আমার সঞ্চিত পদ্ধতিটি ব্যবহার করার চেষ্টা করার সময় আমি কিছু মিস করছি EXECUTE AS। সঞ্চিত পদ্ধতিটি থেকে ডেটা পড়ছে source_db, এটিকে একত্রিত করে এবং ফলস্বরূপ স্টোর করে target_db

এসপি নিজেই target_db। আমার একটি উত্সর্গীকৃত লগইন রয়েছে এবং এটি source_dbএবং target_dbএসপি-র মালিকদের উভয় ক্ষেত্রেই ব্যবহারকারীদের কাছে এটি ম্যাপ করুন (যাতে লগইনের জন্য এবং ব্যবহারকারীর app_agentমধ্যে রয়েছে )।source_dbtarget_dbapp_agent

যদি আমি লগইন করি app_agentএবং কার্যকর করি

EXEC target_db.app_agent_schema.import_data

সবকিছু ঠিকঠাক কাজ করে তবে আমি যদি পরিবর্তন

ALTER PROCEDURE app_agent_schema.import_data WITH EXECUTE AS OWNER` (or `AS SELF`) 

এবং এটি কার্যকর করার চেষ্টা করুন, এটি ছুড়ে দেয়

সার্ভারের অধ্যক্ষ "অ্যাপ_এজেন্ট" বর্তমান সুরক্ষা প্রসঙ্গে ডেটাবেস "উত্স_ডিবি" অ্যাক্সেস করতে সক্ষম নয়।

আমি এসকিউএল সার্ভার 2008 ব্যবহার করছি।

কেউ আমার ত্রুটি চিহ্নিত করতে পারে?

ধন্যবাদ

আপডেট কিছু গবেষণা করার পরে, আমি দেখতে পেয়েছি যে সমস্যার ALTER DATABASE target_db SET TRUSTWORTHY ONসমাধান করে, তবে এটি আমার কাছে সঠিক সমাধান বলে মনে হয় না ...


1
আমি মনে করি উত্তরটি ডাটাবেস -সামান্য ক্রস-ডাটাবেস মালিকানা শৃঙ্খলা বিকল্পটি ব্যবহার করছে। আমি আপনার দৃশ্যে ত্রুটিটি পুনরুত্পাদন করতে সক্ষম হয়েছি, তবে আমি সঠিকভাবে এটি পুনরুত্পাদন করলাম কিনা তা জানার জন্য পর্যাপ্ত বিবরণ দেওয়া হয়নি ... সিডিওসি বিকল্পটি আমার পক্ষে কাজ করে নি, তবে চেষ্টা করে দেখুন এবং এটি তা করে কিনা।
জন সেগেল

উত্তর:


24

এটি এক্সেকিউট এএস ব্যবহার করে ডেটাবেস ছদ্মবেশকে প্রসারিত করে ব্যাখ্যা করা হয়েছে । কার্যকারিতা হিসাবে প্রসঙ্গটি কেবলমাত্র বর্তমান ডাটাবেসে বিশ্বাসযোগ্য এবং এটিকে অন্য ডেটাবেসে ছড়িয়ে দেওয়া সুযোগ সুবিধার্থে আক্রমণকারী ভেক্টরকে বাড়িয়ে তোলা।

দুটি সমাধান রয়েছে, উভয়ই উপরে লিঙ্কিত নিবন্ধে বর্ণিত:

  • সহজ ডাটাবেসের নির্ভরযোগ্য চিহ্নিত করতে হল: ALTER DATABASE [source_db] SET TRUSTWORTHY ON;। যদিও সহজ, এছাড়াও যেমন তোলে বিপজ্জনক dboএর source_dbডি-ফ্যাক্টো sysadmin

  • নিরাপদটি হচ্ছে কোড সাইনিং ব্যবহার করা, উদাহরণের জন্য অন্য ডাটাবেসে একটি পদ্ধতি কল করুন দেখুন । এটি আরও জটিল, তবে এটি 100% বুলেটপ্রফ নিরাপত্তা।


0

কোন ব্যবহারকারী ALTER PROCEDURE কমান্ড চালায়? এটি সেই ব্যবহারকারীর কাছে মালিক (স্ব) অ্যাক্সেস স্তরটি সেট করে থাকতে পারে, আপনি যে উদ্দেশ্যে করেছিলেন তা নয়।


একই ব্যবহারকারী যিনি পদ্ধতি তৈরি করেছেন ( app_agent)। আমার যদি পদ্ধতি app_agentছাড়াই তৈরি করা থাকে তবে execute as owner/selfলগ ইন করুন app_agent, এসপি সঠিকভাবে কার্যকর করে। যদি আমি যুক্ত EXECUTE AS SELF(আবার, একই ব্যবহারকারী), এবং হিসাবে লগ ইন app_agentকরি, আমি পেয়েছি...is not able to access the database...
a1ex07
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.