페이지 이동경로
  • 약관>
  • 보안 권장사항

보안 권장사항

보안 권장사항

1. 카카오디벨로퍼스에서 제공하는 보안 설정

1.1. 플랫폼 설정

[플랫폼] 설정에서 사전에 등록된 Android 패키지, iOS 번들과 웹 도메인만 SDK(Software Development Kit)에 접근 가능하도록 설정할 수 있습니다.

  • Android SDK: 키 해시 등록
  • iOS SDK: 번들 ID 등록
  • JavaScript SDK: 웹 사이트 도메인 설정, 카카오톡 공유 메시지 발송 시 포함되는 링크 URL의 도메인도 웹 사이트 도메인 설정에 등록되어야 해당 페이지로 이동 가능

1.2. Redirect URI 설정

외부로의 악의적인 리다이렉트와 같은 공격을 방지하기 위해, 인가 코드 요청 시 사용된 redirect_uri가 [카카오 로그인] 설정에 등록된 Redirect URI와 일치해야 기능이 정상 작동합니다.

1.3. Client Secret 설정

[보안] > [Client Secret] 설정을 사용하면, 액세스 토큰 발급 시 보안 강화 목적으로 Client Secret 코드 값을 추가 검증합니다. Client Secret 코드는 반드시 백엔드(Backend)에서만 사용해야 하며, 절대로 사용자 브라우저에 노출되어서는 안됩니다. 토큰 발급 받기토큰 갱신하기 API 요청 시, client_secret 파라미터를 추가하여 Client Secret 코드를 전달합니다.

1.4. 허용 IP 주소 설정

[허용 IP 주소] 설정은 카카오 API 호출 시, 사전에 등록된 IP 주소의 요청만 허용하도록 설정하는 기능입니다.

1.5. 팀 관리

[팀 관리] 설정의 초대 기능으로 카카오디벨로퍼스 앱을 설정 및 변경할 수 있는 개발자 계정을 팀원으로 추가할 수 있습니다. 앱에 대한 모든 권한을 가진 오너(Owner) 계정은 계정 정보가 유출되지 않도록 강력한 암호를 사용해 잘 관리해야 합니다. 팀원에게는 사용 목적에 따라 제한적으로 권한을 부여할 수 있습니다. 또한 테스트 앱을 생성하여 테스트하는 경우, 테스트 앱에는 등록된 팀원만 접근 가능하므로 배포 전 서비스 접근 보안을 한층 강화할 수 있습니다. 오너 계정을 관리하던 직원이 퇴사하는 경우, [팀 관리]에서 오너 계정을 변경하고, 불필요한 팀원 계정은 [내보내기]합니다.

2. API 호출 보안 가이드

2.1. 앱 키 보안

앱 키는 플랫폼별로 각각 발급됩니다. 카카오 플랫폼은 앱 키 값으로 올바른 API 요청인지 검증 하며, Admin 키는 모든 권한을 갖고 있는 키이므로 유출되지 않도록 반드시 백엔드에서만 사용하도록 합니다.

카카오 디벨로퍼스 앱의 오너 계정은 앱 키를 재발급받을 수 있습니다. 앱 키가 유출된 경우 재발급할 수 있지만, 이전 앱 키로 복구 불가능하니 신중하게 사용해야 합니다.

2.2. 액세스 토큰 보안

액세스 토큰은 API 요청에 사용되므로 유출되지 않도록 주의하여야 하며, 리프레시 토큰의 경우 반드시 백엔드에서만 사용하도록 합니다.

액세스 토큰이 유출되더라도 외부에서 사용할 수 없도록 허용 IP 주소 설정 기능 사용을 권장합니다.

2.3. state 파라미터 사용 (CSRF 공격 방지)

state 파라미터는 인가 코드 요청 시 전달한 값을 Redirect URI에 전달하여 인가 요청 출처를 확인하는 데 사용합니다. 이는 CSRF(Cross-site request forgery) 공격 방지용으로 활용할 수 있습니다.

카카오 로그인을 시도하는 각 사용자의 로그인 요청에 대한 state 값을 중복되지 않는 고유한 난수로 설정하고, Redirect URI에 전달된 값과 일치하는지 검증하는 방식으로 사용합니다. state 값은 세션 또는 동일 출처 정책에 의해 보호되는 쿠키 등 제3자가 접근할 수 없는 위치에 보관하여 사용해야 합니다. (참고: RFC 6749 10.12.)

2.4. prompt 파라미터 사용

인가 코드 요청 시, prompt 파라미터 값을 login으로 설정하면 기존 사용자 인증 여부와 상관없이 사용자에게 카카오계정 로그인 화면을 출력하여 매번 로그인하도록 할 수 있습니다. 서비스 특성에 부합하는 경우 선택적으로 사용할 수 있습니다.

2.5. nonce 파라미터 사용

OpenID Connect를 통해 ID 토큰을 함께 발급받을 경우, ID 토큰 재생 공격을 방지하기 위해 사용합니다. ID 토큰 유효성 검증 시 대조할 고유한 난수 값을 nonce 파라미터로 전달합니다.

2.6. API호출을 위한 방화벽 설정

방화벽을 통해 허용된 시스템 호출만 허용하는 경우, kauth.kakao.com, kapi.kakao.com 등 호출할 카카오 API 호스트(Host)의 IP를 허용해야 합니다.

연결 끊기 알림, 카카오톡 채널 관계 알림, 카카오톡 공유 전송 성공 알림과 같이 카카오에서 콜백하는 기능을 사용한다면 카카오 측 콜백 IP를 추가하여 서비스 측 API를 호출할 수 있도록 허용합니다.

카카오톡 공유 메시지 발송 시 서비스 페이지 미리보기를 구성하는 경우, 카카오 스크랩 서버가 접근할 수 있도록 카카오 측 스크랩 요청 IP를 추가합니다.

3. 시스템 구축 보안 가이드

3.1. 전송 중 데이터 암호화

응용프로그램으로 전송되는 또는 응용프로그램에서 전송하는 모든 민감한 데이터의 보호를 위해 다음 사항을 준수해야 합니다.

인가 코드 및 토큰 발급 요청에 사용되는 Redirect URI는 특별한 이유가 없는 한 HTTPS를 사용해야 합니다. (참고: RFC 6749 3.1.2.1)

3.2. 데이터 저장 시 암호화

파일 및 데이터베이스 내에 저장되는 모든 민감한 데이터는 암호화를 해야 합니다.

3.3. 민감정보 데이터 로깅 금지

카카오로부터 전달받은 사용자 정보는 시스템 로그에 저장하지 않아야 합니다.

3.4. 카카오 로그인으로 기존 회원 매핑 시 주의 사항

카카오 로그인으로 신규 가입한 이후에는 회원번호(App User ID)로 저장된 고객을 식별해야합니다. 자체 회원가입 기능을 통해 가입한 회원이 카카오로그인 회원과 동일하여 매핑(Mapping)하는 경우 CI(연계정보) 또는 이메일로 동일인 여부를 판단할 수 있습니다. 이메일의 경우, 반드시 본인 인증을 완료한 경우에만 매핑해야 합니다.

3.5. 기능 구현 시 주의 사항

사용자의 개인 정보를 보호하고 카카오디벨로퍼스에서 제공하는 기능을 안전하게 사용하도록 운영정책을 준수해야합니다.

3.6. SDK를 최신 버전으로 유지할 의무

카카오가 제공하는 SDK를 비롯한 서비스에는 보안 업데이트가 제공됩니다. 보안을 위해 수시로 현재 제공 중인 SDK별 버전 정보를 확인하고, 가능한 최신 버전을 사용해야 합니다.

3.7. 최소 권한 액세스

카카오 로그인 동의항목 설정은 서비스에 반드시 필요한 최소한의 항목만으로 설정합니다.

4. 브랜드 가이드

4.1. 올바른 기본 정보 입력

제공하는 서비스가 다른 서비스로 오인되거나 피싱(Phishing)에 악용되지 않도록 카카오디벨로퍼스 앱 아이콘, 이름, 회사명을 실제 서비스 내용과 일치하도록 등록합니다.

4.2. 카카오 브랜드 사용 지침

카카오 로그인 사용 시, 제공된 디자인 가이드를 준수하여 사용자가 카카오 로그인을 통해 개별 서비스에 가입됨을 인지할 수 있어야 합니다. 카카오 상표 도용을 금지합니다. 카카오의 허가 없이 카카오디벨로퍼스 앱의 이름, 아이콘, 회사명에 카카오 서비스 또는 카카오 제휴 서비스로 오인될 수 있는 내용을 등록해서는 안됩니다. (예: “for Kakao” 명시)

5. 사후 보안 대응

5.1. 앱 키 재발급을 통해 추가 피해 막기

앱키가 유출된 경우, 앱 키를 재발급하여 기존 앱 키를 무효화할 수 있습니다. 재발급된 앱 키는 기존 앱 키 값으로 복구할 수 없습니다. 앱 키를 재발급하면 서비스 애플리케이션이나 웹 사이트에 적용된 앱 키를 재발급된 값으로 변경해야 카카오 API를 정상적으로 이용할 수 있습니다.

5.2. 보안 취약성 리포트

pf.security@kakaocorp.com을 통해 카카오의 보안 취약성에 대해 리포트할 수 있습니다. 카카오 플랫폼을 이용 중인 서비스의 보안을 강화하기 위한 궁금한 점이 있는 경우 DevTalk을 통해 문의하실 수 있습니다.