این راهنما نحوهی رمزگذاری و رمزگشایی را با استفاده از API رمزگذاری سمت کلاینت Google Workspace شرح میدهد.
شما باید هرگونه سرویس ارائهدهنده هویت (IdP) که توسط کاربرانی که فایلهای رمزگذاریشده را به اشتراک میگذارند استفاده میشود را در فهرست مجاز قرار دهید. معمولاً میتوانید جزئیات IdP مورد نیاز را در فایل .well-known که در دسترس عموم است، پیدا کنید؛ در غیر این صورت، برای دریافت جزئیات IdP با مدیر Google Workspace سازمان تماس بگیرید.
رمزگذاری دادهها
وقتی یک کاربر Google Workspace درخواست ذخیره یا نگهداری دادههای رمزگذاریشدهی سمت کلاینت (CSE) را میدهد، Google Workspace یک درخواست wrap request) برای رمزگذاری به آدرس اینترنتی (URL) نقطهی پایانی سرویس کنترل دسترسی کلیدی (KACLS) شما ارسال میکند. علاوه بر بررسیهای امنیتی اختیاری، مانند بررسیهای مبتنی بر محیط و ادعای JWT، KACLS شما باید مراحل زیر را انجام دهد:
کاربر درخواستکننده را اعتبارسنجی کنید.
- هم توکن احراز هویت و هم توکن مجوز را اعتبارسنجی کنید.
- با انجام تطبیق بدون حساسیت به حروف بزرگ و کوچک در ادعاهای ایمیل، بررسی کنید که توکنهای مجوز و احراز هویت برای یک کاربر باشند.
- وقتی توکن احراز هویت شامل ادعای اختیاری
google_emailباشد، باید با ادعای ایمیل در توکن مجوز با استفاده از رویکردی غیرحساس به حروف بزرگ و کوچک مقایسه شود. برای این مقایسه از ادعای ایمیل درون توکن احراز هویت استفاده نکنید. - در سناریوهایی که توکن احراز هویت فاقد ادعای اختیاری
google_emailاست، ادعای ایمیل درون توکن احراز هویت باید با ادعای ایمیل درون توکن مجوز، با استفاده از روشی غیرحساس به حروف بزرگ و کوچک، مقایسه شود. - در سناریوهایی که گوگل برای ایمیلی که با حساب گوگل مرتبط نیست، توکن مجوز صادر میکند، باید عبارت
email_typeوجود داشته باشد. این بخش مهمی از ویژگی دسترسی مهمان را تشکیل میدهد و اطلاعات ارزشمندی را برای KACLS فراهم میکند تا اقدامات امنیتی بیشتری را برای کاربران خارجی اعمال کند.- برخی از نمونههایی که KACLS چگونه میتواند از این اطلاعات استفاده کند عبارتند از:
- برای اعمال الزامات اضافی ثبت وقایع.
- محدود کردن صادرکننده توکن احراز هویت به یک شناسه مهمان اختصاصی.
- برای درخواست ادعاهای اضافی در مورد توکن احراز هویت.
- اگر مشتری دسترسی مهمان را پیکربندی نکرده باشد، تمام درخواستهایی که در آنها
email_typeرویgoogle-visitorیاcustomer-idpتنظیم شده باشد، میتوانند رد شوند. درخواستهایی کهemail_typeآنهاgoogleباشد یاemail_typeتنظیم نشده باشد، همچنان پذیرفته میشوند.
- وقتی توکن احراز هویت حاوی ادعای اختیاری
delegated_toباشد، باید شامل ادعایresource_nameنیز باشد و این دو ادعا باید با ادعاهایdelegated_toوresource_nameدر توکن مجوز مقایسه شوند. ادعاهایdelegated_toباید با استفاده از رویکردی غیرحساس به حروف کوچک و بزرگ مقایسه شوند وresource_nameموجود در توکنها بایدresource_nameعملیات مطابقت داشته باشد. - بررسی کنید که آیا ادعای
roleدر توکن مجوزwriterیاupgraderاست یا خیر. - بررسی کنید که عبارت
kacls_urlدر توکن مجوز با URL فعلی KACLS مطابقت داشته باشد. این بررسی امکان شناسایی سرورهای بالقوهی man-in-the-middle که توسط افراد داخلی یا مدیران دامنهی جعلی پیکربندی شدهاند را فراهم میکند. - با استفاده از ادعاهای احراز هویت و مجوز، یک بررسی محیطی انجام دهید.
بخشهای زیر را با استفاده از یک الگوریتم رمزگذاری احراز هویت شده رمزگذاری کنید:
- کلید رمزگذاری دادهها (DEK)
- مقادیر
resource_nameوperimeter_idاز توکن مجوز - هرگونه اطلاعات حساس اضافی
عملیات را ثبت کنید، از جمله نام کاربری که آن را آغاز کرده،
resource_nameو دلیل ارسال شده در درخواست.یک شیء دودویی غیرشفاف را برگردانید تا توسط Google Workspace در کنار شیء رمزگذاری شده ذخیره شود و در هر عملیات رمزگشایی کلید بعدی به همان صورت ارسال شود. یا، یک پاسخ خطای ساختاریافته ارائه دهید.
- شیء دودویی باید تنها کپی از DEK رمزگذاری شده را داشته باشد، دادههای خاص پیادهسازی میتوانند در آن ذخیره شوند.
رمزگشایی دادهها
وقتی یک کاربر Google Workspace درخواست باز کردن دادههای رمزگذاریشدهی سمت کلاینت (CSE) را میدهد، Google Workspace یک درخواست unwrap به URL نقطهی پایانی KACLS شما برای رمزگشایی ارسال میکند. علاوه بر بررسیهای امنیتی اختیاری، مانند بررسیهای مبتنی بر محیط و ادعای JWT، KACLS شما باید مراحل زیر را انجام دهد:
کاربر درخواستکننده را اعتبارسنجی کنید.
- هم توکن احراز هویت و هم توکن مجوز را اعتبارسنجی کنید.
- با انجام تطبیق بدون حساسیت به حروف بزرگ و کوچک در ادعاهای ایمیل، بررسی کنید که توکنهای مجوز و احراز هویت برای یک کاربر باشند.
- وقتی توکن احراز هویت شامل ادعای اختیاری
google_emailباشد، باید با ادعای ایمیل در توکن مجوز با استفاده از رویکردی غیرحساس به حروف بزرگ و کوچک مقایسه شود. برای این مقایسه از ادعای ایمیل درون توکن احراز هویت استفاده نکنید. - در سناریوهایی که توکن احراز هویت فاقد ادعای اختیاری
google_emailاست، ادعای ایمیل درون توکن احراز هویت باید با ادعای ایمیل درون توکن مجوز، با استفاده از روشی غیرحساس به حروف بزرگ و کوچک، مقایسه شود. - در سناریوهایی که گوگل برای ایمیلی که با حساب گوگل مرتبط نیست، توکن مجوز صادر میکند، باید عبارت
email_typeوجود داشته باشد. این بخش مهمی از ویژگی دسترسی مهمان را تشکیل میدهد و اطلاعات ارزشمندی را برای KACLS فراهم میکند تا اقدامات امنیتی بیشتری را برای کاربران خارجی اعمال کند.- برخی از نمونههایی که KACLS چگونه میتواند از این اطلاعات استفاده کند عبارتند از:
- برای اعمال الزامات اضافی ثبت وقایع.
- محدود کردن صادرکننده توکن احراز هویت به یک شناسه مهمان اختصاصی.
- برای درخواست ادعاهای اضافی در مورد توکن احراز هویت.
- اگر مشتری دسترسی مهمان را پیکربندی نکرده باشد، تمام درخواستهایی که در آنها
email_typeرویgoogle-visitorیاcustomer-idpتنظیم شده باشد، میتوانند رد شوند. درخواستهایی کهemail_typeآنهاgoogleباشد یاemail_typeتنظیم نشده باشد، همچنان پذیرفته میشوند.
- وقتی توکن احراز هویت حاوی ادعای اختیاری
delegated_toباشد، باید شامل ادعایresource_nameنیز باشد و این دو ادعا باید با ادعاهایdelegated_toوresource_nameدر توکن مجوز مقایسه شوند. ادعاهایdelegated_toباید با استفاده از رویکردی غیرحساس به حروف کوچک و بزرگ مقایسه شوند وresource_nameموجود در توکنها بایدresource_nameعملیات مطابقت داشته باشد. - بررسی کنید که آیا ادعای
roleدر توکن مجوزreaderیاwriterاست یا خیر. - بررسی کنید که عبارت
kacls_urlدر توکن مجوز با URL فعلی KACLS مطابقت داشته باشد. این کار امکان شناسایی سرورهای بالقوهی man-in-the-middle که توسط افراد داخلی یا مدیران دامنهی جعلی پیکربندی شدهاند را فراهم میکند.
بخشهای زیر را با استفاده از یک الگوریتم رمزگذاری احراز هویت شده رمزگشایی کنید:
- کلید رمزگذاری دادهها (DEK)
- مقادیر
resource_nameوperimeter_idاز توکن مجوز - هرگونه اطلاعات حساس اضافی
بررسی کنید که
resource_nameدر توکن مجوز و blob رمزگشایی شده مطابقت داشته باشند.با استفاده از ادعاهای احراز هویت و مجوز، یک بررسی محیطی انجام دهید.
عملیات را ثبت کنید، از جمله نام کاربری که آن را آغاز کرده،
resource_nameو دلیل ارسال شده در درخواست.DEK بدون پوشش یا یک پاسخ خطای ساختاریافته را برگردانید.