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 khởi chạy ứng dụng của mình trong sản xuất, bạn nên thực hiện một số bước bổ sung để ngă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 tại của bạn để không cho phép truy cập vào Cloud Vision API:

  1. Mở trang Thông tin xác thực của Google Cloud Console. 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 , chọn Khóa hạn chế , 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ế APIkhóa Không hạn chế được chọn, 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 đám mây nhưng mỗi khóa sẽ tiếp tục hoạt động đối 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ạn 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 một khóa API mới cho Firebase ML chỉ cho phép các cuộc gọi đến API Cloud Vision:

  1. Quay lại trang Thông tin xác thực . Đảm bảo 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 . Ghi lại 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à có thể được Firebase ML 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ị xâm phạm, bạn nên giảm hạn ngạch cho mỗi người dùng của API Cloud Vision khỏi cài đặt mặc định. Làm như vậy:

  1. Mở trang Hạn ngạch API Cloud Vision của Google Cloud Console. 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ì không 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, do đó, hạn ngạch 30-40 có thể sẽ an toàn.

    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ừ 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 một 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 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 ứng dụng của mình. 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ỉ khi đó, hãy truy xuất khóa API từ máy chủ.

Ngay cả khi những thực hành này được tuân thủ, 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ị xâm phạm, chẳng hạn như giảm hạn ngạch API cho mỗi người dùng như được 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 đã nhận được khóa API một cách an toàn, khi bạn muốn gọi API Firebase ML Cloud, 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ề cách 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.