와챠의 우당탕탕 코딩 일기장

[Android/Kotlin] hide KEY/KEY 숨기기 본문

코딩 일기장/Android(Kotlin)

[Android/Kotlin] hide KEY/KEY 숨기기

minWachya 2022. 9. 11. 16:23
반응형

ACCESS KEY나 SECRET ACCESS KEY 같이 중요한 정보는

github에서 보여지면 위험하기 때문에 꼬옥 숨겨주어야 한다.

 

프로젝트 할 때 S3와 통신할 일이 있어서 ACCESS KEY랑 SECRET ACCESS KEY를 안드 내에 저장하고, 꺼내 쓸 일이 있었는데 어케 KEY를 숨기고 꺼냈는지 써보려고 한다!


1. local.propertiles 파일에 해당 키들을 적어준다.

access.key = AK어쩌구저저구QF
secret.access.key = h1이러쿵저러쿵1P

 

2. app 단위 build.gradle에 아래 코드를 추가한다.

코드는,,, 보면 금방 알겠지만 주석으로 설명해봄.

plugins {
   ...
}

// 추가
// Properties를 사용해서 local.properties 내용을 가져온다.
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
// local.properties에 저장했던 변수 이름을 가져오는 함수를 만들고
def accessKey = properties.getProperty('access.key')
def secretAccessKey = properties.getProperty('secret.access.key')

android {
    compileSdk 32

    defaultConfig {
        applicationId "com.example.safetymanagement2022"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

		// 추가
        // resValue와 위에서 정의함 함수를 사용해 string 형식의 데이터를 access_key라는 이름으로 저장한다.
        resValue "string", "access_key", accessKey
        resValue "string", "secret_access_key", secretAccessKey
    }

    ...
}

dependencies {
    ...
}

 

3. sync ~~

 

4. Manifest의 application 태그 안에 아래 코드 추가.

<!--s3 key-->
<meta-data
    android:name = "accessKey"
    android:value = "@string/access_key"/>
<meta-data
    android:name = "secretAccessKey"
    android:value = "@string/secret_access_key"/>

~~ 여기까지 저장 끝!! ~~

 

5. 저장한 값 불러오기

private val ai: ApplicationInfo = context.packageManager
    .getApplicationInfo(context.packageName, PackageManager.GET_META_DATA)
private val ak: String = ai.metaData["accessKey"].toString()
private val sak: String = ai.metaData["secretAccessKey"].toString()

 

끝입니다^_^

 

++

앗 젤 중요한 거는 .gitignore 파일 안에

local.properties 가 꼬옥 들어가 있어서 github에서도 안 보임!!!!!!!!!!!!

이건 기본으로 다 되어있긴 하던데 그래도 확인을 꼬옥 해보셔요

반응형
Comments