שיטות מומלצות לאבטחה ב-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. בקטע קיבוץ לפי, בוחרים באפשרות פרטי כניסה. תוכלו לראות אילו מפתחות API נמצאים בשימוש בשירותי Google השונים.

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

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

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

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

    אם תבחרו באפשרות שיטת API מהכלי Grouped By, תוכלו להבין מהם סוגי הגבלות השימוש באפליקציות שהכי מתאימות למפתח.

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

  1. עוברים אל דף פרטי הכניסה.
  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 restrictions:

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

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

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

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

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

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

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

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

  1. עוברים אל דף פרטי הכניסה.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. מתוך קיבוץ לפי, בוחרים באפשרות שיטת API.

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

אם אתם מזהים שימוש לא מורשה, עליכם לבצע את הפעולות הבאות:

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

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

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

  3. יצירת קשר עם התמיכה.

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

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

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

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

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

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

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

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

ממשקי API של שירותי אינטרנט עבור מפות Google או ממשקי API סטטיים של אינטרנט

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

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

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

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

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

מידע נוסף

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

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

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

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

API/SDK/שירות הגבלת אפליקציה (1) הגבלת API (1) שיטות מומלצות
API לאימות כתובות הגבלת כתובת IP(4) ממשק 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
ממשק API של Time Zone הגבלת כתובת 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 ללא הגבלה עם ה-SDK או הפלטפורמה של מפות Google. עם זאת, מומלץ מאוד להגביל את מפתחות ה-API, במיוחד בתרחישים הבאים:

  • סביבת הבדיקה תהיה גלויה לציבור או גלויה לה.

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

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

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

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

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

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