قانون‌ها

هر کاربر یا کاربر-سرویس در هر فضای کاری مجوز انجام برخی از عملیات را دارد و انجام برخی از عملیات برای او ممکن نیست. داشتن این مجوز و امکان یا عدم امکان انجام عملیات توسط مفهومی در سرویس IAM تعیین می‌شود که نقش نام دارد. نقش بر اساس مفهومی به اسم قانون ایجاد شده است. در واقع این قوانین هستند که در نهایت منجر به ایجاد مجوزها و اختصاص آن‌ها به کاربران یا کاربر-سرویس‌ها می‌شوند. در واقع زمانی که یک نقش درخواست انجام عملیاتی را داشته باشد، سرویس IAM قوانین را مورد بررسی قرار می‌دهد. و با استفاده از قوانین تعیین می‌کند که درخواست این نقش مجاز یا غیرمجاز است.

کاربرانی که دارای نقش workspace master هستند، می‌توانند لیست قوانین موجود را ببینند و یا اینکه قوانین جدیدی را اضافه کنند.

لیست قوانین برای راهنمای کاربری.PNG

هر نقش می‌تواند دو تاثیر داشته باشد: اجازه دادن و رد کردن. قوانین با تاثیر اجازه دادن در واقع اجرای یک عملیات را مجاز می‌کنند. و برعکس قوانین با تاثیر رد کردن هم انجام عملیات را غیرمجاز می‌کنند.

همان‌طور که گفته شد قوانین تعریف‌کننده‌ی مجوزهای عملیات مختلف هستند و برای سهولت کار، مجموعه‌ای از قوانین دسترسی (Rule) به شکل یک نقش (Role) دسته‌بندی شده‌اند که قابل اعطا به کاربران هستند.

در سرویس‌های IAM دسترسی کاربران به سرویس‌های مختلف کنترل می‌شود. در هر سرویس تعدادی منبع یا Resource وجود دارد که ممکن است نیاز داشته باشیم برای دسترسی هر کاربر و Resource به صورت جداگانه تصمیم بگیریم. برای این کار از یک روش Structural Naming استفاده می‌شود که در آن امکان نام‌گذاری ساختاریافته برای مجموعه‌ای از اشیا قابل انجام است.

یکی از فاکتورهای مهم در هنگام ایجاد قانون، مسیر است. مسیر در واقع به یک شی یا object درون یک سرویس اشاره می‌کند و این اشیا در هر سرویس به شکل خاصی تعریف می‌شوند. همان‌طور که گفته شد، قانون می‌تواند سطح دسترسی را تعریف کند. زمانی که برای قانون مسیری را تعریف می‌کنید در واقع نوع دسترسی به آن object را مشخص کرده‌اید.

در ادامه با یک مثال به شرح بیشتر این مفهوم می‌پردازیم.
مثلا می‌توان وسایل اتاق‌های مختلف خانه‌های مختلف در کوچه‌ی اول از خیابان اول شهر را چنین نام‌گذاری کرد:

street-1/alley-1/home-1/bedroom/lamp
street-1/alley-1/home-1/kithcen/lamp
street-1/alley-1/home-1/living-room/lamp
street-1/alley-1/home-1/living-room/television
street-1/alley-1/home-1/living-room/chair

در سرویس IAM ستون، برای ایجاد پویایی در تعیین مسیر دسترسی روش‌های مختلفی وجود دارد:

در مثال بالا، فرض کنید می‌خواهید برای همه‌ی لامپ‌های همه‌ی خانه‌های کوچه‌ی اول دسترسی تعریف کنید. در این صورت می‌توانید این مسیر را تعریف کنید:

street-1/alley-1/+/bedroom/lamp

فرض کنید می‌خواهید برای دسترسی به همه‌ی وسایل خانه‌ی اول یک قانون تعریف کنید، در این صورت می‌توانید چنین عمل کنید:

street-1/alley-1/home-1/*

توجه کنید که تعریف * در وسط یک مسیر مجاز نیست چرا که حساسیت به عمق را از بین می‌برد و یک آسیب‌پذیری امنیتی محسوب می‌شود.

با این امکان می‌توانید یک قانون تعیین کنید که یک مقدار خاص در آن متغیر باشد مثلا قانونی برای دسترسی به همه‌ی وسایل یک خانه و می‌خواهید وقتی این قانون bind می‌شود تعیین کنید که کدام خانه از کدام کوچه و خیابان مورد نظر شماست. در این صورت می‌توانید از این امکان استفاده نمایید:

{street-name}/{alley-name}/{home-name}/*

نکته: توجه داشته باشید که برخی از پارامترها یا itemها به صورت رزرو شده هستند و امکان انتخاب آن‌ها وجود ندارد. به عنوان مثال سه کلمه‌ی workspace, user, service از مفاهیم بپا هستند که به عنوان پارامتر رزرو شده در نظر گرفته می‌شوند.

آیا این مقاله به شما کمک کرد؟

با نظر دادن به بهبود کیفیت مستندات کمک کنید