Apple 앱이 Firebase ML의 클라우드 API 중 하나를 사용하는 경우 프로덕션에서 앱을 시작하기 전에 승인되지 않은 API 액세스를 방지하기 위한 몇 가지 추가 단계를 수행해야 합니다.
1. 기존 API 키 범위 축소
먼저 Cloud Vision API에 대한 액세스를 허용하지 않도록 기존 API 키를 구성합니다.
Google Cloud Console의 자격 증명 페이지를 엽니다. 메시지가 표시되면 프로젝트를 선택합니다.
목록의 각 기존 API 키에 대해 편집 보기를 엽니다.
API 제한 섹션에서 키 제한 을 선택한 다음 API 키로 액세스할 모든 API를 목록에 추가합니다. Cloud Vision API를 포함 하지 않도록 합니다.
API 키의 API 제한사항 을 구성할 때 키가 액세스할 수 있는 API를 명시적으로 선언합니다. 기본적으로 API 제한 섹션에서 키 제한 안 함을 선택하면 API 키를 사용하여 프로젝트에 대해 활성화된 모든 API에 액세스할 수 있습니다.
이제 기존 API 키는 클라우드 ML 서비스에 대한 액세스 권한을 부여하지 않지만 각 키는 API 제한 목록에 추가한 모든 API에 대해 계속 작동합니다.
나중에 추가 API를 활성화하는 경우 해당 API 키에 대한 API 제한 목록에 추가해야 합니다.
2. Firebase ML에 사용할 새 API 키 생성
다음으로 Cloud Vision API에 대한 호출만 허용하는 Firebase ML용 API 키를 새로 만듭니다.
자격 증명 페이지로 돌아갑니다. Firebase 프로젝트가 여전히 선택되어 있는지 확인하세요.
신임 정보 작성 > API 키를 클릭하십시오. 새 API 키를 기록한 다음 Restrict key 를 클릭합니다.
API 제한 섹션에서 키 제한 을 선택한 다음 Cloud Vision API 만 목록에 추가합니다.
이 API 키는 Cloud Vision API에 대한 액세스 권한만 부여하며 Firebase ML에서 클라우드 기반 모델에 액세스하는 데 사용할 수 있습니다.
3. 권장: Cloud Vision API 할당량 줄이기
손상된 키의 결과를 완화하려면 Cloud Vision API의 사용자당 할당량을 기본 설정에서 줄여야 합니다. 이렇게 하려면:
Google Cloud Console의 Cloud Vision API 할당량 페이지를 엽니다. 메시지가 표시되면 프로젝트를 선택합니다.
요청 섹션에서 사용자 할당량당 분당 요청 을 앱에 적합한 값으로 설정합니다. 예를 들어 앱에서 텍스트를 가져오기 위해 문서의 사진을 업로드하는 경우 사용자가 몇 초에 한 번 이상 업로드할 가능성은 거의 없으므로 30-40의 할당량이 안전할 것입니다.
이 컨텍스트에서 "사용자당 요청"은 단일 IP 주소의 요청을 나타냅니다. 여러 사용자가 NAT 뒤에서 동시에 앱을 사용할 것으로 예상되는 경우 이를 고려해야 할 수 있습니다.
4. Firebase ML API 키를 사용하여 Cloud API 호출
마지막으로 앱에서 새 API 키를 사용하도록 Firebase ML을 구성합니다.
Firebase ML API 키는 Cloud Vision API에 대한 인증되지 않은 액세스를 허용하므로 결제 계정에 대한 무단 사용 및 청구를 방지하기 위해 키를 기밀로 유지하는 것이 중요합니다. 이렇게 하려면 앱 바이너리에 API 키를 포함하지 않아야 합니다. 대신 앱 런타임에 알려진 양호한 사용자가 로그인했는지 확인한 다음 서버에서 API 키를 검색하십시오.
이러한 관행이 관찰되더라도 API 키가 손상될 수 있습니다. 위에서 설명한 대로 API의 사용자당 할당량을 줄이고, 키 순환 정책을 구현하고, 다른 사용자 그룹에 다른 키를 발급하는 등 손상된 키의 결과를 완화하는 데 도움이 되는 조치를 취해야 합니다.
앱이 API 키를 안전하게 획득한 후 Firebase ML Cloud API를 호출하려는 경우 키를 지정합니다.
빠른
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)
}
목표-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];
}
또한 API 키 보안 의 일반적인 조언을 따라야 합니다.
다음 단계
다른 Firebase 기능을 사용할 때 앱 실행 준비에 대한 정보는 실행 체크리스트 를 참조하세요.