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 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 Firebase và các dịch vụ của 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 bằng ứng dụng Firebase.

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

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

Không giống như cách sử dụng khóa API thông thường, khóa API cho dịch vụ Firebase không được sử dụng để kiểm soát quyền truy cập vào 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 khóa làm biến môi trường); tuy nhiên, bạn có thể đưa khóa API cho dịch vụ Firebase vào mã hoặc tệp cấu hình đã đăng ký.

Mặc dù khóa API cho dịch vụ Firebase được đưa vào mã một cách an toàn 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 thức đăng nhập email/mật khẩu hoặc API Google Cloud có thể tính phí. 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.

Khóa API được 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 > 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 khóa API của riêng mình trong bảng điều khiển Google Cloud , ví dụ 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 trong bảng API & 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 khóa API nào được tự động khớp với Ứng dụng Firebase ở những nơi sau. 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 vs Android vs Web) sẽ sử dụng cùng một khóa API.

  • Ứng dụng Firebase của Apple - Tìm khóa API tự động khớp 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 tự động khớp 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 tự động khớp 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ụ 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 cho việc truy cập dữ liệu công cộng.

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ể gửi yêu cầu tới API rút ngắ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 để tìm khóa API của dự án. Tuy nhiên, bạn có thể đặt khóa API bằng cơ chế khác, bao gồm các biến môi trường.

Áp dụng các hạn chế cho khóa API (được khuyến nghị)

Mặc dù không cần thiết phải coi khóa API cho 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 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 Firebase . Tuy nhiên, họ có thể sử dụng khóa API của bạn để truy cập 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 mức mặc định của các điểm cuối identitytoolkit.googleapis.com để phản ánh kỳ vọng về lưu lượng truy cập thông 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 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 ngạch API của dự án trong bảng điều khiển Google Cloud .

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 dịch vụ Firebase thường không cần phải đượ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 API Google Cloud mà bạn đã bật theo cách thủ công.

Nếu bạn sử dụng API Google Cloud (trên bất kỳ nền tảng nào) không được Firebase bật tự động (nghĩa là bạn đã tự bật API đó), thì bạn nên xem xét việ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ó tính phí.

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

Bằng cách sử dụng các khóa API riêng biệt, bị hạn chế cho các API không phải 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 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 thử nghiệm và sản xuất, 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 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 bớt các vấn đề khi thúc đẩy thay đổi mã từ giai đoạn phát triển sang giai đoạn sản xuất, thay vì đưa các khóa API vào 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 đang sử dụng Bộ mô phỏng cục bộ Firebase để 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 Firebase ML .

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