مجوز و مجوزهای تأیید شده آمازون: روشی جدید برای مدیریت مجوزها – قسمت سوم

به مجموعه ما در زمینه مجوز، سدر و AVP خوش آمدید! در مقاله قبلی، ما Cedar، یک زبان سیاست منبع باز توسعه یافته توسط AWS را بررسی کردیم. ما در مورد اصول اولیه Cedar، نحوه نوشتن خطمشیها یاد گرفتیم و با یک سرور ساده Cedar Authorization در Rust بازی کردیم تا Cedar را در عمل ببینیم.
در این مقاله، ما تمرکز خود را به مجوزهای تأیید شده آمازون (AVP) تغییر میدهیم، سرویسی که قدرت Cedar را به روشی بدون سرور و کاملاً مدیریت شده به AWS میآورد. ما بررسی خواهیم کرد که AVP چیست، چرا به آن نیاز است، و چگونه می تواند فرآیند مجوز ما را ساده کند. ما همچنین سناریوی تجارت الکترونیک خود را به AVP ترسیم خواهیم کرد و نشان میدهیم که چگونه میتوانیم بدون نیاز به مدیریت سرور Rust خود به نتایج مشابهی دست یابیم.
بیایید به AVP شیرجه بزنیم!
مجوزهای تایید شده آمازون (AVP) چیست؟
مجوزهای تأیید شده آمازون (AVP) یک سرویس کاملاً مدیریت شده و بدون سرور است که مدیریت، اجرا و ممیزی مجوزهای برنامه را ساده می کند. از Cedar، زبان خطمشی که ما در مورد آن یاد گرفتهایم، برای تعریف سیاستهای کنترل دسترسی دقیق و مبتنی بر ویژگی استفاده میکند.
AVP طوری طراحی شده است که بسیار مقیاس پذیر، قابل اعتماد و ایمن باشد. تمام وظایف سنگین ارزیابی و مدیریت خط مشی را انجام می دهد و ما را از نیاز به نگهداری سرورهای مجوز خود رها می کند. این به ما اجازه می دهد تا روی منطق برنامه خود تمرکز کنیم، در حالی که AVP پیچیدگی های مجوز را برای ما مدیریت می کند.
چرا به AVP نیاز داریم؟
مدیریت مجوزها می تواند یک دردسر واقعی باشد، به خصوص زمانی که با یک برنامه کاربردی بزرگ با تعداد زیادی کاربر، نقش ها، منابع و انواع زمینه های مورد بررسی روبرو هستیم. با افزایش تعداد نقشها و مجوزها، روشهای سنتی مانند کنترل دسترسی مبتنی بر نقش (RBAC) میتوانند از کنترل خارج شوند. و در حالی که کنترل دسترسی مبتنی بر ویژگی (ABAC) به ما انعطافپذیری بیشتری میدهد، میتواند برای درست و کارآمد بودن آن سخت باشد، به خصوص زمانی که نیاز به تصمیمگیری بر اساس زمینه داریم.
اینجاست که AVP وارد می شود. این مانند جعبه ابزار دستی ما برای مدیریت مجوزها است. از قدرت Cedar استفاده می کند تا به ما اجازه دهد سیاست های کنترل دسترسی فوق العاده دقیق و مبتنی بر ویژگی را تعریف کنیم. این بدان معنی است که ما می توانیم در مورد اینکه چه کسی می تواند چه کاری را در برنامه ما انجام دهد، از جمله تصمیمات بر اساس زمینه، واقعاً مشخص شود.
اما ضربه زننده واقعی؟ AVP بدون سرور است. درست است، هیچ سروری برای مدیریت، بدون مشکل مقیاسپذیری برای نگرانی، و بدون اصلاح کابوسها. زمانی که ما به آن نیاز داریم همیشه وجود دارد، به طور خودکار با نیازهای برنامه ما مقیاس می شود و ما فقط برای آنچه استفاده می کنیم هزینه می پردازیم. بهعلاوه، دارای ویژگیهای بسیار جالبی مانند عملکرد میز تست، ممیزی با CloudTrail، فروشگاههای سیاست و طرح است.
AVP و سناریوی تجارت الکترونیک ما
بیایید سناریوی تجارت الکترونیک خود را دوباره بررسی کنیم و ببینیم چگونه می توانیم از AVP برای مدیریت مجوزهای خود استفاده کنیم. به یاد داشته باشید، در سناریوی ما، انواع مختلفی از کاربران (اصول) مانند مشتریان، فروشندگان و مدیران داریم. این کاربران اقدامات مختلفی مانند مشاهده محصولات، ثبت سفارش، مدیریت موجودی و رسیدگی به مسائل مربوط به خدمات مشتری را انجام می دهند. آنها با منابع مختلف از جمله لیست محصولات، سفارشات و پروفایل های مشتری تعامل دارند.
حال، بیایید نحوه تعریف این اصول، اقدامات و منابع را در AVP و نحوه نوشتن و اجرای سیاست ها با استفاده از کنسول AVP را بررسی کنیم.
ایجاد یک فروشگاه سیاست
قبل از اینکه بتوانیم خطمشیهای خود را تعریف کنیم، ابتدا باید یک فروشگاه سیاست در AVP ایجاد کنیم. فروشگاه سیاست اساساً ظرفی برای سیاستهای ما است. این به ما امکان می دهد تا سیاست های مرتبط را با هم گروه بندی کنیم و آنها را به عنوان یک واحد مدیریت کنیم. این به ویژه در برنامه های کاربردی بزرگ که ممکن است صدها یا حتی هزاران خط مشی داشته باشیم مفید است. برنامه ما درخواست ها را علیه یک فروشگاه سیاست خاص مجاز می کند.
سه روش برای ایجاد یک فروشگاه سیاست وجود دارد:
- راهاندازی هدایتشده – این روش ما را در فرآیند تعریف یک نوع منبع با اقدامات معتبر و یک نوع اصلی قبل از ایجاد اولین خطمشی راهنمایی میکند.
- ذخیره سیاست نمونه – این روش به ما امکان می دهد تا یک نمونه از پیش تعریف شده ذخیره سیاست پروژه را انتخاب کنیم. اگر به تازگی با AVP شروع کرده ایم و می خواهیم سیاست های نمونه را مشاهده و آزمایش کنیم، این گزینه عالی است.
- ذخیره سیاست خالی – با این روش، طرح و همه سیاست های دسترسی را خودمان تعریف می کنیم. اگر قبلاً با پیکربندی فروشگاه سیاست آشنایی داشته باشیم، توصیه میشود.
برای هدف این مقاله، ما از روش راهاندازی هدایتشده برای ایجاد فروشگاه سیاست خود استفاده میکنیم تا شروع سفر خود را با AVP آسانتر کنیم.
راه اندازی هدایت شده
برای شروع راهاندازی هدایتشده، روی دکمه «راهاندازی هدایتشده» کلیک کنید. این فرآیند ایجاد فروشگاه سیاست ما را آغاز می کند. توجه به این نکته مهم است که در حال حاضر، نمیتوانیم یک نام سفارشی برای فروشگاه سیاست خود تعیین کنیم. شناسه به صورت تصادفی تولید می شود. با این حال، تیم AVP نشان داده است که امکان نامگذاری فروشگاههای سیاست ما یک ویژگی است که در آینده نزدیک در دسترس خواهد بود.
اولین مرحله در راه اندازی هدایت شده، تعریف طرحواره است.
طرحواره چیست و چرا به آن نیاز داریم؟
در AVP، طرح واره طرحی است که ساختار سیستم مجوز ما را تعریف می کند. این نوع اصول (کاربران)، منابع و اقداماتی که در سیستم ما وجود دارد و ویژگی های مرتبط با هر یک از این انواع را مشخص می کند.
طرحواره بسیار مهم است زیرا مبنایی را برای نوشتن خط مشی ها در AVP تشکیل می دهد. هنگامی که ما یک خط مشی می نویسیم، قوانینی را در مورد اقداماتی که یک مدیر می تواند روی یک منبع انجام دهد، تعریف می کنیم. این طرح واژگانی را که ما برای نوشتن این قوانین استفاده می کنیم، فراهم می کند.
برای مثال، در سناریوی تجارت الکترونیک ما، طرح ما اصولی مانند «مشتری»، «فروشنده» و «مدیر»، منابعی مانند «محصول»، «سفارش» و «نمایه» و اقداماتی مانند «مشاهده» را تعریف میکند. ، “ایجاد” و “ویرایش”.
مرحله 1: طرحواره
بیایید به کنسول AVP برگردیم. در راهاندازی هدایتشده، از ما خواسته میشود که طرح خود را تعریف کنیم. برای سناریوی تجارت الکترونیکی خود، میتوانیم از فضای نامی مانند «EcommercePlatform» استفاده کنیم. سپس از این فضای نام برای لانه سازی انواع موجودیت و اقدامات ما استفاده می شود.
مرحله 2: انواع منابع
پس از تنظیم فضای نام، گام بعدی این است که انواع منابع خود را تعریف کنیم. در AVP، یک نوع منبع نشان دهنده نوعی شی در سیستم ما است که می خواهیم دسترسی به آن را کنترل کنیم. هر نوع منبع می تواند مجموعه ای از ویژگی های خاص خود را داشته باشد، اما در حال حاضر، ما همه چیز را ساده نگه می داریم و هیچ ویژگی اضافی اضافه نمی کنیم.
در سناریوی تجارت الکترونیکی خود، ما چندین نوع منبع داریم که کاربران ممکن است با آنها تعامل داشته باشند، مانند فهرست محصولات، سفارشها و نمایههای مشتری. برای سادگی، اجازه دهید با تعریف یک نوع منبع واحد شروع کنیم: “محصول”.
- پس از تعریف طرح و کلیک بر روی “بعدی”، به مرحله “نوع منبع” هدایت می شویم.
- در قسمت «نام نوع منبع»، «محصول» را وارد کنید.
- از آنجایی که در حال حاضر هیچ ویژگی دیگری اضافه نمیکنیم، میتوانیم بخش «ویژگیهای منبع – اختیاری» را خالی بگذاریم.
- در بخش “اقدامات”، اقداماتی را که نیاز به مجوز برای منابعی از این نوع دارند، مشخص کنید. به عنوان مثال، ممکن است اقداماتی مانند “View”، “Create”، “Edit” و “Delete” را اضافه کنیم. میتوانیم با کلیک بر روی «افزودن یک اقدام»، تایپ کردن نام اقدام و سپس کلیک کردن روی «افزودن»، یک عمل اضافه کنیم.
- در قسمت “نام نوع اصلی”، نام یک نوع اصلی را تایپ کنید که از اقدامات مشخص شده برای نوع منبع ما استفاده می کند. به عنوان مثال، ممکن است “مشتری” را وارد کنیم.
- برای رفتن به مرحله بعد روی “Next” کلیک کنید.
مرحله 3: نوع اصلی
پس از تعریف نوع منبع و اقدامات، به مرحله “نوع اصلی” هدایت می شویم.
- برای «منبع هویت»، دو گزینه داریم: «سفارشی» و «استخر کاربران شناختی».
- اگر “سفارشی” را انتخاب کنیم، به این معنی است که شناسه و ویژگی های اصلی مستقیماً توسط برنامه ما ارائه می شود. این گزینه پیش فرض است و برای اکثر سناریوها مناسب است.
- اگر “Cognito User Pool” را انتخاب کنیم، به این معنی است که شناسه و ویژگیهای اصلی از یک شناسه یا توکن Access تولید شده توسط Amazon Cognito استخراج میشود. ما باید با انتخاب منطقه AWS و تایپ User Pool ID از مجموعه کاربری آمازون Cognito که میخواهیم به آن متصل شویم، به یک استخر کاربر متصل شویم.
- (اختیاری) همچنین میتوانیم با کلیک بر روی «افزودن ویژگی»، ویژگیهایی را به نوع اصلی اضافه کنیم. ما می توانیم نام و نوع ویژگی را برای هر ویژگی مشخص کنیم. این ویژگی ها را می توان در خط مشی های Cedar ما برای کنترل دسترسی مبتنی بر ویژگی (ABAC) ارجاع داد.
- برای رفتن به مرحله بعد روی “Next” کلیک کنید.
مرحله 4: سیاست
در مرحله نهایی راه اندازی راهنما، اولین خط مشی خود را تعریف می کنیم. برای استفاده از تجارت الکترونیکی ما، میخواهیم به هر مشتری اجازه دهیم هر محصولی را مشاهده کند.
در بخش جزئیات خط مشی، به صورت اختیاری می توانیم شرحی برای خط مشی خود ارائه دهیم. این می تواند برای مستندسازی هدف خط مشی و مجوزهایی که اعطا می کند مفید باشد. می توانیم نام آن را «اجازه دادن به مشتریان برای مشاهده محصولات» بگذاریم.
در قسمت Principals scope، “All Principals” را انتخاب کنید. این به این معنی است که این خطمشی برای همه اصلیهای موجود در فروشگاه سیاست ما اعمال میشود.
در قسمت محدوده منابع، «همه منابع» را انتخاب کنید. این بدان معنی است که این خط مشی برای همه منابع موجود در فروشگاه سیاست ما اعمال می شود.
در قسمت Actions scope، Specific set of actions را انتخاب کنید. سپس، در عملکرد(های) این خط مشی باید برای فیلد اعمال شود، اقدام «مشاهده» را انتخاب کنید. این به این معنی است که این خطمشی به عملکرد مشخص شده (View) روی منابع مشخص شده برای اصول مشخص شده اجازه میدهد.
خط مشی را در بخش پیش نمایش خط مشی مرور کنید. سیاست باید چیزی شبیه به این باشد:
permit(
principal,
action in [EcommercePlatform::Action::"View"],
resource
) when {
true
};
این خطمشی به هر اصلی اجازه میدهد تا عمل «مشاهده» را روی هر منبعی انجام دهد.
ممکن است تصور شود که از آنجایی که هر مدیری می تواند هر منبعی را با یک عملکرد view ببیند، پس یک اصل از نوع “حسابدار” نیز وجود دارد؟ در مورد ما، پاسخ منفی است. منابع، اقدامات، و اصول هنوز با طرحی که ما در AVP تنظیم کردهایم تعریف میشوند و نوع «حسابدار» در آنجا نداشتیم.
روی “ایجاد فروشگاه سیاست” کلیک کنید. این فروشگاه سیاست ما را با طرح و خط مشی تعریف شده ایجاد می کند.
و بس! ما اکنون اولین فروشگاه سیاست خود را در AVP ایجاد کردهایم که با یک طرح و یک خطمشی کامل شده است. اکنون می توان از این فروشگاه سیاست برای مدیریت، اجرا و ممیزی مجوزها استفاده کرد.
مراحل بعدی
برای بررسی داشبورد AVP در کنسول AWS زمان بگذارید. ما فروشگاه سیاستهای جدید ایجاد شده خود را به همراه گزینههایی برای مدیریت خطمشیها، طرحوارهها و آزمایش آنها با استفاده از تست میبینیم.
اما ما تازه شروع کرده ایم. در مقالههای آینده، عمیقتر به AVP خواهیم پرداخت. ما طرحهای پیچیدهتری را بررسی میکنیم، با میز آزمون بازی میکنیم، گروههایی از منابع را آزمایش میکنیم و خطمشیهای بیشتری را به فروشگاه سیاست خود اضافه میکنیم. گوش به زنگ باشید.