حسابات الخدمة

حساب الخدمة هو حساب مرتبط بتطبيق بدلاً من المستخدم النهائي. قد تحتاج إلى استخدام حساب خدمة للمصادقة على Earth Engine إذا كنت تُطوّر تطبيقًا أو تستخدم واجهة برمجة التطبيقات REST API. مزيد من المعلومات حول المصادقة باستخدام حسابات الخدمات

إنشاء حساب خدمة

أولاً، أنشئ مشروعًا على Google Cloud إذا لم يسبق لك ذلك.

يمكنك إدارة حسابات الخدمة لمشروعك على Cloud من خلال الانتقال إلى قائمة Cloud Console () واختيار إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة. (اختَر المشروع إذا طُلب منك ذلك).

لإنشاء حساب خدمة جديد، انقر على الرابط + إنشاء حساب خدمة.

إذا أنشأت مشروعًا على App Engine، قد يكون لديك حساب خدمة تلقائي (حساب الخدمة التلقائي على App Engine) لهذا المشروع. إذا كنت بصدد إعداد مشروع على App Engine، اختَر المشروع > المحرِّر لتحديد دور حساب الخدمة.

إنشاء مفتاح خاص لحساب الخدمة

بعد إنشاء حساب خدمة، انقر على قائمة هذا الحساب ()، ثم على إنشاء مفتاح > JSON. نزِّل ملف مفتاح JSON.

الحفاظ على أمان ملف المفاتيح

ملف المفاتيح هو ملف خاص يسمح للبرامج بالوصول إلى واجهات برمجة تطبيقات Google بالنيابة عن حساب الخدمة. تأكَّد من أنّه لا يمكن لأي شخص اكتساب إذن وصول غير مصرَّح به إليه، لأنّه سيكون بإمكانه الوصول إلى واجهات برمجة تطبيقات Google بالنيابة عنك. لا تخزِّن أبدًا مفتاحك الخاص في مكان متاح للجميع، مثل مجلد مشترَك أو مستودع مصدر. إذا فقدت مفتاحك الخاص، يمكنك بسهولة سحب إذن الوصول إلى حساب الخدمة وإنشاء حساب جديد باستخدام Cloud Console. يمكنك الاطّلاع على هذا الدليل لمعرفة التفاصيل.

تسجيل حساب الخدمة لاستخدام Earth Engine

يتم إنشاء جميع حسابات الخدمة ضمن مشروع على Cloud، والذي قد يكون هو المشروع نفسه المستخدَم لتطبيقك على App Engine أو آلة Cloud الافتراضية. تأكَّد من تسجيل مشروع Cloud للوصول إلى Earth Engine، ومن تفعيل Earth Engine API في المشروع. ستتمكّن جميع حسابات الخدمة في المشروع التي تمتلك أذونات صحيحة من الوصول إلى Earth Engine، ولن يكون هناك حاجة إلى تسجيل هذه الحسابات بشكل منفصل.

يُرجى العِلم أنّه لم يعُد بإمكانك تسجيل حساب خدمة فردي، بل يجب تسجيل مشروع Cloud نفسه.

استخدام حساب خدمة يتضمّن مفتاحًا خاصًا

للمصادقة على Earth Engine باستخدام حساب خدمة:

  1. أنشئ ملف مفتاح خاص بتنسيق JSON (.private-key.json) ونزِّله لحساب الخدمة.
  2. اختبِر رمز Python التالي من أي مكان وضعت فيه ملف .private-key.json:
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials)

إذا تمكّنت من بدء التشغيل بدون خطأ، يعني ذلك أنّ حساب الخدمة جاهز للاستخدام.

ما الذي يمكنني فعله إذا ظهرت لي رسالة الخطأ invalid_grant؟

يمكن أن يكون بروتوكول OAuth2 حساسًا جدًا لحدوث انحراف في الساعة. إذا كنت متأكّدًا من ضبط كل الإعدادات بشكل صحيح وتأكّد الشخص المعنيّ في Google من أنّه تمت الموافقة على حساب الخدمة، تحقّق ممّا إذا كانت ساعة جهاز الكمبيوتر تتم مزامنتها مع وقت الشبكة.

بالنسبة إلى أنظمة Ubuntu، تكون طلب مزامنة ساعة الكمبيوتر على النحو التالي:

ntpdate ntp.ubuntu.com

بالنسبة إلى الأنظمة التي تستخدم نظام التشغيل OS X، افتح الإعدادات المفضّلة للنظام > التاريخ والوقت > التاريخ والوقت (مرة أخرى) واختَر ضبط التاريخ والوقت تلقائيًا.

استخدام حساب خدمة تلقائي

إذا كنت تستخدم حساب خدمة تلقائيًا، عليك أولاً تعديل نطاقات الوصول إلى الجهاز الظاهري لحساب خدمة Compute Engine ليصبح "السماح بالوصول الكامل إلى جميع واجهات برمجة تطبيقات Cloud". (إذا كنت تستخدم حسابات الخدمة الافتراضية في Dataflow أو App Engine، لن تكون هذه الخطوة ضرورية).

للمصادقة على Earth Engine باستخدام حساب خدمة تلقائي، استخدِم الرمز التالي:

from google.auth import compute_engine
import ee
credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine'])
ee.Initialize(credentials)

إعداد إمكانية الوصول إلى واجهة برمجة تطبيقات REST

إذا كان حساب الخدمة سيُجري عمليات حسابية باستخدام واجهة برمجة التطبيقات REST API، عليك منحه إذنًا على مستوى المشروع، وتحديدًا دور مُشاهد موارد Earth Engine. استنادًا إلى إعدادات مشروعك، قد تحتاج أيضًا إلى منح حساب الخدمة دور مستخدِم استهلاك الخدمة. اطّلِع على صفحة التحكّم في الوصول للحصول على مزيد من المعلومات عن أذونات المشروع المطلوبة لاستخدام Earth Engine.