بهطور پیشفرض، همه دادههای غیرفعال در Cloud Firestore بااستفاده از رمزگذاری پیشفرض Google رمزگذاری میشوند. Cloud Firestore این رمزگذاری را بدون هیچ اقدام اضافی ازجانب شما برایتان انجام میدهد و مدیریت میکند.
اگر الزامات نظارتی یا متابعت از خطمشی خاصی دررابطهبا کلیدهایی که از دادههایتان محافظت میکنند دارید، میتوانید از کلیدهای رمزگذاری تحت مدیریت مشتری (CMEK) برای Cloud Firestore استفاده کنید. بهجای اینکه Google کلیدهای رمزگذاری را که از دادههایتان محافظت میکند مدیریت کند، پایگاه داده Cloud Firestore شما بااستفاده از کلیدی که در Cloud Key Management Service (Cloud KMS) کنترل و مدیریت میکنید محافظت میشود.
این صفحه CMEK را برای Cloud Firestore شرح میدهد. برای اطلاعات بیشتر درباره CMEK بهطور کلی، ازجمله زمان و دلیل فعال کردن آن، به سند Cloud KMS زیر مراجعه کنید:
برای دستورالعملهای مربوط به انجام کارهای مرتبط با CMEK با Cloud Firestore، به استفاده از CMEK مراجعه کنید.
ویژگیها
- کنترل داده: CMEK به شما امکان میدهد کلید KMS را مدیریت کنید. میتوانید کلید استفادهشده برای رمزگذاری دادههای درحال سکون در پایگاه داده Cloud Firestore را بچرخانید، غیرفعال کنید، و ازبین ببرید.
- عملکرد: CMEK بر Cloud Firestore SLA تأثیر نمیگذارد.
- قابلیت ممیزی: اگر ثبت گزارش ممیزی را برای Cloud KMS فعال کنید، همه عملیات انجامشده روی کلید ثبت میشود و در Cloud Logging قابلمشاهده است.
- محدودیتهای خطمشی سازمان: میتوانید از محدودیتهای خطمشی سازمان CMEK برای مشخص کردن الزامات رعایت رمزگذاری برای پایگاههای داده Cloud Firestore در سازمانتان استفاده کنید.
قیمتگذاری
Cloud KMS هزینه کلید و هرگونه عملیات رمزنگاری انجامشده بااستفاده از آن کلید را دریافت میکند. برای اطلاعات بیشتر، به قیمتگذاری Cloud KMS مراجعه کنید.
هنگامی که Cloud Firestore از کلید Cloud KMS درخواست میکند تا عملیات رمزگذاری یا رمزگشایی را انجام دهد، هزینه عملیات برای شما صورتحساب میشود. عملیات رمزگذاری/رمزگشایی توسط کلید تحتمدیریت مشتری هر ۵ دقیقه یکبار انجام میشود و با درخواستهای پایگاه داده همگامسازی نمیشود. با توجه به تعداد موردانتظار عملیات رمزنگاری تولیدشده توسط Cloud Firestore، هزینهها معمولاً پایین است. هزینههای Cloud Audit Logs هزینه اضافی است، اما با توجه به تعداد موردانتظار عملیات رمزنگاری، انتظار میرود که بهطور کلی کم باشد.
هیچ هزینه Cloud Firestore اضافی برای استفاده از پایگاه داده محافظتشده با CMEK وجود ندارد و قیمتگذاری Cloud Firestore همچنان اعمال میشود.
اگر کلیدتان را برای پایگاه داده لغو کنید، هزینه فضای ذخیرهسازی براساس اندازه آخرین روزی که کلید دردسترس بوده است محاسبه میشود. تا زمانی که پایگاه داده حذف نشود یا کلید دوباره دردسترس قرار نگیرد، همچنان هزینههای فضای ذخیرهسازی را با آن اندازه پایگاه داده متحمل خواهید شد.
چه چیزهایی با CMEK محافظت میشود
وقتی پایگاه داده محافظتشده با Cloud Firestore CMEK ایجاد میکنید، از کلید Cloud KMS شما برای محافظت از دادههای غیرفعال استفاده میشود. این شامل دادههایی است که در دیسک یا حافظه فلش ذخیره میکنید، ازجمله نمایهها و نسخههای پشتیبان. برخی استثناها اعمال میشود. انواع دادههای زیر با رمزگذاری پیشفرض Google رمزگذاری میشوند و نه با کلید CMEK:
- دادههای درحال انتقال یا در حافظه
- فراداده پایگاه داده
نحوه رسیدگی به وضعیت کلید دردسترسنبودن
عملیات رمزگذاری و رمزگشایی برای هر درخواست داده صادر نمیشود. درعوض، سیستم Cloud Firestore هر ۵ دقیقه Cloud KMS را نظرسنجی میکند تا بررسی کند که آیا کلید هنوز دردسترس است یا نه و سپس اگر کلید دردسترس باشد، عملیات رمزگذاری و رمزگشایی را انجام میدهد.
اگر سیستم تشخیص دهد که کلید دردسترس نیست، ظرف ۱۰ دقیقه، هرگونه فراخوانی بعدی به پایگاه داده Cloud Firestore، ازجمله خواندن، نوشتن، و پُرسمان، خطای FAILED_PRECONDITION را با پیام The customer-managed encryption key required by the requested
resource is not accessible برمیگرداند.
اگر پایگاه داده خطمشیهای زمان بقا (TTL) داشته باشد و اگر در زمانی که کلید دردسترس نیست زمان انقضایی بهپایان برسد، حذف داده توسط TTL تا زمانی که کلید بازگردانده شود بهتأخیر خواهد افتاد. اگر پایگاه داده عملیات طولانیمدت درحال اجرا داشته باشد، بهصورت زیر تحتتأثیر قرار میگیرد:
- عملیات وارد کردن یا صادر کردن دادهها متوقف میشود و بهعنوان
Failedعلامتگذاری میشود. اگر کلید بازگردانده شود، عملیات ناموفق دوباره امتحان نخواهد شد. - عملیات ساخت نمایه و عملیات فعالسازی خطمشیهای جدید TTL دیگر پیشرفت نخواهند کرد. اگر کلید بازگردانده شود، عملیات متوقفشده دوباره امتحان خواهد شد.
کلیدها در هر شرایطی که عمداً به Cloud Firestore اجازه دسترسی به کلید داده نشود، غیرقابلدسترس درنظر گرفته میشوند. ازجمله:
- غیرفعال کردن یا نابود کردن نسخه کلید درحال استفاده. هنگام ازبین بردن نسخه کلید مراقب باشید، زیرا این کار میتواند باعث ازدست رفتن غیرقابلبازیابی دادهها شود.
- درحال برداشتن اجازه دسترسی به کلید از حساب سرویس Cloud Firestore.
اگر کلید بازگردانده شود، عملیات نظرسنجی تشخیص میدهد که کلید دوباره دردسترس است. دسترسی دوباره فعال میشود، معمولاً ظرف چند دقیقه، اما در موارد نادر ممکن است تا چند ساعت طول بکشد. توجه داشته باشید که برخیاز عملیات روی کلیدهای Cloud KMS، مانند غیرفعال کردن یا ازبین بردن کلید، ممکن است تا ۳ ساعت طول بکشد تا منتشر شود. Cloud Firestore تا زمانی که تغییرات در Cloud KMS اعمال نشود، آنها را شناسایی نمیکند.
بازگرداندن کلید شامل موارد زیر است که به وضعیت بستگی دارد:
- فعال کردن مجدد نسخه کلید غیرفعالشده.
- بازیابی نسخه کلید تخریبشده. پیشاز نابودی دائمی، نسخه کلید برای نابودی زمانبندی میشود. فقط در دورهای که نسخه کلید برای تخریب زمانبندی شده است میتوانید کلید را بازیابی کنید. نمیتوانید کلیدی را که قبلاً برای همیشه نابود شده است بازیابی کنید.
- اعطای مجدد اجازه دسترسی به کلید به عامل سرویس Cloud Firestore.
ملاحظات تغییر کلید
وقتی کلید CMEK را میچرخانید، Cloud Firestore پایگاه داده را با جدیدترین نسخه اصلی کلید CMEK دوباره رمزگذاری میکند. درطول فرایند بازرمزگذاری، هم نسخه کلید قدیمی و هم نسخه کلید جدید را دردسترس نگه دارید. پساز تکمیل رمزگذاری مجدد، غیرفعال کردن یا حذف نسخههای قدیمی کلید CMEK دسترسی به پایگاه داده را غیرفعال نمیکند زیرا با نسخه کلید اصلی جدید رمزگذاری شده است.
همچنین میتوانید نسخههای کلیدی را که برای محافظت از پایگاه داده استفاده میشود مشاهده کنید. برای اطلاعات بیشتر، مشاهده کلید درحال استفاده را ببینید.
ملاحظات کلیدی خارجی
وقتی از کلید Cloud EKM استفاده میکنید، Google هیچ کنترلی بر دردسترس بودن کلید مدیریتشده خارجی شما در سیستم شریک مدیریت کلید خارجی ندارد.
اگر کلید مدیریتشده خارجی دردسترس نباشد، Cloud Firestore تا یک ساعت به پشتیبانی از عملیات کامل پایگاه داده بر مبنای بهترین تلاش ادامه میدهد.
پساز یک ساعت، اگر Cloud Firestore همچنان نتواند به Cloud KMS متصل شود، Cloud Firestore بهعنوان اقدامی محافظتی، پایگاه داده را آفلاین میکند. تماسها با پایگاه داده با خطای FAILED_PRECONDITION که شامل جزئیات بیشتر است ناموفق خواهد بود.
برای اطلاعات بیشتر درباره استفاده از کلیدهای خارجی، به اسناد Cloud External Key Manager مراجعه کنید.
پشتیبانگیری و بازیابی
نسخه پشتیبان از همان سازوکار رمزگذاری پایگاه دادهای استفاده میکند که از آن ایجاد شده است. وقتی پایگاه داده Cloud Firestore محافظتشده با CMEK نسخه پشتیبان ایجاد میکند، نسخه پشتیبان را با نسخه کلید اصلی استفادهشده در زمان ایجاد نسخه پشتیبان رمزگذاری میکند.
Cloud Firestore اولین پشتیبانگیری از پایگاه داده CMEK را ۲۴ ساعت پساز فعال کردن زمانبندیهای پشتیبانگیری ایجاد میکند.
برای اطلاعات بیشتر درباره پشتیبانگیریهای Cloud Firestore، به پشتیبانگیری و بازیابی دادهها مراجعه کنید.
پایگاه دادهای که از نسخه پشتیبان بازیابی شده است، بهطور پیشفرض از همان سازوکار رمزگذاری نسخه پشتیبان استفاده میکند. وقتی پایگاه دادهای را بازیابی میکنید، میتوانید نوع رمزگذاری متفاوتی را به یکی از روشهای زیر مشخص کنید:
- بازیابی در پایگاه داده CMEK با کلید جدید مشخصشده.
- بازیابی در پایگاه داده غیر CMEK که از رمزگذاری پیشفرض Google استفاده میکند.
- به پایگاه دادهای بازیابی کنید که از همان رمزگذاری نسخه پشتیبان استفاده میکند.
برای اطلاعات بیشتر درباره بازیابی پایگاه داده Cloud Firestore از نسخه پشتیبان، بازیابی دادهها از نسخه پشتیبان پایگاه داده را ببینید. برای اطلاعات بیشتر درباره بازیابی پایگاه داده Cloud Firestore محافظتشده با «کلید رمزگذاری مدیریتشده توسط مشتری» از نسخه پشتیبان، به بازیابی پایگاه داده محافظتشده با «کلید رمزگذاری مدیریتشده توسط مشتری» مراجعه کنید.
همسانهسازی
بهطور پیشفرض، پایگاه دادهای که از پایگاه داده دیگری کلون شده است از همان سازوکار رمزگذاری پایگاه داده منبع استفاده میکند. وقتی پایگاه دادهای را شبیهسازی میکنید، میتوانید نوع رمزگذاری متفاوتی را به یکی از روشهای زیر مشخص کنید:
- با کلید جدیدی که مشخص شده است، به پایگاه داده CMEK کلون کنید.
- به پایگاه داده غیر CMEK که از رمزگذاری پیشفرض Google استفاده میکند کلون کنید.
- (پیشفرض) کلون کردن به پایگاه دادهای که از همان رمزگذاری پایگاه داده منبع استفاده میکند.
برای اطلاعات بیشتر درباره شبیهسازی پایگاه داده Cloud Firestore، به شبیهسازی پایگاه داده مراجعه کنید. برای کسب اطلاعات بیشتر درباره کلون کردن پایگاه داده Cloud Firestore محافظتشده با CMEK، به کلون کردن پایگاه داده محافظتشده با CMEK مراجعه کنید.
ردگیری کلید
میتوانید از ردیابی کلید برای مشاهده منابعی که کلید از آنها محافظت میکند، برای مثال Cloud Firestore پایگاههای داده، استفاده کنید. برای اطلاعات بیشتر درباره ردیابی کلید، به مشاهده استفاده از کلید مراجعه کنید.
CMEK و دردسترس بودن کلید
وقتی کلیدها دردسترس یا فعال نیستند، از رفتارهای زیر که ممکن است در پایگاههای داده فعالشده با CMEK رخ دهد آگاه باشید:
- میتوانید تنظیمات بازیابی نقطهزمانی (PITR) Cloud Firestore را در پایگاه داده فعالشده با CMEK تغییر دهید، حتی اگر کلید دردسترس نباشد، زیرا تنظیمات PITR فراداده پایگاه داده است که توسط CMEK رمزگذاری نمیشود.
- میتوانید پایگاه داده CMEK را که کلیدهای غیرقابلدسترس دارد حذف کنید.
- وقتی پایگاه دادهای با قابلیت CMEK ایجاد میکنید، کلیدهای غیرفعالشده در فهرست کلیدهای دردسترس در کنسول Google Cloud نشان داده نمیشوند. اگر کلید غیرفعالشدهای را بهصورت دستی وارد کنید، فرایند ایجاد پایگاه داده با خطای
FAILED_PRECONDITION400 ناموفق خواهد بود.
محدودیتها
- نمیتوانید کلید پایگاه داده محافظتشده با CMEK را تغییر دهید. میتوانید کلیدها را بچرخانید، فعال، و غیرفعال کنید.
- پایگاههای داده محافظتشده با CMEK از Key Visualizer فقط برای دادههای سند و نهاد پشتیبانی میکنند، نه برای دادههای نمایه.
- نمیتوانید CMEK را در پایگاههای داده موجود فعال کنید. فقط در پایگاههای داده جدید میتوانید CMEK را فعال کنید و باید آن را هنگام ایجاد پایگاه داده فعال کنید. برای انتقال دادهها در پایگاه داده غیر-CMEK موجود به پایگاه داده محافظتشده با CMEK، دادههایتان را صادر کنید و سپس دادهها را به پایگاه داده محافظتشده با CMEK جدید وارد کنید. همچنین میتوانید دادهها را از پایگاه داده غیر CMEK به پایگاه داده CMEK بازیابی یا کلون کنید.
- Cloud Firestore از تعداد محدودی پایگاه داده محافظتشده با CMEK پشتیبانی میکند.
- از محافظت CMEK با ادغام Cloud Functions (نسل اول) پشتیبانی نمیکنیم. اگر میخواهید محافظت CMEK داشته باشید، از Cloud Run توابع Firestore Triggers (نسل دوم) استفاده کنید.
چگونه دادهها میتوانند از پایگاههای داده محافظتشده با CMEK خارج شوند
دادههای کپیشده توسط برنامه شما میتواند به روشهای دلخواه توسط کاربران آن ذخیره شود. برای هر برنامهای که به دادههای Cloud Firestore دسترسی دارد، کنترلهای امنیتی مناسب لازم است تا اطمینان حاصل شود که فقط افراد دارای مجوز مناسب به دادهها دسترسی دارند. برای جزئیات بیشتر، قوانین امنیتی و IAM را ببینید.
دادههای پایگاه داده محافظتشده با CMEK را میتوان بااستفاده از پشتیبانگیری و بازیابی، کلون کردن، یا وارد کردن و صادر کردن به پایگاه داده بدون CMEK منتقل کرد. از کنترلهای IAM مناسب استفاده کنید تا فقط به کاربران مجاز اجازه انجام این کنشها را بدهید. علاوهبراین، میتوان از محدودیتهای خطمشی سازمان CMEK استفاده کرد تا الزامی شود که هر پایگاه دادهای که با بازیابی یا شبیهسازی ایجاد میشود و هر دسته Cloud Storage که برای «وارد کردن» استفاده میشود، با CMEK محافظت شود.