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ác phím API thường được sử dụng như thế nào, phím API cho các dịch vụ căn cứ hỏa lực không được sử dụng để kiểm soát truy cập đến tài nguyên backend; đ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ù các phím API cho các dịch vụ căn cứ hỏa lực được an toàn để đưa vào mã, có một vài trường hợp cụ thể khi nào bạn nên ra những giới hạn cho khóa API của bạn; 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 một dự án căn cứ hỏa lực> Browser key tự động tạo ra
  • Tạo một căn cứ hỏa lực Apple App> iOS key tự động tạo ra
  • Tạo một căn cứ hỏa lực Android App> Android key tự động tạo ra

Bạn cũng có thể tạo phím API của riêng bạn trong Google Cloud Bảng điều khiển , ví dụ cho sự 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ý các khóa API tất cả các dự án của bạn trong API & Dịch vụ> Thông tin đăng nhập bảng điều khiển trong Google Cloud Console.

Bạn cũng có thể tìm thấy trong đó khóa API được tự động phù hợp với một ứng dụng căn cứ hỏa lực ở các vị trí tiếp theo. Theo mặc định, tất cả các căn cứ hỏa lực Apps của dự án của bạn cho nền tảng tương tự (Apple vs Android vs Web) sẽ sử dụng khóa API tương tự.

  • Căn cứ hỏa lực của Apple Apps - Tìm chủ chốt của một ứng dụng tự động kết hợp API trong file config căn cứ hỏa lực, GoogleService-Info.plist , trong API_KEY lĩnh vực.

  • Căn cứ hỏa lực Android Apps - Tìm khóa API tự động kết hợp của một ứng dụng trong file config căn cứ hỏa lực, google-services.json , trong current_key lĩnh vực.

  • Căn cứ hỏa lực Web Apps - Tìm khóa API tự động kết hợp của một ứng dụng trong đối tượng cấu hình căn cứ hỏa lực, trong apiKey lĩnh vực.

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ể thực hiện một yêu cầu đến động Liên kết liên kết shortener API :

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 hạn chế đối với các phím API (khuyến khích)

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 mật khẩu dựa trên căn cứ hỏa lực xác thực và ai đó có được giữ của khóa API của bạn, họ sẽ không thể truy cập bất kỳ cơ sở dữ liệu dự án căn cứ hỏa lực của bạn hoặc dữ liệu Cloud Storage miễn là dữ liệu này được bảo vệ bởi Security Rules căn cứ hỏa lực . 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 so với khả năng rằng ai đó có thể lạm dụng một khóa API để cố gắng một cuộc tấn công brute force, bạn có thể thắt chặt các hạn ngạch mặc định của identitytoolkit.googleapis.com điểm cuối để phản ánh sự mong đợi giao thông bình thường của ứng dụng của bạn. 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 của bạn trong Google Cloud Bảng điều khiển .

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 đám mây Vision API căn cứ hỏa lực ML của 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 vào Vision API Cloud.

Bằng cách sử dụng, các phím API riêng biệt hạn chế cho người không căn cứ hỏa lực API, bạn có thể xoay hoặc thay thế các phím khi cần thiết và thêm hạn chế bổ sung cho các phím API mà không phá vỡ việc bạn sử dụng các dịch vụ căn cứ hỏa lực.

Sử dụng phím môi trường cụ thể API (khuyến khích)

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 tìm thấy trong các tài liệu căn cứ hỏa lực ML .

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