استفاده از 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
نقش اعطا شد
اگر از نقش های کاربردی و نقش های دسترسی برای مدیریت نقش استفاده می کنید ، این پرس و جو لیستی از نقش های دسترسی به کاربران را نشان می دهد و به شما این امکان را می دهد تا هر کاربر مجوزهای دسترسی را بررسی کنید.
مرجع: روند رسیدن به این نتیجه
من از Ai-Starter ، سرویس تولید AI شرکت ما ، برای پرس و جو Claude 3.7 Sonnet استفاده کردم.
در ابتدا ، من به طور اتفاقی سؤال کردم ، اما پاسخ ها یا نمایش داده های ساده ای به دیدگاه های مختلف یا نمایش داده شد که نمی توان از آنها استفاده کرد.
پس از چندین مبادله ، کلود نه تنها ارائه نمایش داده شد بلکه نمایش داده شدگان برای بررسی ساختار داده ها را نیز نشان داد.
هنگامی که این صرافی ها به نتیجه رضایت بخش منجر نشد ، من از این مقاله پرس و جو را به اشتراک گذاشتم و از کلود خواستم که آن را در یک جمله انتخابی انتخاب کند.
بیانیه منتخب که دریافت کردم می تواند اجرا شود اما نتایج مورد نیاز من را ارائه نداد. بنابراین من داده هایی را که می خواستم بر اساس مبادلات قبلی خود بازیابی و نمونه برداری کنم ، گردآوری کردم و از کلود خواستم که به آنها بپیوندد.
با تشکر از تعامل های قبلی ما ، کلود بلافاصله یک پرس و جو بازگشتی ایجاد کرد که می تواند نقش هایی را که در دسترس است اما مستقیماً اعطا نشده باشد ، بررسی کند و در نتیجه پرس و جو در این مقاله به اشتراک گذاشته شود.