আমার ব্যবহারকারী কোন এডি গ্রুপগুলিতে লগইন করে?


13

আমি নিশ্চিত না যে আমি এই প্রশ্নের জন্য সঠিক শিরোনামটি বেছে নিয়েছি কিনা। আমি প্রকৃতপক্ষে যা করছি তার পরে, একটি পৃথক উইন্ডোজ এডি ব্যবহারকারী, আমি এই সার্ভারে একটি নির্দিষ্ট ডাটাবেসে অ্যাক্সেসযুক্ত উইন্ডোজ এডি গ্রুপগুলির (লগইনগুলি) তালিকাটি খুঁজতে চাই

আমি যখন নিম্নলিখিত কোয়েরি চালাচ্ছি

select
    name,
    principal_id,
    type,
    type_desc,
    default_schema_name,
    create_date,
    modify_date,
    owning_principal_id,
    sid,
    is_fixed_role
from sys.database_principals

আমার সার্ভারে

মাইক্রোসফ্ট এসকিউএল সার্ভার ২০০৮ আর 2 (এসপি 1) - 10.50.2500.0 (এক্স 64) জুন 17 2011 00:54:03 কপিরাইট (সি) উইন্ডোজ এনটি 6.1 তে মাইক্রোসফ্ট কর্পোরেশন স্ট্যান্ডার্ড সংস্করণ (-৪-বিট) (বিল্ড 7601: সার্ভিস প্যাক 1)

আমি নিম্নলিখিত ফলাফলগুলি পেয়েছি (আংশিক তালিকা):

এখানে চিত্র বর্ণনা লিখুন

একটি বিশেষ লগইনয়ের সমস্ত অনুমতি আমার জানা দরকার। এই লগইনটি AD গ্রুপগুলির মাধ্যমে আমার সার্ভার / ডাটাবেসে অ্যাক্সেস করতে পারে।

1) উপরের তালিকা থেকে কোন এডি গ্রুপগুলি, আমার লগইনের সাথে সম্পর্কিত?

এখানে চিত্র বর্ণনা লিখুন

আমি নীচে এটি করছি, তবে আমি সত্যিই AD গ্রুপগুলির তালিকা খুঁজে পেতে চাই (উপরের চিত্র অনুসারে এই সার্ভারটিতে অ্যাক্সেস রয়েছে) যা এই ব্যবহারকারীর অন্তর্ভুক্ত।

প্রথমে আমি প্রশ্নযুক্ত ব্যবহারকারী হিসাবে মৃত্যুদণ্ড কার্যকর করি

    EXECUTE AS LOGIN='mycompany\HThorne'

    DECLARE @User VARCHAR(20)
    SELECT @USER = SUBSTRING(SUSER_SNAME(), 
CHARINDEX('\', SUSER_SNAME()) + 1, LEN(SUSER_SNAME()))

আমি নিশ্চিত করি যে আমার কাছে সঠিক শংসাপত্র রয়েছে

    SELECT   @USER 
            , SUSER_SNAME()
            ,SYSTEM_USER
            , USER_NAME()
            , CURRENT_USER
            , ORIGINAL_LOGIN()
            , USER
            ,SESSION_USER

আমি নির্দিষ্ট ডাটাবেসে যাই এবং fn_my_permission ব্যবহার করি - প্রশ্নযুক্ত ব্যবহারকারী হিসাবে চালান

    use WebDataImportStage
    go
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    GO

    REVERT

এবং এটি আমাকে নীচে ফলাফল দিচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

উত্তর:


17

উপরের তালিকা থেকে কোন এডি গ্রুপগুলি, আমার লগইনের সাথে সম্পর্কিত?

আপনাকে যা করতে হবে তা হ'ল নিম্নলিখিত আদেশটি কার্যকর করা:

EXEC xp_logininfo 'domain\useraccount','all';
GO

যদি সেই সার্ভারে কোনও গোষ্ঠীর মাধ্যমে অ্যাকাউন্টের অ্যাক্সেস না থাকে, এবং ডোমেনের একটি আইনী অ্যাকাউন্ট, আপনি কোনও রেকর্ড ফেরত পাবেন না। যদি ব্যবহারকারীর অনুমতি পেয়ে থাকে তবে আপনি যে গোষ্ঠীটি থেকে তাদের অ্যাক্সেস রয়েছে তা সনাক্ত করতে পারেন এটি পরীক্ষা করে permission path। এটি সেই গোষ্ঠীটিকে ফিরিয়ে domain\groupnameদেবে যা ডোমেন ব্যবহারকারীদের অ্যাক্সেস দিচ্ছে।


4

আপনার নির্দিষ্ট প্রশ্নের উত্তর দেওয়ার জন্য আমি ব্যবহারকারীর (এসকিউএল সার্ভার থেকে) এডি গ্রুপগুলির একটি তালিকা পাওয়ার সর্বাধিক সহজ উপায় হল সিস.লগিন_ টোকেন বা sys.user_token ব্যবহার করা ।

আপনার EXECUTE AS LOGIN =উপরের মতো ঠিক তেমন ব্যবহার করতে হবে তবে একবার আপনি লগইনটির ছদ্মবেশ ব্যবহার করে লগইন সম্পর্কিত sys.login_tokenগ্রুপগুলির একটি তালিকা পেতে জিজ্ঞাসা করতে পারেন । এটিতে সার্ভার স্তরের যে কোনও ভূমিকা এবং সমস্ত এডি গ্রুপ অন্তর্ভুক্ত রয়েছে। একটি প্রিন্সিপাল_আইডি কলাম রয়েছে যা sys.server_principalsসিস্টেম ভিউয়ের সাথে লিঙ্ক করে । এটি সার্ভারের সমস্ত ভূমিকার জন্য এবং কোনও এডি গ্রুপগুলিতে প্রবেশ করানো হবে sys.server_principals

আরও ডাটাবেস নির্দিষ্ট তথ্য পেতে আপনি যে ডেটাবেসটিতে আগ্রহী সেটিতে যেতে পারেন এবং সেই ডাটাবেসের sys.user_tokenসাথে সম্পর্কিত ভূমিকা / এডি গ্রুপগুলির একটি তালিকা পেতে ব্যবহার করতে পারেন। এই ক্ষেত্রে প্রিন্সিপাল_আইডি জড়িত sys.database_principals


কেনেথ, আপনি একজন কিংবদন্তি। লিখিত লিখিত এবং সংরক্ষণ!
ওরিও

2

আমি যদি সঠিকভাবে বুঝতে পারি তবে আপনি এটি এক্সপি_লজিনিনফোর সাহায্যে সম্পন্ন করতে পারেন যা উইন্ডোজ ব্যবহারকারী এবং উইন্ডোজ গোষ্ঠী সম্পর্কে তথ্য দেয়।

খালি এক্সিকিউট করে বলুন

EXEC xp_logininfo 'mycompany\HThorne'

অন্যথায় আপনি নীচের ক্যোয়ারীটি ব্যবহার করতে পারেন যা আমি আমার সংগ্রহশালা থেকে ব্যবহার করছি, আমি এটি কোথা থেকে পেয়েছি তা নিশ্চিত নয়, :) তবে এখনও সহায়ক হতে পারে:

;with ServerPermsAndRoles as
(
    select
        spr.name as principal_name,
        spr.type_desc as principal_type,
        spm.permission_name collate SQL_Latin1_General_CP1_CI_AS as security_entity,
        'permission' as security_type,
        spm.state_desc
    from sys.server_principals spr
    inner join sys.server_permissions spm
    on spr.principal_id = spm.grantee_principal_id
    where spr.type in ('s', 'u')

    union all

    select
        sp.name as principal_name,
        sp.type_desc as principal_type,
        spr.name as security_entity,
        'role membership' as security_type,
        null as state_desc
    from sys.server_principals sp
    inner join sys.server_role_members srm
    on sp.principal_id = srm.member_principal_id
    inner join sys.server_principals spr
    on srm.role_principal_id = spr.principal_id
    where sp.type in ('s', 'u')
)
select *
from ServerPermsAndRoles
order by principal_name
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.