API 키 권장사항

Google Maps Platform API와 SDK를 사용하는 앱과 프로젝트에는 API 키가 필요합니다. 이 문서에서는 API 키의 용도, 다른 사용자 인증 정보와 마찬가지로 API 키를 보호하는 방법과 프로젝트에 적용되는 제한사항을 설명합니다.

API 키란 무엇인가요?

API 키는 다음과 같은 두 가지 용도로 사용하는 프로젝트 중심 사용자 인증 정보입니다.

  • 프로젝트 식별
    API 또는 SDK를 호출하는 앱이나 프로젝트를 식별합니다.
  • 프로젝트 승인
    호출하는 앱에 API 또는 SDK를 호출할 수 있는 액세스 권한이 있으며 프로젝트에서 API 또는 SDK를 사용 설정했는지 확인합니다.

생성된 API 키는 프로젝트와 연결됩니다. API는 호출하는 프로젝트를 식별하여 사용 정보를 해당 프로젝트와 연결하고 다른 프로젝트의 호출은 거부되게 합니다.

API 키 보호

애플리케이션에서 사용하는 모든 Google Maps Platform 제품에 대해 애플리케이션의 API 키를 보호해야 합니다. 애플리케이션의 Google Maps Platform API에 적합한 제한사항을 지정하고 권장사항을 구현하여 API 키를 보호할 수 있습니다. 안전하지 않은 사용자 인증 정보를 공개적으로 노출하면 의도하지 않은 사용이 발생하여 계정에 예기치 않은 요금이 부과될 수 있습니다.

아래 권장사항은 API 키를 보호하는 전략을 설명합니다. Maps JavaScript API 같은 개별 Google Maps Platform 제품에 적용되는 권장사항은 API 키 제한사항 및 권장사항 섹션에 나와 있습니다.

  • API 키를 제한합니다. API 키를 보호하는 가장 좋은 방법은 특정 IP 주소, 리퍼러 URL 또는 모바일 앱, 특정 API로 제한하여 키 손상에 따른 영향을 크게 줄이는 것입니다.

    콘솔에서 사용자 인증 정보 페이지를 열고 원하는 설정으로 새 API 키를 만들거나 API 키의 설정을 수정하면 키의 애플리케이션과 API 제한사항을 지정할 수 있습니다. 자세한 내용은 API 키 제한 섹션을 참조하세요.

  • 앱마다 다른 API 키를 사용합니다. 이렇게 하면 각 키의 범위가 제한됩니다. API 키가 손상된 경우 다른 API 키를 업데이트하지 않고도 영향받는 키를 삭제하고 취소할 수 있습니다.
  • 필요 없는 API 키를 삭제합니다.

    API 키를 삭제하는 방법은 다음과 같습니다.

    1. 사용자 인증 정보 패널로 이동합니다.
    2. 삭제할 API 키를 선택합니다.
    3. 페이지 상단의 삭제 버튼을 클릭합니다.
    4. 사용자 인증 정보 삭제 팝업이 나타나면 삭제를 클릭합니다.
  • API 키를 다시 생성할 때는 주의합니다. 이전 API 키에서 다시 생성한 새 API로 앱을 마이그레이션하는 데 걸리는 시간이 24시간을 초과하면 업데이트되지 않은 인스턴스가 손상됩니다. 이전 키는 재생성 후 24시간이 지나야 폐기되는데, 인스턴스는 이 키를 참조하기 때문입니다.

    API 키를 다시 생성하면 다음과 같은 결과가 발생합니다.

    • 재생성 프로세스의 결과물로 새 키가 생성됩니다.
    • 새 키는 이전 키의 모든 제한사항을 수신합니다.
    • 24시간 창이 시작되어 이전 키가 폐기될 때까지 남은 시간을 표시합니다.
  • API의 비정상적인 사용을 모니터링합니다. 무단 사용을 감지했다면 키를 회전하고 Google에 보고하세요.

    키를 회전하기 전에 키와 관련된 제한사항의 사본 파일을 만들어 제한사항을 유지해야 합니다.

  • Maps Web Service API 또는 Static Web API를 사용하는 앱에서는 다음 방법을 사용하여 앱과 API 키를 보호해야 합니다.

  • Web Service API 또는 Static Web API를 사용하는 모바일 앱에서는 다음 기법 중 하나를 사용하여 API 키나 서명 비밀 키 보안을 강화할 수 있습니다.

API 키 제한

API 키는 사용자 인증 정보이므로 주의해서 관리해야 합니다. 최소한, 아래의 권장사항에 따라 키를 안전하게 보호하고, 손상된 API 키의 영향을 줄이기 위한 제한사항을 적용해야 합니다.

애플리케이션 제한사항 하나 또는 API 제한사항 하나 이상을 지정하여 API 키를 제한할 수 있습니다.

애플리케이션 제한사항은 API 키 사용을 특정 사이트(IP 주소 및 웹사이트) 또는 특정 플랫폼(Android 및 iOS)으로 제한합니다. 이 카테고리에서는 제한사항을 1개까지 선택할 수 있습니다 (플랫폼별 Google Maps Platform API 참조).

API 제한사항은 API 키 사용을 하나 이상의 Google Maps Platform API 또는 SDK로 제한합니다. API 키와 연결된 API 또는 SDK 사용 요청은 처리됩니다. API 키와 연결되지 않은 API 또는 SDK 사용 요청은 실패하게 됩니다. API 키의 경우 API 제한사항을 원하는 만큼 지정할 수 있습니다. API 키와 연결된 API 또는 SDK가 API 키에 설정된 애플리케이션 제한을 지원하는지 확인하세요.

API 키의 애플리케이션 제한을 설정하는 방법

  1. 사용자 인증 정보 패널로 이동합니다.
  2. 제한을 설정할 API 키를 선택합니다. API 키 속성 페이지가 나타납니다.
  3. 키 제한사항에서 애플리케이션 제한사항을 선택합니다.
    제한사항 유형 중 하나를 선택하고 제한사항 목록에 따라 요청된 정보를 제공합니다.
    제한사항 유형 설명
    HTTP 리퍼러

    제공한 웹사이트 목록에서 요청을 수락합니다.

    유형 아래에서 하나 이상의 리퍼러 웹사이트를 지정합니다. 와일드 카드 문자를 이용해 비슷한 웹사이트 이름을 지정할 수 있습니다. 예를 들어 *.google.com에서는 google.com으로 끝나는 모든 사이트 (예: https://developers.google.com)를 허용합니다.

    IP 주소

    제공한 웹 서버 IP 주소 목록에서 요청을 수락합니다.

    유형 아래에서 CIDR 표기법(예: 192.168.0.0/22)을 사용하여 IPv4나 IPv6 주소 하나 또는 서브넷 하나를 지정합니다. 다른 항목을 입력해야 하는 경우 이전 항목을 추가하면 새 상자가 나타납니다.

    Android 앱

    Android 앱의 사용량을 제한하려면 패키지 이름과 SHA-1 서명 인증서 디지털 지문을 추가해야 합니다.

    유형 아래에서 SHA-1 서명 인증서 지문과 AndroidManifest.xml 파일의 Android 패키지 이름을 추가합니다.

    iOS 앱

    제공한 번들 식별자가 있는 iOS 앱의 요청을 수락합니다.

    유형 목록에 있는 목록에서 적절한 iOS 번들 식별자를 선택합니다.

  4. 저장을 클릭합니다.
    이 단계가 지나면 제한사항이 API 키 정의의 일부가 됩니다. 적절한 세부정보를 제공하지 않거나 '저장'을 클릭하지 않으면 API 키가 제한되지 않습니다. (자세한 내용은 관심 있는 특정 API 또는 SDK의 API 키 가져오기 가이드를 참조하세요.)

API 키에 대한 API 제한 설정

  1. 사용자 인증 정보 패널로 이동합니다.
  2. 제한할 API 키를 선택합니다.
    API 를 제한 및 이름 바꾸기 페이지가 나타납니다.
  3. API 제한사항에서 다음을 수행합니다.
    • 키 제한을 클릭합니다.
    • API 선택 드롭다운을 클릭하고 애플리케이션에서 API 키를 사용하여 액세스해야 하는 API나 SDK를 선택합니다. (API 또는 SDK가 나열되지 않는다면 항목을 사용 설정해야 합니다.)
  4. 저장을 클릭합니다.
    이 단계가 지나면 제한사항이 API 키 정의의 일부가 됩니다. 적절한 세부정보를 제공하지 않거나 '저장'을 클릭하지 않으면 API 키가 제한되지 않습니다. (자세한 내용은 관심 있는 특정 API 또는 SDK의 API 키 가져오기 가이드를 참조하세요.)

API 키 제한사항 및 권장사항

다음 표에는 각 Google Maps Platform API, SDK 또는 서비스에 대한 적절한 API 키 제한사항 및 권장사항이 나와 있습니다.

Maps JavaScript, Embedded 또는 Static API가 있는 웹사이트

API/SDK/서비스 애플리케이션 제한사항(1) API 제한사항(1) 권장사항
Maps JavaScript API(2) HTTP 리퍼러 제한사항 Maps JavaScript API
Directions Service, Maps JavaScript API HTTP 리퍼러 제한사항 Directions API, Maps JavaScript API
거리 행렬 서비스, Maps JavaScript API HTTP 리퍼러 제한사항 Distance Matrix API, Maps JavaScript API
고도 서비스, Maps JavaScript API HTTP 리퍼러 제한사항 Elevation API, Maps JavaScript API
지오코딩 서비스, Maps JavaScript API HTTP 리퍼러 제한사항 Geocoding API, Maps JavaScript API
장소 라이브러리, Maps JavaScript API HTTP 리퍼러 제한사항 Places API, Maps JavaScript API
Maps Embed API HTTP 리퍼러 제한사항 Maps Embed API
Maps Static API HTTP 리퍼러 제한사항 Maps Static API
Street View Static API HTTP 리퍼러 제한사항 Street View Static API

웹 서비스를 사용하는 앱 및 서버

API/SDK/서비스 애플리케이션 제한사항(1) API 제한사항(1) 권장사항
Directions API IP 주소 제한(4) Directions API
Distance Matrix API IP 주소 제한(4) Distance Matrix API
Elevation API IP 주소 제한(4) Elevation API
Geocoding API IP 주소 제한(4) Geocoding API
Geolocation API IP 주소 제한(4) Geolocation API
Places API(5) IP 주소 제한(4) Places API
Roads API IP 주소 제한(4) Roads API
Time Zone API IP 주소 제한(4) Time Zone API

Android 앱

API/SDK/서비스 애플리케이션 제한사항(1) API 제한사항(1) 권장사항
Android용 Maps SDK Android 제한사항 Android용 Maps SDK
Android용 Places SDK Android 제한사항 Places API

iOS 앱

API/SDK/서비스 애플리케이션 제한사항(1) API 제한사항(1) 권장사항
iOS용 Maps SDK iOS 제한 iOS용 Maps SDK
iOS용 Places SDK iOS 제한 Places API

1 제한되지 않는 API 키는 모든 Google Maps Platform API 또는 SDK에서 사용할 수 있습니다. 그러나 특히 다음과 같은 상황에서는 API 키를 제한하는 것이 좋습니다.

  • 테스트 환경이 공개적으로 표시되고 있거나 앞으로 표시될 예정입니다.
  • API 키를 사용하는 애플리케이션을 프로덕션 환경에서 사용할 수 있습니다.

2 모바일 애플리케이션의 경우에는 네이티브 Android용 Maps SDKiOS용 Maps SDK 사용을 고려해 보세요.

3 API 키는 물론 Maps Static API와 Street View Static API의 경우에도 일일 할당량인 25,000회 지도 로드를 초과하려면 디지털 서명을 제공해야 합니다.

참고: 서명에 사용되는 공유 비밀번호에는 Maps Web Service API에 사용하는 API 키와 동일한 수준의 보안이 필요합니다.

이미지 요청에 동적으로 서명해야 하는 경우에는 서버 측에서 해야 합니다. 앱이 정적 이미지 생성을 위해 클라이언트 측 입력을 사용한다면 다음 기법 중 하나 이상을 사용하여 앱을 보호하세요.

요청에 서명할 때는 하루에 허용할 서명 요청 수를 검토하고 서명하지 않는 요청 할당량을 그에 맞게 조정해야 합니다.

4 IP 제한사항은 동적 IP 주소를 사용하는 모바일 애플리케이션 및 클라우드 환경 등에서는 비효율적일 수 있습니다. 이러한 시나리오에서 Maps Web Service API를 사용할 때는 다음 방법 중 하나 이상을 사용하여 앱을 보호해야 합니다.

5 모바일 애플리케이션의 경우에는 네이티브 Android용 Places SDKiOS용 Places SDK 사용을 고려해 보세요.