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

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 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.

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

Trước tiên, hãy đị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.

2. Tạo khóa API mới để sử dụng với Firebase ML

Tiếp theo, tạo khóa API mới cho Firebase ML chỉ cho phép gọi tới API Cloud Vision:

  1. Quay lại trang Thông tin xác thực . Hãy chắc chắn rằng dự án Firebase của bạn vẫn được chọn.

  2. Nhấp vào Tạo thông tin xác thực > Khóa API . Hãy lưu ý đến khóa API mới, sau đó nhấp vào Khóa hạn chế .

  3. Trong phần hạn chế API , hãy chọn Khóa hạn chế , sau đó chỉ thêm API Cloud Vision vào danh sách.

Khóa API này chỉ cấp quyền truy cập vào API Cloud Vision và Firebase ML có thể sử dụng để truy cập các mô hình dựa trên đám mây.

Để giúp giảm thiểu hậu quả của khóa bị lộ, bạn nên giảm hạn mức cho mỗi người dùng của Cloud Vision API khỏi cài đặt mặc định. Làm như vậy:

  1. Mở trang Định mức API Cloud Vision 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 ngạch Yêu cầu mỗi phút cho mỗi người dùng ở mức hợp lý cho ứ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 lên hình ảnh của tài liệu để lấy lại văn bản của nó, thì ít có khả năng người dùng sẽ làm điều đó nhiều hơn một lần trong vài giây, vì vậy hạn mức 30-40 có thể sẽ an toàn.

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

4. Gọi API đám mây bằng khóa API Firebase ML của bạn

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

Vì khóa API Firebase ML cho phép truy cập không được xác thực vào API Cloud Vision nên điều quan trọng là phải giữ bí mật khóa để ngăn chặn việc sử dụng trái phép và tính phí vào tài khoản thanh toán của bạn. Để làm như vậy, bạn không nên đưa khóa API vào 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 một người dùng tốt đã biết đã đăng nhập và chỉ sau đó mới truy xuất khóa API từ máy chủ.

Ngay cả khi những hành vi này được quan sát, khóa API vẫn có thể 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 khóa bị lộ, chẳng hạn như giảm hạn ngạch cho mỗi người dùng của API như mô tả ở trên, triển khai chính sách xoay vòng khóa và cấp các khóa khác nhau cho các nhóm người dùng khác nhau.

Sau khi ứng dụng của bạn đã lấy khóa API một cách an toàn, khi bạn muốn gọi API đám mây ML Firebase, hãy chỉ định khóa:

Nhanh

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)
}

Mục tiêu-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 khóa API .

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.