Bảo vệ thông tin đăng nhập của bạn trên đám mây cho ứng dụng Android ML ML

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, trước khi bạn khởi chạy phiên bản chính thức của ứng dụng, bạn nên thực hiện thêm một số bước để ngăn chặn truy cập API trái phép.

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

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

1. Đăng ký ứng dụng chính thức của bạn bằng Firebase

Trước tiên, hãy đăng ký ứng dụng chính thức của bạn bằng Firebase.

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

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

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

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

2. Hạn chế phạm vi của khoá API

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

  1. Mở trang Thông tin đăng nhập 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 khoá API hiện có trong danh sách, hãy mở chế độ xem chỉnh sửa.

  3. Trong phần API Restrictions (Hạn chế về API), hãy chọn Restrict key (Hạn chế khoá), sau đó thêm vào liệt kê tất cả API mà bạn muốn khoá API có quyền truy cập. Đảm bảo không thêm Cloud Vision API.

    Khi định cấu hình các hạn chế API của khoá API, bạn được nêu rõ ràng khai báo các API mà khoá có quyền truy cập. Theo mặc định, khi API hạn chếKhông hạn chế khoá được chọn, một khoá API có thể được dùng để truy cập vào bất kỳ API nào được bật cho dự án.

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

Lưu ý rằng nếu bật thêm API trong tương lai, bạn phải thêm các API đó vào danh sách các hạn chế về API cho khoá API áp dụng.

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

Cuối cùng, hãy tạo một khoá API mới chỉ dùng cho hoạt động phát triển. Công nghệ học máy của Firebase có thể sử dụng khoá API này để truy cập vào các dịch vụ của Google Cloud ở những môi trường mà ứng dụng không thể xác thực, chẳng hạn như khi chạy trên trình mô phỏng.

  1. Tạo khoá API mới dùng cho hoạt động phát triển:

    1. Mở trang Thông tin đăng nhập 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 > khoá API và ghi chú về API mới . Khoá 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 bảo mật khoá này.

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

    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 > Android Manifest File (Tệp kê khai Android) rồi chọn debug từ các nhóm tài nguyên mục tiêu.

    2. Trong tệp kê khai gỡ lỗi, hãy thêm nội dung 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 để dùng tính năng so khớp dấu vân tay chứng chỉ xác thực ứng dụng của bạn trong phiên bản chính thức và sử dụng khoá API (gỡ lỗi) khoá — chỉ trong các bản 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);

Các bước tiếp theo

Hãy xem danh sách kiểm tra trước khi ra mắt để biết thông tin về chuẩn bị ứng dụng để khởi chạy khi sử dụng các tính năng khác của Firebase.