728x90
안녕하세요!
GCP 키 탈취가 이루어졌을 경우에는 먼저, 케이스를 오픈해서 환불신청을 진행합니다.
키 유출시 취하실 수 있는 내용은 다음과 같습니다.
- API키를 어드민으로 만들지 않고 관련된 권한만 허용하기
- API키에 최대 할당량을 설정하기
- 카드랑 연결되어 있는 어카운트는 꼭 관리를 하고, 사용을 안할 경우에는 카드정보를 삭제하거나 삭제 요청 진행하기
그리고 하기 스크립트들은 인스턴스 삭제 / delete protection 해제 후 삭제, 디스크 삭제 관련 스크립트입니다.
하기 내용을 통해서 인스턴스 중 TERMINATE 된 인스턴스 검색하기
gcloud compute instances list | grep TERMINATE
인스턴스 삭제하기
중지된 인스턴스의 delete protection 해제 후 삭제, 디스크 삭제
gcloud compute instances list | grep TERMINATE | awk '{printf "gcloud comoute instances delete %s --zone %s\n", $1, $2}'
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
반응형
'IT > GCP' 카테고리의 다른 글
[Google Cloud] Generative AI Live + Labs Seoul#1 (115) | 2023.09.24 |
---|---|
Bigquery 실행 결과를 GCS로 자동 업데이트 (3) | 2023.09.09 |
[Cloud Hero 2-3] 소프트웨어 공급망 보안: Cloud Build와 Cloud Deploy를 통한 컨테이너 앱 배포하기 (0) | 2022.11.24 |
[Cloud Hero 1-4] Running a Node.js Container on GKE (0) | 2022.11.22 |
[Cloud Hero 2-4] Kubernetes Engine으로 배포 관리 (0) | 2022.11.22 |