برنامه نویسی

استفاده از Claude 3.7 Sonnet برای ساخت یک پرس و جو دسترسی به نقش کاربر Snowflake

※ این یک ترجمه انگلیسی از این مقاله اصلی ژاپنی است

سلام ، این ساگارا است.

همانطور که از این عنوان پیداست ، من از Claude 3.7 Sonnet خواسته ام که یک پرس و جو ایجاد کند که نشان می دهد به کدام یک از کاربر Snowflake می تواند دسترسی داشته باشد ، و من می خواهم نتایج را به اشتراک بگذارم.

پرس و جو برای بررسی اینکه به هر کاربر Snowflake می تواند به کدام نقشه ها دسترسی پیدا کند

در اینجا پرس و جو است که به شما امکان می دهد تا بررسی کنید که هر کاربر Snowflake می تواند به کدام نقشه ها دسترسی پیدا کند:

توجه: این یک پرس و جو بسیار سنگین است که حدود 40 ثانیه طول می کشد تا در یک انبار XS در محیط آزمایش ما اجرا شود.

select 
    user_name,
    granted_role_name,
    grant_type,
    created_on
from (
    -- Directly granted roles
    select 
        grantee_name as user_name,
        role as granted_role_name,
        'DIRECT' as grant_type,
        created_on
    from 
        snowflake.account_usage.grants_to_users
    where 
        deleted_on is null

    union all

    -- Indirectly granted roles
    select 
        u.grantee_name as user_name,
        rh.granted_role_name,
        'INDIRECT (via ' || listagg(distinct u.role, ' > ') within group (order by u.role) || ')' as grant_type,
        min(u.created_on) as created_on
    from 
        snowflake.account_usage.grants_to_users u
    join (
        -- Recursive retrieval of role hierarchy
        with recursive role_path as (
            select 
                name as granted_role_name,
                grantee_name as parent_role_name,
                name || ' > ' || grantee_name as path,
                1 as level
            from 
                snowflake.account_usage.grants_to_roles
            where 
                granted_on = 'ROLE'
                and privilege = 'USAGE'
                and deleted_on is null

            union all

            select 
                rp.granted_role_name,
                g.grantee_name as parent_role_name,
                rp.path || ' > ' || g.grantee_name as path,
                rp.level + 1 as level
            from 
                role_path rp
            join 
                snowflake.account_usage.grants_to_roles g
                on rp.parent_role_name = g.name
            where 
                g.granted_on = 'ROLE'
                and g.privilege = 'USAGE'
                and g.deleted_on is null
                and rp.level < 10
        )
        select * from role_path
    ) rh on u.role = rh.parent_role_name
    where 
        u.deleted_on is null
    group by 
        u.grantee_name, rh.granted_role_name
)
order by 
    user_name, grant_type, granted_role_name;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

نتایج اجرای نقش های موجود در هر کاربر را در GRANTED_ROLE_NAME ستون. در GRANT_TYPE ستون نشان می دهد که آیا این نقش به طور مستقیم اعطا شده است (DIRECT) یا در دسترس است زیرا این نقش کودک نقش دیگری است (به عنوان مثال ، INDIRECT (via ACCOUNTADMIN)).

توجه داشته باشید که برای CREATED_ON ستون ، هنگامی که GRANT_TYPE است ، INDIRECT (via ACCOUNTADMIN)، تاریخ را نشان می دهد ACCOUNTADMIN نقش اعطا شد

اگر از نقش های کاربردی و نقش های دسترسی برای مدیریت نقش استفاده می کنید ، این پرس و جو لیستی از نقش های دسترسی به کاربران را نشان می دهد و به شما این امکان را می دهد تا هر کاربر مجوزهای دسترسی را بررسی کنید.

2025-04-02_07H28_34

مرجع: روند رسیدن به این نتیجه

من از Ai-Starter ، سرویس تولید AI شرکت ما ، برای پرس و جو Claude 3.7 Sonnet استفاده کردم.

در ابتدا ، من به طور اتفاقی سؤال کردم ، اما پاسخ ها یا نمایش داده های ساده ای به دیدگاه های مختلف یا نمایش داده شد که نمی توان از آنها استفاده کرد.

2025-04-02_07H44_40

2025-04-02_07H45_42

پس از چندین مبادله ، کلود نه تنها ارائه نمایش داده شد بلکه نمایش داده شدگان برای بررسی ساختار داده ها را نیز نشان داد.

2025-04-02_07H46_57

هنگامی که این صرافی ها به نتیجه رضایت بخش منجر نشد ، من از این مقاله پرس و جو را به اشتراک گذاشتم و از کلود خواستم که آن را در یک جمله انتخابی انتخاب کند.

2025-04-02_07H51_05

بیانیه منتخب که دریافت کردم می تواند اجرا شود اما نتایج مورد نیاز من را ارائه نداد. بنابراین من داده هایی را که می خواستم بر اساس مبادلات قبلی خود بازیابی و نمونه برداری کنم ، گردآوری کردم و از کلود خواستم که به آنها بپیوندد.

با تشکر از تعامل های قبلی ما ، کلود بلافاصله یک پرس و جو بازگشتی ایجاد کرد که می تواند نقش هایی را که در دسترس است اما مستقیماً اعطا نشده باشد ، بررسی کند و در نتیجه پرس و جو در این مقاله به اشتراک گذاشته شود.

2025-04-02_07H52_53

2025-04-02_07H55_33

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا