مشکل مجوزهایی که در کد زندگی میکنند
چارچوبهای عامل در ارکستراسیون خوب هستند. آنها سیستم هویت نیستند و مدلهای مجوزی که ارائه میدهند کنترلهای حاکمیتی نیستند. یک لیست مجاز ابزار در یک چارچوب، لیستی در کد برنامه است. با عامل نسخهبندی میشود، با عامل مستقر میشود و توسط زمان اجرایی که عامل را اجرا میکند خوانده میشود. برای تیم هویت قابل مشاهده نیست، در بازبینی دسترسی ظاهر نمیشود و نمیتوان آن را با فرآیند joiner-mover-leaver که روی اشیاء دایرکتوری عمل میکند تطبیق داد.
این شکاف اکنون در مقیاس بزرگ آزمایش میشود. گسترش حاکمیت هویت دانشگاه وندربیلت به عاملهای هوش مصنوعی یک نقطه مرجع مفید است زیرا عاملها را به عنوان موضوعات همان ماشین حاکمیتی افراد در نظر میگیرد، نه به عنوان مصنوعات نرمافزاری با فایلهای پیکربندی (SiliconAngle). درس ساختاری است، نه نهادی: اگر یک کنشگر میتواند داده بخواند، API فراخوانی کند یا از طرف کسی عمل کند، به هویتی نیاز دارد که دایرکتوری بتواند صادر، محدود، بازبینی و لغو کند.
چرا مجوزهای چارچوب از حسابرسی جان سالم به در نمیبرند
سه حالت شکست تکرار میشوند.
اول، نامرئی بودن. لیستهای مجاز ابزار و رشتههای دامنه درون پیکربندی خود عامل زندگی میکنند. یک بازبین دسترسی که به ارائهدهنده هویت نگاه میکند یک حساب سرویس با مجوز گسترده میبیند، یا اگر عامل از طریق یک اعتبارنامه مشترک احراز هویت کند، هیچ چیز نمیبیند. بازبین نمیتواند ببیند که عامل میتواند یک API پرداخت، یک سیستم تیکت و یک مخزن اسناد را فراخوانی کند، زیرا آن جزئیات در مخزنی است که بازبین نمیخواند.
دوم، تداوم پس از بازنشستگی. وقتی یک عامل از رده خارج میشود، اعتبارنامههای آن اغلب در متغیرهای محیطی، مخازن رمز یا یک فایل پیکربندی که سیستم دیگری هنوز بارگذاری میکند باقی میمانند. هیچ چیز در چرخه حیات چارچوب حذف را اجباری نمیکند، زیرا چارچوب نمیداند که عامل صاحبی دارد که رفته، یا اینکه ویژگیای که پشتیبانی میکرد بازنشسته شده است. اعتبارنامه از هدفش بیشتر عمر میکند.
سوم، پراکندگی مجوزها. عاملها با عرضه ویژگیها دامنهها را جمع میکنند. یک یکپارچهسازی جدید یک دامنه اضافه میکند؛ یک بازآرایی دیگری را اضافه میکند. دامنهها به ندرت حذف میشوند، زیرا حذف نیاز به دانستن این دارد که کدام دامنه به کدام ویژگی نگاشت میشود و آن نگاشت نگهداری نمیشود. نتیجه عاملی است با دسترسی بیشتر از آنچه هر وظیفه واحدی نیاز دارد، که به طور نامحدود نگه داشته میشود.
هویت عامل بومی دایرکتوری چگونه است
هویت عامل بومی دایرکتوری یک شیء درجه یک در همان دایرکتوری است که حسابهای انسانی را نگه میدارد. ویژگیهایی دارد که حاکمیت را ممکن میکند:
- مالک و حامی. مالک تیمی است که در قبال رفتار عامل پاسخگو است. حامی، اصل انسانی است که وجود آن را مجاز کرده است. هر دو ارجاعهای دایرکتوری هستند، نه فیلدهای متن آزاد.
- انقضا. هویت یک دوره اعتبار دارد. به طور پیشفرض برای همیشه زنده نمیماند.
- مجوزها. دامنهها به عنوان مجوزهای دایرکتوری اعطا میشوند، به شیء عامل متصل میشوند و در همان چرخه بازبینی دسترسی انسانی ظاهر میشوند.
- پیوند تفویض. عامل از طرف یک اصل نامدار عمل میکند. آن پیوند ذخیره و قابل پرسوجو است، بنابراین یک حسابرس میتواند بپرسد کدام اختیار انسانی پشت یک اقدام مشخص است.

این یک تغییر ظاهری نیست. سؤال را از «این کد چه کاری میتواند انجام دهد؟» به «این کنشگر به چه چیزی مجاز است، چه کسی آن را مجاز کرده و آن مجوز چه زمانی پایان مییابد؟» منتقل میکند.
عملیات چرخه حیات که چارچوبها نمیتوانند بیان کنند
وقتی عامل یک شیء دایرکتوری شد، عملیات چرخه حیات به شکلی ممکن میشوند که درون یک چارچوب ممکن نیست.
چرخش و لغو طبق برنامه. اعتبارنامهها طبق تقویم میچرخند، نه طبق استقرار. لغو یک عملیات دایرکتوری است که در هر سیستمی که به دایرکتوری اعتماد دارد اعمال میشود، نه یک تغییر کد که باید به هر یکپارچهسازی ارسال شود.
تعلیق خودکار. اگر تیم مالک منحل شود یا حامی دایرکتوری را ترک کند، هویت عامل میتواند به طور خودکار معلق شود. چارچوب مفهومی از ترک حامی ندارد، زیرا چارچوب اشتغال یا عضویت تیمی را مدل نمیکند.
تصدیق. یک تأیید انسانی دورهای تأیید میکند که عامل هنوز به هر دامنهای که دارد نیاز دارد. تصدیق یک ابتدایی حاکمیتی است: تصمیمگیری درباره هر مجوز را اجباری میکند و سابقهای از اینکه چه کسی آن تصمیم را گرفته تولید میکند.
هیچکدام از اینها به عنوان مجوزهای چارچوب قابل بیان نیستند، زیرا به وضعیت دایرکتوری وابستهاند که چارچوب مالک آن نیست.
یک مکانیزم مشخص: نگاشت مجوز با تلهمتری دامنه اعمالشده
یک روش عملی برای پیادهسازی این است که دایرکتوری را به عنوان منبع حقیقت برای مجوزها در نظر بگیریم در حالی که چارچوب حداقل در ابتدا نقطه اجرا باقی میماند.
در زمان صدور، دایرکتوری هویت عامل را ضرب میکند و مجموعهای از مجوزها را اعطا میکند. چارچوب یک توکن یا اعتبارنامه دریافت میکند که آن مجوزها را رمزگذاری میکند. در زمان اجرا، چارچوب ثبت میکند که کدام مجوزها واقعاً اعمال میشوند. آن تلهمتری به عنوان یک ویژگی روی شیء عامل به دایرکتوری بازنویسی میشود.
سپس دایرکتوری دو نما را ارائه میدهد: دامنههای اعطاشده و دامنههای اعمالشده. نسبت بین آنها معیار اصلی بهداشت است. عاملی که دوازده دامنه دارد و سه تا را اعمال میکند کاندید کاهش است. مکانیزم نیازی ندارد که چارچوب حاکمیت را بفهمد؛ نیاز دارد که چ

این یک طراحی عمداً خستهکننده است. از دایرکتوری برای آنچه دایرکتوریها در آن خوب هستند استفاده میکند و از چارچوب برای آنچه چارچوبها در آن خوب هستند. بخش سخت لولهکشی نیست؛ نظم بازبینی نسبت و عمل بر اساس آن است.
مهاجرت بدون روز پرچم
یک اشتباه رایج تلاش برای یک تغییر کامل است: انتقال صدور و اجرا به دایرکتوری به طور همزمان. این سیستمهای در حال اجرا را میشکند، زیرا نقاط اجرایی که بهروزرسانی نشدهاند قالب اعتبارنامه جدید را رد میکنند و صدوری که منتقل شده قالب قدیمی را تولید نمیکند.
توالی امنتر سه فاز دارد.
- آینه. دامنههای سطح چارچوب را بخوانید و مجوزهای دایرکتوری متناظر ایجاد کنید. هنوز چیزی اجرا نمیشود. هدف این است که به بازبینیهای دسترسی چیزی برای بررسی بدهد.
- صدور از دایرکتوری. صدور اعتبارنامه را به دایرکتوری منتقل کنید در حالی که چارچوب هنوز لیست مجاز خود را اجرا میکند. این دو باید توافق داشته باشند؛ عدم تطابقها ثبت و تطبیق میشوند.
- اجرا از دایرکتوری. وقتی صدور پایدار شد و آینه دقیق شد، اجرا را به مجوزهای صادرشده از دایرکتوری تغییر دهید. لیست مجاز چارچوب به یک بررسی اضافی تبدیل میشود که میتواند حذف شود.
این ترتیب مهم است. اول صدور، دوم اجرا. معکوس کردن آن به این معنی است که دایرکتوری مجوزهایی را اجرا میکند که هیچ سیستمی صادر نکرده است، که قطعیهایی تولید میکند که شبیه شکستهای هویت هستند اما در واقع شکستهای توالی هستند.
معاوضه صادقانه
هویت عامل بومی دایرکتوری تأخیر و جفتشدگی اضافه میکند. هر اقدام عاملی که به یک مجوز صادرشده از دایرکتوری وابسته است، در دسترس بودن دایرکتوری را به ارث میبرد. یک لیست مجاز محلی چارچوب چنین وابستگی ندارد؛ لیستی در حافظه است. انتقال حاکمیت به دایرکتوری به این معنی است که بپذیریم دایرکتوری در مسیر بحرانی عملیات عامل است و قطعی دایرکتوری یک قطعی عامل است.
این معاوضه معمولاً ارزشش را دارد، زیرا جایگزین یک سطح دسترسی است که هیچکس نمیتواند بازبینی کند. اما باید به صراحت انجام شود، نه در طول یک حادثه کشف شود. کاهش آن کش کردن و توکنهای کوتاهعمر با معناشناسی لغو واضح است، نه رها کردن دایرکتوری به عنوان منبع حقیقت.
چه چیزی را اندازهگیری کنیم
معیار اصلی نسبت مجوزهای اعطاشده به اعمالشده، به ازای هر عامل، است که طبق برنامه بازبینی میشود. معیارهای ثانویه شامل زمان از ترک حامی تا تعلیق عامل و نسبت عاملهای دارای تاریخ انقضای تعیینشده است. اینها پرسوجوهای دایرکتوری هستند، نه لاگهای چارچوب، که همین نکته است: سؤالات حاکمیتی باید از سیستم ثبت قابل پاسخ باشند، نه از تلهمتری برنامه بازسازی شوند.
حاکمیت هویت عامل یک ویژگی چارچوب عامل نیست. یک خاصیت دایرکتوری است و تنها زمانی کار میکند که دایرکتوری هویتهایی را که عاملها استفاده میکنند صادر، محدود، بازبینی و لغو کند.
