Các phương pháp hay nhất về bảo mật API

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Khóa API là bắt buộc đối với các ứng dụng và dự án sử dụng API và SDK nền tảng Google Maps. Để bảo mật tối đa và tốn ít công sức nhất, hãy bảo mật khoá API khi bạn tạo khoá.

Mặc dù bạn có thể bảo mật khoá API sau khi tạo và sử dụng, nhưng có thể có những hạn chế khác nhau dựa trên cách sử dụng khoá. Việc cập nhật hoặc thay thế khoá trong ứng dụng di động (Android và iOS) là thao tác phức tạp nhất, vì tất cả khoá sẽ không được thay thế cho đến khi tất cả khách hàng cập nhật ứng dụng. Việc cập nhật hoặc thay thế khoá trong các ứng dụng JavaScript hoặc dịch vụ web có thể đơn giản hơn nhiều, nhưng việc cập nhật hoặc thay thế các khoá này vẫn có thể cần phải lập kế hoạch cẩn thận và nhanh chóng.

Các phương pháp bảo mật áp dụng cho sản phẩm riêng lẻ của Nền tảng Google Maps (chẳng hạn như API JavaScript cho Maps) được liệt kê trong phần Thông tin khác.

Hạn chế khoá API

Khi bạn tạo khoá API lần đầu, hãy hạn chế các khoá đó bằng một quy định hạn chế đối với ứng dụng và một hoặc nhiều hạn chế về API.

  • Hạn chế ứng dụng giới hạn việc sử dụng khoá API ở một nền tảng cụ thể (Android hoặc iOS) hoặc các trang web cụ thể (địa chỉ IP công khai và trang web). Chỉ có thể thêm một loại hạn chế ứng dụng vào bất kỳ khoá API riêng lẻ nào.

  • Hạn chế API giới hạn việc sử dụng khoá API ở một hoặc nhiều API hoặc Nền tảng Google Maps. Chỉ yêu cầu sử dụng API hoặc SDK liên kết với khoá API mới được xử lý. Đối với bất kỳ khoá API nào, bạn có thể chỉ định số lượng hạn chế API nếu cần.

Nếu bạn không bảo mật khoá API khi tạo khoá, hãy tạo thêm các khoá API và hạn chế các khoá đó, sau đó cập nhật tất cả ứng dụng bằng khoá API mới. Mặc dù một khoá cho mỗi ứng dụng là lý tưởng để bảo mật, bạn có thể sử dụng khoá bị hạn chế trên nhiều ứng dụng, miễn là các loại hạn chế của ứng dụng trên khoá đó không gây ra vấn đề không tương thích với các ứng dụng dùng chung khoá.

Nếu bạn hạn chế các khoá API sau khi được tạo, hãy kiểm tra việc sử dụng khoá API để đảm bảo rằng các quy định hạn chế sẽ không phá vỡ bất kỳ ứng dụng hiện có nào của bạn.

  1. Truy cập vào trang Chỉ số của Google Cloud Console.

  2. Chọn Hiển thị bộ lọc.

  3. Từ phần Được nhóm theo, hãy chọn Thông tin xác thực. Bạn sẽ thấy những khoá API nào được dùng với các dịch vụ nào của Google.

  4. Nhấp vào Thông tin xác thực.

  5. Bỏ chọn tất cả thông tin xác thực.

  6. Chọn mỗi khoá rồi nhấp vào Ok.

  7. Chọn API theo Phân nhóm theo. Bạn sẽ thấy những hạn chế API cần áp dụng trên khoá này.

    Việc chọn phương thức API trong mục Tạo nhóm theo có thể cho bạn biết các loại hạn chế ứng dụng phù hợp nhất với khoá.

Đặt quy định hạn chế đối với ứng dụng cho khoá API

  1. Chuyển đến trang Thông tin xác thực.
  2. Chọn khoá API mà bạn muốn áp dụng một quy định hạn chế. Trang thuộc tính khoá API sẽ xuất hiện.

  3. Trong mục Key restrictions (Hạn chế cho khoá), chọn Application restrictions (Hạn chế cho ứng dụng).

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

    Loại quy định hạn chế Mô tả
    Tham chiếu HTTP Chỉ định một hoặc nhiều trang web giới thiệu. Chúng tôi chấp nhận ký tự đại diện để cho phép tất cả miền con (ví dụ: *.google.com chấp nhận mọi trang web có đuôi là .google.com). Hãy chỉ định https://http:// nguyên trạng. Bạn phải sử dụng một đại diện đặc biệt cho các loại giao thức URL tham chiếu khác. Ví dụ: định dạng file:///path/to/__file_url__//path/to/*. Sau khi bật tính năng giới thiệu, hãy nhớ theo dõi mức sử dụng của bạn để đảm bảo rằng dữ liệu đó phù hợp với kỳ vọng của bạn. Các giao thức tham chiếu sau được hỗ trợ: about://, app://, applewebdata://, asset://, chrome://, content://, file://, ftp://, ionic://, local://, ms-appx://, ms-appx-web://, ms-local-stream://, prism://, qrc://, res://, saphtmlp://.
    địa chỉ IP Chỉ định một địa chỉ IPv4 hoặc IPv6 hoặc một mạng con bằng ký hiệu Định tuyến liên miền không lớp (CIDR). Vì yêu cầu dịch vụ web kiểm tra và so sánh địa chỉ IP bên ngoài với quy định hạn chế đối với khoá API,hãy sử dụng địa chỉ IP công khai của máy chủ.
    Ứng dụng Android Thêm vân tay số chứng chỉ ký SHA-1 và tên gói Android của bạn trong tệp AndroidManifest.xml.
    Ứng dụng iOS Bên dưới các loại, hãy chọn giá trị nhận dạng gói iOS phù hợp từ danh sách.
  4. Chọn Lưu.

Đặt quy tắc hạn chế API cho khoá API

  1. Truy cập trang thông tin xác thực.

  2. Chọn khoá API mà bạn muốn hạn chế. Trang Hạn chế và đổi tên khoá API xuất hiện.

  3. Trong mục Hạn chế API:

    • Nhấp vào Hạn chế khoá.

    • Nhấp vào trình đơn thả xuống Select API (Chọn API) rồi chọn API hoặc SDK mà bạn muốn ứng dụng của mình truy cập bằng cách sử dụng khóa API.

      (Nếu API hoặc SDK không có trong danh sách, bạn cần bật API đó.)

  4. Nhấp vào Lưu.

    Quy định hạn chế này sẽ trở thành một phần của định nghĩa khoá API sau bước này. Nếu bạn không cung cấp thông tin chi tiết thích hợp hoặc không nhấp vào “Lưu”, khoá API sẽ không bị hạn chế. (Để biết thêm thông tin, hãy xem hướng dẫn Nhận khoá API cho API hoặc SDK cụ thể mà bạn quan tâm.)

Xoá 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 phiên bản chính thức. Nếu không có lưu lượng truy cập thành công, bạn có thể xoá khoá này một cách an toàn.

Cách xoá khoá API:

  1. Chuyển đến trang Thông tin xác thực.

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

  3. Hãy chọn nút Xoá ở gần đầu trang.

  4. Khi hộp thoại Xoá thông tin xác thực xuất hiện, hãy chọn Xoá.

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

Cách khác để bảo mật API

Hãy cẩn thận khi tạo lại khoá API

Việc tạo lại khoá API sẽ tạo khoá mới có tất cả các hạn chế đối với khoá cũ. Thao tác này cũng bắt đầu một bộ hẹn giờ 24 giờ để vô hiệu hoá khoá API cũ.

Trong khoảng thời gian này, cả khoá cũ và mới đều được chấp nhận, giúp bạn có thể di chuyển ứng dụng để sử dụng khoá mới. Tuy nhiên, mọi ứng dụng vẫn sử dụng khoá API cũ sẽ ngừng hoạt động sau khi khoảng thời gian này kết thúc.

  1. Truy cập trang về khoá API.

  2. Chọn Trở về khoá trước.

  3. Trong hộp thoại Hủy bỏ, hãy nhấp vào Hủy bỏ khóa.

Khi khôi phục, phiên bản "mới" cũ của khoá sẽ trở thành phiên bản trước đó và bạn sẽ đặt đồng hồ hẹn giờ huỷ kích hoạt 24 giờ mới cho khoá đó. Bạn có thể đảo ngược giữa hai giá trị khoá này cho đến khi tạo lại khoá.

Lần tạo lại thứ hai này sẽ ghi đè giá trị khoá không hoạt động cũ.

Giám sát hoạt động sử dụng API

Cách kiểm tra việc sử dụng khoá API:

  1. Chuyển đến trang Chỉ số.

  2. Nhấp vào Hiển thị bộ lọc.

  3. Trong Nhóm theo, hãy chọn Phương thức API.

  4. Trong phần Mã phản hồi, hãy chọn 2xx để xem mọi yêu cầu thành công đối với khoá này.

Nếu bạn phát hiện thấy hành vi sử dụng trái phép, hãy làm như sau:

  1. Hạn chế khoá của bạn.

    Nếu sử dụng cùng một khoá trong nhiều ứng dụng, hãy di chuyển sang nhiều khoá API, tốt nhất là dùng các khoá API riêng cho từng ứng dụng.

  2. Nếu việc sử dụng trái phép tiếp tục, hãy tạo lại hoặc xoá các khoá bị ảnh hưởng.

  3. Liên hệ với nhóm hỗ trợ.

Dùng khoá API riêng cho từng ứng dụng

Việc này giới hạn phạm vi của mỗi khoá. Nếu khoá API bị xâm phạm, bạn có thể xoá hoặc tạo lại khoá bị ảnh hưởng mà không cần cập nhật các khoá API khác.

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 từng ứng dụng, hãy làm như sau:

  1. Xác định những ứng dụng sẽ 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ả khoá của ứng dụng dựa trên nền tảng web.
    • Ứng dụng dành cho thiết bị di động khó hơn nhiều vì khách hàng của bạn phải cập nhật ứng dụng trước khi sử dụng khoá mới.
  2. Tạo và hạn chế khoá mới.

    • Thêm cả hạn chế ứng dụng và ít nhất một hạn chế API.
  3. Thêm khoá mới vào nhiều ứng dụng.

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

Các phương pháp bảo vệ ứng dụng trong API Dịch vụ web của Maps hoặc API web tĩnh

  • Lưu trữ khoá API và bí mật ký bên ngoài mã nguồn của ứng dụng. Nếu bạn đặt khoá API hoặc bất kỳ thông tin riêng tư nào khác vào 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ã, thì khoá API hoặc mã thông báo bí mật sẽ không được đưa vào các tệp được chia sẻ.

  • Lưu trữ khoá API hoặc mã thông báo bí mật cho tệp trong các tệp bên ngoài cây nguồn của ứng dụng. Nếu bạn lưu trữ khoá API hoặc bất kỳ thông tin riêng tư nào khác trong tệp, hãy để các tệp đó ở bên ngoài cây nguồn của ứng dụng để giữ khoá khỏi hệ thống kiểm soát mã nguồn. Đ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.

Phương thức bảo vệ ứng dụng dành cho thiết bị di động hoặc API dịch vụ web hoặc API dịch vụ web tĩnh

  • Sử dụng máy chủ proxy. Máy chủ proxy cung cấp một nguồn vững chắc để tương tác với API Nền tảng Google Maps thích hợp. Để biết thêm thông tin về cách sử dụng máy chủ proxy, hãy xem phần Sống động: Sử dụng máy chủ proxy với Thư viện ứng dụng API dữ liệu của Google.

  • Làm rối hoặc mã hoá khoá API hoặc bí mật ký. Việc này sẽ loại bỏ các khoá API và dữ liệu riêng tư khác một cách phức tạp trực tiếp từ ứng dụng.

Thông tin khác

Các bảng này liệt kê các quy tắc hạn chế thích hợp cho khoá API và các phương pháp hay nhất về bảo mật API cho từng API Nền tảng Google Maps, SDK hoặc dịch vụ.

Các trang web có API Maps, API nhúng hoặc tĩnh

API/SDK/Dịch vụ Hạn chế ứng dụng (1) Hạn chế API (1) Các phương pháp hay nhất
API JavaScript của Maps (2) Hạn chế liên kết giới thiệu HTTP API JavaScript cho Maps
Dịch vụ chỉ đường, API Maps JavaScript Hạn chế liên kết giới thiệu HTTP API Chỉ đường, API Maps JavaScript
Dịch vụ ma trận khoảng cách, API Maps JavaScript Hạn chế liên kết giới thiệu HTTP API ma trận khoảng cách, API Maps JavaScript
Dịch vụ dữ liệu độ cao, API Maps JavaScript Hạn chế liên kết giới thiệu HTTP API độ cao, API Maps JavaScript
Dịch vụ mã hóa địa lý, API Maps JavaScript Hạn chế liên kết giới thiệu HTTP API mã hóa địa lý, API Maps JavaScript
Thư viện địa điểm, API Maps JavaScript Hạn chế liên kết giới thiệu HTTP API địa điểm, API JavaScript cho Maps
API nhúng của Maps Hạn chế liên kết giới thiệu HTTP API nhúng cho Maps
API tĩnh của Maps Hạn chế liên kết giới thiệu HTTP API tĩnh cho Maps
API tĩnh của Chế độ xem phố Hạn chế liên kết giới thiệu HTTP Street View Static API

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

API/SDK/Dịch vụ Hạn chế ứng dụng (1) Hạn chế API (1) Các phương pháp hay nhất
API Xác thực địa chỉ Hạn chế địa chỉ IP(4) API Xác thực địa chỉ
API Đường đi Hạn chế địa chỉ IP(4) Directions API
API Ma trận khoảng cách Hạn chế địa chỉ IP(4) Distance Matrix API
API độ cao Hạn chế địa chỉ IP(4) Elevation API
API mã hóa địa lý Hạn chế địa chỉ IP(4) Geocoding API
API vị trí địa lý Hạn chế địa chỉ IP(4) Geolocation API
API Địa điểm (5) Hạn chế địa chỉ IP(4) Places API
API đường Hạn chế địa chỉ IP(4) Roads API
API múi giờ Hạn chế địa chỉ IP(4) Time Zone API

Ứng dụng Android

API/SDK/Dịch vụ Hạn chế ứng dụng (1) Hạn chế API (1) Các phương pháp hay nhất
SDK Maps dành cho Android Hạn chế trên Android SDK Maps dành cho Android
SDK Địa điểm dành cho Android Hạn chế trên Android Places API

Ứng dụng iOS

API/SDK/Dịch vụ Hạn chế ứng dụng (1) Hạn chế API (1) Các phương pháp hay nhất
SDK Maps dành cho iOS Hạn chế trên iOS SDK Maps dành cho iOS
SDK Địa điểm dành cho iOS Hạn chế trên iOS Places API

1 Bạn có thể sử dụng khoá API không bị hạn chế với bất kỳ API hoặc SDK nền tảng Google Maps nào. Tuy nhiên, bạn nên hạn chế các khoá API, đặc biệt là trong các trường hợp sau:

  • Môi trường thử nghiệm sẽ hoặc sẽ hiển thị công khai.

  • Ứng dụng sử dụng khoá API đã sẵn sàng để sử dụng trong môi trường phát hành chính thức.

2 Đối với các ứng dụng dành cho thiết bị di động, hãy cân nhắc sử dụng SDK Maps dành cho AndroidSDK Maps dành cho iOS.

3 Đối với API Maps tĩnh và API tĩnh của Chế độ xem phố, ngoài khoá API, bạn cần cung cấp một chữ ký số để vượt quá định mức 25.000 lượt tải bản đồ hằng ngày.

Nếu bạn ký yêu cầu, 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.

4 Các hạn chế IP có thể không thực tế trong một số trường hợp, chẳng hạn như trong các ứng dụng dành cho thiết bị di động và môi trường đám mây dựa vào địa chỉ IP động. Khi sử dụng API Dịch vụ web của Maps trong các trường hợp này, hãy bảo mật ứng dụng của bạn bằng cách sử dụng máy chủ proxy hoặc làm rối mã nguồn.

5 Đối với ứng dụng dành cho thiết bị di động, hãy cân nhắc sử dụng SDK địa điểm dành cho AndroidSDK địa điểm dành cho iOS.