查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

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

Khóa API là một chuỗi duy nhất được sử 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ề khóa API cũng như các phương pháp hay nhất để sử dụng và quản lý khóa API với ứng dụng Firebase.

Thông tin chung về khóa API và Firebase

Các khóa API cho Firebase khác với các khóa API thông thường

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

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

Mặc dù khóa API cho các dịch vụ Firebase an toàn để đưa vào mã, nhưng có một số trường hợp cụ thể khi bạn nên thực thi các giới hạn cho khóa 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 pháp đăng nhập bằng email / mật khẩu hoặc API Google Cloud có thể thanh toán. Tìm hiểu thêm về những trường hợp này sau trên trang này.

Tạo khóa API

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

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

Firebase tự động tạo khóa 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> Tự động tạo Browser key
  • Tạo Ứng dụng Apple Firebase> 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 khóa API của riêng mình trong Google Cloud Console , 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 điều này có thể được đề xuất sau trên trang này.

Tìm khóa API của bạn

Bạn có thể xem và quản lý tất cả các khóa API của dự án của mình trong bảng API & Dịch vụ> Thông tin đăng nhập trong Google Cloud Console.

Bạn cũng có thể tìm thấy khóa API nào được khớp tự động với Ứng dụng Firebase ở những nơi sau. Theo mặc định, tất cả cá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 và Web) sẽ sử dụng cùng một khóa API.

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

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

Sử dụng khóa API

Khóa API được sử 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ể, chúng được sử dụng để liên kết các yêu cầu API với dự án của bạn để lấy hạn ngạch và thanh toán. Chúng cũng hữu ích để truy cập dữ liệu công khai.

Ví dụ: bạn có thể sử dụng khóa API một cách rõ ràng bằng cách chuyển giá trị của nó vào lệnh gọi API REST 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 đối với API trình rút gọn liên kết 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 tới API Firebase, ứng dụng của bạn sẽ tự động tìm trong tệp / đối tượng cấu hình Firebase cho khóa API của dự án của bạn. Tuy nhiên, bạn có thể đặt khóa API của mình 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ế cho các khóa API (được khuyến nghị)

Mặc dù không cần thiết phải coi khóa 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 có thể muốn thực hiện các biện pháp bổ sung để bảo vệ dự án của mình khỏi việc sử dụng sai khóa API.

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

Nếu bạn sử dụng Xác thực Firebase dựa trên mật khẩu và ai đó nắm giữ khóa API của bạn, 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 của bạn miễn là dữ liệu này được bảo vệ bởi Quy tắc bảo mật của Firebase . Tuy nhiên, họ có thể sử dụng khóa API của bạn để truy cập vào các điểm cuối xác thực của Firebase và thực hiện các 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 đó có thể sử dụng sai khóa API để thực hiện một cuộc tấn công vũ phu, bạn có thể thắt chặt hạn ngạch mặc định của điểm cuối identitytoolkit.googleapis.com để phản ánh kỳ vọng lưu lượng truy cập bình thường của ứng dụng của bạn. Xin lưu ý rằng nếu bạn thắt chặt hạn ngạch này và ứng dụng của bạn đột nhiên có được người dùng, bạn có thể gặp lỗi đăng nhập cho đến khi tăng hạn ngạch. Bạn có thể thay đổi hạn ngạch API của dự án trong Google Cloud Console .

Sử dụng các khóa API riêng biệt, bị hạn chế cho các loại API cụ thể

Mặc dù các khóa API được sử dụng cho các 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 với các khóa API được sử dụng để cấp quyền truy cập vào các API Google Cloud mà bạn đã bật theo cách thủ công.

Nếu bạn sử dụng API đám mây của Google (trên bất kỳ nền tảng nào) không được Firebase tự động bật (nghĩa là bạn đã tự kích hoạt nó), bạn nên cân nhắc tạo các khóa 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 dành cho dịch vụ Google Cloud có thể thanh toán.

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

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

Sử dụng các khóa API dành riêng cho môi trường (được khuyến nghị)

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ư giai đoạn và sản xuất, thì điều quan trọng là mỗi phiên bản ứng dụng tương tác với dự án Firebase tương ứng của nó. Ví dụ: phiên bản ứng dụng dàn dựng của bạn không bao giờ được nói chuyện với dự án Firebase sản xuất của bạn. Điều này cũng có nghĩa là ứng dụng dàn dựng của bạn cần sử dụng các khóa API được liên kết với dự án Firebase dàn dựng của bạn.

Để giảm các vấn đề thúc đẩy thay đổi mã từ phát triển sang giai đoạn sang sản xuất, thay vì bao gồm các khóa API trong chính mã, hãy đặt chúng làm biến môi trường hoặc đưa chúng vào tệp cấu hình.

Lưu ý rằng nếu bạn đ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 khóa API chỉ gỡ lỗi. Hướng dẫn tạo loại khóa đó có trong tài liệu ML của Firebase .

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