Info

개발, 기술, 그리고 일상에 대한 기록.

Archive

About

기록하고,
공유합니다.

개발, 기술, 그리고 일상에 대한 이야기를 담는 공간입니다.

dannyjoo

개발자로서,
기술과 일상의 접점을 기록합니다.

이 블로그는 개발하며 마주치는 문제들과 해결 과정, 그리고 일상의 소소한 이야기를 담는 공간입니다.

복잡한 것을 단순하게 정리하고, 나중의 나를 위해 기록합니다.

Danny Joo Developer
Interests
  • Android / Flutter
  • Backend
  • UI/UX
Links

글 보러 가기

Archive →
[Android/Kotlin] 안드로이드 스튜디오 API 키 값 숨기는 방법
Skill/Android

[Android/Kotlin] 안드로이드 스튜디오 API 키 값 숨기는 방법

목차1. 개요2. API 키 값을 숨기는 이유3. 방법4. 결과5. 후기 개요 KAKAO API를 사용해 간단한 앱을 만들던 와중 Git에 올렸을 때의 API 키가 공개되는 것에 대한 문제를 직면하게 되었다.사실 로컬에서 테스트를 하고 개발을 할 때에는 큰 상관은 없지만 Git에 코드 업로드, 베포 시에는 문제가 되기 때문에 이 API 키를 숨기는 것에 대해 알아보았다.키를 숨기는 이유 키를 숨기는 이유는 여러가지 이유가 있다.1. 보안API 키를 외부에 노출시키면 누구나 해당 API를 사용할 수 있다.API 키가 외부에 노출되면 악의적인 공격이나 남용의 발생할 수 있다. 그렇기 때문에 API 키를 안전하게 보호하여 API를 사용하는 앱 또는 서비스의 보안을 유지해야 된다.2. 개인 정보 보호API 중..

Skill/Android

[Android/Kotlin] 안드로이드 스튜디오 API 키 값 숨기는 방법

목차

1. 개요

2. API 키 값을 숨기는 이유

3. 방법

4. 결과

5. 후기

 

개요

 

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
    }
    
    ...
    
}

적용시킨 모습은 다음과 같다.

build.gradle 수정 방법

그리고 사용할 RetrofitApi에 적용시킨다.

interface RetrofitApi {
    @GET("v2/search/image")
    suspend fun searchImage(
        @Header("Authorization") apiKey: String = BuildConfig.KAKAO_REST_API_KEY,
        @Query("query") query: String,
        @Query("sort") sort: String,
        @Query("page") page: Int,
    ): Response<ImageResponse>
}

이렇게 했으면 사용준비는 완료다.


결과

API가 잘 연결된 모습


후기

 

API를 숨기는 방법에는 다양한 방법이 있었고 두번째 방법은 구글링을 통해 꽤 많은 정보를 검색해야만 제대로 사용할 수 있었다.

또한 단순히 API를 연결하는 것에도 어려움을 많이 겪었다. 다음은 API 연결 방법에 대해 작성해봐야겠다.