1. مقدمة
في السابق، كانت مفاتيح Google API تُستخدَم للوصول إلى واجهات Google API عندما لا تتوفّر طرق أخرى أو تُعتبر غير ملائمة. كانت حالات الاستخدام الشائعة هي الوصول إلى Google Maps API وواجهات Google API التي تعرضها Firebase. مع طرح نماذج الذكاء الاصطناعي، وبرامج الذكاء الاصطناعي مثل Gemini، وأطر عمل تطوير الذكاء الاصطناعي مثل Agent Development Kit وAI Studio، أصبحت مفاتيح واجهة برمجة التطبيقات طريقة أساسية للوصول إلى نماذج اللغة الكبيرة من Google.
توفر مفاتيح واجهة برمجة التطبيقات مستوى منخفضًا من الحماية. على الرغم من أنّ Google Cloud توفّر عدة طرق لمنع إساءة استخدام المفاتيح، يتيح امتلاك مفتاح API نشط الوصول إلى واجهات Google API بدون أي عمليات تحقّق إضافية من المصادقة أو التفويض. يتم توضيح طرق حظر استخدام مفاتيح واجهة برمجة التطبيقات في المستندات. تقدّم مشاركة المدوّنة تأمين مفاتيح Gemini وGoogle API في مدوّنة Cloud Blog اقتراحات إضافية بشأن صيانة مفاتيح واجهة برمجة التطبيقات. في هذا الدرس التطبيقي حول الترميز، ستطبّق هذه الاقتراحات.
الإجراءات التي ستنفذّها
- مراجعة القيود المفروضة عند إنشاء مفاتيح جديدة لواجهة برمجة التطبيقات على Google Cloud
- فهرسة جميع مفاتيح واجهة برمجة التطبيقات والعثور على المفاتيح التي لا تتضمّن حماية أمنية
- فرض قيود على مفاتيح واجهة برمجة التطبيقات الحالية استنادًا إلى استخدامها
- تحديد عملية التشغيل الآلي التي تحذف المفتاح في حال الاستخدام غير الطبيعي
المتطلبات
- متصفّح ويب حديث (مثل Chrome)
- حساب على Google
2. الإعداد
تفترض التعليمات الواردة في هذا الدرس التطبيقي حول الترميز أنّك تنفّذ الأوامر في Cloud Shell ضِمن Google Cloud Console. إذا كان لديك gcloud CLI في بيئتك المحلية، يمكنك تنفيذ الأوامر هناك.
على الرغم من إمكانية تنفيذ العمليات في الخطوات باستخدام واجهة مستخدم Cloud Console، إلا أنّ الطرق مختلفة. يستخدم هذا الدرس التطبيقي حول الترميز واجهة سطر الأوامر لتبسيط التفاعلات وتسهيل الدمج مع وكلاء الذكاء الاصطناعي الحديث (مثل Antigravity CLI).
بدء نافذة Cloud Shell
- افتح Google Cloud Console باستخدام https://console.cloud.google.com/ في نافذة متصفّح جديدة. ننصح باستخدام Chrome للحصول على أفضل تجربة للمستخدم.
- سجِّل الدخول إلى حساب Google في Google Cloud.
- انقر على تفعيل Cloud Shell
في أعلى "وحدة تحكّم Google Cloud".
إذا ظهرت، انقر على النوافذ التالية:- تابِع من خلال نافذة معلومات Cloud Shell.
- امنح Cloud Shell الإذن باستخدام بيانات الاعتماد لإجراء طلبات إلى Google Cloud API.
اختيار مشروع على السحابة الإلكترونية من Google Cloud
بعد فتح Cloud Console، يتم إثبات هويتك، وعادةً ما يكون هناك خيار لاختيار مشروعك. رقم تعريف المشروع هو تسلسل من 6 إلى 30 حرفًا صغيرًا وأرقام ورموز شرطة، مثل qwiklabs-gcp-04-3075fc9fd77f. يضبط طرفية Cloud Shell واجهة سطر الأوامر gcloud باستخدام المشروع الذي تم اختياره. ستظهر لك نتيجة مماثلة لما يلي:
Your Cloud Platform project in this session is set to qwiklabs-gcp-04-3075fc9fd77f
وهذا يعني أنّ الأوامر اللاحقة التي ستصدرها إلى gcloud ستستخدم رقم تعريف المشروع qwiklabs-gcp-04-3075fc9fd77f.
اضبط رقم تعريف المشروع كمتغيّر بيئة PROJECT_ID. يمكنك الاطّلاع على قائمة بجميع مشاريعك باستخدام الأمر التالي:
gcloud projects list
- استبدِل
your-project-idونفِّذ الأمر إذا أردت استخدام رقم تعريف مشروع مختلف عن الرقم الذي تم إعداده فيgcloud. على سبيل المثال:export PROJECT_ID="your-project-id"export PROJECT_ID="qwiklabs-gcp-04-3075fc9fd77f" - نفِّذ الأمر التالي إذا كنت تريد استخدام رقم تعريف المشروع المحدّد:
export PROJECT_ID=$(gcloud config get project)
3- فرض قيود على مفتاح واجهة برمجة تطبيقات جديد
في السابق، كان بإمكان المستخدمين إنشاء مفاتيح API غير مقيّدة تمامًا. يمكن استخدام المفاتيح غير المقيدة لطلب أي واجهة Google API مفعّلة في المشروع الذي تم إنشاء المفتاح فيه. على الرغم من أنّ وحدة تحكّم Google Cloud تمنع المستخدمين من إنشاء مفاتيح غير مقيّدة، لا يزال من الممكن إنشاء هذه المفاتيح باستخدام واجهة سطر الأوامر gcloud أو باستخدام طلبات مباشرة إلى واجهة برمجة التطبيقات.
توضّح الخطوات التالية كيفية إنشاء مفتاح API مقيّد يقتصر استخدامه على واجهة API معيّنة وموقع إلكتروني محدّد.
- لإنشاء مفتاح واجهة برمجة تطبيقات جديد يقتصر استخدامه على واجهة برمجة التطبيقات لتحديد الموقع الجغرافي في "خرائط Google"، نفِّذ الأمر التالي في الوحدة الطرفية:
ينشئ هذا الأمر مفتاح API جديدًا يمكن استخدامه فقط لاستدعاء خدمة تحديد الموقع الجغرافي في "خرائط Google".gcloud services api-keys create --key-id=restricted-api-key \ --display-name="restricted api key" \ --api-target=service=geolocation.googleapis.com \ --project=${PROJECT_ID} - يمكنك تعزيز أمان المفتاح من خلال إضافة قيود على التطبيق. يجب حصر استخدام المفتاح على جميع المسارات داخل الموقع الإلكتروني
example.comفقط. نفِّذ الأمر التالي لإضافة قيود التطبيق إلى المفتاح: بدلاً من السماح باستخدام المفتاح لمواقع إلكترونية معيّنة، يمكنك استخدامgcloud services api-keys update restricted-api-key \ --location=global \ --allowed-referrers="example.com/*" \ --project=${PROJECT_ID}--allowed-applicationلتحديد تطبيقات Android المسموح بها أوallowed-ipsلتحديد عناوين IP المسموح بها. يمكنك الرجوع إلى المستندات الكاملة للاطّلاع على جميع الخيارات.
تَنظيم
احذف مفتاح واجهة برمجة التطبيقات الذي أنشأته ما لم تكن تخطّط لاستخدامه:
gcloud services api-keys delete --key-id=restricted-api-key \
--project=${PROJECT_ID}
4. تصنيف مفاتيح واجهة برمجة التطبيقات
في هذه الخطوة، ستستخدِم gcloud CLI للحصول على قائمة بمفاتيح واجهة برمجة التطبيقات. تعرض القائمة الناتجة جميع مفاتيح واجهة برمجة التطبيقات النشطة (غير المحذوفة) التي يمكنك الوصول إليها.
- نفِّذ الأمر التالي للاطّلاع على جميع أسماء المفاتيح ومعرّفاتها وتواريخ إنشائها:
سيعرض الناتج اسم المفتاح القابل للقراءة ورقم تعريف المفتاح وتاريخ إنشائه. سيكون مشابهًا لما يلي:gcloud services api-keys list --project=${PROJECT_ID} \ --format='value(displayName,name.basename(),createTime.date())'api key 1 api-key-1 2024-05-10T07:53:24 api key 2 api-key-2 2025-06-12T14:47:57
- اختَر أحد معرّفات المفاتيح والصِق الأمر التالي للتحقّق مما إذا كانت المفتاح يتضمّن أي قيود. استبدِل
your-key-idبقيمة معرّف المفتاح المحدّد:gcloud services api-keys describe "your-key-id" --project=${PROJECT_ID}
سيتضمّن الناتج (بتنسيق YAML) قائمة بالقيود ضمن restrictions.
createTime: '2024-05-10T07:53:24.986528Z'
displayName: api key 1
etag: W/"u1WuY41K2tPKUZd7cfLoKg=="
name: projects/123456789012/locations/global/keys/api-key-1
restrictions:
apiTargets:
- service: geolocation.googleapis.com
browserKeyRestrictions:
allowedReferrers:
- https://example.com/*
uid: 1a2b3c4d-1234-abcd-1234-a1b2c3d4e5f6
updateTime: '2024-05-10T07:53:24.071228Z'
يُرجى العِلم أنّه إذا لم يتم تعديل المفتاح مطلقًا، سيتضمّن الحقلان createTime وupdateTime الطابع الزمني نفسه.
- نزِّل البرنامج النصي الذي يتنقّل بين جميع مشاريعك وشغِّله، ثم اطبع جميع مفاتيح واجهة برمجة التطبيقات التي لا تتضمّن أي قيود:
بعد تنفيذ النص البرمجي، ستظهر لك نتيجة على النحو التالي:curl -fsSL -o unrestricted_api_keys.sh \ "https://github.com/GoogleCloudPlatform/devrel-demos/blob/main/security/api-key-audit/unrestricted_api_keys.sh" chmod +x unrestricted_api_keys.sh ./unrestricted_api_keys.sh يمكنك العثور على جميع النصوص البرمجية المستخدَمة في هذا الدرس العملي في مجلد الأمان في مستودع devrel-demos على GitHub.DISPLAY NAME KEY ID PROJECT ID CREATION DATE Key 1 1a2b3c4d-1234-abcd-1234-a1b2c3d4e5f6 my-project-1 2024-05-10T07:53:24.071228Z
5- التعرّف على استخدام مفتاح واجهة برمجة التطبيقات
في هذه الخطوة، ستطلب مقاييس Google Cloud التي تساعدك في العثور على واجهات برمجة التطبيقات التي تم طلبها باستخدام مفتاح واجهة برمجة التطبيقات. باستخدام هذه المعلومات، يمكنك مراجعة الاستخدام الحالي للمفاتيح وتطبيق قيود على المفتاح استنادًا إلى معلومات فعلية بدلاً من التخمين.
- استخدِم معرّف المفتاح نفسه الذي استخدمته في الخطوة السابقة أو اختَر معرّف مفتاح آخر. استبدِل
your-key-idبرقم تعريف المفتاح الذي اخترته في الأمر التالي:export KEY_UID=$( gcloud services api-keys describe "your-key-id" \ --format='value(uid)' \ --project=${PROJECT_ID}) - اضبط البحث على سجلّ الاستخدام لمدة عام واحد. إذا كنت تريد البحث عن فترة زمنية أطول أو أقصر، استبدِل
365(عدد الأيام) برقم موجب آخر.export DAYS=365 - أعِد تحميل بيانات الاعتماد التلقائية للتطبيق (ADC) لتفعيل الطلب المباشر إلى Cloud Monitoring API. نفِّذ الأمر التالي واتّبِع التعليمات في الوحدة الطرفية:
gcloud auth application-default login - نفِّذ الأمر التالي لإرسال طلب بيانات مقاييس استخدام الخدمة إلى Cloud Monitoring API:
curl -s -G -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
--data-urlencode "filter=metric.type=\"serviceruntime.googleapis.com/api/request_count\" AND resource.labels.credential_id=\"apikey:${KEY_UID}\"" \
--data-urlencode "interval.startTime=$(date -u -d "${DAYS} days ago" +%Y-%m-%dT%H:%M:%SZ)" \
--data-urlencode "interval.endTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
"https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/timeSeries" \
| jq -r '.timeSeries[]?.resource.labels.service' | sort -u
يستعلم الأمر عن المقياس المضمّن serviceruntime/api/request_count لنقاط البيانات التي تحمل التصنيف credential_id والتي تطابق المعرّف الفريد لمفتاح واجهة برمجة التطبيقات المحدّد. بعد ذلك، تسترد القيم الخاصة بالتصنيف service وتطبع القيم مع إزالة التكرارات.
تعزيز أمان مفتاح واجهة برمجة التطبيقات
في هذه الخطوة، ستستخدم المعلومات التي تم جمعها في الخطوات السابقة لتعديل إعدادات القيود لمفتاح واجهة برمجة التطبيقات استنادًا إلى معلومات الاستخدام.
ستستخدِم مفتاح واجهة برمجة التطبيقات نفسه الذي تم استخدامه في الخطوة السابقة. إذا لزم الأمر، أعِد تنفيذ التعليمات من الخطوات السابقة للتأكّد من ضبط متغيّرات البيئة PROJECT_ID وKEY_UID وDAYS.
- نفِّذ الأمر التالي لاسترداد قائمة واجهات Google API التي تم استدعاؤها باستخدام مفتاح واجهة برمجة التطبيقات:
SERVICES=$(curl -s -G -H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
–data-urlencode "filter=metric.type="serviceruntime.googleapis.com/api/request_count" AND resource.labels.credential_id="apikey:${KEY_UID}""
–data-urlencode "interval.startTime=$(date -u -d "${DAYS} days ago" +%Y-%m-%dT%H:%M:%SZ)"
–data-urlencode "interval.endTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)"
"https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/timeSeries"
| jq -r ‘.timeSeries[]?.resource.labels.service' | sort -u)
1. Build the list of arguments to restrict the API usage for the API key based
on the retrieved list.
```shell
API_TARGET_ARGS=()
for SERVICE in $SERVICES; do
API_TARGET_ARGS+=("--api-target=service=${SERVICE}")
done
- استبدِل قائمة واجهات برمجة التطبيقات المحظورة بالقائمة غير الفارغة:
if [ ${#API_TARGET_ARGS[@]} -gt 0 ]; then gcloud services api-keys update "projects/${PROJECT_ID}/locations/global/keys/${KEY_UID}" \ ${API_TARGET_ARGS} fi
6. تحديد ميزة "رصد الاستخدام غير الطبيعي"
أوضحت الخطوات السابقة كيفية استكشاف مفاتيح واجهة برمجة التطبيقات وتعزيز أمانها. توضّح هذه الخطوة كيفية برمجة استجابة لارتفاع غير متوقّع في استخدام المفتاح بمساعدة تنبيهات المراقبة.
تنشئ التعليمات التالية تنبيهًا يتم إطلاقه عندما يزداد معدّل طلبات البيانات من واجهة برمجة التطبيقات التي تستخدم مفتاح واجهة برمجة التطبيقات بأكثر من% 10 خلال آخر 5 دقائق. تم ضبط التنبيه لتشغيل برنامج نصي في Cloud Build يحذف مفتاح واجهة برمجة التطبيقات لمنع استخدامه في المستقبل. يمكن استعادة المفتاح خلال الأيام الـ 30 المقبلة. يمكنك الاطّلاع على المستندات لمعرفة كيفية استرداد المفتاح.
تعيد التعليمات استخدام المتغيّرين PROJECT_ID وKEY_UID اللذين استخدمتهما في الخطوات السابقة. إذا أردت اختيار مفتاح و/أو مشروع مختلفَين، اضبط القيم الجديدة لهذين المتغيّرَين كما هو موضّح في خطوات إعداد مفتاح واجهة برمجة التطبيقات والتعرّف على استخداماته.
- شغِّل النص البرمجي التالي لإنشاء ملف سياسة تنبيه:
تستخدم سياسة التنبيه فلتر PromQL التالي لتفعيل التنبيه:cat <<EOF > alert_policy.json { "displayName": "Credential API Request Count Increase Alert (Project: ${PROJECT_ID})", "combiner": "OR", "conditions": [ { "displayName": "API Request Count Increase > 10% in 5m with Min Volume", "conditionPrometheusQueryLanguage": { "query": "(sum(increase(serviceruntime_googleapis_com:api_request_count{metric_label_credential_id=\\"apikey:${KEY_UID}\\"}[5m])) / (sum(increase(serviceruntime_googleapis_com:api_request_count{metric_label_credential_id=\\"apikey:${KEY_UID}\\"}[5m] offset 5m)) or on() vector(1)) > 1.10) and (sum(increase(serviceruntime_googleapis_com:api_request_count{metric_label_credential_id=\\"apikey:${KEY_UID}\\"}[5m])) > 50)", "duration": "0s", "evaluationInterval": "60s" } } ], "enabled": true } EOF تحسب هذه السمة معدّل الزيادة وتقارنه بفترة سابقة. ولا يتم إطلاق التنبيه إلا إذا كانت الزيادة أكبر من% 10. لتجنُّب إطلاق التنبيه عندما يكون إجمالي عدد الطلبات من واجهة برمجة التطبيقات ضئيلاً، يشترط إطلاق التنبيه أن يكون هناك أكثر من 50 طلبًا من واجهة برمجة التطبيقات في الفترة الزمنية المحدّدة. لتجنُّب احتساب(sum( increase( serviceruntime_googleapis_com:api_request_count{metric_label_credential_id="API_KEY_UID"}[5m]) ) / (sum( increase( serviceruntime_googleapis_com:api_request_count{metric_label_credential_id="API_KEY_UID"}[5m] offset 5m) ) or on() vector(1)) > 1.10) and (sum( increase( serviceruntime_googleapis_com:api_request_count{metric_label_credential_id=\"YOUR_CREDENTIAL_ID_HERE\"}[5m])) > 50)NaN(الحذف بالصفر) عندما يكون معدّل الـ 5 دقائق السابق هو 0، يتم استبدال المقام بـ 1 إذا كان معدّل الفترة السابقة صفرًا.يمكنك تغيير مَعلمات التنبيه، مثل طول الفترة (5m) أو الحد الأدنى (50) أو حد الزيادة بنسبة% 10 (1.10).تحدّد مَعلمات السياسة الإضافية أنّه عند استيفاء الشرط، يجب إطلاق التنبيه (duration) وأنّه يجب التحقّق من الشرط كل 60 ثانية (evaluationInterval). - نفِّذ الأمر التالي لإنشاء موضوع PubSub سيتم استخدامه لنشر إشعارات التنبيه:
gcloud pubsub topics create api-key-alert-notifications --project=$PROJECT_ID - نفِّذ الأمر التالي لإنشاء قنوات إشعارات للتنبيهات التي تستخدم PubSub.
ستستخدم متغيّر البيئةCHANNEL_NAME=$(gcloud beta monitoring channels create \ --display-name="Pub/Sub Alert Channel" \ --type="pubsub" \ --channel-labels="topic=projects/$PROJECT_ID/topics/api-key-alert-notifications" \ --format='value(name)' \ --project=$PROJECT_ID)CHANNEL_NAMEفي خطوة "التنظيف". - نفِّذ الأمر التالي لإنشاء تنبيه مراقبة جديد:
gcloud monitoring policies create --policy-from-file=alert_policy.json \ --project=$PROJECT_ID - نفِّذ الأمر التالي لمنح خدمة Cloud Build أذونات لحذف مفاتيح واجهة برمجة التطبيقات في المشروع.
يمكن حصر دورPROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)") gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \ --role="roles/apikeys.admin"apikeys.adminعلى تعديل مثيل معيّن فقط من مفاتيح واجهة برمجة التطبيقات. يمكنك الاطّلاع على شروط إدارة الهوية وإمكانية الوصول لمزيد من التفاصيل. - شغِّل النص البرمجي التالي لإنشاء مشغّل Cloud Build يحذف مفتاح واجهة برمجة التطبيقات.
cat <<EOF > trigger_config.yaml name: "delete-compromised-api-key" description: "Triggered by Pub/Sub alert to automatically delete the leaking API Key" pubsubConfig: topic: "projects/${PROJECT_ID}/topics/api-key-alert-notifications" build: steps: - name: "gcr.io/google.com/cloudsdktool/cloud-sdk:slim" args: - "gcloud" - "services" - "api-keys" - "delete" - "${KEY_UID}" - "--quiet" EOF - نفِّذ الأمر التالي لإنشاء مشغّل تنبيه مراقبة جديد:
gcloud builds triggers create pubsub \ --trigger-config=trigger_config.yaml \ --project=$PROJECT_ID
يمكنك الآن حذف ملفات إعداد سياسة التنبيه ومشغّل Cloud Build:
rm alert_policy.json trigger_config.yaml
بدلاً من ذلك، يمكنك إعداد عملية التشغيل الآلي هذه باستخدام خطة Terraform. نزِّل ملفات Terraform من مجلد abnormal-usage-detection في مستودع Google Cloud DevRel. تقبل الخطة رقم تعريف مشروع ومعرّف فريد لمفتاح واجهة برمجة التطبيقات كمعلَمات إدخال، وتُعدّ الموارد وعمليات الضبط التي رأيتها في هذه الخطوة.
7. تَنظيم
لتجنُّب تكبُّد رسوم غير متوقّعة في حسابك على Google Cloud، تذكَّر حذف موضوع Pub/Sub ومشغّل Cloud Build وسياسات التنبيه التي تم إنشاؤها أثناء هذا التمرين.
نفِّذ الأوامر التالية لحذف جميع الموارد التي أنشأتها:
gcloud builds triggers delete delete-compromised-api-key \
--project=$PROJECT_ID
gcloud beta monitoring channels delete $CHANNEL_NAME \
--project=$PROJECT_ID \
--quiet
gcloud pubsub topics delete api-key-alert-notifications \
--project=$PROJECT_ID
gcloud projects remove-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \
--role="roles/apikeys.admin"
8. ملخّص
في هذا الدرس التطبيقي حول الترميز، نفّذت إطار عمل قويًا وشاملاً للأمان والتشغيل الآلي لمفاتيح Google Cloud API:
- الإعدادات التلقائية المحسّنة: أنشأت مفاتيح واجهة برمجة التطبيقات وقصرت استخدامها على واجهات برمجة التطبيقات الضرورية والمنصات الموثوق بها فقط (مثل برامج الإحالة عبر HTTP معيّنة).
- تدقيق "مستودع المفاتيح": تم فحص بيئات مشروعك لرصد المفاتيح غير المقيدة التي تشكّل خطرًا أمنيًا مباشرًا وعزلها.
- بيانات الاستخدام التي تم تحليلها: طلبت بيانات مقاييس Cloud Monitoring آليًا لإنشاء ملفات تعريف لاستخدام المفاتيح السابقة، ما يتيح لك حصر المفاتيح استنادًا إلى آثار الاستخدام التي تم التحقّق منها.
- الحدّ من التهديدات آليًا: أنشأت "قاطع دائرة" تفاعليًا من خلال ربط سياسة تنبيه في Cloud Monitoring بموضوع Pub/Sub ومشغّل Cloud Build، ما يتيح لك حذف المفاتيح المخترَقة تلقائيًا أثناء الارتفاعات غير الطبيعية في عدد الزيارات.
الخطوات التالية
- تطبيق قيود على جميع مفاتيح واجهة برمجة التطبيقات: استخدِم ما تعلّمته في هذا المختبر لرصد جميع مفاتيح واجهة برمجة التطبيقات التي تم فرض قيود جزئية عليها أو لم يتم فرض أي قيود عليها، ثم طبِّق قيودًا على واجهة برمجة التطبيقات والعميل.
- إعداد "قاطع الدائرة الكهربائية" على مفاتيح واجهة برمجة التطبيقات: يمكنك حماية مفاتيح واجهة برمجة التطبيقات بشكل أكبر من الاستخدام غير المتوقّع من خلال إعداد حذف تلقائي للمفاتيح في حال حدوث زيادة مفاجئة في الاستهلاك. استخدِم أوامر
gcloudأو Terraform الموضّحة في الدرس التطبيقي. ننصحك بتشديد الأذونات من خلال استخدام شروط إدارة الهوية وإمكانية الوصول. - استكشاف التنبيهات في المراقبة: يمكنك الاطّلاع على مزيد من المعلومات عن إعداد التنبيهات باستخدام خدمة Google Cloud Monitoring.
- مزيد من المعلومات حول التحكّم في الوصول المتاح في Google Cloud: راجِع سياسات حدود الوصول ونقل تغييرات أذونات الوصول.