Hướng dẫn bảo mật của Nền tảng Google Maps

Các ứng dụng và dự án sử dụng API và SDK của Nền tảng Google Maps phải sử dụng khoá API hoặc OAuth 2.0 (nếu được hỗ trợ) để tự xác thực.

Các phương pháp hay nhất này hướng dẫn bạn cách bảo mật quyền truy cập vào Maps Platform.

Nếu bạn muốn sử dụng OAuth 2.0 để uỷ quyền lưu lượng truy cập từ máy chủ đến máy chủ, hãy tìm chủ đề OAuth trong tài liệu API của bạn. Hãy xem bài viết Sử dụng OAuth cho các ứng dụng phía máy chủ để biết thêm thông tin chi tiết.

Ngoài việc áp dụng các quy tắc hạn chế về ứng dụng và khoá API, hãy tuân thủ mọi phương pháp bảo mật áp dụng cho các sản phẩm cụ thể của Nền tảng Google Maps. Ví dụ: hãy xem Maps JavaScript API bên dưới trong phần Các hạn chế được đề xuất đối với ứng dụng và API.

Nếu khoá API của bạn đang được sử dụng, hãy xem các đề xuất bên dưới trong phần Nếu bạn đang hạn chế một khoá API đang được sử dụng.

Để biết thêm thông tin chi tiết về chữ ký số do Maps Static API và Street View Static API hỗ trợ, hãy xem Hướng dẫn về chữ ký số.

Các phương pháp hay nhất nên dùng

Để tăng cường bảo mật và tránh bị tính phí cho việc sử dụng trái phép, hãy làm theo các phương pháp hay nhất về bảo mật API này cho tất cả các API, SDK hoặc dịch vụ của Google Maps Platform:

Hạn chế khoá API

Sử dụng các khoá API riêng biệt cho từng ứng dụng

Xoá các khoá API không dùng đến

Kiểm tra mức sử dụng khoá API

Hãy cẩn thận khi xoay vòng khoá API

Chia mức sử dụng phía máy khách và phía máy chủ thành các dự án riêng biệt

Tắt các dịch vụ không dùng đến

Các đề xuất bổ sung cho ứng dụng phía máy khách

Sử dụng SDK phía máy khách

Lệnh gọi dịch vụ web an toàn phía máy khách

Các đề xuất khác cho trang web hoặc ứng dụng phía máy khách sử dụng Static Web API

Bảo vệ việc sử dụng Static Web API

Các đề xuất khác cho ứng dụng phía máy chủ sử dụng dịch vụ web

Bảo vệ khoá API dịch vụ web

Sử dụng OAuth cho các ứng dụng phía máy chủ

Nếu bạn đang hạn chế hoặc xoay vòng một khoá API đang được sử dụng

  • Trước khi thay đổi khoá API, hãy Kiểm tra mức sử dụng khoá API. Bước này đặc biệt quan trọng nếu bạn đang thêm các quy tắc hạn chế cho một khoá đang được sử dụng trong ứng dụng phát hành công khai.

  • Sau khi thay đổi khoá, hãy cập nhật tất cả ứng dụng của bạn bằng khoá API mới (nếu cần).

  • Nếu khoá API của bạn không bị xâm phạm và không bị sử dụng sai mục đích, bạn có thể di chuyển các ứng dụng của mình sang nhiều khoá API mới theo tốc độ của riêng bạn, giữ nguyên khoá API ban đầu cho đến khi bạn chỉ thấy một loại lưu lượng truy cập và khoá API có thể được hạn chế một cách an toàn bằng một loại hạn chế ứng dụng mà không gây ra tình trạng gián đoạn dịch vụ ngoài ý muốn.

    Để biết thêm hướng dẫn, hãy xem phần Di chuyển sang nhiều khoá API.

    Theo dõi mức sử dụng theo thời gian và xem thời điểm các API, loại nền tảng và miền cụ thể đã di chuyển khỏi khoá API cũ trước khi bạn chọn hạn chế hoặc xoá khoá cũ. Để biết thêm thông tin, hãy xem phần Báo cáo và giám sát cũng như Chỉ số

  • Nếu khoá API của bạn bị lộ, bạn nên nhanh chóng chuyển sang bảo mật khoá API và ngăn chặn hành vi sai trái. Trong các ứng dụng Android và iOS, các khoá sẽ không được thay thế cho đến khi khách hàng cập nhật ứng dụng của họ. Việc cập nhật hoặc thay thế khoá trên các trang web hoặc trong các ứng dụng phía máy chủ sẽ đơn giản hơn nhiều, nhưng vẫn có thể đòi hỏi bạn phải lập kế hoạch cẩn thận và làm việc nhanh chóng.

    Để biết thêm thông tin, hãy xem phần Xử lý trường hợp sử dụng khoá API trái phép.

Thông tin khác

Các hạn chế được đề xuất đối với ứng dụng và API

Hạn chế khoá API

Phương pháp hay nhất là luôn hạn chế khoá API bằng một loại hạn chế ứng dụng và một hoặc nhiều hạn chế API. Để biết các hạn chế được đề xuất theo API, SDK hoặc dịch vụ JavaScript, hãy xem phần Các hạn chế được đề xuất đối với ứng dụng và API bên dưới.

  • Hạn chế ứng dụng Bạn có thể giới hạn việc sử dụng khoá API cho các nền tảng cụ thể: ứng dụng Android hoặc iOS, hoặc các trang web cụ thể cho ứng dụng phía máy khách, hoặc các địa chỉ IP hoặc mạng con CIDR cụ thể cho các ứng dụng phía máy chủ phát hành lệnh gọi REST API dịch vụ web.

    Bạn hạn chế một khoá bằng cách thêm một hoặc nhiều quy tắc hạn chế ứng dụng thuộc các loại mà bạn muốn uỷ quyền. Sau đó, chỉ những yêu cầu bắt nguồn từ các nguồn này mới được phép.

  • Quy tắc hạn chế API Bạn có thể hạn chế những API, SDK hoặc dịch vụ của Google Maps Platform mà khoá API của bạn có thể sử dụng. Các quy tắc hạn chế về API chỉ cho phép các yêu cầu đối với những API và SDK mà bạn chỉ định. Đối với bất kỳ khoá API nào, bạn có thể chỉ định bao nhiêu quy tắc hạn chế API tuỳ ý. Danh sách các API có sẵn bao gồm tất cả API được bật trên một dự án.

Đặt quy tắc hạn chế đối với ứng dụng cho một khoá API

  1. Mở trang Thông tin đăng nhập Nền tảng Google Maps của Bảng điều khiển Google Cloud.

  2. Chọn khoá API mà bạn muốn hạn chế.

  3. Trên trang Chỉnh sửa khoá API, trong mục Hạn chế cho khoá, hãy chọn Đặt quy tắc hạn chế cho ứng dụng.

    Chỉnh sửa trang khoá API

  4. Chọn một trong các loại hạn chế và cung cấp thông tin theo yêu cầu theo danh sách hạn chế.

    Loại quy định hạn chế Mô tả
    Trang web Chỉ định một hoặc nhiều trang web giới thiệu.
    • Các giản đồ URI của đường liên kết giới thiệu được hỗ trợ trên toàn cầu là httpshttp. Các lược đồ khác không đảm bảo hoạt động chính xác, vì các trình duyệt web hiện đại sẽ không gửi tiêu đề "Referer" trong các yêu cầu đi vì lý do quyền riêng tư.
    • Luôn cung cấp toàn bộ chuỗi giới thiệu, bao gồm cả lược đồ giao thức, tên máy chủ và cổng không bắt buộc (ví dụ: https://google.com).
    • Bạn có thể sử dụng ký tự đại diện để uỷ quyền cho tất cả các miền con. Ví dụ: https://*.google.com chấp nhận tất cả các trang web kết thúc bằng .google.com.
    • Hãy cẩn thận khi uỷ quyền cho các giới thiệu đầy đủ đường dẫn, ví dụ: https://google.com/some/path, vì hầu hết các trình duyệt web sẽ xoá đường dẫn khỏi các yêu cầu trên nhiều nguồn gốc vì lý do riêng tư.
    địa chỉ IP Chỉ định một hoặc nhiều địa chỉ IPv4 hoặc IPv6, hoặc mạng con bằng ký hiệu CIDR. Địa chỉ IP phải khớp với địa chỉ nguồn mà các máy chủ của Nền tảng Google Maps quan sát được. Nếu bạn sử dụng dịch địa chỉ mạng (NAT), địa chỉ này thường tương ứng với địa chỉ IP công khai của máy.
    Ứng dụng Android

    Thêm tên gói Android (từ tệp AndroidManifest.xml) và vân tay chứng chỉ ký SHA-1 của từng ứng dụng Android mà bạn muốn uỷ quyền.

    1. Chọn Ứng dụng Android.
    2. Nhấp vào + Thêm.
    3. Nhập tên gói và dấu vân tay chứng chỉ SHA-1. Ví dụ:
      com.example.android.mapexample
      BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
    4. Nhấp vào Lưu.

    Có hai loại chứng chỉ:

    • Chứng chỉ gỡ lỗi: Chỉ sử dụng loại chứng chỉ này với những ứng dụng mà bạn đang kiểm thử và mã không phải là mã phát hành công khai. Đừng cố gắng xuất bản ứng dụng được ký bằng chứng chỉ gỡ lỗi. Bộ công cụ SDK Android sẽ tự động tạo chứng chỉ này khi bạn chạy một bản gỡ lỗi.
    • Chứng chỉ phát hành: Sử dụng chứng chỉ này khi bạn đã sẵn sàng phát hành ứng dụng lên một cửa hàng ứng dụng. Bộ công cụ Android SDK sẽ tạo chứng chỉ này khi bạn chạy một bản dựng phát hành.

    Để biết thêm thông tin về việc ký và chứng chỉ ứng dụng Android, hãy xem Hướng dẫn ký ứng dụng.

    Nếu bạn sử dụng Tính năng ký ứng dụng của Play, hãy xem phần Làm việc với nhà cung cấp API để tìm nạp dấu vân tay chứng chỉ ký. Nếu bạn quản lý khoá ký của riêng mình, hãy xem phần Tự ký ứng dụng hoặc tham khảo hướng dẫn về môi trường xây dựng của bạn.

    Ứng dụng iOS

    Thêm mã nhận dạng gói của từng ứng dụng iOS mà bạn muốn uỷ quyền.

    1. Chọn Ứng dụng iOS.
    2. Nhấp vào + Thêm.
    3. Thêm mã nhận dạng gói để chấp nhận các yêu cầu từ ứng dụng iOS có mã nhận dạng đó.
    4. Nhấp vào Lưu.

    Để biết các đề xuất về chế độ hạn chế ứng dụng, hãy xem phần Chế độ hạn chế ứng dụng được đề xuất.

  5. Chọn Lưu.

Đặt các quy tắc hạn chế đối với API cho một khoá API

  1. Mở trang Thông tin đăng nhập Nền tảng Google Maps của Bảng điều khiển Google Cloud.

  2. Chọn khoá API mà bạn muốn hạn chế.

  3. Trên trang Chỉnh sửa khoá API, trong mục Hạn chế cho API:

    • Chọn Hạn chế cho khoá.

    • Mở Chọn API rồi chọn các API hoặc SDK mà bạn muốn ứng dụng của mình truy cập bằng khoá API.

    Nếu một API hoặc SDK không có trong danh sách, bạn cần bật API hoặc SDK đó. Để biết thông tin chi tiết, hãy xem phần Cách bật một hoặc nhiều API hoặc SDK.

    Hạn chế một API trên trang Chỉnh sửa khoá API

  4. Chọn Lưu.

    Quy tắc hạn chế sẽ trở thành một phần trong định nghĩa khoá API sau bước này. Hãy nhớ cung cấp thông tin chi tiết phù hợp và chọn Lưu để lưu các quy tắc hạn chế đối với khoá API. Để biết thêm thông tin, hãy xem hướng dẫn Lấy khoá API trong tài liệu về API hoặc SDK cụ thể mà bạn quan tâm.

Để biết các hạn chế được đề xuất đối với API, hãy xem phần Các hạn chế được đề xuất đối với API.

Kiểm tra mức sử dụng khoá API

Nếu đang hạn chế khoá API sau khi khoá được tạo hoặc nếu muốn xem những API mà một khoá đang sử dụng để có thể hạn chế các API đó, thì bạn nên kiểm tra mức sử dụng khoá API. Các bước này cho biết khoá API đang được dùng trong những dịch vụ và phương thức API nào. Nếu bạn thấy mức sử dụng vượt quá các dịch vụ của Nền tảng Google Maps, hãy điều tra để xác định xem bạn có cần thêm các hạn chế khác để tránh việc sử dụng không mong muốn hay không. Bạn có thể sử dụng Trình khám phá chỉ số Google Maps Platform Cloud Console để xác định những hạn chế về API và ứng dụng cần áp dụng cho khoá API của mình:

Xác định những API sử dụng khoá API của bạn

Các báo cáo chỉ số sau đây giúp bạn xác định API nào đang sử dụng khoá API của bạn. Hãy sử dụng các báo cáo này để làm những việc sau:

  • Xem cách khoá API của bạn được sử dụng
  • Phát hiện mức sử dụng ngoài dự kiến
  • Giúp xác minh xem có an toàn khi xoá một khoá không dùng đến hay không. Để biết thông tin về cách xoá khoá API, hãy xem phần Xoá khoá API không dùng đến.

Khi áp dụng các quy tắc hạn chế đối với API, hãy sử dụng những báo cáo này để tạo danh sách API cần uỷ quyền hoặc để xác thực các đề xuất về quy tắc hạn chế đối với khoá API được tạo tự động. Để biết thêm thông tin về các hạn chế được đề xuất, hãy xem phần Áp dụng các hạn chế được đề xuất. Để biết thêm thông tin về cách sử dụng Trình khám phá chỉ số, hãy xem bài viết Tạo biểu đồ bằng Trình khám phá chỉ số.

  1. Chuyển đến Trình khám phá chỉ số của bảng điều khiển Google Cloud

  2. Đăng nhập và chọn dự án có các khoá API mà bạn muốn kiểm tra.

  3. Chuyển đến trang Trình khám phá chỉ số cho loại API của bạn:

    • Đối với khoá API sử dụng mọi API ngoại trừ Maps Embed API: Truy cập vào trang Metrics explorer (Trình khám phá chỉ số).

    • Đối với khoá API sử dụng Maps Embed API: Chuyển đến Metrics Explorer (Công cụ khám phá chỉ số).

  4. Kiểm tra từng khoá API:

    1. Chọn THÊM BỘ LỌC.

    2. Chọn nhãn credential_id.

    3. Chọn giá trị tương ứng với khoá mà bạn muốn kiểm tra.

    4. Ghi chú những API mà khoá API này đang được dùng và xác nhận rằng việc sử dụng là dự kiến.

    5. Sau khi hoàn tất, hãy chọn Xoá bộ lọc ở cuối dòng bộ lọc đang hoạt động để xoá bộ lọc bổ sung.

  5. Lặp lại thao tác này cho mọi khoá còn lại.

  6. Hạn chế khoá API của bạn chỉ cho những API đang được sử dụng.

  7. Nếu bạn phát hiện thấy hành vi sử dụng trái phép, hãy xem phần Xử lý hành vi sử dụng khoá API trái phép.

Chọn đúng loại quy định hạn chế đối với ứng dụng bằng cách sử dụng Trình khám phá chỉ số

Sau khi bạn xác minh và thực hiện mọi hành động cần thiết để đảm bảo khoá API của bạn chỉ được dùng cho các dịch vụ của Nền tảng Google Maps mà khoá đó đang sử dụng, hãy xác minh rằng khoá API có các hạn chế chính xác về ứng dụng.

Nếu khoá API của bạn có các quy tắc hạn chế được đề xuất đối với khoá API, hãy áp dụng các quy tắc đó. Để biết thêm thông tin, hãy xem bài viết Áp dụng các quy tắc hạn chế được đề xuất đối với khoá API.

Nếu khoá API của bạn không có đề xuất hạn chế, hãy xác định loại hạn chế ứng dụng cần áp dụng, dựa trên platform_type được báo cáo bằng cách sử dụng Trình khám phá chỉ số:

  1. Chuyển đến Trình khám phá chỉ số của bảng điều khiển Google Cloud

  2. Đăng nhập và chọn dự án cho các API mà bạn muốn kiểm tra.

  3. Truy cập vào trang Trình khám phá chỉ số này: Trình khám phá chỉ số.

  4. Kiểm tra từng khoá API:

    1. Chọn THÊM BỘ LỌC.

    2. Chọn nhãn credential_id.

    3. Chọn giá trị tương ứng với khoá mà bạn muốn kiểm tra.

    4. Sau khi hoàn tất, hãy chọn Xoá bộ lọc ở cuối dòng bộ lọc đang hoạt động để xoá bộ lọc bổ sung.

  5. Lặp lại thao tác này cho mọi khoá còn lại.

  6. Sau khi bạn có loại nền tảng cho khoá API, hãy áp dụng quy tắc hạn chế ứng dụng cho platform_type đó:

    PLATFORM_TYPE_JS : Áp dụng các hạn chế về trang web đối với khoá.

    PLATFORM_TYPE_ANDROID : Áp dụng các hạn chế đối với ứng dụng Android cho khoá.

    PLATFORM_TYPE_IOS : Áp dụng các quy định hạn chế đối với ứng dụng iOS cho khoá.

    PLATFORM_TYPE_WEBSERVICE : Bạn có thể phải dựa vào các quy tắc hạn chế đối với địa chỉ IP trên khoá để hạn chế khoá một cách thích hợp.

    Để biết các đề xuất cho Maps Static API và Street View Static API, hãy xem phần Bảo vệ việc sử dụng Static Web API.

    Để biết các đề xuất về Maps Embed API, hãy xem Các trang web có Maps Embed API.

    Khoá API của tôi đang sử dụng nhiều loại nền tảng: Lưu lượng truy cập của bạn không thể được bảo mật đúng cách chỉ bằng một khoá API duy nhất. Bạn cần di chuyển sang nhiều khoá API. Để biết thêm thông tin, hãy xem phần Di chuyển sang nhiều khoá API.

Sử dụng các khoá API riêng biệt cho từng ứng dụng

Phương pháp này giới hạn phạm vi của từng khoá. Nếu một khoá API bị xâm nhập, bạn có thể xoá hoặc thay đổi khoá bị ảnh hưởng mà không cần cập nhật các khoá API khác. Bạn có thể tạo tối đa 300 khoá API cho mỗi dự án. Để biết thêm thông tin, hãy xem bài viết Giới hạn đối với khoá API.

Mặc dù mỗi ứng dụng có một khoá API là lý tưởng cho mục đích bảo mật, nhưng bạn có thể sử dụng khoá bị hạn chế trên nhiều ứng dụng miễn là các ứng dụng đó sử dụng cùng một loại hạn chế ứng dụng.

Áp dụng các quy tắc hạn chế được đề xuất đối với khoá API

Đối với một số chủ sở hữu dự án, người chỉnh sửa và quản trị viên khoá API, bảng điều khiển Google Cloud sẽ đề xuất các chế độ hạn chế khoá API cụ thể cho các khoá API không bị hạn chế dựa trên mức sử dụng và hoạt động của họ trên Nền tảng Google Maps.

Nếu có, các đề xuất sẽ xuất hiện dưới dạng các lựa chọn được điền sẵn trên trang Thông tin đăng nhập Nền tảng Google Maps.

Các API và SDK của Google Maps Platform được đề xuất tự động hỗ trợ

  • API Maps JavaScript, bao gồm cả Directions Service (Cũ), Distance Matrix Service (Cũ), Elevation Service, Geocoding Service, lớp Place, Place Autocomplete Widget (Mới), Place Autocomplete Data API, Places Library, Places Service, Place Autocomplete Widget và Places UI Kit

  • Maps Static API và Street View Static API

  • API nhúng cho Maps

  • Maps SDK cho Android, Navigation SDK cho Android, Places SDK cho Android và Places UI Kit trên Android

  • Maps SDK cho iOS, Navigation SDK cho iOS, Places SDK cho iOS, Places Swift SDK cho iOS và Places UI Kit trên iOS.

Lý do khiến bạn có thể không thấy một đề xuất hoặc thấy một đề xuất không đầy đủ

Lý do khiến bạn không thấy đề xuất

  • Bạn (cũng) đang sử dụng khoá API trên các dịch vụ không phải của Nền tảng Google Maps hoặc các dịch vụ của Nền tảng Maps chưa được các đề xuất tự động hỗ trợ.

    Nếu bạn thấy mức sử dụng trên các dịch vụ khác, đừng áp dụng đề xuất mà trước tiên chưa thực hiện những việc sau:

    1. Xác minh rằng mức sử dụng API mà bạn thấy trong Trình khám phá chỉ số của Google Cloud Console là hợp lệ.

    2. Thêm các dịch vụ còn thiếu vào danh sách API cần được uỷ quyền theo cách thủ công.

    3. Thêm mọi hạn chế còn thiếu về ứng dụng cho các dịch vụ được thêm vào danh sách API theo cách thủ công. Nếu bạn cần thêm một loại quy tắc hạn chế ứng dụng khác, hãy xem phần Di chuyển sang nhiều khoá API.

  • Khoá API của bạn không được dùng trong các SDK hoặc API phía máy khách.

  • Bạn sử dụng khoá API trong một ứng dụng hoặc trang web có lưu lượng truy cập thấp và không có lượt sử dụng trong 60 ngày qua.

  • Bạn vừa tạo một khoá mới hoặc vừa triển khai một khoá hiện có trong một ứng dụng mới. Nếu đây là trường hợp của bạn, hãy đợi thêm vài ngày để các đề xuất được cập nhật.

  • Bạn đang sử dụng khoá API trong nhiều ứng dụng có thể yêu cầu các loại hạn chế ứng dụng xung đột, hoặc bạn đang sử dụng cùng một khoá API trong quá nhiều ứng dụng hoặc trang web khác nhau. Trong cả hai trường hợp, theo phương pháp hay nhất, bạn nên di chuyển sang nhiều khoá. Để biết thêm thông tin chi tiết, hãy xem phần Di chuyển sang nhiều khoá API.

Lý do khiến bạn thấy một đề xuất chưa hoàn chỉnh

  • Bạn sử dụng khoá API trong một ứng dụng hoặc trang web có lưu lượng truy cập thấp và không có lượt sử dụng trong 60 ngày qua.

  • Bạn mới bắt đầu sử dụng một khoá hiện có trên một API hoặc dịch vụ mới và quy trình đề xuất hạn chế khoá API tự động chưa xử lý các chỉ số sử dụng được cập nhật. Có thể mất vài ngày để các chỉ số về mức sử dụng được truyền tải.

    Nếu bạn thấy mức sử dụng trên các dịch vụ khác, đừng áp dụng đề xuất mà trước tiên chưa thực hiện những việc sau:

    1. Xác minh rằng mức sử dụng API mà bạn thấy trong Trình khám phá chỉ số của Google Cloud Console là hợp lệ.

    2. Thêm các dịch vụ còn thiếu vào danh sách API cần được uỷ quyền theo cách thủ công.

    3. Thêm mọi hạn chế còn thiếu về ứng dụng cho các dịch vụ được thêm vào danh sách API theo cách thủ công. Nếu bạn cần thêm một loại quy tắc hạn chế ứng dụng khác, hãy xem phần Di chuyển sang nhiều khoá API.

    4. Trừ phi cần gấp hạn chế một khoá (ví dụ: do sử dụng trái phép), có thể bạn cũng nên đợi một hoặc hai ngày để các đề xuất được cập nhật.

Lý do khiến bạn có thể thấy những đề xuất không xuất hiện trong biểu đồ

  • Ứng dụng hoặc trang web của bạn chỉ gửi lưu lượng truy cập trong thời gian rất ngắn. Trong trường hợp này, hãy chuyển từ chế độ xem BIỂU ĐỒ để hiển thị BẢNG hoặc CẢ HAI, vì mức sử dụng vẫn xuất hiện trong chú giải. Để biết thêm thông tin, hãy xem phần Bật/tắt chú giải đầy đủ của biểu đồ.

  • Lưu lượng truy cập của bạn đến từ Maps Embed API. Để biết hướng dẫn, hãy xem phần Xác định những API sử dụng khoá API của bạn.

  • Lưu lượng truy cập từ ứng dụng hoặc trang web nằm ngoài phạm vi ngày có trong Trình khám phá chỉ số của Google Cloud Console.

  1. Mở trang Thông tin đăng nhập Nền tảng Google Maps của Bảng điều khiển Google Cloud.

  2. Nếu có, hãy chọn Áp dụng các quy định hạn chế được đề xuất.

    Áp dụng các chế độ hạn chế được đề xuất

  3. Chọn Kiểm tra mức sử dụng API để xác minh những dịch vụ mà khoá API đang được dùng. Nếu bạn thấy các dịch vụ khác ngoài Nền tảng Google Maps, hãy tạm dừng để xem xét thủ công các bước đề xuất ở trên. Xem các bước khắc phục sự cố ở đầu phần Áp dụng các hạn chế được đề xuất đối với khoá API.

  4. Kiểm tra kỹ để đảm bảo các quy tắc hạn chế được điền sẵn khớp với những trang web và ứng dụng mà bạn dự kiến sẽ sử dụng khoá API.

    Phương pháp hay nhất: Ghi lại và xoá mọi hạn chế về ứng dụng hoặc API không liên kết với các dịch vụ của bạn. Nếu có vấn đề xảy ra do một phần phụ thuộc không mong muốn, thì bạn có thể thêm lại các ứng dụng hoặc API cần thiết.

    • Nếu bạn nhận thấy một ứng dụng, trang web hoặc API rõ ràng bị thiếu trong đề xuất, hãy thêm ứng dụng, trang web hoặc API đó theo cách thủ công hoặc đợi vài ngày để đề xuất cập nhật.

    • Nếu bạn cần được trợ giúp thêm về đề xuất, hãy liên hệ với nhóm hỗ trợ.

  5. Chọn Áp dụng.

Bạn cần làm gì nếu ứng dụng của mình bị từ chối sau khi áp dụng một đề xuất

Nếu bạn nhận thấy một ứng dụng hoặc trang web bị từ chối sau khi áp dụng một quy tắc hạn chế, hãy tìm quy tắc hạn chế ứng dụng mà bạn cần thêm trong thông báo lỗi phản hồi API.

API và SDK phía máy khách

Ứng dụng dựa trên trình duyệt và webview

Các trình duyệt hiện đại thường chỉnh sửa tiêu đề Referer trong yêu cầu trên nhiều nguồn gốc vì lý do liên quan đến quyền riêng tư, thường là giảm tiêu đề này xuống còn Origin. Tuy nhiên, hành vi chính xác phụ thuộc vào referrer-policy được áp dụng của trang web lưu trữ và cũng có thể thay đổi, tuỳ thuộc vào trình duyệt và phiên bản của người dùng.

Các ứng dụng web sử dụng các lược đồ URI cục bộ hoặc không rõ ràng để tải nội dung thường sẽ khiến trình duyệt kết xuất hoặc webview hoàn toàn chỉnh sửa tiêu đề Referer khỏi mọi lệnh gọi đi, điều này có thể khiến các yêu cầu không thành công khi sử dụng khoá API có hạn chế về trang web.

Để biết thêm hướng dẫn, hãy xem bài viết Lưu trữ các ứng dụng dựa trên trình duyệt trên một máy chủ.

Hướng dẫn khắc phục sự cố cho các ứng dụng dựa trên trình duyệt và webview:

  • Đối với Maps JavaScript API, hãy xem bảng điều khiển gỡ lỗi của trình duyệt để biết thông tin chi tiết về cách uỷ quyền cho ứng dụng của bạn.

    Các giản đồ URI đặc biệt được hỗ trợ một phần. Nếu các phần của ứng dụng không hoạt động với một lược đồ URI lạ, ngay cả sau khi uỷ quyền cho giá trị giới thiệu bắt buộc, thì có thể bạn sẽ cần lưu trữ ứng dụng từ xa trên một máy chủ và tải ứng dụng đó qua HTTPS (hoặc HTTP).

    Nếu bạn cần trợ giúp về các giản đồ URI đặc biệt, hãy liên hệ với nhóm hỗ trợ.

  • Các API khác của Nền tảng Maps thường sẽ trả về trình giới thiệu mà bạn cần uỷ quyền trong phản hồi lỗi API, giả sử rằng ứng dụng đã gửi thông tin này cùng với yêu cầu bị từ chối.

    Không hỗ trợ giản đồ URI lạ.

Ứng dụng Android

Sử dụng Cầu gỡ lỗi Android (adb) hoặc Logcat

Ứng dụng iOS

Xem phần Xem thông báo nhật ký

Các ứng dụng gọi trực tiếp dịch vụ web

Đối với các ứng dụng gọi trực tiếp Maps Platform HTTPS REST API hoặc các điểm cuối gRPC mà không có Google Maps Platform SDK phía máy khách, hãy xem phần dưới đây:

Ứng dụng Android và iOS

Nếu ứng dụng Android hoặc iOS của bạn gọi trực tiếp các dịch vụ của Nền tảng Maps mà không sử dụng bất kỳ SDK ứng dụng khách nào của Nền tảng Google Maps hiện có, hãy xem Ứng dụng AndroidỨng dụng iOS để biết thêm các mẹo khắc phục sự cố, cũng như Gọi dịch vụ web an toàn phía ứng dụng khách để biết các phương pháp bảo mật tốt nhất hiện tại cho các trường hợp sử dụng trên thiết bị di động.

Nếu ứng dụng của bạn ghi lại các phản hồi lỗi của Maps Platform API, thì hướng dẫn ở trên dành cho SDK phía máy khách cũng có thể hữu ích cho việc khắc phục sự cố xác thực.

Ứng dụng phía máy chủ

Các ứng dụng phía máy chủ dựa vào khoá API được bảo mật tốt nhất thông qua các quy tắc hạn chế về địa chỉ IP. Nếu bạn đã áp dụng các quy tắc hạn chế địa chỉ IP cho khoá và dịch vụ của bạn ghi nhật ký các phản hồi lỗi của Maps Platform API, hãy kiểm tra nhật ký hệ thống để biết thêm thông tin. Phản hồi lỗi sẽ bao gồm địa chỉ IP máy chủ mà bạn cần uỷ quyền.

Ứng dụng dựa trên trình duyệt hoặc webview

Mặc dù Maps Static API, Street View Static API và các API Google Maps Platform gần đây hơn cũng sẽ hỗ trợ các hạn chế về giá trị giới thiệu, nhưng xin lưu ý rằng các trình duyệt web hoặc khung hiển thị web có thể sẽ hạn chế tiêu đề Referer thành Origin cho các yêu cầu trên nhiều nguồn gốc và có thể sẽ không gửi tiêu đề này, ví dụ: đối với các tài nguyên được truy cập cục bộ hoặc đối với các tài nguyên được phân phát qua các giao thức khác ngoài HTTP hoặc HTTPS.

Nếu bạn không thể sử dụng Maps JavaScript API trong ứng dụng của mình và các hạn chế về trang web không hoạt động, hãy xem phần Bảo mật các lệnh gọi dịch vụ web phía máy khách để biết cách đưa ra các lệnh gọi dịch vụ web của Nền tảng Google Maps một cách an toàn từ bên trong ứng dụng phía máy khách dựa trên trình duyệt của bạn.

Lưu ý khi kiểm tra các quy định hạn chế đối với API

Để kiểm tra các quy tắc hạn chế bắt buộc đối với API, hãy xem phần Xác định những API sử dụng khoá API của bạn.

Nếu bạn không xác định được những hạn chế cần áp dụng:

  1. Ghi lại các quy định hạn chế hiện tại để tham khảo sau này.
  2. Tạm thời xoá các tiện ích đó trong khi bạn điều tra vấn đề. Bạn có thể kiểm tra mức sử dụng theo thời gian bằng cách làm theo các bước trong phần Kiểm tra mức sử dụng khoá API.
  3. Nếu cần, hãy liên hệ với nhóm hỗ trợ.

Xoá các khoá API không dùng đến

Trước khi xoá khoá API, hãy đảm bảo rằng khoá đó không được dùng trong môi trường phát hành công khai. Nếu không có lưu lượng truy cập nào thành công, thì có thể xoá khoá một cách an toàn. Để biết thêm thông tin, hãy xem bài viết Kiểm tra mức sử dụng khoá API.

Cách xoá khoá API:

  1. Mở trang Thông tin đăng nhập Nền tảng Google Maps của Bảng điều khiển Google Cloud.

  2. Chọn khoá API mà bạn muốn xoá.

  3. Chọn nút Xoá ở gần đầu trang.

  4. Trên trang Xoá thông tin xác thực, hãy chọn Xoá.

    Quá trình xoá khoá API sẽ mất vài phút để có hiệu lực. Sau khi quá trình truyền dữ liệu hoàn tất, mọi lưu lượng truy cập sử dụng khoá API đã bị xoá đều sẽ bị từ chối.

Hãy cẩn thận khi xoay khoá API

Việc xoay vòng khoá API sẽ tạo ra một khoá mới có tất cả các quy tắc hạn chế của khoá cũ. Trong khoảng thời gian này, cả khoá cũ và khoá mới đều được chấp nhận, giúp bạn có cơ hội di chuyển các ứng dụng để sử dụng khoá mới.

Trước khi xoay vòng khoá API:

  • Trước tiên, hãy thử hạn chế khoá API như mô tả trong phần Hạn chế khoá API.

  • Nếu không thể hạn chế khoá API do các loại hạn chế ứng dụng xung đột, hãy di chuyển sang nhiều khoá mới (bị hạn chế) như mô tả trong phần Di chuyển sang nhiều khoá API. Việc di chuyển cho phép bạn kiểm soát tiến trình di chuyển và triển khai sang khoá API mới.

Nếu không thể thực hiện các đề xuất nêu trên và bạn phải xoay vòng khoá API để ngăn chặn việc sử dụng trái phép, hãy làm theo các bước sau:

  1. Mở trang Thông tin đăng nhập Nền tảng Google Maps của Bảng điều khiển Google Cloud.

  2. Mở khoá API mà bạn muốn xoay vòng.

  3. Ở đầu trang, hãy chọn Xoay khoá.

  4. Nếu muốn, hãy thay đổi tên khoá API.

  5. Chọn Tạo.

  6. Cập nhật các ứng dụng của bạn để sử dụng khoá mới.

Sau khi bạn cập nhật các ứng dụng để sử dụng khoá mới, hãy xoá khoá cũ bằng cách nhấp vào nút Xoá khoá trước đó trong phần Khoá trước đó của trang khoá API mới.

Di chuyển sang nhiều khoá API

Để di chuyển từ việc sử dụng một khoá API cho nhiều ứng dụng sang một khoá API duy nhất cho mỗi ứng dụng, hãy làm như sau:

  1. Xác định những ứng dụng cần khoá mới:

    • Ứng dụng web là ứng dụng dễ cập nhật nhất vì bạn kiểm soát toàn bộ mã. Lên kế hoạch cập nhật tất cả các khoá của ứng dụng dựa trên web.
    • Ứng dụng di động khó hơn nhiều, vì khách hàng phải cập nhật ứng dụng của họ trước khi có thể sử dụng khoá mới.
  2. Tạo và hạn chế các khoá mới: Thêm cả quy tắc hạn chế ứng dụng và ít nhất một quy tắc hạn chế API. Để biết thêm thông tin, hãy xem Các phương pháp hay nhất nên dùng.

  3. Thêm các khoá mới vào ứng dụng của bạn: Đối với ứng dụng di động, quá trình này có thể mất nhiều tháng cho đến khi tất cả người dùng cập nhật lên ứng dụng mới nhất bằng khoá API mới.

Chia mức sử dụng phía máy khách và phía máy chủ thành các dự án riêng biệt

Nếu cần gọi các dịch vụ của Nền tảng Google Maps từ cả ứng dụng phía máy chủ và trực tiếp từ các ứng dụng phía máy khách đang chạy trên thiết bị của người dùng cuối, thì Google khuyên bạn nên chia mức sử dụng thành 2 dự án riêng biệt.

Phương pháp này cho phép bạn áp dụng hạn mức thích hợp cho mỗi phút, mỗi người dùng đối với hầu hết các dịch vụ của Nền tảng Google Maps trong dự án phía máy khách, giúp đảm bảo tất cả người dùng cuối đều nhận được phần hạn mức công bằng trong hạn mức dự án tổng thể mà không ảnh hưởng đến nhau.

Tuy nhiên, vì hạn chế về hạn mức trên mỗi người dùng ảnh hưởng đến cả ứng dụng phía máy khách và phía máy chủ, nên nếu bạn cũng cần băng thông cao cho các công việc phía máy chủ, hãy thiết lập một dự án riêng cho trường hợp sử dụng này, được định cấu hình với hạn mức cao hơn trên mỗi người dùng hoặc hoàn toàn không có hạn mức.

Tắt các dịch vụ không dùng đến

Đừng bật các dịch vụ không dùng đến trên một dự án, vì cách làm này dễ bị lạm dụng, đặc biệt nếu bạn chưa hạn chế tất cả các khoá API công khai. Tốt nhất là bạn chỉ nên bật một dịch vụ trên dự án khi các ứng dụng của bạn cần đến dịch vụ đó.

Việc thêm các quy tắc hạn chế về API đối với một khoá sẽ ngăn khoá đó được sử dụng trên những dịch vụ mà khoá chưa được uỷ quyền, nhưng các quy tắc hạn chế về API chỉ áp dụng cho khoá cụ thể đó. Tắt một dịch vụ ở cấp dự án để ngăn chặn hành vi sử dụng trái phép dịch vụ trên bất kỳ khoá nào được liên kết với dự án.

Sử dụng SDK phía máy khách

Khi sử dụng các SDK Nền tảng Google Maps phía máy khách được cung cấp, bạn sẽ luôn có thể áp dụng các quy tắc hạn chế phù hợp cho khoá API để bảo mật việc sử dụng dịch vụ của mình.

Việc sử dụng SDK phía máy khách cũng cho phép bạn áp dụng cơ chế bảo mật nâng cao hơn, chẳng hạn như tính năng Kiểm tra ứng dụng của Firebase trên các giao diện API của Nền tảng Maps có hỗ trợ tính năng này. Hãy xem phần Sử dụng App Check để bảo mật khoá API để biết thêm thông tin chi tiết.

Nếu không có SDK phía máy khách cho nền tảng của bạn, hãy xem phần Bảo mật các lệnh gọi dịch vụ web phía máy khách.

Để biết thông tin về việc cung cấp các SDK Nền tảng Google Maps phía máy khách cho nhiều nền tảng, hãy xem phần Các hạn chế được đề xuất đối với ứng dụng và API.

Bảo vệ việc sử dụng Static Web API

API web tĩnh (chẳng hạn như Maps Static API và Street View Static API) tương tự như các lệnh gọi API dịch vụ web.

Bạn gọi cả hai bằng cách sử dụng API REST HTTPS và thường tạo URL yêu cầu API trên máy chủ. Tuy nhiên, thay vì trả về một phản hồi JSON, Static Web API sẽ tạo một hình ảnh mà bạn có thể nhúng vào mã HTML đã tạo. Quan trọng hơn, thường thì máy khách của người dùng cuối chứ không phải máy chủ sẽ gọi dịch vụ Nền tảng Google Maps.

Sử dụng chữ ký số

Tốt nhất là bạn nên luôn sử dụng chữ ký số ngoài khoá API. Ngoài ra, hãy xem xét số lượng yêu cầu chưa ký mà bạn muốn cho phép mỗi ngày và điều chỉnh hạn mức yêu cầu chưa ký cho phù hợp.

Để biết thêm thông tin chi tiết về chữ ký số, hãy xem Hướng dẫn về chữ ký số.

Bảo vệ khoá bí mật ký

Để bảo vệ API Web tĩnh, đừng nhúng trực tiếp các khoá bí mật ký API vào mã hoặc cây nguồn, hoặc để lộ chúng trong các ứng dụng phía máy khách. Hãy làm theo các phương pháp hay nhất này để bảo vệ khoá bí mật dùng để ký:

  • Tạo URL yêu cầu đã ký của Maps Static API và Street View Static API phía máy chủ khi phân phát một trang web hoặc để phản hồi yêu cầu từ ứng dụng di động của bạn.

    Đối với nội dung tĩnh trên web, bạn có thể sử dụng tiện ích Ký URL ngay trên trang Thông tin đăng nhập của Nền tảng Google Maps trên Cloud Console.

    Đối với nội dung web động, hãy xem các đoạn mã ký yêu cầu URL hiện có.

  • Lưu trữ các bí mật ký bên ngoài mã nguồn và cây nguồn của ứng dụng. Nếu bạn đặt các khoá bí mật để ký hoặc bất kỳ thông tin riêng tư nào khác vào các biến môi trường hoặc bao gồm các tệp được lưu trữ riêng rồi chia sẻ mã của mình, thì các khoá bí mật để ký sẽ không có trong các tệp được chia sẻ. Nếu bạn lưu trữ các khoá bí mật để ký hoặc bất kỳ thông tin riêng tư nào khác trong các tệp, hãy giữ các tệp đó bên ngoài cây nguồn của ứng dụng để giữ các khoá bí mật để ký bên ngoài hệ thống kiểm soát mã nguồn. Biện pháp phòng ngừa này đặc biệt quan trọng nếu bạn sử dụng một hệ thống quản lý mã nguồn công khai, chẳng hạn như GitHub.

Bảo vệ khoá API dịch vụ web

Để sử dụng các API và dịch vụ của Nền tảng Google Maps một cách an toàn từ các ứng dụng phía máy khách, hãy xem phần Sử dụng SDK phía máy kháchBảo mật các lệnh gọi dịch vụ web phía máy khách.

Lưu trữ khoá API bên ngoài mã nguồn hoặc cây nguồn của ứng dụng. Nếu bạn đặt khoá API hoặc bất kỳ thông tin nào khác vào các biến môi trường hoặc đưa các tệp được lưu trữ riêng vào rồi chia sẻ mã của mình, thì khoá API sẽ không có trong các tệp được chia sẻ. Điều này đặc biệt quan trọng nếu bạn sử dụng một hệ thống quản lý mã nguồn công khai, chẳng hạn như GitHub.

Để giúp bảo vệ khoá API dịch vụ web của bạn khỏi bị sử dụng nhầm, Google đề xuất áp dụng các hạn chế về API cho mọi khoá được dùng cho Nền tảng Google Maps. Ngoài ra, việc áp dụng các hạn chế về địa chỉ IP cho khoá dịch vụ web cũng sẽ giúp bảo vệ khoá này khỏi việc sử dụng trái phép từ các địa chỉ IP nguồn khác, ngay cả khi khoá vô tình bị rò rỉ.

Sử dụng OAuth cho các ứng dụng phía máy chủ

OAuth 2.0 là một tiêu chuẩn mở để uỷ quyền truy cập.

Mặc dù giao thức OAuth 2.0 hỗ trợ các trường hợp sử dụng, trong đó người dùng cuối cho phép một ứng dụng truy cập vào dữ liệu cá nhân thay mặt họ, nhưng trường hợp sử dụng dự kiến cho OAuth 2.0 với Maps Platform là để nhà phát triển sử dụng mã truy cập tạm thời để uỷ quyền cho ứng dụng của họ gọi một API thay mặt cho tài khoản dịch vụ dự án Google Cloud của họ với các quyền của tài khoản dịch vụ.

Vì tài khoản dịch vụ có thể có các quyền cực kỳ rộng, nên bạn nên dùng OAuth 2.0 để uỷ quyền các lệnh gọi giữa các máy chủ giữa các ứng dụng phía máy chủ đáng tin cậy của nhà phát triển và các máy chủ của Nền tảng Google Maps.

Đối với các ứng dụng phía máy khách chạy trên thiết bị của người dùng cuối, bạn nên sử dụng các phương thức xác thực khác, chẳng hạn như khoá API.

Nếu bạn muốn sử dụng OAuth 2.0 để uỷ quyền lưu lượng truy cập giữa các máy chủ, hãy tìm chủ đề OAuth trong tài liệu API.

Ví dụ: đây là chủ đề OAuth cho Address Validation API.

Bảo mật các lệnh gọi dịch vụ web phía máy khách

Nếu không có SDK phía máy khách, hãy xem các đề xuất bên dưới.

Sử dụng máy chủ proxy

Việc sử dụng một máy chủ proxy bảo mật sẽ cung cấp một nguồn đáng tin cậy để tương tác với một điểm cuối dịch vụ web của Nền tảng Google Maps từ một ứng dụng phía máy khách mà không để lộ khoá API, bí mật ký hoặc tài khoản dịch vụ Google Cloud của bạn cho người dùng trái phép.

Các điểm chính:

  • Tạo các yêu cầu Nền tảng Google Maps trên máy chủ proxy. Không cho phép các ứng dụng chuyển tiếp lệnh gọi API tuỳ ý bằng cách sử dụng proxy.

  • Xử lý các phản hồi của Nền tảng Google Maps trên máy chủ proxy. Lọc ra dữ liệu mà ứng dụng không cần.

Để biết thêm thông tin về cách sử dụng máy chủ proxy, hãy xem bài viết Living Vicariously: Using Proxy Servers with the Google Data API Client Libraries (Sống gián tiếp: Sử dụng máy chủ proxy với Thư viện ứng dụng Google Data API).

Bảo mật các lệnh gọi dịch vụ web trực tiếp trên thiết bị di động

Nếu không thể thiết lập máy chủ proxy bảo mật cho ứng dụng phía máy khách, hãy bảo mật ứng dụng của bạn bằng cách làm theo các bước sau:

  1. Sử dụng tiêu đề HTTP:

    • Android: Sử dụng tiêu đề HTTP X-Android-PackageX-Android-Cert.

    • iOS: Sử dụng tiêu đề HTTP X-Ios-Bundle-Identifier.

  2. Thêm các quy tắc hạn chế tương ứng cho ứng dụng vào khoá Android hoặc iOS.

  3. Trước khi bạn cân nhắc việc đưa ra các lệnh gọi trực tiếp từ ứng dụng di động đến một dịch vụ web API REST của Nền tảng Google Maps, hãy xác minh rằng các yêu cầu có giá trị nhận dạng ứng dụng Android hoặc iOS không chính xác sẽ bị từ chối.

    Nếu điểm cuối được kiểm thử không hỗ trợ các hạn chế về ứng dụng Android và iOS, thì Google rất khuyến khích bạn sử dụng máy chủ proxy bảo mật giữa các ứng dụng di động và điểm cuối dịch vụ web của Nền tảng Google Maps.

Mẹo dành cho ứng dụng Android:

  • Trước khi tích hợp ứng dụng Android với các dịch vụ của Nền tảng Google Maps, hãy xác minh rằng mã ứng dụng (còn gọi là tên gói) của bạn được định dạng đúng cách. Để biết thông tin chi tiết, hãy xem phần Định cấu hình mô-đun ứng dụng trong tài liệu Android.

  • Để truyền trực tiếp X-Android-Package từ ứng dụng của bạn, hãy tra cứu theo phương thức lập trình bằng Context.getPackageName().

  • Để truyền X-Android-Cert trực tiếp từ các ứng dụng của bạn, hãy tính toán dấu vân tay SHA-1 bắt buộc của chứng chỉ ký ứng dụng, có thể truy cập thông qua PackageInfo.signingInfo.

  • Nếu bạn uỷ quyền cho ứng dụng Android bằng Google Cloud Console, hãy lưu ý rằng giao diện người dùng này yêu cầu dấu vân tay SHA-1 phải là một chuỗi được phân tách bằng dấu hai chấm, ví dụ: 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33. Tuy nhiên, công cụ gcloud và API khoá API yêu cầu chuỗi thập lục phân không có dấu phân cách.

Mẹo dành cho ứng dụng iOS:

  • Trước khi tích hợp ứng dụng iOS với các dịch vụ của Google Maps Platform, hãy xác minh rằng Bundle ID của bạn được định dạng đúng cách.

  • Thông thường, bạn luôn phải truyền Mã nhận dạng gói của gói chính trong tiêu đề X-Ios-Bundle-Identifier khi uỷ quyền cho ứng dụng iOS.

Để biết thêm thông tin, hãy tham khảo các bài viết Quản lý khoá APISử dụng khoá API để truy cập vào API.

Lưu trữ các ứng dụng dựa trên trình duyệt trên một máy chủ

Các khung như Apache Cordova giúp bạn tạo các ứng dụng kết hợp đa nền tảng một cách thuận tiện, chạy bên trong một webview. Tuy nhiên, các hạn chế về trang web khoá API không đảm bảo hoạt động chính xác, trừ phi ứng dụng web của bạn được tải bằng HTTP hoặc HTTPS từ một trang web mà bạn kiểm soát và đã uỷ quyền.

Trong nhiều trường hợp, các tài nguyên đi kèm, được tải cục bộ từ bên trong một ứng dụng kết hợp hoặc được truy cập bằng URL tệp cục bộ sẽ ngăn hoạt động uỷ quyền dựa trên giá trị giới thiệu, vì công cụ trình duyệt hỗ trợ webview của bạn sẽ bỏ qua việc gửi tiêu đề Referer. Để tránh điều này, hãy lưu trữ các ứng dụng web của bạn ở phía máy chủ, chứ không phải phía máy khách.

Ngoài ra, đối với các ứng dụng di động, hãy cân nhắc sử dụng các SDK Android và iOS gốc của Nền tảng Google Maps (nếu có) thay vì sử dụng SDK dựa trên web.

Sử dụng App Check để bảo mật khoá API

Một số Maps SDK và API cho phép bạn tích hợp với Firebase App Check. Tính năng Kiểm tra ứng dụng giúp bảo vệ các lệnh gọi từ ứng dụng của bạn đến Nền tảng Google Maps bằng cách chặn lưu lượng truy cập đến từ các nguồn không phải là ứng dụng hợp lệ. Bằng cách kiểm tra mã thông báo từ một nhà cung cấp chứng thực. Việc tích hợp ứng dụng của bạn với App Check giúp bảo vệ khỏi các yêu cầu độc hại, nhờ đó bạn không bị tính phí cho các lệnh gọi API trái phép.

Hướng dẫn tích hợp App Check:

Xử lý trường hợp sử dụng khoá API trái phép

Nếu phát hiện thấy khoá API của bạn bị sử dụng trái phép, hãy làm như sau để giải quyết vấn đề:

  1. Hạn chế khoá: Nếu bạn đã dùng cùng một khoá trong nhiều ứng dụng, hãy di chuyển sang nhiều khoá API và dùng các khoá API riêng biệt cho từng ứng dụng. Để biết thêm thông tin, hãy xem:

  2. Nếu sử dụng Places SDK hoặc Maps JavaScript API, bạn cũng có thể dùng App Check để bảo mật khoá API.

  3. Chỉ thay thế hoặc xoay khoá nếu đáp ứng các điều kiện sau:

    • Bạn phát hiện thấy việc sử dụng trái phép trên các khoá không thể bị hạn chế hoặc đã bị hạn chế và App Check không áp dụng.

    • Bạn muốn chuyển đổi nhanh hơn để bảo mật khoá API và ngăn chặn hành vi sai trái, ngay cả khi điều này có thể ảnh hưởng đến lưu lượng truy cập hợp pháp từ ứng dụng của bạn.

    Trước khi tiếp tục, hãy đọc kỹ phần Thận trọng khi xoay vòng khoá API.

  4. Nếu bạn vẫn gặp vấn đề hoặc cần trợ giúp, hãy liên hệ với nhóm hỗ trợ.

Các hạn chế được đề xuất đối với ứng dụng và API

Các phần sau đây đề xuất những hạn chế phù hợp về ứng dụng và API cho từng API, SDK hoặc dịch vụ của Google Maps Platform.

Các quy tắc hạn chế API nên dùng

Các nguyên tắc sau đây về quy định hạn chế đối với API áp dụng cho tất cả các dịch vụ của Google Maps Platform:

  • Hạn chế khoá API chỉ cho những API mà bạn đang sử dụng, với các trường hợp ngoại lệ sau:

    • Nếu ứng dụng của bạn dùng Places SDK for Android hoặc Places SDK for iOS, hãy uỷ quyền cho Places API (mới) hoặc Places API, tuỳ thuộc vào phiên bản SDK mà bạn dùng. 1

    • Nếu ứng dụng của bạn sử dụng Maps JavaScript API, hãy luôn uỷ quyền cho ứng dụng đó trên khoá của bạn.

    • Nếu cũng sử dụng bất kỳ dịch vụ nào sau đây của Maps JavaScript API, bạn cũng nên uỷ quyền cho các API tương ứng này:

      Dịch vụ Hạn chế API
      Directions Service (Cũ) Directions API (Cũ)
      Dịch vụ ma trận khoảng cách (Cũ) Distance Matrix API (Cũ)
      Dịch vụ độ cao Elevation API
      Dịch vụ mã hoá địa lý Geocoding API
      Lớp Place, Tiện ích Place Autocomplete (Mới) và Place Autocomplete Data API Places API (Mới)2
      Thư viện địa điểm, Dịch vụ địa điểm và Tiện ích Place Autocomplete Places API2

1 Để biết thêm thông tin chi tiết, hãy xem tài liệu về Places SDK cho AndroidPlaces SDK cho iOS.

2 Nếu bạn không chắc chắn có cần uỷ quyền cho Places API (Mới) hay Places API hay không, hãy xem tài liệu về Maps JavaScript API.

Một số ví dụ:

  • Bạn đang sử dụng Maps SDK cho Android và Places SDK cho Android, vì vậy, bạn sẽ thêm Maps SDK cho Android và Places API (mới) làm các hạn chế về API.

  • Trang web của bạn sử dụng Dịch vụ độ cao của Maps JavaScript API và Maps Static API, vì vậy, bạn cần thêm các quy tắc hạn chế API cho tất cả API sau đây:

    • API JavaScript cho Maps
    • Elevation API
    • API tĩnh cho Maps

Hạn chế ứng dụng được đề xuất

Trang web

Đối với những trang web sử dụng các dịch vụ Maps JavaScript API, Maps Static API hoặc Street View Static API hoặc gọi trực tiếp các dịch vụ gần đây của Nền tảng Google Maps qua HTTPS REST API hoặc gRPC, hãy sử dụng chế độ hạn chế ứng dụng Trang web:

1 Đối với các ứng dụng di động, hãy cân nhắc sử dụng Maps SDK dành cho AndroidMaps SDK dành cho iOS gốc.

2 Đối với các ứng dụng di động, hãy cân nhắc sử dụng Places SDK gốc cho AndroidPlaces SDK cho iOS.

3 Xem thêm Bảo vệ việc sử dụng Static Web API.

Các trang web có Maps Embed API

Mặc dù không mất phí khi sử dụng Maps Embed API, nhưng bạn vẫn nên hạn chế mọi khoá API đã sử dụng để ngăn chặn hành vi sai trái trên các dịch vụ khác.

Phương pháp hay nhất: Tạo một khoá API riêng biệt để sử dụng Maps Embed API và chỉ hạn chế khoá này cho Maps Embed API . Hạn chế này giúp bảo mật khoá một cách đầy đủ, ngăn chặn việc sử dụng khoá trái phép trên bất kỳ dịch vụ nào khác của Google. Để kiểm soát hoàn toàn nơi có thể sử dụng khoá Maps Embed API, Google cũng khuyến nghị bạn áp dụng các quy tắc hạn chế ứng dụng Trang web.

Nếu không thể tách việc sử dụng Maps Embed API thành một khoá API riêng biệt, hãy bảo mật khoá hiện có bằng cách sử dụng quy tắc hạn chế ứng dụng Trang web.

Ứng dụng và máy chủ sử dụng dịch vụ web

Đối với các máy chủ và ứng dụng phía máy khách từ các mạng nội bộ đáng tin cậy của công ty sử dụng các dịch vụ web cùng với khoá API, hãy sử dụng chế độ hạn chế ứng dụng IP addresses.

Sử dụng cho các ứng dụng và máy chủ dùng những API này:

4 Đối với các ứng dụng di động, hãy cân nhắc sử dụng Navigation SDK.

5 Để sử dụng thiết bị di động một cách an toàn, hãy dùng máy chủ proxy bảo mật.

6 Đối với các ứng dụng phía máy khách, hãy cân nhắc sử dụng dịch vụ định vị địa lý gốc do nền tảng cung cấp; ví dụ: W3C Geolocation cho trình duyệt web, LocationManager hoặc Fused Location Provider API cho Android hoặc khung Core Location của Apple cho iOS.

7 Đối với các ứng dụng di động, hãy cân nhắc sử dụng Places SDK cho AndroidPlaces SDK cho iOS gốc.

8 Để sử dụng an toàn phía máy khách, hãy dùng máy chủ proxy bảo mật.

Ứng dụng Android

Đối với các ứng dụng trên Android, hãy sử dụng chế độ hạn chế ứng dụng Android apps. Sử dụng cho các ứng dụng dùng những SDK này:

Ngoài ra, hãy ngăn việc vô tình kiểm tra khoá API vào hệ thống kiểm soát phiên bản bằng cách sử dụng Trình bổ trợ Secrets Gradle để chèn các thông tin bí mật từ một tệp cục bộ thay vì lưu trữ chúng trong Tệp kê khai Android.

Ứng dụng iOS

Đối với các ứng dụng trên iOS, hãy sử dụng chế độ hạn chế ứng dụng iOS apps. Sử dụng cho các ứng dụng và máy chủ dùng những SDK này:

Tài liệu đọc thêm