Bảo vệ thông tin xác thực trên đám mây của ứng dụng Firebase ML Android của bạn

Nếu ứng dụng Android của bạn sử dụng một trong các API đám mây của Firebase ML thì trước khi phát hành chính thức ứng dụng của mình, bạn nên thực hiện một số bước bổ sung để ngăn chặn truy cập API trái phép.

Đối với các ứng dụng sản xuất của mình, bạn sẽ đảm bảo rằng chỉ những khách hàng được xác thực mới có thể truy cập các dịch vụ đám mây. (Lưu ý rằng chỉ những thiết bị chưa root mới có thể xác thực bằng phương pháp được mô tả.)

Sau đó, bạn sẽ tạo khóa API chỉ gỡ lỗi mà bạn có thể sử dụng để thuận tiện trong quá trình thử nghiệm và phát triển.

1. Đăng ký ứng dụng sản xuất của bạn với Firebase

Đầu tiên, hãy đăng ký ứng dụng sản xuất của bạn với Firebase.

  1. Đảm bảo rằng bạn có chữ ký SHA-1 cho ứng dụng của mình. Tham khảo Xác thực ứng dụng khách của bạn để tìm hiểu cách thực hiện.

  2. Chuyển đến của bạn Cài đặt dự án trong bảng điều khiển Firebase, sau đó chọn tab Cài đặt .

  3. Cuộn xuống thẻ Ứng dụng của bạn , sau đó chọn ứng dụng Android của bạn.

  4. Thêm chữ ký SHA-1 của ứng dụng vào thông tin ứng dụng của bạn.

2. Hạn chế phạm vi khóa API của bạn

Tiếp theo, định cấu hình các khóa API hiện có của bạn để không cho phép truy cập vào API Cloud Vision:

  1. Mở trang Thông tin xác thực của bảng điều khiển Google Cloud. Khi được nhắc, hãy chọn dự án của bạn.

  2. Đối với mỗi khóa API hiện có trong danh sách, hãy mở chế độ xem chỉnh sửa.

  3. Trong phần hạn chế API , hãy chọn Hạn chế khóa , sau đó thêm vào danh sách tất cả các API mà bạn muốn khóa API có quyền truy cập. Đảm bảo không bao gồm API Cloud Vision.

    Khi bạn định cấu hình các hạn chế API của khóa API, bạn đang khai báo rõ ràng các API mà khóa có quyền truy cập. Theo mặc định, khi phần hạn chế API đã chọn khóa Không hạn chế , khóa API có thể được sử dụng để truy cập bất kỳ API nào được bật cho dự án.

Giờ đây, các khóa API hiện tại của bạn sẽ không cấp quyền truy cập vào các dịch vụ ML trên nền tảng đám mây nhưng mỗi khóa sẽ tiếp tục hoạt động với mọi API mà bạn đã thêm vào danh sách hạn chế API của nó.

Lưu ý rằng nếu bật bất kỳ API bổ sung nào trong tương lai, bạn phải thêm chúng vào danh sách hạn chế API cho khóa API hiện hành.

3. Tạo và sử dụng khóa API chỉ gỡ lỗi

Cuối cùng, tạo khóa API mới chỉ được sử dụng cho mục đích phát triển. Firebase ML có thể sử dụng khóa API này để truy cập các dịch vụ Google Cloud trong môi trường không thể xác thực ứng dụng, chẳng hạn như khi chạy trên trình mô phỏng.

  1. Tạo khóa API mới để sử dụng cho việc phát triển:

    1. Mở trang Thông tin xác thực của bảng điều khiển Google Cloud. Khi được nhắc, hãy chọn dự án của bạn.

    2. Nhấp vào Tạo thông tin xác thực > Khóa API và ghi lại khóa API mới. Khóa này cho phép truy cập API từ các ứng dụng chưa được xác thực, vì vậy hãy giữ bí mật khóa này .

  2. Để đảm bảo khóa API gỡ lỗi mới không bị rò rỉ với ứng dụng đã phát hành của bạn, hãy chỉ định khóa API gỡ lỗi trong tệp kê khai Android chỉ dùng cho các bản dựng gỡ lỗi:

    1. Nếu bạn chưa có tệp kê khai gỡ lỗi, hãy tạo một tệp kê khai bằng cách nhấp vào Tệp > Mới > Khác > Tệp kê khai Android và chọn debug từ nhóm nguồn mục tiêu.

    2. Trong tệp kê khai gỡ lỗi, hãy thêm phần khai báo sau:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. Trong ứng dụng của bạn, hãy định cấu hình Firebase ML để sử dụng tính năng so khớp dấu vân tay chứng chỉ nhằm xác thực ứng dụng khách của bạn trong quá trình sản xuất và chỉ sử dụng khóa API—khóa gỡ lỗi—trong các bản dựng gỡ lỗi:

    Kotlin+KTX

    val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch()
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f)
    // ...
    
    // And lastly:
    val options = optionsBuilder.build()
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)

    Java

    FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =
            new FirebaseVisionCloudImageLabelerOptions.Builder();
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch();
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f);
    // ...
    
    // And lastly:
    FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);

Bước tiếp theo

Xem danh sách kiểm tra khởi chạy để biết thông tin về việc chuẩn bị khởi chạy ứng dụng của bạn khi sử dụng các tính năng khác của Firebase.