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 bằng Quy tắc bảo mật của 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à Kiểm tra ứng dụng Firebase (để 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ệ 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 khoá làm biến môi trường); tuy nhiên, Bạn có thể thêm khoá API cho các dịch vụ Firebase vào mã hoặc cấu hình đã xác nhận an toàn tệp.

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

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 duy nhất.

Các khoá API do Firebase tự động tạo cho các ứng dụng Firebase của bạn

Firebase 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:

  • 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 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ề khi có thể đề xuất điều này sau trên 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 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 nào được tự động so khớp với Firebase App ở các vị trí 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 và Web) sẽ sử dụng cùng một khoá API.

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

  • Ứng dụng Android của Firebase — 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 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 Firebase/các dịch vụ của Google. Cụ thể, chúng được 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à 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ể đưa ra yêu cầu vào API rút ngắn đườ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 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ả môi trường biến.

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

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

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á đó. 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 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à có người nắm giữ 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 dữ liệu Cloud Storage miễn là dữ liệu này được bảo vệ bằng Quy tắc bảo mật của Firebase. Tuy nhiên, họ có thể sử dụng khoá API của bạn để truy cập Điểm cuối xác thực của Firebase và đưa ra yêu cầu xác thực dựa trên 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ý các 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 Google Cloud API (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 dịch vụ Google Cloud có thể 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ỉ sử dụng để truy cập Cloud Vision API.

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 nên không bao giờ thảo luận với dự án Firebase chính thức của bạn. Đ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 sự cố khi xúc tiến thay đổi mã từ phát triển sang thử nghiệm sản xuất, thay vì đưa khoá API vào chính mã, hãy đặt chúng thành biến môi trường hoặc đưa chúng vào một tệp cấu hình.

Xin lưu ý rằng nếu bạn đang sử dụng Bộ công cụ mô phỏng cục bộ của Firebase để phát triển cùng với với Firebase ML, bạn phải tạo và sử dụng khoá API chỉ gỡ lỗi. Chỉ dẫn để tạo loại khoá đó, bạn có thể tìm thấy loại khoá đó trong Tài liệu về công nghệ 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ố