애플리케이션에서 API 키를 사용하는 경우 저장 및 전송 중에 안전하게 보호되도록 해야 합니다. API 키를 공개적으로 노출하면 계정에 예상치 않은 비용이 청구되거나 데이터에 대한 무단 액세스가 발생할 수 있습니다. API 키를 안전하게 보호하려면 다음 권장사항을 구현하세요.
API 키 제한사항을 키에 추가
제한사항을 추가하면 API 키 사용 방법을 제한하여 손상된 API 키로 인한 영향을 줄일 수 있습니다.
자세한 내용은 API 키 제한사항 적용을 참조하세요.
쿼리 파라미터를 사용하여 API 키를 Google API에 제공하지 않기
API 키를 쿼리 파라미터로 API에 제공하면 API 키가 URL에 포함되므로 URL 스캔을 통해 키가 도난당할 수 있습니다. 대신 x-goog-api-key
HTTP 헤더 또는 클라이언트 라이브러리를 사용하세요.
공격에 노출되는 것을 최소화하기 위해 불필요한 API 키 삭제하기
공격 표면을 최대한 작게 유지하려면 현재 사용 중인 API 키만 유지합니다.
클라이언트 코드에 API 키를 포함하거나 코드 저장소에 커밋하지 않기
소스 코드에 하드코딩되거나 저장소에 저장된 API 키는 악의적인 행위자가 가로채거나 도용할 수 있습니다. 클라이언트는 사용자 인증 정보를 추가하고 요청을 실행할 수 있는 서버에 요청을 전달해야 합니다.
프로덕션에서 서비스 계정에 바인딩된 API 키를 사용하지 않기
서비스 계정에 바인딩된 API 키는 개발자가 Google Cloud API를 탐색할 때 초기 환경을 가속화하도록 설계되었습니다. 프로덕션 환경에서는 사용하지 마세요. 대신 최소 권한 보안 관행에 따라 Identity and Access Management(IAM) 정책 및 단기 서비스 계정 사용자 인증 정보와 같은 더 안전한 대안으로 이전할 계획을 세웁니다.
서비스 계정에 바인딩된 API 키 사용에서 더 안전한 방법으로 최대한 빨리 이전해야 하는 이유는 다음과 같습니다.
API 키는 요청과 함께 전송됩니다. 이렇게 하면 키가 노출되거나 로깅될 가능성이 높아집니다.
API 키는 보유자 사용자 인증 정보입니다. 즉, 누군가 서비스 계정에 바인딩된 API 키를 훔치면 이를 사용하여 해당 서비스 계정으로 인증하고 서비스 계정이 액세스할 수 있는 동일한 리소스에 액세스할 수 있습니다.
서비스 계정에 바인딩된 API 키는 감사 로그에서 최종 사용자의 ID를 숨깁니다. 개별 사용자의 작업을 추적하려면 각 사용자에게 고유한 사용자 인증 정보가 있어야 합니다.
강력한 모니터링 및 로깅 구현하기
API 사용량을 모니터링하면 무단 사용을 감지하는 데 도움이 됩니다. 자세한 내용은 Cloud Monitoring 개요 및 Cloud Logging 개요를 참조하세요.
API 키 격리
각 팀원에게 각 애플리케이션의 고유한 API 키를 제공합니다. 이렇게 하면 액세스를 제어하고 감사 추적을 제공하며 손상된 API 키로 인한 영향을 줄일 수 있습니다.
주기적으로 API 키 순환
새 API 키를 주기적으로 만들고, 새 API 키를 사용하도록 애플리케이션을 업데이트하고, 이전 키를 삭제해야 합니다.
자세한 내용은 API 키 순환을 참조하세요.
더 안전한 액세스 승인 방법 고려
인증 방법을 선택하는 데 도움이 필요한 경우 인증 방법을 참조하세요.