Tìm hiểu về cách sử dụng và quản lý khoá API cho Firebase

Khoá API là một chuỗi duy nhất dùng để định tuyến các yêu cầu đến dự án Firebase khi tương tác với Firebase và các dịch vụ của Google. Trang này mô tả thông tin cơ bản về khoá API cũng như các phương pháp hay nhất để sử dụng và quản lý khoá API bằng ứng dụng Firebase.

Thông tin chung về khoá API và Firebase

Khoá API cho Firebase khác với khoá API thông thường

Không giống như cách sử dụng khoá API thường, khoá API cho các dịch vụ Firebase không được dùng để kiểm soát quyền truy cập vào tài nguyên phụ trợ; điều đó chỉ có thể được thực hiện bằng Quy tắc bảo mật Firebase (để kiểm soát người dùng cuối nào có thể truy cập vào tài nguyên) và tính năng Kiểm tra ứng dụng Firebase (để kiểm soát ứng dụng nào có thể truy cập vào tài nguyên).

Thông thường, bạn cần bảo vệ nhanh chóng các khoá API (ví dụ: bằng cách sử dụng dịch vụ kho lưu trữ hoặc đặt các khoá này làm biến môi trường). Tuy nhiên, bạn có thể đưa khoá API cho các dịch vụ Firebase vào mã hoặc tệp cấu hình đã đăng ký.

Mặc dù khoá API cho các dịch vụ Firebase có thể an toàn khi đưa vào mã, nhưng bạn nên xem và áp dụng các quy tắc hạn chế và giới hạn thích hợp cho các khoá đó.

Tạo khoá API

Một dự án Firebase có thể có nhiều khoá API, nhưng mỗi khoá API chỉ có thể được liên kết với một dự án Firebase duy nhất.

Khoá API do Firebase tự động tạo cho Ứng dụng Firebase của bạn

Firebase tự động tạo các khoá API cho dự án của bạn khi bạn thực hiện bất kỳ thao tác nào sau đây:

  • Tạo một dự án Firebase > Browser key được tạo tự động
  • Tạo một Ứng dụng Firebase Apple > iOS key được tạo tự động
  • Tạo một ứng dụng Android trên Firebase > Android key được tạo tự động

Bạn cũng có thể tạo khoá API của riêng mình trong bảng điều khiển Google Cloud, chẳng hạn như để phát triển hoặc gỡ lỗi. Tìm hiểu thêm về thời điểm chúng tôi có thể đề xuất lựa chọn này ở phần sau của trang này.

Tìm khoá API

Bạn có thể xem và quản lý tất cả các khoá API của dự án trong bảng điều khiển API và dịch vụ > Thông tin xác thực trong bảng điều khiển Google Cloud.

Bạn cũng có thể tìm thấy khoá API được tự động so khớp với một ứng dụng Firebase ở những vị trí sau. Theo mặc định, tất cả các Ứng dụng Firebase của dự án cho cùng một nền tảng (Apple so với Android và Web) sẽ sử dụng cùng một khoá API.

  • Ứng dụng Firebase dành cho Apple – Tìm khoá API được tự động so khớp trong tệp cấu hình Firebase, GoogleService-Info.plist, trong trường API_KEY.

  • Ứng dụng Firebase dành cho Android – Tìm khoá API được tự động so khớp trong tệp cấu hình Firebase, google-services.json, trong trường current_key.

  • Ứng dụng web Firebase – Tìm khoá API được tự động so khớp trong đối tượng cấu hình Firebase, trong trường apiKey.

Sử dụng khoá API

Khoá API được dùng để xác định dự án Firebase của bạn khi tương tác với các dịch vụ Firebase/Google. Cụ thể, chúng dùng để liên kết các yêu cầu API với dự án của bạn về hạn mức và hoạt động thanh toán. Các API này cũng hữu ích khi truy cập dữ liệu công khai.

Ví dụ: bạn có thể sử dụng khoá API một cách rõ ràng bằng cách chuyển giá trị của khoá đó vào lệnh gọi API REST dưới dạng tham số truy vấn. Dưới đây là ví dụ minh hoạ cách bạn có thể gửi yêu cầu đến API trình liên kết đường liên kết động:

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

Khi ứng dụng của bạn thực hiện lệnh gọi đến một API Firebase đòi hỏi khoá API do ứng dụng dành cho thiết bị di động/web cung cấp, ứng dụng sẽ tự động tìm khoá/đối tượng cấu hình Firebase cho khoá API của dự án. Tuy nhiên, bạn có thể cung cấp khoá API cho ứng dụng của mình bằng cách sử dụng một cơ chế khác, bao gồm cả các biến môi trường.

Xem xét và áp dụng các quy định hạn chế phù hợp cho khoá API (nên áp dụng)

Mặc dù không nhất thiết phải coi khoá API cho các dịch vụ Firebase là bí mật, nhưng bạn nên xem xét và áp dụng các hạn chế và giới hạn như mô tả trong phần này.

Xem xét những API được tự động thêm vào danh sách cho phép cho khoá API Firebase

Khi Firebase tạo một khoá API trong dự án của bạn, chúng tôi sẽ tự động thêm "Hạn chế API" vào khoá đó. Các API được thêm vào danh sách cho phép này là các API liên quan đến Firebase. Các API này yêu cầu ứng dụng cung cấp một khoá API cùng với lệnh gọi. Xin lưu ý rằng hầu hết các API cần thiết để sử dụng dịch vụ Firebase không thực sự cần nằm trong danh sách cho phép đối với các khoá API của bạn.

Vì Firebase thêm các API cần thiết cho tất cả dịch vụ Firebase, nên danh sách cho phép cho một khoá API có thể bao gồm các API cho những sản phẩm mà bạn không sử dụng. Bạn có thể xoá API khỏi danh sách cho phép, nhưng bạn phải cẩn thận để không xoá các API bắt buộc đối với Firebase và dịch vụ Firebase mà bạn sử dụng (xem danh sách các API liên quan đến Firebase cần có trong danh sách cho phép của từng dịch vụ / sản phẩm). Nếu không, bạn sẽ gặp lỗi khi thực hiện lệnh gọi đến các dịch vụ Firebase.

Thắt chặt hạn mức nếu bạn dùng phương thức Xác thực dựa trên mật khẩu

Nếu bạn sử dụng tính năng Xác thực Firebase dựa trên mật khẩu và ai đó có được khoá API của bạn, thì họ sẽ không thể truy cập vào bất kỳ cơ sở dữ liệu nào của dự án Firebase hoặc dữ liệu Cloud Storage miễn là dữ liệu này được bảo vệ theo Quy tắc bảo mật Firebase. Tuy nhiên, họ có thể sử dụng khoá API để truy cập các điểm cuối xác thực của Firebase và đưa ra yêu cầu xác thực đối với dự án của bạn.

Để giảm thiểu khả năng ai đó sử dụng sai khoá API nhằm tìm cách tấn công brute force, bạn có thể thắt chặt hạn mức mặc định của điểm cuối identitytoolkit.googleapis.com để phản ánh kỳ vọng bình thường về lưu lượng truy cập của ứng dụng. Xin lưu ý rằng nếu bạn thu hẹp hạn mức này và ứng dụng của bạn đột ngột có thêm người dùng, bạn có thể gặp lỗi đăng nhập cho đến khi bạn tăng hạn mức. Bạn có thể thay đổi hạn mức API của dự án trong bảng điều khiển Google Cloud.

Sử dụng các khoá API riêng biệt bị hạn chế cho mọi dịch vụ không phải Firebase

Mặc dù thường không cần phải coi khoá API sử dụng cho các dịch vụ Firebase là khoá bí mật, nhưng bạn nên có thêm một số biện pháp phòng ngừa đối với khoá API mà bạn sử dụng với các API khác của Google Cloud.

Nếu sử dụng Google Cloud API (trên bất kỳ nền tảng nào) không dành cho dịch vụ / sản phẩm Firebase, bạn nên tạo các khoá API riêng biệt bị hạn chế để sử dụng với các API đó. Điều này đặc biệt quan trọng nếu API này dành cho một dịch vụ Google Cloud có tính phí.

Ví dụ: nếu sử dụng Firebase ML và Cloud Vision API trên iOS, bạn nên tạo các khoá API riêng mà bạn chỉ dùng để truy cập vào Cloud Vision API.

Bằng cách sử dụng các khoá API riêng biệt, bị hạn chế cho API không phải Firebase, bạn có thể xoay vòng hoặc thay thế các khoá khi cần và thêm các hạn chế bổ sung cho khoá API mà không làm gián đoạn việc sử dụng dịch vụ Firebase.

Sử dụng khoá API theo môi trường cụ thể (nên dùng)

Nếu bạn thiết lập nhiều dự án Firebase cho nhiều môi trường, chẳng hạn như thử nghiệm và sản xuất, thì điều quan trọng là mỗi thực thể ứng dụng phải tương tác với dự án Firebase tương ứng. Ví dụ: thực thể ứng dụng thử nghiệm sẽ không bao giờ được trao đổi với dự án Firebase chính thức. Điều này cũng có nghĩa là ứng dụng thử nghiệm cần sử dụng khoá API được liên kết với dự án Firebase thử nghiệm.

Để giảm thiểu các vấn đề thúc đẩy việc thay đổi mã từ quá trình phát triển, thử nghiệm đến sản xuất, thay vì đưa khoá API vào chính mã, hãy đặt các khoá đó làm biến môi trường hoặc đưa các khoá đó vào tệp cấu hình.

Xin lưu ý rằng nếu đang sử dụng Bộ trình mô phỏng cục bộ Firebase để phát triển cùng với công nghệ học máy Firebase, bạn phải tạo và sử dụng khoá API chỉ dùng để gỡ lỗi. Bạn có thể xem hướng dẫn về cách tạo loại khoá đó trong các tài liệu về học máy của Firebase.

Câu hỏi thường gặp và cách khắc phục sự cố

Câu hỏi thường gặp

Khắc phục sự cố