שיטות מומלצות לאבטחה ב-API

מפתחות וממשקי API נדרשים לאפליקציות ולפרויקטים שמשתמשים בממשקי API ובערכות SDK של הפלטפורמה של מפות Google. מטעמי אבטחה ומאמץ מינימליים, כדאי לאבטח את מפתחות ה-API כשיוצרים אותם.

אמנם אפשר לאבטח מפתחות API אחרי שיוצרים אותם ומשתמשים בהם, אבל ייתכנו הגבלות שונות בהתאם לשימוש במפתח. עדכון או החלפה של מפתחות באפליקציות לנייד (Android ו-iOS) הם המסובכים ביותר, כי המפתחות לא מוחלפים עד שכל הלקוחות מעדכנים את האפליקציות שלהם. עדכון או החלפה של מפתחות באפליקציות JavaScript או שירותי אינטרנט הוא הרבה יותר פשוט, אבל יכול להיות שכדי לעדכן או להחליף את המפתחות האלה עדיין תצטרכו תכנון קפדני ועבודה מהירה.

נוהלי האבטחה שחלים על המוצר הספציפי של הפלטפורמה של מפות Google, כמו Maps JavaScript API, מפורטים בקטע מידע נוסף.

הגבלת מפתחות ה-API

כשאתם יוצרים את מפתחות ה-API בפעם הראשונה, כדאי להגביל אותם עם הגבלת אפליקציה ועם הגבלת API אחת או יותר.

  • הגבלות על אפליקציות מגבילות את השימוש במפתח API לפלטפורמה ספציפית (Android או iOS) או לאתרים ספציפיים (כתובת IP ציבורית ואתר אינטרנט). לכל מפתח API ספציפי אפשר להוסיף רק סוג אחד של הגבלת אפליקציה.

  • הגבלות על ממשקי API מגבילות את השימוש במפתחות API לממשקי API או לערכות SDK מהפלטפורמה של מפות Google. המערכת תעבד רק בקשות לשימוש בממשקי API או בערכות SDK שמשויכות למפתח API. בכל מפתח API נתון, אפשר לציין מגבלות API מסוימות, לפי הצורך.

אם לא אבטחתם את מפתח ה-API בזמן שיצרתם אותו, צרו מפתחות API נוספים והגבילו אותם, ואז עדכנו את כל האפליקציות במפתחות ה-API החדשים. אמנם, מפתח אחד לכל אפליקציה יהיה אידיאלי למטרות אבטחה, אבל ניתן להשתמש במפתחות מוגבלים במספר אפליקציות כל עוד סוגי ההגבלות על אפליקציות במפתח לא יגרמו לבעיות של אי-תאימות עם האפליקציות שמשתפות מפתח.

אם אתם מגבילים את מפתחות ה-API אחרי שנוצרו, מומלץ לבדוק את השימוש במפתח ל-API כדי לוודא שההגבלות לא יפרו את האפליקציות הקיימות.

  1. נכנסים לדף Metrics במסוף Google Cloud.

  2. בוחרים באפשרות הצגת מסננים.

  3. בקטע Grouped by, בוחרים באפשרות Credential. תוכלו לראות אילו מפתחות API נמצאים בשימוש בשירותי Google השונים,

  4. לוחצים על Credentials.

  5. ביטול הבחירה של כל פרטי הכניסה.

  6. לכל מקש שמוצג, בוחרים את המפתח ולוחצים על אישור.

  7. מתוך Grouped by, בוחרים באפשרות API. תוכלו לראות את הגבלות ה-API שחלות על המפתח.

    אם תבחרו באפשרות method API בדף Grouped by, תוכלו להבין אילו סוגים של הגבלות על אפליקציות מתאימים למפתח.

הגדרה של הגבלת אפליקציה למפתח API

  1. נכנסים לדף Credentials.
  2. בוחרים את מפתח ה-API שרוצים להגדיר עליו הגבלה. הדף של נכס מפתח ה-API מופיע.

  3. בקטע הגבלות על אפליקציות, בוחרים באפשרות הגבלות על אפליקציות.

    בוחרים את אחד מסוגי ההגבלות ומספקים את המידע המבוקש אחרי רשימת ההגבלות.

    סוג הגבלה תיאור
    גורמים מפנים מסוג HTTP יש לציין אתר אחד או יותר של גורמים מפנים. ניתן להשתמש בתווים כלליים לחיפוש כדי לאשר את כל תתי-הדומיין (לדוגמה, *.google.com מקבל את כל האתרים שמסתיימים ב-.google.com). יש לציין את התווים https:// ו-http:// כפי שהם. יש להשתמש בייצוג מיוחד של סוגים אחרים של פרוטוקולים של כתובות URL של גורמים מפנים. למשל, צריך לפרמט את file:///path/to/ בפורמט __file_url__//path/to/*. אחרי שמפעילים את ההפניות, חשוב לעקוב אחר השימוש כדי לוודא שהוא תואם לציפיות שלך. פרוטוקולי העזר הבאים נתמכים: about://, app://, applewebdata://, asset://, chrome://, content://, file://, ftp://, ionic://, local://, ms-appx://, ms-appx-web://, ms-local-stream://, prism://, qrc://, res://, saphtmlp://.
    כתובות IP יש לציין כתובת IPv4 או IPv6 אחת או תת-רשת באמצעות סימון CIDR. מאחר שבקשת שירות אינטרנט בודקת את כתובת ה-IP החיצונית ומשווה אותה להגבלה של מפתח ה-API,צריך להשתמש בכתובת ה-IP הציבורית של השרת.
    אפליקציות ל-Android יש להוסיף את טביעת האצבע של אישור החתימה SHA-1 ואת שם חבילת ה-Android שלך מהקובץ AndroidManifest.xml.
    אפליקציות ל-iOS מתחת לסוגים, בוחרים את מזהה החבילה המתאים של iOS מהרשימה.
  4. לוחצים על שמירה.

הגדרה של הגבלת API למפתח API

  1. נכנסים לדף פרטי הכניסה.

  2. בוחרים את מפתח ה-API שרוצים להגביל. הדף הגבלה ושינוי השם של מפתח ה-API מופיע.

  3. בקטע הגבלות API:

    • לוחצים על Restrict key.

    • לוחצים על התפריט הנפתח Select API ובוחרים את ממשקי ה-API או ערכות ה-SDK שרוצים לאפשר לאפליקציה גישה אליהם באמצעות מפתח ה-API.

      (אם API או SDK לא רשומים, צריך להפעיל אותם).

  4. לוחצים על שמירה.

    המגבלה הופכת לחלק מההגדרה של מפתח ה-API אחרי השלב הזה. אם לא תספקו את הפרטים המתאימים או לא תלחצו על "Save" (שמירה), מפתח ה-API לא יוגבל. (מידע נוסף זמין במדריך קבלת מפתח API עבור ה-API או ה-SDK שמעניינים אתכם.)

מחיקת מפתחות API שאינם בשימוש

לפני שמוחקים מפתח API, חשוב לוודא שלא נעשה בו שימוש בסביבת הייצור. אם לא מגיעה מספיק תנועה, סביר להניח שהמפתח יימחק.

כדי למחוק מפתח API:

  1. נכנסים לדף Credentials.

  2. בוחרים את מפתח ה-API שרוצים למחוק.

  3. לוחצים על הלחצן מחיקה בחלק העליון של הדף.

  4. כשתיבת הדו-שיח Delete credential (מחיקת פרטי כניסה) מופיעה, בוחרים באפשרות Delete (מחיקה).

    מחיקת מפתח API צריכה להימשך כמה דקות. לאחר ההטמעה, התנועה עם מפתח ה-API שנמחק תידחה.

דרכים נוספות לאבטחת ממשקי ה-API

יש להיזהר ביצירת מחדש של מפתחות API

יצירה מחדש של מפתח API יוצרת מפתח חדש שכולל את כל ההגבלות של המפתח הקודם. בנוסף, יופעל טיימר של 24 שעות להשבתת מפתח ה-API הקודם.

במהלך חלון הזמן הזה, המפתח הישן והמפתח החדש יתקבלו. כך יש לכם אפשרות להעביר את האפליקציות ולהשתמש במפתח החדש. עם זאת, אפליקציות שעדיין משתמשות במפתח ה-API הישן יפסיקו לפעול לאחר פרק הזמן הזה.

  1. נכנסים לדף של מפתחות API.

  2. בוחרים באפשרות חזרה למפתח הקודם.

  3. בתיבת הדו-שיח חזרה לגרסה קודמת לוחצים על חזרה לגרסה קודמת.

לאחר החזרה לגרסה הקודמת, "הגרסה החדשה" של המפתח הופכת לגרסה הקודמת, וטיימר השבתה חדש מוגדר עבורה 24 שעות. אפשר לחזור בין שני ערכי המפתח האלה עד שתיצרו שוב את המפתח.

היצירה המשנית הזו מחליפה את הערך הישן של המפתח הלא פעיל.

מעקב אחר השימוש ב-API

כדי לבדוק את השימוש במפתח API:

  1. עוברים אל דף המדדים.

  2. לוחצים על הצגת המסננים.

  3. בקטע Group by, בוחרים באפשרות API method.

  4. בלחיצה על קוד תגובה בוחרים באפשרות 2xx כדי לראות את הבקשות שבוצעו בהצלחה למפתח הזה.

אם תזהו שימוש לא מורשה:

  1. מגבילים את המפתחות.

    אם אתם משתמשים באותו מפתח בכמה אפליקציות, כדאי להעביר כמה מפתחות API, עדיף להשתמש במפתחות API נפרדים לכל אפליקציה.

  2. אם השימוש הלא מורשה נמשך, צריך ליצור מחדש או למחוק את המפתחות שהושפעו.

  3. פנייה לתמיכה.

שימוש במפתחות API נפרדים לכל אפליקציה

הפעולה הזו מגבילה את ההיקף של כל מפתח. אם מפתח API נפרץ, תוכלו למחוק או ליצור מחדש את המפתח הזה בלי שתצטרכו לעדכן את מפתחות ה-API האחרים.

העברה למפתחות API מרובים

כדי לעבור משימוש במפתח API אחד לכמה אפליקציות, למפתח API ייחודי אחד לכל אפליקציה:

  1. לזהות אילו אפליקציות דורשות מפתחות חדשים.

    • קל מאוד לעדכן אפליקציות אינטרנט, כי השליטה בכל הקוד מתבצעת. מתכננים לעדכן את כל המפתחות של האפליקציות מבוססות-האינטרנט.
    • הרבה יותר קשה להשתמש באפליקציות לנייד, כי הלקוחות שלכם חייבים לעדכן את האפליקציות כך שתהיה אפשרות להשתמש במפתחות החדשים.
  2. צרו והגבילו את המפתחות החדשים.

    • צריך להוסיף גם הגבלה על אפליקציה וגם לפחות הגבלה אחת על ה-API.
  3. מוסיפים את המפתחות החדשים לאפליקציות השונות.

    • באפליקציות לנייד, התהליך הזה עשוי להימשך מספר חודשים עד שכל המשתמשים שלכם יתעדכנו לאפליקציה העדכנית עם מפתח ה-API החדש.

שיטות הגנה על ממשקי API של שירות אינטרנט או ממשקי API של אינטרנט סטטי

  • אחסון מפתחות API וסודות חתימה מחוץ לקוד המקור של האפליקציה. אם תציבו את מפתחות ה-API או כל מידע פרטי אחר במשתני הסביבה, או אם תכללו קבצים שמאוחסנים בנפרד ואז תשתפו את הקוד, מפתחות ה-API או סודות החתימה לא ייכללו בקבצים המשותפים.

  • מאחסנים מפתחות API או סודות חתימה בקבצים מחוץ לעץ המקור של האפליקציה. אם שמרתם מפתחות API או מידע פרטי אחר בקבצים, הקפידו לשמור את הקבצים מחוץ לעץ המקור של האפליקציה כדי להרחיק את המפתחות מהמערכת של בקרת קוד המקור. חשוב לעשות זאת במיוחד אם אתם משתמשים במערכת ציבורית לניהול קוד מקור, כמו GitHub.

ממשקי API של שירותי אינטרנט באינטרנט או שיטות הגנה על אפליקציות סטטיות באינטרנט

  • שימוש בשרת proxy. שרת ה-proxy מספק מקור רציף לאינטראקציה עם ה-API המתאים של הפלטפורמה של מפות Google. למידע נוסף על השימוש בשרת proxy, קראו את המאמר Live Licatively: שימוש בשרתי proxy עם ספריות הלקוח של Google Data API.

  • להסתיר או להצפין את מפתח ה-API או את סוד החתימה. זה מקשה על העתקת מפתחות API ונתונים פרטיים אחרים ישירות מהאפליקציה.

מידע נוסף

בטבלאות האלה מפורטות ההגבלות המתאימות על מפתחות API והשיטות המומלצות לאבטחה ב-API לכל ממשק API, SDK או שירות של הפלטפורמה של מפות Google.

אתרים עם JavaScript API, הטמעה או ממשקי API סטטיים של מפות Google

API/SDK/שירות הגבלת אפליקציה (1) הגבלת API (1) שיטות מומלצות
API של JavaScript במפות (2) הגבלה על הגורם המפנה של HTTP Maps JavaScript API
שירות מסלולים, Maps JavaScript API הגבלה על הגורם המפנה של HTTP ממשק API למסלולים, Maps JavaScript API
שירות מטריצת מרחקים, Maps JavaScript API הגבלה על הגורם המפנה של HTTP DISTANCE Matrix API, Maps JavaScript API
שירות גובה, API של מפות JavaScript הגבלה על הגורם המפנה של HTTP API של העלאת גובה, Maps JavaScript API
שירות המרת כתובות לקואורדינטות (geocoding) , Maps JavaScript API הגבלה על הגורם המפנה של HTTP API לקידוד גיאוגרפי, API של מפות JavaScript
ספריית מקומות, Maps JavaScript API הגבלה על הגורם המפנה של HTTP API של מקומות, API של מפות Google ל-JavaScript
API של מפות Google להטמעה הגבלה על הגורם המפנה של HTTP Maps Embed API
API סטטי של מפות Google הגבלה על הגורם המפנה של HTTP Maps Static API
Street View Static API הגבלה על הגורם המפנה של HTTP Street View Static API

אפליקציות ושרתים באמצעות שירותי אינטרנט

API/SDK/שירות הגבלת אפליקציה (1) הגבלת API (1) שיטות מומלצות
API לאימות כתובות הגבלת כתובת IP(4) Address Validation API
API למסלול הגבלת כתובת IP(4) Directions API
API של מטריצת מרחקים הגבלת כתובת IP(4) Distance Matrix API
Elevation API הגבלת כתובת IP(4) Elevation API
API לקידוד גיאוגרפי הגבלת כתובת IP(4) Geocoding API
API למיקום גיאוגרפי הגבלת כתובת IP(4) Geolocation API
API של מקומות Google (5) הגבלת כתובת IP(4) Places API
API לכבישים הגבלת כתובת IP(4) Roads API
Routes API הגבלת כתובת IP(4) Routes API
Time Zone API הגבלת כתובת IP(4) Time Zone API

אפליקציות ל-Android

API/SDK/שירות הגבלת אפליקציה (1) הגבלת API (1) שיטות מומלצות
SDK של מפות ל-Android הגבלה ב-Android SDK של מפות ל-Android
SDK של מקומות ל-Android הגבלה ב-Android Places API

אפליקציות ל-iOS

API/SDK/שירות הגבלת אפליקציה (1) הגבלת API (1) שיטות מומלצות
SDK של מפות ל-iOS הגבלה ב-iOS SDK של מפות ל-iOS
SDK של מקומות ל-iOS הגבלה ב-iOS Places API

1 אפשר להשתמש במפתח API ללא הגבלה עם כל API או SDK של Google Maps Platform. עם זאת, מומלץ מאוד להגביל את מפתחות ה-API, במיוחד בתרחישים הבאים:

  • סביבת הבדיקה תהיה גלויה לכולם או גלויה.

  • האפליקציה שמשתמשת במפתח API מוכנה לשימוש בסביבת ייצור.

2 לאפליקציות לנייד: כדאי להשתמש ב-SDK SDK המקורי ל-Android וב-Maps SDK ל-iOS.

3 ל-API של מפות Google ול-Street View Static API, בנוסף למפתח API, תצטרכו לספק חתימה דיגיטלית כדי לחרוג מהמכסה היומית של 25,000 טעינות של מפות.

אם אתם חותמים על בקשות, כדאי לבדוק כמה בקשות לא חתומות ביום אתם רוצים לאשר, ולהתאים את המכסות לבקשות ללא חתימה בהתאם.

4 הגבלות על כתובות IP עשויות להיות לא מעשיות בתרחישים מסוימים, כמו באפליקציות לנייד ובסביבות של ענן שמבוססות על כתובות IP דינמיות. בממשקי ה-API של שירותי האינטרנט של מפות Google בתרחישים האלה, תוכלו לאבטח את האפליקציות באמצעות שרת proxy או ערפול קוד (obfuscation).

5 לאפליקציות לנייד, כדאי להשתמש ב-Native SDK ל-Android וב-Places SDK ל-iOS.