콘솔로 이동

ML Kit iOS 앱의 클라우드 사용자 인증 정보 보호

iOS 앱에서 ML Kit의 Cloud API 중 하나를 사용하는 경우 프로덕션 환경에서 앱을 실행하기 전에 승인되지 않은 API 액세스를 방지하기 위한 몇 가지 추가 조치를 취해야 합니다.

1. 기존 API 키 범위 축소

먼저 Cloud Vision API에 대한 액세스를 허용하지 않도록 기존 API 키를 구성합니다.

  1. Cloud Console의 사용자 인증 정보 페이지를 엽니다. 메시지가 나타나면 Firebase 프로젝트와 이름이 동일한 프로젝트를 선택합니다.

  2. 목록에 있는 API 키마다 편집 화면을 열고 키 제한 섹션에서 Cloud Vision API를 제외한 모든 사용 가능한 API를 목록에 추가합니다.

    API 키의 API 제한을 구성하면 키로 액세스 권한을 부여하는 API를 명시적으로 선언하게 됩니다. 기본적으로 API 제한 섹션이 비어 있으면 API 키를 사용하여 프로젝트에 사용 설정된 모든 API에 액세스할 수 있습니다.

이제 기존 API 키가 클라우드 ML 서비스에 대한 액세스 권한을 부여하지 않지만 직접 사용 설정한 API나 Firebase 설정 시 자동으로 사용 설정된 API에서는 계속 작동합니다.

이후에 추가 API를 사용 설정하려면 API 키의 API 제한 목록에도 추가해야 합니다.

2. ML Kit에 사용할 새 API 키 만들기

다음으로 Cloud Vision API에 대한 호출만 허용하는 ML Kit용 새 API 키를 만듭니다.

  1. 사용자 인증 정보 페이지로 돌아갑니다. 해당 Firebase 프로젝트가 여전히 선택되어 있는지 확인합니다.

  2. 사용자 인증 정보 만들기 > API 키를 클릭합니다. 새 API 키를 기록한 후 키 제한을 클릭합니다.

  3. 키 제한 섹션에서 Cloud Vision API만 목록에 추가합니다.

이 API 키는 Cloud Vision API에 대한 액세스 권한만 부여하며 ML Kit를 통해 클라우드 기반 모델에 액세스하는 데 사용될 수 있습니다.

3. ML Kit API 키로 Cloud API 호출

마지막으로 앱에서 새 API 키를 사용할 ML Kit를 구성합니다.

ML Kit API 키는 Cloud Vision API에 대한 인증되지 않은 액세스를 허용하므로 승인되지 않은 사용과 결제 계정 청구를 방지하기 위해 키를 기밀로 유지하는 것이 중요합니다. 이렇게 하려면 앱 바이너리에 API 키를 포함하지 말아야 합니다. 대신 앱 런타임에서 알려진 정상 사용자가 로그인되어 있는지 확인한 후에만 서버에서 API 키를 검색합니다.

이러한 방법을 사용하는 경우에도 API 키가 유출될 수 있습니다. 키 회전 정책을 시행하고 서로 다른 사용자 그룹에 서로 다른 키를 발급하는 등 도난당한 키가 남용되는 현상을 줄일 수 있는 조치를 취해야 합니다.

앱에서 안전하게 API 키를 획득한 후 ML Kit Cloud API를 호출할 때 다음과 같이 키를 지정합니다.

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

또한 API 키 보안에 대한 일반적인 권장 사항을 따라야 합니다.

다음 단계

다른 Firebase 기능 사용 시 실행할 앱 준비에 대한 내용은 출시 체크리스트를 참조하세요.