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

Firebase ML Apple 앱의 클라우드 자격 증명 보호

Apple 앱이 Firebase ML의 클라우드 API 중 하나를 사용하는 경우 프로덕션 환경에서 앱을 시작하기 전에 승인되지 않은 API 액세스를 방지하기 위해 몇 가지 추가 단계를 수행해야 합니다.

1. 기존 API 키의 범위 축소

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

  1. 열기 자격 증명 구글 클라우드 콘솔의 페이지를. 메시지가 표시되면 프로젝트를 선택합니다.

  2. 목록의 각 기존 API 키에 대해 편집 보기를 엽니다.

  3. API를 제한 섹션에서 다음 키를 제한 모두 선택하면 API 키가 액세스 할 수있는 API를 목록에 추가합니다. 확인 클라우드 비전 API를 포함하지 않도록.

    당신은 API 키의 API 제한을 구성 할 때 명시 적으로 키가 액세스되는 API를 선언한다. API를 제한 섹션 음주 키를 선택, API 키는 프로젝트를 위해 사용할 수있는 API에 액세스하는 데 사용할 수있는 제한하지있다 기본적으로.

이제, 기존의 API 키는 구름 ML 서비스에 대한 액세스 권한을 부여하지 않지만 각 키는 자사의 API 제한 목록에 추가 한 모든 API에 대한 계속 작동합니다.

향후에 추가 API를 사용하도록 설정하는 경우, 당신이 해당 API 키에 대한 API 제한 목록에 추가해야합니다.

2. Firebase ML과 함께 사용할 새 API 키 생성

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

  1. 로 돌아 자격 증명 페이지입니다. Firebase 프로젝트가 여전히 선택되어 있는지 확인하세요.

  2. > API 키를 자격 증명 만들기를 클릭합니다. 다음 키를 제한 클릭, 새로운 API 키를 기록해 둡니다.

  3. API를 제한 섹션에서 다음 키를 제한 선택 목록 클라우드 비전 API에 추가 할 수 있습니다.

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

손상된 키의 결과를 완화하려면 Cloud Vision API의 사용자당 할당량을 기본 설정에서 줄여야 합니다. 이렇게 하려면:

  1. 오픈 클라우드 비전 API 할당량 구글 클라우드 콘솔의 페이지를. 메시지가 표시되면 프로젝트를 선택합니다.

  2. 요청 섹션에서 앱 합리적인 뭔가 사용자 할당량 당 분당 요청을 설정합니다. 예를 들어 앱에 문서의 사진을 업로드하여 텍스트를 다시 가져오는 경우 사용자가 몇 초에 한 번 이상 업로드할 가능성이 낮으므로 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 키를 보안 .

다음 단계

참고 항목 발사 체크리스트 다른 중포 기지의 기능을 사용하는 경우 출시로 응용 프로그램을 준비에 대한 정보를.