인트로

Auth Key 같은 민감 정보의 경우 깃에다 올리면 가디언이 튀어나와서 경고를 맥인다 (경험담)

그리고 사실 올리면 안 되기는 해…

그래서 방법을 찾아본 결과 plist에 키를 저장해두고 이걸 .gitignore에 추가해 로컬로 관리를 한다고 한다,,

거의 대부분의 솔루션이 이런데, 그러면 plist는 과연 안전한지??!?!에 대한 의문이 들었음

그래서 멘토님께 여쭤본 결과 plist도 완전 안전하지는 않다는 결론이 나왔었다. 로컬로 관리하기 때문에 안전할 뿐이라고..

🤷‍♀️ 엥 그러면 어케 해요? 🤷‍♀️ ⇒ 그걸 위해서 만드는 것이 .cer 파일 및 암호화

하지만 그렇게까지 하면 일이 번거로워지고 많아지므로 보통은 plist에 관리한다고 하긴 함

그래서 두가지 방법 다 정리하고자 한다.

plist 파일을 활용한 보관

  1. plist 파일을 만들어서 key-value 형태로 auth key를 넣어준다. let authKey = "XXX..." 의 구조일테니 키에 “auth_key”, 값에 “XXX…” 느낌으로 넣어주면 될 듯
  2. 코드 상에 불러올 때는 키 이름만 가져와서 사용할 수 있다. 만약 secret.plist라는 파일에 secret_key라는 키 이름으로 저장이 되어 있다면 아래와 같은 느낌으로 가져올 수 있음
private var apiKey: String? {
  get {
    guard let filePath = Bundle.main.path(forResource: "secret", ofType: "plist") 
    else { return nil }

    let plist = NSDictionary(contentsOfFile: filePath)
    guard let value = plist?.object(forKey: "secret_key") as? String 
		else { return nil }

    return value
  }
}

Certification 파일을 활용한 보관

Storing a Certificate in the Keychain

Apple Developer Documentation