Tìm hiểu 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 của bạn khi tương tác với các dịch vụ của Firebase và 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.

Nếu bạn nhận được email từ Google Cloud về "khoá API Google có thể truy cập công khai cho dự án Google Cloud của bạn" và khoá API được liệt kê trong email là khoá API Firebase của bạn, hãy đảm bảo rằng khoá API đó đáp ứng các yêu cầu sau để có thể đưa vào mã hoặc tệp cấu hình của bạn một cách an toàn. Bạn có thể xác minh những thông tin sau trong trang API và Dịch vụ > Thông tin xác thực của bảng điều khiển Google Cloud.

  • Đây là khoá API mà bạn dùng cho ứng dụng Firebase và chỉ cho các dịch vụ Firebase. Các phím này thường được gọi là Browser key (auto created by Firebase) hoặc Android key (auto created by Firebase) hoặc iOS key (auto created by Firebase).
  • Khoá này có tất cả các API liên quan đến Firebase bắt buộc trong danh sách cho phép "Hạn chế API" của khoá.
  • Khoá này không có bất kỳ API nào khác trong danh sách cho phép "Hạn chế API". Cụ thể, danh sách không được có Generative Language API.

Ngoài ra, hãy đảm bảo rằng bạn đang sử dụng Firebase Security Rules và App Check theo đề xuất cho các sản phẩm Firebase mà bạn sử dụng.

Bạn có thể tìm hiểu thông tin chi tiết về khoá API cho Firebase và xem danh sách câu hỏi thường gặp trong bài viết Tìm hiểu về cách sử dụng và quản lý khoá API cho Firebase


Phần còn lại của trang này cung cấp thông tin chi tiết về khoá API cho Firebase, cũng như danh sách các câu hỏi thường gặp về những khoá này.

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 thường, khoá API cho các dịch vụ của Firebase không được dùng để kiểm soát quyền truy cập vào tài nguyên phụ trợ; việc này chỉ có thể thực hiện bằng Firebase Security Rules (để kiểm soát người dùng cuối nào có thể truy cập vào tài nguyên) và Firebase App Check (để 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 phải bảo vệ khoá API một cách nghiêm ngặt (ví dụ: bằng cách sử dụng dịch vụ khoá bảo mật hoặc đặt 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ù việc đưa khoá API cho các dịch vụ của Firebase vào mã là an toàn, nhưng bạn nên xem xét và áp dụng các quy tắc hạn chế cũng như 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ể liên kết với một dự án Firebase.

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

Firebase sẽ tự động tạo 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 dự án Firebase > Browser key được tạo tự động
  • Tạo ứng dụng Firebase cho Apple > iOS key được tạo tự động
  • Tạo ứ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, ví dụ: để phát triển hoặc gỡ lỗi. Tìm hiểu thêm về thời điểm nên sử dụng tính năng 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 trang APIs & Services > Credentials (API và dịch vụ > Thông tin xác thực) của bảng điều khiển Google Cloud.

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

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

  • Ứng dụng Android Firebase — Tìm khoá API được so khớp tự độ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 so khớp tự động trong đối tượng cấu hình Firebase, trong trường apiKey.

Sử dụng khoá API

Khoá API cho Firebase đượ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ụ của Firebase hoặc Google. Cụ thể, các khoá này được dùng để liên kết các yêu cầu API với dự án của bạn nhằm tính hạn mức và lập hoá đơn. Các lớp này cũng hữu ích cho việc truy cập vào dữ liệu công khai.

Đối với phần lớn nhà phát triển và trường hợp sử dụng, bạn không tương tác trực tiếp với các khoá API này. Thay vào đó, khi ứng dụng của bạn thực hiện lệnh gọi đến một API Firebase yêu cầu khoá API do ứng dụng di động hoặc ứng dụng web cung cấp, ứng dụng của bạn sẽ tự động tìm khoá API trong cấu hình Firebase của ứng dụng. Cấu hình này đã được thêm vào toàn bộ mã nguồn của ứng dụng khi bạn kết nối ứng dụng với Firebase.

Xin lưu ý rằng bạn có thể cung cấp khoá API của ứng dụng trong ứng dụng bằng một cơ chế khác, chẳng hạn như các tuỳ chọn Firebase hoặc sử dụng biến môi trường.

Ngoài ra, đối với một số API REST cho các dịch vụ của Firebase, bạn có thể cần phải truyền rõ ràng giá trị của khoá API vào lệnh gọi dưới dạng tham số truy vấn. Ví dụ này cho thấy cách bạn có thể đưa ra yêu cầu bằng API Firebase Authentication:

https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=API_KEY

Xem xét và áp dụng các quy tắc hạn chế phù hợp cho khoá API

Đối với tất cả khoá API trong dự án, bạn cần đảm bảo rằng các khoá đó có các quy tắc hạn chế và giới hạn API phù hợp, như mô tả trong phần này.

Xem xét các API được tự động thêm vào danh sách cho phép đối với khoá API Firebase của bạn

Khi Firebase tạo khoá API trong dự án của bạn, chúng tôi sẽ tự động thêm "Các quy định hạn chế về 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, yêu cầu ứng dụng cung cấp 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 thực sự không cần phải có trong danh sách cho phép đối với 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 của khoá API có thể bao gồm API cho các sản phẩm mà bạn không sử dụng. Bạn có thể xoá các API khỏi danh sách cho phép, nhưng phải hết sức cẩn thận để không xoá các API cần thiết cho Firebase và các 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ụ của Firebase.

Thắt chặt hạn mức nếu bạn sử dụng Authentication dựa trên mật khẩu

Nếu bạn sử dụng Firebase Authentication dựa trên mật khẩu và có người lấy đượ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 trong dự án Firebase của bạn hoặc dữ liệu Cloud Storage miễn là dữ liệu này được bảo vệ bằng Firebase Security Rules. Tuy nhiên, họ có thể sử dụng khoá API của bạn để truy cập vào các điểm cuối xác thực của Firebase và gửi yêu cầu xác thực đến dự án của bạn.

Để giảm thiểu khả năng ai đó có thể sử dụng sai mục đích khoá API nhằm thực hiện một cuộc tấn công brute force, bạn có thể thắt chặt hạn mức mặc định của các điểm cuối identitytoolkit.googleapis.com để phản ánh lưu lượng truy cập thông thường mà bạn dự kiến cho ứng dụng của mình. Xin lưu ý rằng nếu bạn thắt chặt hạn mức này và ứng dụng của bạn đột nhiên có thêm người dùng, thì bạn có thể gặp lỗi đăng nhập cho đến khi 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 của Firebase

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

Nếu bạn sử dụng một API Google Cloud (trên bất kỳ nền tảng nào) không dành cho một dịch vụ/sản phẩm của 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ực kỳ quan trọng nếu API dành cho một dịch vụ Google Cloud có tính phí. Cụ thể, tuyệt đối không đưa Gemini Developer API vào danh sách cho phép đối với khoá API có thể truy cập công khai hoặc khoá dùng cho các dịch vụ khác.

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

Sử dụng khoá API dành riêng cho môi trường

Nếu bạn thiết lập các dự án Firebase khác nhau cho các môi trường khác nhau, chẳng hạn như thử nghiệm và phát hành chính thức, thì điều quan trọng là mỗi phiên bản ứng dụng phải tương tác với dự án Firebase tương ứng. Ví dụ: phiên bản ứng dụng thử nghiệm không bao giờ được giao tiếp 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 các khoá API liên kết với dự án Firebase thử nghiệm.

Để giảm thiểu các vấn đề khi đưa các thay đổi về mã từ giai đoạn phát triển sang giai đoạn thử nghiệm rồi đến giai đoạn phát hành chính thức, thay vì đưa khoá API vào chính mã, hãy đặt khoá API làm biến môi trường hoặc đưa khoá API vào tệp cấu hình.

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ố