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 chạy ứ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:
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.
Đối với mỗi khoá API hiện có trong danh sách, hãy mở chế độ xem chỉnh sửa.
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. Hãy nhớ không thêm API Cloud Vision.
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 mục API restrictions (Hạn chế API) chọn Don't restrict key (Không hạn chế khoá), bạn có thể sử dụng khoá API để 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.
Xin lưu ý rằng nếu bật bất kỳ API nào khác trong tương lai, bạn phải thêm các API đó vào danh sách các quy tắc hạn chế đối với API cho khoá API hiện có.
2. Tạo khoá API mới để sử dụng với Firebase ML
Tiếp theo, hãy tạo một khoá API mới cho Firebase ML chỉ cho phép các lệnh gọi đến API Cloud Vision:
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.
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á.
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 Firebase ML để truy cập vào các mô hình trên đám mây.
3. Nên làm: Giảm hạn mức của API Cloud Vision
Để 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:
Mở trang Cloud Vision API Quotas (Hạn 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.
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 sao cho 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 khi tải ảnh tài liệu lên để lấy lại văn bản, khó có khả năng 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 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 API đám mây bằng khoá API Firebase ML
Cuối cùng, trong ứng dụng, hãy định cấu hình Firebase ML để sử dụng khoá API mới.
Vì khoá API Firebase ML cho phép quyền 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 một người dùng đáng tin cậy đã đăng nhập, sau đó mới 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 đã thu nạp khoá API một cách an toàn, khi bạn muốn gọi API Cloud Firebase ML, hãy 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 phần 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.