[TIL] #38 How to hide API key - Giraffe, DLS

Yeon·2023년 9월 13일
0

내일배움캠프 - Kotlin

목록 보기
51/58
post-thumbnail

지난번에 날씨앱 만들기 클론 코딩을 하면서 API를 사용한 적이 있다. 그런데 GitHub에 올리려면 API를 숨겨야 한다는데 구글링하면 버전이나 Gradle 스크립트 언어가 달라서 이해하기가 어려워서 포기했었다...
그러다 오늘 미친듯이 구글링하고 Chat GPT랑 싸우면서 알아냈다.😂
API는 계속 사용할 것 같으니까 블로그에 기록해야지!!🔥


1. API?

  • Application Programming Interface
  • 프로그램 간에 상호 작용할 수 있도록 만들어진 일련의 규칙과 도구를 제공하는 인터페이스
  • 소프트웨어 애플리케이션들이 서로 통신하고 데이터를 공유할 수 있게 해주는 방법
  • 데이터를 요청하고 응답을 받는 데 사용되며, 여러 애플리케이션이나 서비스 간의 상호 작용을 용이하게 만듦

2. Why should I hide API Keys?

1) 보안

  • API Key는 중요한 정보이며, 공개되면 무단으로 API를 사용하거나 액세스할 수 있게 됨
  • 악의적인 공격자가 API Key를 알게 되면 데이터 유출, 개인정보 침해 등의 보안 문제가 발생할 수 있음
  • API Key를 숨기면 이러한 보안 위험을 최소화할 수 있음

2) 권한 관리

  • API Key는 누가 어떤 작업을 수행할 수 있는지를 제어하는 데 사용됨
    • ex1. 서비스 제공 업체는 특정 애플리케이션 또는 개발자에 대한 액세스 권한을 설정할 수 있음
  • API Key를 사용하여 API를 호출하는 애플리케이션의 신원을 확인하고, 그에 따라 허용되는 작업을 결정할 수 있음
    • ex2. 유료 계정을 가진 애플리케이션에만 API Key를 제공하고, 무료 계정을 가진 애플리케이션에는 제공하지 않는 식으로 권한을 관리할 수 있음

3) 비용 관리

  • API Key를 사용하여 API 호출을 추적하고 비용을 관리할 수 있음
  • 무단으로 API를 호출하면 불필요한 비용이 발생할 수 있으므로 API Key를 사용하여 비용을 제어하고 모니터링할 수 있음

3. Hide API Key

  •  안드로이드 스튜디오 버전: Giraffe 
  •  빌드 구성(Gradle) 언어: DLS 
  •  사용할 API: Google Map 
  • API 키 제한은 따로 하지 않음
    • 애플리케이션 보안을 강화하려면 선택적으로 하면 됨
  • 사용할 파일들!

1) build.gradle.kts (Project)

  • build.gradle (Project) 파일에 아래 코드를 추가!
buildscript {
    dependencies {
        classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
    }
}
  •  Android용 Secrets Gradle Plugin 으로 API Key를 비교적 쉽게 숨길 수 있음
    • 최신버전으로 사용하기!

2) build.gradle.kts (Module :app)

  • build.gradle (Module :app) 파일에 아래 코드를 추가!
plugins {
	// ...
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}

3) local.properties

  • local.properties 파일에 아래 코드를 추가!
GOOGLE_API_KEY="YOUR_API_KEY"
  • GOOGLE_API_KEY는 사용할 API Key 구분을 위한 이름
  • YOUR_API_KEY는 사용할 API 키로 변경!

4) AndroidManifest.xml

  • AndroidManifest.xml 파일에 아래 코드를 추가!
<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="${GOOGLE_MAP_KEY}" />
  • name
    • API Key의 유형과 버전을 명시하는 역할을 함
    • API 버전에 따라 이름이 달라지는 경우도 있음
  • value
    • API Key 값
    • local.properties에서 작성한 GOOGLE_API_KEY로 대체하여 작성!



[참고 사이트]

'API란 무엇일까? API 쉽게 이해하기', 채널톡(blu)
'Secrets Gradle 플러그인', Google Maps Platform(developers)
'Secrets Gradle Plugin for Android', google(GitHub)
'구글 맵 API 사용하고 API 키 숨기기', chloedewyes.log

0개의 댓글