Bảo vệ thông tin đăng nhập của ứng dụng Cloud ML Apple trên Firebase

Nếu ứng dụng Apple 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 ra mắt ứng dụng trong phiên bản chính thức, bạn nên thực hiện thêm một số bước nhằm ngăn chặn những email trái phép Quyền truy cập vào API.

1. Giảm phạm vi của các khoá API hiện có

Trước tiên, 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.

2. Tạo khoá API mới để sử dụng với Công nghệ học máy của Firebase

Tiếp theo, hãy tạo một khoá API mới cho Công nghệ học máy của Firebase. Khoá này chỉ cho phép các lệnh gọi đến API Cloud Vision:

  1. Quay lại trang Thông tin đăng nhập. Hãy đảm bảo rằng Dự án Firebase vẫn được chọn.

  2. Nhấp vào Tạo thông tin xác thực > Khoá API. Ghi lại khoá API mới, sau đó nhấp vào Hạn chế khoá.

  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 chỉ liệt kê Cloud Vision API.

Khoá API này chỉ cấp quyền truy cập vào Cloud Vision API và có thể dùng bởi Công nghệ học máy của Firebase tiếp cận các mô hình trên đám mây.

Để góp phần giảm thiểu hậu quả do khoá bị xâm phạm, bạn nên giảm Hạn mức trên mỗi người dùng của Cloud Vision API ở chế độ cài đặt mặc định. Cách thực hiện:

  1. Mở trang Hạn mức Cloud Vision API 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. Trong phần Yêu cầu, hãy đặt hạn mức Số yêu cầu mỗi phút trên mỗi người dùng thành một điều phù hợp với ứng dụng của bạn. Ví dụ: nếu ứng dụng của bạn liên quan đến việc tải ảnh tài liệu lên để lấy lại văn bản, khó có thể người dùng sẽ làm việc đó nhiều lần mỗi vài giây, do đó, hạn mức là 30-40 có thể sẽ an toàn.

    Xin lưu ý rằng trong ngữ cảnh này "số yêu cầu trên mỗi người dùng" đề cập đến các yêu cầu từ địa chỉ IP duy nhất. Bạn có thể cần phải xem xét điều này nếu bạn muốn có nhiều người dùng sử dụng ứng dụng của bạn cùng lúc sau NAT.

4. Gọi Cloud API bằng khoá Firebase ML API

Cuối cùng, trong ứng dụng của bạn, hãy định cấu hình Firebase ML để sử dụng khoá API mới.

Do khoá API máy học Firebase cho phép truy cập chưa xác thực vào Cloud Vision API, bạn cần phải giữ bí mật khoá để ngăn chặn hành vi sử dụng trái phép và vào tài khoản thanh toán của bạn. Để làm như vậy, bạn nên tránh thêm khoá API trong tệp nhị phân của ứng dụng. Thay vào đó, trong thời gian chạy ứng dụng, hãy xác minh rằng người dùng có trạng thái đăng nhập và chỉ sau đó truy xuất khoá API từ máy chủ.

Ngay cả khi những phương pháp này được quan sát, khoá API vẫn có thể bị bị xâm phạm. Bạn nên thực hiện các bước giúp giảm thiểu hậu quả của khoá bị xâm phạm, chẳng hạn như giảm hạn mức API trên mỗi người dùng như mô tả ở trên, triển khai các chính sách xoay vòng khoá và cấp các khoá khác nhau cho các nhóm người dùng.

Sau khi ứng dụng của bạn đã có được khoá API một cách an toàn, khi bạn muốn gọi một Firebase ML Cloud API, chỉ định khoá:

Swift

if let cloudVisionKey = getYourApiKey() {  // See note above about securing your API key
    let options = VisionCloudDetectorOptions()
    options.apiKeyOverride = cloudVisionKey
    let cloudDetector = Vision.vision().cloudLandmarkDetector(options: options)
}

Objective-C

NSString *cloudVisionKey = [self getYourApiKey];  // See note above about securing your API key
if (cloudVisionKey != nil) {
    FIRVisionCloudDetectorOptions *options =
            [[FIRVisionCloudDetectorOptions alloc] init];
    options.APIKeyOverride = cloudVisionKey;
    FIRVisionCloudLandmarkDetector *landmarkDetector =
            [vision cloudLandmarkDetectorWithOptions:options];
}

Ngoài ra, bạn nên làm theo lời khuyên chung trong Bảo mật khoá API.

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.