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 Firebase dự án 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 khoá API thường được sử dụng, khoá API cho các dịch vụ của Firebase không dùng để kiểm soát quyền truy cập vào các tài nguyên phụ trợ; chỉ có thể làm được với 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 những ứng dụng có thể truy cập vào tài nguyên).

Thông thường, bạn cần bảo vệ cẩn thận các khoá API (ví dụ: bằng cách sử dụng dịch vụ kho tiền 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 đã kiểm tra.

Mặc dù bạn có thể an toàn khi đưa khoá API cho các dịch vụ Firebase vào mã, nhưng bạn nên xem xét 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ể liên kết với một dự án Firebase.

Các khoá API do Firebase tự động tạo cho các ứ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 Apple > iOS key được tạo tự động
  • Tạo ứng dụng Android 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. Hãy tìm hiểu thêm về thời điểm bạn 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 API và Dịch vụ > Thông tin đăng nhập trong bảng điều khiển Google Cloud.

Bạn cũng có thể tìm thấy khoá API nào được tự động so khớp với một Ứng dụng Firebase ở những nơi sau. Theo mặc định, tất cả Ứng dụng Firebase của dự á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 Apple trên Firebase – 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 của Firebase — Tìm khoá API được tự động so khớp trong Firebase config, 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ụ của Firebase/Google. Cụ thể, các mã này được dùng để liên kết các yêu cầu API với dự án của bạn để tính hạn mức và thanh toán. Chúng cũng hữu ích khi truy cập vào 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 một REST Lệnh gọi API dưới dạng tham số truy vấn. Ví dụ này cho thấy cách bạn có thể gửi yêu cầu đến API rút gọn đường liên kết Dynamic Links:

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 Firebase API và yêu cầu phải cung cấp khoá API bằng ứng dụng web dành cho thiết bị di động/web, ứng dụng của bạn sẽ tự động tìm trong Tệp/đố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 bằng một cơ chế khác, bao gồm cả biến môi trường.

Xem xét và áp dụng các quy tắc hạn chế thích hợp cho khoá API (nên áp dụng)

Mặc dù không cần phải coi khoá API cho các dịch vụ Firebase là khoá bí mật, nhưng bạn nên xem xét và áp dụng các quy định 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 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 "Hạn chế về API" cho 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 Để sử dụng các dịch vụ của Firebase, bạn không cần phải ở trên danh sách cho phép cho 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 của khoá API có thể bao gồm API của các sản phẩm mà bạn không sử dụng. Bạn có thể loại bỏ API khỏi danh sách cho phép, nhưng phải cẩn thận để không xoá các API cần thiết cho 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 dịch vụ Firebase.

Siế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 API của bạn khoá, 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 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à đư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 một người nào đó có thể sử dụng khoá API sai mục đích để nếu bạn 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 identitytoolkit.googleapis.com điểm cuối để phản ánh lưu lượng truy cập bình thường kỳ vọng của ứng dụng. 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 bất ngờ có được 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 và bị hạn chế cho mọi dịch vụ không phải của Firebase

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

Trường hợp bạn sử dụng API Google Cloud (trên bất kỳ nền tảng nào) không dành cho Firebase dịch vụ / sản phẩm, bạn nên tạo các khoá API riêng biệt và 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 dành cho một dịch vụ Google Cloud có thể lập hoá đơn.

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

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

Sử dụng khoá API dành riêng cho môi trường (nên dù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à chính thức, đ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 của bạn 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 chạy thử cần sử dụng các khoá API được liên kết với dự án Firebase thử nghiệm của bạn.

Để giảm thiểu các vấn đề khi quảng bá các thay đổi về mã từ phát triển đến giai đoạn thử nghiệm đến phát hành công khai, 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 vào tệp cấu hình.

Xin lưu ý rằng nếu đang sử dụng Firebase Local Emulator Suite để phát triển cùng với Firebase ML, bạn phải tạo và sử dụng khoá API chỉ gỡ lỗi. Bạn có thể tìm thấy hướng dẫn tạo loại khoá đó trong tài liệu về Firebase ML.

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ố