0. API KEY 관리가 필요한 이유
가장 큰 이유는 '관리'라고 생각한다.
API를 사용하여 프로젝트를 진행할 때, 다양한 함수를 작성했었다.
상행 시간표 탐색, 하행 시간표 탐색, 역 이름 탐색, 역 노선 탐색 등등
이때 한 개의 java 파일에만 해도 최소 2개 이상의 함수에서 API를 사용한다.
그럼 API에 문제가 있어 바꿀 때마다, 모든 함수를 뒤적이면서 일일이 바꿔줘야 한다.
이를 피하기 위해 한 공간에서 키를 관리해 줄 필요가 있다.
다음으로는 보안이라고 생각한다.
애초에 보안이라는 개념도 관리에 들어가, 관리보다는 보안이 후순위라고 생각한다.
자신의 API 키가 노출되면, 그것으로 다양한 곳에서 트래픽 요청을 보낼 수 있다.
나는 사용한 적이 없는데 어느날 DoS 공격자로 몰릴 수도 있다.
단순 트래픽만 주고 받는 API라면 상관없지만, 금전 거래나 개인 정보와 관련된 API라면 더욱 위험하다.
이를 방지하기 위해 gitignore파일에도 규칙을 적용할 것이다.
원래는 출시를 전제로 개발 중인 앱이라 깃허브에 소스를 올리지 않으려고 했다.
하지만, gitignore를 이용하여 핵심을 제외한 일부분의 코드를 깃허브에 올리고자 한다.
1. local.properties에 API 선언하기
local.properties에서 API 키나 중요한 데이터를 저장하면 된다.
sdk.dir 밑에서부터 저장할 키를 작성하자.
local.properties에 대한 자세한 설명은 공식 설명을 참고하자.
└ https://developer.android.com/studio/build?hl=ko
2. build.gradle에 선언하기
local.properties에서 선언한 키를 app에서 사용할 수 있게 선언해야 한다.
상단의 properties 객체를 만들고, local.properties 경로에서 데이터를 불러오는 코드를 작성하자.
그리고 defualtConfig 부분에서 local.properties에서 선언한 값을 어떤 키로 저장할지도 작성해야 한다.
3. 설정 사항 적용하기
Gradle 파일을 변경하면, 설정을 변경한 것이기 때문에, 상단에 Sync Now를 눌러 적용해야 한다.
그 후 Build > Rebuild Project를 눌러 전체 프로젝트를 한 번 다시 만들어주자.
위에서 Sync Now만 해도 설정이 적용되지만, 안 되는 경우가 종종 있다.
확실하게 Rebuild을 해주는 편이 좋다.
app > java(generated)에서 BuildConfig.java 파일을 찾을 수 있다.
해당 파일은 프로젝트 생성 시 자동으로 생성되는 설정 파일이다.
Rebuild 후에 들어가보면 본인이 Gradle에서 선언한 키가 자동으로 들어가있는 것을 볼 수 있다.
해당 파일에 들어가면 상단에 "Files under the "build" folder are generated and should not be edited"라고 쓰여져있다.
알아서 생성되는 설정 파일이니 절대로 임의로 수정하지 말라는 뜻이다.
4. 실제 코드에 적용하기
사용하려는 키(KEY)가 있으면 이제 어디서든 BuildConfig.KEY로 불러다 사용할 수 있다.
지하철 API를 불러오는 키로 SUBWAY_API_KEY로 선언하여 사용 중이다.
이때 앞에 =가 붙는 이유는 API를 호출할 때 URL로 호출하는데 그 양식을 지키기 위함이다.
본인의 사용 용도와 방법에 맞춰서 작성하면 된다.
5. gitignore 파일 설정하기
위에까지만 해도 사실상 한 번에 관리한다는 측면은 끝이다.
하지만 이 파일을 깃허브에 올릴 것이기 때문에, 특정 중요한 파일들은 숨겨줘야 한다.
깃허브에 올릴 떄 특정 경로를 무시하는 파일은 gitignore다.
언어와 프레임워크에 따라서 git이 자동으로 읽어들여 무시하는 파일이다.
gitignore 파일이 없는데요?
평소에 git과 연동해두거나, 예전에 gitignore를 설정했다면야 있겠지만, 없는 경우가 태반이다.
구글에 아무리 gitignore를 검색해도 git에서 알려주거나 뭘 자꾸 설치하라고 한다.
안드로이드 스튜디오에서 설정해보자. 아주 간단하다.
우선 안드로이드 스튜디오 설정창을 띄워야 한다.
File > Settings를 따라가도 되고, Ctrl + Alt + S 단축키로 띄워도 된다.
안드로이드 스튜디오 설정창을 오른쪽처럼 뜨면 Plugins 메뉴바로 이동한다.
그 후 검색창에 ignore를 검색해서 .ignore 파일을 설치한다.
설치할 때는 왼쪽의 install이든 오른쪽의 install이든 상관없다. 둘 다 똑같다.
설치를 하고 나면 Apply > OK를 눌러 적용한 뒤 빠져나오자.
설치를 완료했다면, 본인의 루트 프로젝트(위의 사진에서는 app 폴더)에서 우클릭을 누르자.
New > .ignore File > gitignore File (Git)의 순서대로 따라가서 새 파일을 생성한다.
gitignore File (Git)를 누르면 위와 같은 창이 뜬다.
안드로이드 스튜디오에서의 ignore 파일을 만들 것이기 때문에, Android를 체크한다.
Android가 보이지 않는다면 상단에서 검색하든지, Languages, frameworks에서 찾든지 하면 된다.
그럼 오른쪽처럼 어떤 파일들을 ignore하는지 기본적으로 적혀있다.
우선 Generate를 눌러 생성한다.
생성하고 25, 26번째 라인을 보자. 원하는 local.properites 경로가 들어가있다.
없거나 다른 무시하고자 하는 파일 경로를 새롭게 추가해도 상관없다.
이러면 안드로이드 스튜디오에서 gitignore를 설정하는 방법은 끝이다.
6. 유지 보수하기
유지보수는 이제 2가지 측면이라고 생각한다.
첫째, API KEY에 문제가 생겼을 때, 보안을 강화하거나 회전(신규 발급)하는 것.
위의 사진은 본 프로그램에서 사용하는 공공데이터포털의 Open API다.
키 자체에 문제가 생긴다면, 위의 사이트에서 키를 신규 발급 받는다.
그럼 새롭게 얻은 키를 Config에서 바꿔주어야 한다. 기존처럼 찾아가며 일일이 바꾸지 않아도 된다.
혹시라도 보안을 염려한다면, 추가 암호화를 진행하는 방식을 채택할 수 있다.
둘째, 코드를 잘못 작성하지는 않았는지, 빠진 부분 없이 제대로 작성했는지 README로 문서화하는 것.
위의 상황과, 나중에 다시 코드를 보았을 때, 그리고 깃허브에서 사람들이 코드를 읽을 때를 대비해야 한다.
어떤 부분을 gitingore에 넣어 제외했고, 어디까지는 작성했는지.
어디에 키를 저장해두어 어떤 방식으로 암호화했는지, 프로젝트를 진행하며 지속적으로 유지보수 해야 한다.
'사이드 프로젝트 > 갤럭시 워치_지하철 앱 개발' 카테고리의 다른 글
안드로이드 스튜디오 PluginApplicationException 및 Adb connect (0) | 2023.08.11 |
---|---|
갤럭시 워치 지하철 앱 다시 시작하기 (0) | 2023.06.10 |