Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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 khởi chạy ứng dụng trong phiên bản 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 có của bạn để không cho phép truy cập vào API Cloud Vision:

  1. Mở Credentials trang 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 then chốt Restrict, sau đó thêm vào danh sách tất cả các API mà bạn muốn khóa API để có thể truy cập. Hãy chắc chắn để không bao gồm các API Mây Vision.

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

Bây giờ, phím 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ụ đám mây ML, nhưng mỗi phím sẽ tiếp tục làm việc cho 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 kích hoạt bất kỳ API khác 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 lệnh gọi tới API Cloud Vision:

  1. Quay trở lại Credentials trang. Đảm bảo rằng dự án Firebase của bạn vẫn được chọn.

  2. Nhấp vào Tạo thông tin> Phím API. Hãy lưu ý của khóa API mới, sau đó nhấp vào chìa khóa Restrict.

  3. Trong phần hạn chế API, chọn then chốt Restrict, sau đó thêm vào danh sách chỉ API Mây Vision.

Khóa API này chỉ cấp quyền truy cập vào API Cloud Vision và có thể được sử dụng bởi Firebase ML để 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 của nó. Làm như vậy:

  1. Mở Mây Vision Hạn ngạch API trang của Google Cloud Console. Khi được nhắc, hãy chọn dự án của bạn.

  2. Trong yêu cầu phần, thiết lập các yêu cầu cho mỗi phút cho mỗi người dùng hạn ngạch để một cái gì đó 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 tài liệu để lấy lại văn bản của nó, thì không chắc 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 ngạch 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. Bạn có thể cần phải xem xét điều này nếu bạn mong đợi nhiều người dùng sử dụng ứng dụng của bạn cùng một lúc từ sau NAT.

4. Gọi các 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 chưa được xác thực vào API Cloud Vision, đ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à các khoản phí đối với 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ỉ sau đó, truy xuất khóa API từ máy chủ.

Ngay cả khi các hoạt động 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 cho mỗi người dùng của API như được mô tả ở trên, thực hiện các 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 đã có được khóa API một cách an toàn, khi bạn muốn gọi API đám mây ML của 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)
}

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];
}

Bên cạnh đó, bạn nên làm theo những lời khuyên chung trong Securing một khóa API .

Bước tiếp theo

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