728x90

안녕하세요! 

 

GCP 키 탈취가 이루어졌을 경우에는 먼저, 케이스를 오픈해서 환불신청을 진행합니다.

키 유출시 취하실 수 있는 내용은 다음과 같습니다.

 
  • API키를 어드민으로 만들지 않고 관련된 권한만 허용하기
  • API키에 최대 할당량을 설정하기
  • 카드랑 연결되어 있는 어카운트는 꼭 관리를 하고, 사용을 안할 경우에는 카드정보를 삭제하거나 삭제 요청 진행하기
 
그리고 하기 스크립트들은 인스턴스 삭제 / delete protection 해제 후 삭제, 디스크 삭제 관련 스크립트입니다.
 
하기 내용을 통해서 인스턴스 중 TERMINATE 된 인스턴스 검색하기
gcloud compute instances list | grep TERMINATE
 
인스턴스 삭제하기
gcloud compute instances list | grep TERMINATE | awk '{printf "gcloud comoute instances delete %s --zone %s\n", $1, $2}' 

 

중지된 인스턴스의 delete protection 해제 후 삭제, 디스크 삭제
 
for terminated_instance_uri in $(gcloud compute instances list --uri --filter="status:TERMINATED" 2> /dev/null); do
    terminated_instance_name=${terminated_instance_uri##*/}
    terminated_instance_zone_uri=${terminated_instance_uri/\/instances\/${terminated_instance_name}/}
    terminated_instance_zone=${terminated_instance_zone_uri##*/}

    # set the no deletion protection
    gcloud compute instances update ${terminated_instance_name} --no-deletion-protection --zone ${terminated_instance_zone}

    # delete terminated instances
    if [ -n "${terminated_instance_name}" ] && [ -n "${terminated_instance_zone}" ] && gcloud compute instances delete ${terminated_instance_name} --zone ${terminated_instance_zone} --delete-disks all --quiet; then
        echo "deleted: ${terminated_instance_zone}/${terminated_instance_name}"
    fi
done

# delete orphaned disks (filter for disks without a user)
for orphaned_disk_uri in $(gcloud compute disks list --uri --filter="-users:*" 2> /dev/null); do
    orphaned_disk_name=${orphaned_disk_uri##*/}
    orphaned_disk_zone_uri=${orphaned_disk_uri/\/disks\/${orphaned_disk_name}/}
    orphaned_disk_zone=${orphaned_disk_zone_uri##*/}
    if [ -n "${orphaned_disk_name}" ] && [ -n "${orphaned_disk_zone}" ] && gcloud compute disks delete ${orphaned_disk_name} --zone ${orphaned_disk_zone} --quiet; then
        echo "deleted: ${orphaned_disk_zone}/${orphaned_disk_name}"
    fi
done
 
 
재발 방지를 위해서 취할 수 있는 조치사항
 
- GCP 외부에서의 서비스 계정 키를 보호하기 위해서 서비스 계정 생성시 최소 권한만 주어서 사용하는 방법
 
- 키 rotation 활용하는 방법 (https://cloud.google.com/iam/docs/using-iam-securely)
IAM 서비스 계정 API 메서드를 사용하여 키를 순환합니다.
  • ServiceAccounts.keys.create()
  • 이전 키를 새 키로 교체
  • ServiceAccounts.keys.delete()
 
- Cloud Source Repositories 사용하기
외부 리파지토리를 사용하지 않고 gcp에서 제공하는 Cloud Source Repositories를 사용하실 수 있습니다.
 
- 키에 대한 외부 리파지토리 스캔
git-secrets 사용을 보완하기 위해 오픈 소스 도구인 trufflehog를 실행할 수도 있습니다. 
Trufflehog는 업로드되었을 수 있는 키를 찾기 위해 엔트로피 분석을 사용하여 비밀에 대한 리포지토리 기록을 검색합니다 .
 
참조 링크 : https://cloud.google.com/blog/products/identity-security/help-keep-your-google-cloud-service-account-keys-safe?hl=en
https://matthew.kr/%ED%95%B4%ED%82%B9-%EA%B8%B0%EB%A1%9D-%EA%B9%83%ED%97%99%EC%97%90-%EA%B5%AC%EA%B8%80-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-api-key%EA%B0%80-%EB%85%B8%EC%B6%9C%EB%90%9C%EC%A7%80-13%EB%B6%84%EB%A7%8C/
 
 

감사합니다.
 

 

728x90
반응형