KAKAO API를 사용해 간단한 앱을 만들던 와중 Git에 올렸을 때의 API 키가 공개되는 것에 대한 문제를 직면하게 되었다. 사실 로컬에서 테스트를 하고 개발을 할 때에는 큰 상관은 없지만 Git에 코드 업로드, 베포 시에는 문제가 되기 때문에 이 API 키를 숨기는 것에 대해 알아보았다.
키를 숨기는 이유
키를 숨기는 이유는 여러가지 이유가 있다.
1. 보안
API 키를 외부에 노출시키면 누구나 해당 API를 사용할 수 있다.
API 키가 외부에 노출되면 악의적인 공격이나 남용의 발생할 수 있다. 그렇기 때문에 API 키를 안전하게 보호하여 API를 사용하는 앱 또는 서비스의 보안을 유지해야 된다.
2. 개인 정보 보호
API 중 사용자 데이터에 접근하는 권한이 있을 수 있다. 이러한 경우 키가 노출되면 사용자의 개인 정보가 유출될 수 있다.
이것은 개인 정보 보호 법규에 위배될 수 있다.
3. 과금 유발
API를 사용하는 것에 있어서 일정량 사용량 이상을 사용하게 되면 과금이 발생할 수 있는데 API 키가 공개되면 이 점을 이용해 무단으로 API 서비스를 이용하고 과금은 API 키를 공개한 사람이 지불하게 되는 불상사가 발생할 수 있다.
이러한 이유들로 인해 API 키는 외부에 공개되지 않는 것이 원칙이다.
방법
안드로이드 스튜디오에서 API 키를 숨기는 방법은 여러가지가 있는데 그 중 2가지 방법을 소개해보려고 한다.
1. gitignore를 이용한 방법
먼저 API 키를 저장할 클래스 생성
class Constants {
companion object{
const val BASE_URL = "https://dapi.kakao.com"
// 개인 API 사용
const val AUTH_HEADER = "KakaoAK $REST_API_KEY 입력" <- 에 개인이 부여받은 API 키입력
}
}
.gitignore
프로젝트의 루트 디렉토리에서 맥 기준 cmd + shift + . 키를 입력해 숨김 파일을 확인한 후
.gitignore 파일을 편집
.gitignore 파일
맨 밑줄에 해당 파일 추가 시 git에 push 시 해당 파일 추적을 멈춘다.
2. local.properties와 BuildConfig 사용
필자는 이 방법을 사용해 진행하였다.
먼저 앞서 올린 gitignore를 자세히 보면 local.properties라는 파일이 존재한다.
local.properties은 기본적으로 git이 추적하지 않기때문에 따로 gitignore 파일을 설정할 필요가 없다.
이 파일을 이용해 키 값을 숨길 수 있다.
먼저 안드로이드 스튜디오에서 local.properties 파일을 찾는다. 파일은 다음과 같은 경로에 위치한다.
local.properties 파일 위치
이 파일을 들어가서 API 키를 추가한다.
local.properties 파일
여기서 API 키를 설정한다.
그 후 build.gradle에 들어가 몇가지 수정을 해준다.
먼저 local.properties의 값을 불러오기 위한 설정을 추가해준다.
// local.properties의 값을 가져오기 위한 설정
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
그리고 buildConfig를 사용하기 위한 설정
// BuildConfig 사용을 위한 설정
defaultConfig {
...
// BuildConfig에 값 추가
buildConfigField "String", "KAKAO_REST_API_KEY", properties["api_key"]
}
buildFeatures {
// BuildConfig 사용 설정
buildConfig = true
}
...
}