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ể thực hiện được với Quy tắc bảo mật Firebase (để kiểm soát người dùng nào có thể truy cập vào tài nguyên) và Kiểm tra ứng dụng (để 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á đó 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ụ của Firebase có thể an toàn khi đưa vào mã, nhưng vẫn có một số trường hợp cụ thể mà bạn nên thực thi các giới hạn cho khoá API của mình; ví dụ: nếu bạn đang sử dụng Firebase ML, Xác thực Firebase bằng phương thức đăng nhập email/mật khẩu hoặc Google Cloud API có thể tính phí. Tìm hiểu thêm về các trường hợp này ở phần sau của trang này.

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ả khoá API của dự án trong bảng 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 của Apple – Tìm khoá API được tự động so khớp của một ứng dụng 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 của ứng dụng 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 của một ứng dụng 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ể đặt khoá API bằng một cơ chế khác, bao gồm cả các biến môi trường.

Áp dụng các hạn chế đối với khoá API (nên 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 có một số trường hợp cụ thể (xem bên dưới) mà bạn nên thực hiện thêm các biện pháp để bảo vệ dự án của mình khỏi việc sử dụng khoá API sai mục đích.

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ố