Cloud Storage 위협 모델 보고서

최종 업데이트: 2026년 5월 22일

이 문서에서는 Cloud Storage의 데이터 기밀성, 무결성, 가용성에 대한 잠재적인 공격 벡터와 완화 전략을 식별합니다. 이 보고서의 범위는 내 관점으로 제한되며, Cloud Storage 환경 내에서 관리할 수 있는 위험에 중점을 둡니다.

이러한 위협 모델은 현재 알려진 공격 벡터, 아키텍처 가정, 게시 시 시스템의 지정된 범위를 기반으로 한 확률적 평가입니다. 이러한 모델은 완전하지 않으며 Google Cloud 고객의 보안 및 위험 평가를 위한 기준선으로 사용되고 위험 감소 결정을 안내하기 위한 것입니다.

이 서비스에 대해 다음과 같은 위협이 확인되었습니다.

위협 세부정보

다음 섹션에서는 각 위협, 위협의 징후, 권장되는 완화 방법에 관한 정보를 제공합니다.

안전하지 않은 액세스 구성을 사용한 정보 공개

액세스 제어가 잘못 구성된 경우 Cloud Storage 객체에 저장된 민감한 정보가 승인되지 않은 당사자에게 노출될 수 있습니다. 액세스 제어를 잘못 구성하는 것은 가장 일반적이고 영향력이 큰 클라우드 보안 문제 중 하나입니다.

STRIDE 카테고리

정보 공개

MITRE ATT&CK 전술

컬렉션

창문 처리
  • 공개 버킷 노출: Cloud Storage 버킷이 IAM 허용 정책에서 allUsers 또는 allAuthenticatedUsers 계정에 Storage Object Viewer와 같은 역할을 부여하여 공개됩니다. 공개 액세스 방지가 적용되지 않으면 이러한 역할은 모든 객체를 인터넷에 노출합니다.

  • 서명된 URL 유출: 임시 전달자 토큰 역할을 하는 서명된 URL이 클라이언트 측 코드, 로그 또는 보안되지 않은 전송을 통해 실수로 유출됩니다. URL을 획득한 외부 사용자 또는 애플리케이션은 URL 서명이 만료될 때까지 권한 (예: 읽기 또는 쓰기)을 사용하여 지정된 Cloud Storage 객체에 액세스할 수 있습니다.

  • 지나치게 광범위한 IAM 권한: ID(예: 사용자 계정 또는 서비스 계정)에 데이터의 작은 하위 집합에 대한 액세스 권한만 필요한데 많은 버킷에 광범위한 권한(예: storage.objects.get 또는 storage.objects.list)이 부여됩니다.

  • 도용된 ID 사용자 인증 정보: 공격자가 사용자 계정 또는 서비스 계정 키의 사용자 인증 정보를 획득하여 Cloud Storage JSON API에 인증하고 도용된 ID가 볼 수 있는 모든 데이터에 액세스할 수 있습니다.

  • 부하 분산기 잘못된 구성: Cloud Storage 버킷이 백엔드로 구성된 Cloud Load Balancing 인스턴스는 버킷 자체가 공개되지 않더라도 객체를 공개적으로 노출하도록 잘못 구성될 수 있습니다. 이 잘못된 구성으로 인해 직접 Cloud Storage IAM 컨트롤을 우회하는 데이터에 대한 대체 액세스 경로가 생성되어 보안이 약해질 수 있습니다.

  • 부적절한 CDN 캐싱: Cloud Storage 버킷이 Cloud Load Balancing 및 Cloud CDN의 백엔드로 사용되는 경우 잘못된 구성으로 인해 민감한 정보가 Google의 공개 에지 위치에 캐시될 수 있습니다. 백엔드 서비스가 올바른 Cache-Control 헤더 (예: private 또는 no-store)를 내보내지 않으면 CDN이 버킷 IAM 검사를 우회하여 캐시된 콘텐츠를 승인되지 않은 사용자에게 제공할 수 있습니다.

완화 조치
  • storage.publicAccessPrevention 조직 정책 제약 조건으로 개별 스토리지 버킷 또는 프로젝트, 폴더, 조직 수준에서 공개 액세스 방지를 적용합니다.

  • 균일한 버킷 수준 액세스를 사용하여 권한을 간소화하고 기존 ACL을 방지합니다.

  • 저장 데이터 암호화로 데이터를 보호하도록 고객 관리 암호화 키 (CMEK)를 구성합니다.

  • 서명된 URL 만료 시간을 가능한 한 짧게 유지합니다.

  • 침해되었거나 사용되지 않는 서비스 계정 키를 정기적으로 감사하고 삭제합니다.

  • VPC 서비스 제어를 구현하여 서비스 경계를 만들고 사용자 인증 정보가 도용되더라도 데이터 무단 반출을 방지합니다.

  • 액세스를 제한하기 위해 Cloud Storage 콘텐츠를 제공하는 부하 분산기에 Cloud Armor 정책이 적용되어 있는지 확인합니다.

IAM 잘못된 구성을 사용한 권한 승격

특정하고 무해해 보이는 IAM 권한이 있는 공격자는 권한을 에스컬레이션하여 Cloud Storage 버킷 및 포함된 데이터에 대한 관리 제어를 비롯한 광범위한 액세스 권한을 얻을 수 있습니다. 이 위협은 의도된 보안 상황을 우회하고 최소 권한의 원칙을 위반합니다.

STRIDE 카테고리

권한 승격

MITRE ATT&CK 전술

권한 에스컬레이션

창문 처리
  • 직접 정책 수정: Cloud Storage 버킷에 대한 storage.buckets.setIamPolicy 권한이 부여된 사용자 또는 서비스 계정과 같은 ID는 허용 정책을 직접 수정할 수 있습니다. 이 구성을 사용하면 공격자가 Storage Admin와 같은 높은 권한이 있는 역할을 자신에게 부여하여 버킷의 구성과 데이터를 완전히 제어할 수 있습니다.

  • 서비스 계정 가장: 서비스 계정에 대한 iam.serviceAccounts.actAs 권한이 포함된 roles/iam.serviceAccountUser와 같은 역할이 있는 ID는 연결된 서비스 계정의 ID로 코드를 실행하기 위해 서비스 계정을 Compute Engine 인스턴스와 같은 다른 리소스에 연결할 수 있습니다. 또는 iam.serviceAccounts.getAccessToken을 포함한 권한이 있는 roles/iam.serviceAccountTokenCreator과 같은 역할이 있는 ID가 해당 서비스 계정에 대한 액세스 토큰을 생성할 수 있습니다. 타겟 서비스 계정에 Cloud Storage 리소스에 대한 권한이 상승된 경우 공격자가 이러한 권한을 효과적으로 상속합니다.

  • 서명된 URL 생성: 서비스 계정에 대한 iam.serviceAccounts.signBlob 권한이 있는 ID는 V4 서명된 URL을 생성할 수 있습니다. 이러한 URL을 사용하면 공격자가 서비스 계정이 읽거나 쓸 수 있는 객체에 대한 임시 운반자 토큰 액세스를 만들어 더 제한적인 네트워크 제어 또는 공격자 자신의 직접 Cloud Storage 권한 부족을 잠재적으로 우회할 수 있습니다.

완화 조치
  • 최소 권한의 원칙을 따릅니다. 꼭 필요한 경우가 아니라면 역할에 storage.buckets.setIamPolicy, iam.serviceAccounts.actAs, iam.serviceAccounts.signBlob와 같은 권한을 추가하지 마세요. IAM 조건을 사용하여 특정 리소스 또는 기간에 대한 권한을 제한합니다. Cloud 애셋 인벤토리와 같은 도구를 사용하여 허용 정책을 정기적으로 감사하여 과도한 권한을 감지하고 삭제합니다.

  • 서명된 URL을 처리하는 애플리케이션이 서명된 URL을 로깅하거나 서드 파티가 스크랩할 수 있는 방식으로 노출하지 않도록 합니다. 예를 들어 Cloud CDN을 사용하여 서명된 URL을 캐시하는 경우 서명된 URL을 통해 비공개 및 인증되어야 하는 민감한 객체가 공개적으로 캐시되지 않도록 적절한 Cache-Control 헤더를 설정합니다.

과도한 권한을 사용하여 데이터 조작 또는 파괴

권한이 충분한 공격자는 Cloud Storage 시스템 내에서 데이터와 구성을 변경하거나 손상시키거나 영구적으로 삭제하여 데이터 무결성과 가용성을 손실시킬 수 있습니다.

STRIDE 카테고리

조작

MITRE ATT&CK 전술

영향

창문 처리
  • 직접 객체 조작: storage.objects.create 또는 storage.objects.delete 권한이 있는 ID는 개별 Cloud Storage 객체를 덮어쓰거나 삭제할 수 있습니다.

  • 수명 주기 정책 무기화: storage.buckets.update 권한이 있는 공격자는 버킷의 객체 수명 주기 관리 구성을 수정하여 모든 객체를 즉시 또는 짧은 기간 후에 삭제하는 규칙을 만들어 대량 데이터 파괴를 초래할 수 있습니다.

  • 버킷 삭제: storage.buckets.delete 권한이 있는 권한이 많은 공격자는 전체 Cloud Storage 버킷을 삭제하여 연결된 모든 객체, 구성, 정책을 즉시 파괴할 수 있습니다.

  • 알림 가로채기: storage.buckets.update 권한이 있는 공격자가 악의적으로 Pub/Sub 알림 구성을 변경하거나 삭제할 수 있습니다. 이 공격은 이러한 이벤트를 사용하는 다운스트림 시스템을 블라인드 처리하거나 알림을 공격자가 제어하는 주제로 리디렉션할 수 있습니다.

완화 조치
  • 변경 불가능한 스토리지 또는 최소 보관 기간이 필요한 경우 전체 버킷에 버킷 잠금을 구성하거나 개별 객체에 객체 잠금을 구성하세요.

  • 중요한 데이터가 포함된 버킷에서 실수로 또는 악의적으로 다시 작성하는 경우에 대비하여 복구할 수 있도록 객체 버전 관리 및 소프트 삭제 정책을 구성합니다. 영구 삭제 전에 객체를 감지하고 복구할 수 있는 충분한 시간을 제공하는 지정된 소프트 삭제 기간을 구현합니다.

  • 중요한 데이터가 포함된 버킷에서 데이터 액세스 감사 로그를 사용 설정하여 비정상적인 액세스 패턴을 모니터링합니다.

잘못 구성된 Storage Transfer Service 작업을 사용한 데이터 무단 반출

storagetransfer.transferjobs.create 또는 storagetransfer.transferjobs.update 권한이 있는 공격자는 Storage Transfer Service 작업을 만들어 민감한 Cloud Storage 버킷의 데이터를 다른 프로젝트에 있는 공격자 관리 버킷으로 복사할 수 있습니다. 이 공격 벡터는 storage.objects.get와 같은 직접 API 호출에 중점을 둘 수 있는 일반적인 데이터 액세스 모니터링을 우회하여 많은 양의 데이터를 자동으로 지속적으로 유출하는 데 사용할 수 있습니다.

STRIDE 카테고리

정보 공개

MITRE ATT&CK 전술

유출

창문 처리

악성 전송 작업 생성: storagetransfer.transferjobs.create 또는 storagetransfer.transferjobs.update 권한이 있는 공격자가 Storage Transfer Service 작업을 생성하거나 수정하여 민감한 Cloud Storage 버킷의 데이터를 다른 프로젝트에 있는 공격자 관리 버킷으로 복사합니다.

완화 조치
  • storagetransfer.transferjobs.createstoragetransfer.transferjobs.update의 IAM 권한을 엄격하게 제한합니다. 신뢰할 수 있는 관리 계정에서 사용하는 역할에만 이러한 권한을 할당하세요.

  • VPC 서비스 제어 경계를 구현하여 경계 내부의 서비스와 경계 외부의 서비스 간 통신을 제한합니다.

  • 전송 작업 권한을 부여하는 역할에 IAM 조건을 사용하여 소스 및 대상 버킷을 알려진 승인된 위치로 제한합니다.

  • Storage Transfer Service 작업의 생성 및 수정에 대해 Cloud 감사 로그를 정기적으로 모니터링합니다. 신뢰할 수 없는 대상 또는 외부 대상을 지정하는 작업에 대한 알림을 구성합니다.

종속성 관리 오류로 인한 데이터 액세스 손실

중요한 서비스 종속 항목에 대한 공격이나 잘못된 관리로 인해 Cloud Storage의 데이터에 대한 적법한 액세스가 거부될 수 있으며, 스토리지 시스템 자체를 직접 손상시키지 않고도 데이터에 액세스할 수 없게 됩니다.

STRIDE 카테고리

조작

MITRE ATT&CK 전술

영향

창문 처리
  • CMEK 사용 불가: Cloud Storage 버킷이 CMEK를 사용하도록 구성된 경우 지원 Cloud KMS 키를 사용 중지하거나 삭제하면 해당 키로 암호화된 모든 객체에 암호화 방식으로 액세스할 수 없게 됩니다. Cloud Storage 서비스 에이전트는 복호화를 실행할 수 없으므로 해당 데이터에 대한 서비스 거부가 발생합니다.

  • 악의적인 버킷 잠금: storage.buckets.update 권한이 있는 공격자가 보관 기간이 지나치게 긴 버킷 잠금을 적용할 수 있습니다. 이 잠금으로 인해 데이터의 적법한 삭제가 방지되어 불필요한 비용이 누적될 수 있으며, 이는 일종의 금융 서비스 거부입니다.

완화 조치
  • Cloud KMS 관리를 위한 엄격한 IAM 허용 정책 및 업무 분리를 구현합니다. Cloud Storage 버킷을 관리할 권한이 있는 ID에 버킷에서 사용하는 Cloud KMS 키를 관리할 권한이 없는지 확인합니다.

  • Cloud KMS 키 삭제 방지 메커니즘을 사용합니다.

  • 버킷 잠금의 경우 storage.buckets.update 권한을 엄격하게 관리하고 모니터링을 사용하여 예기치 않은 구성 변경사항을 알립니다.

관측 가능성 부족으로 인한 활동 난독화

감사 및 모니터링이 올바르게 구성되지 않으면 공격자가 감지되지 않은 상태에서 Cloud Storage 리소스에 대해 악의적인 작업을 실행할 수 있습니다. 관측 가능성이 부족하면 공격자가 자신의 흔적을 숨길 수 있으며 효과적인 침해 사고 대응 및 포렌식을 방해합니다.

STRIDE 카테고리

부인

MITRE ATT&CK 전술

방어 회피

창문 처리
  • 데이터 액세스 로그 사용 중지: 관리자 활동 로그는 항상 사용 설정되어 있지만 객체 읽기 및 쓰기를 기록하는 데이터 액세스 로그는 기본적으로 사용 중지되어 있습니다. 명시적으로 사용 설정하지 않으면 공격자가 이러한 작업에 대한 Cloud 감사 로그를 생성하지 않고 버킷의 모든 데이터를 무단 반출하거나 조작할 수 있으므로 침해를 감지하거나 조사하기가 어렵습니다.

  • 로그 싱크 조작: 충분한 권한을 얻은 공격자는 Cloud 감사 로그를 라우팅하는 로그 싱크를 사용 중지하거나 재구성하여 모니터링 시스템으로의 보안 관련 데이터 흐름을 효과적으로 중지할 수 있습니다.

  • 측정항목 모니터링 소홀: 공격자가 장기간에 걸쳐 소량의 데이터를 점진적으로 유출하는 등 저속 활동을 실행합니다. 이러한 작업은 Cloud 감사 로그에서 심각도가 높은 알림을 트리거하지는 않지만 Cloud Monitoring 측정항목에서 비정상적인 패턴 (예: 지속적인 이그레스 트래픽)을 만듭니다. 이러한 측정항목을 모니터링하지 않으면 공격자가 탐지되지 않은 상태로 유지될 수 있습니다.

완화 조치
  • 민감한 데이터 또는 중요한 데이터가 포함된 모든 버킷에 대해 데이터 액세스 감사 로그를 사용 설정합니다.

  • 로그가 로그 싱크의 조작을 방지하기 위해 엄격하게 제어된 권한이 있는 안전한 중앙 집중식 로깅 프로젝트로 라우팅되는지 확인합니다.

  • Cloud Monitoring 또는 SIEM에서 로그 기반 알림을 구성하여 비정상적인 액세스 패턴이나 IAM 허용 정책 변경과 같은 의심스러운 활동을 적극적으로 감지합니다.

  • 주요 Cloud Monitoring 측정항목을 기반으로 알림을 만들어 기준 동작에서 벗어난 부분을 감지합니다.

  • 기본 제공 Storage Intelligence 대시보드와 데이터 보안 상황 관리의 통계 데이터를 사용하여 지속적인 객체 수준 위험 노출 모니터링 및 보안 상황 평가를 제공합니다.

Cloud Storage에 저장된 손상된 아티팩트를 사용한 공급망 포이즈닝

공격자가 소프트웨어 아티팩트 (예: 바이너리, 컨테이너 이미지, 빌드 스크립트)를 저장하는 데 사용되는 Cloud Storage 버킷에 storage.objects.create 또는 storage.objects.delete와 같은 쓰기 액세스 권한을 얻으면 합법적인 아티팩트를 악성 버전으로 대체할 수 있습니다. 이 버킷의 아티팩트를 신뢰하는 다운스트림 CI/CD 파이프라인, 개발자 또는 최종 사용자가 손상된 코드를 실수로 실행하여 광범위한 공급망 공격이 발생합니다.

STRIDE 카테고리

조작

MITRE ATT&CK 전술

초기 액세스

창문 처리
  • 바이너리 교체: 공격자가 출시 바이너리 또는 라이브러리를 트로이 목마 버전으로 덮어씁니다. 이 아티팩트가 빌드로 가져오거나 배포되면 공격자의 코드가 대상 환경 내에서 실행됩니다.

  • 컨테이너 이미지 포이즈닝: 컨테이너 레지스트리 (예: Artifact Registry)의 백엔드로 사용되는 버킷에 액세스할 수 있는 공격자는 이미지 레이어를 조작하여 취약점이나 백도어를 삽입할 수 있습니다.

  • 빌드 스크립트 수정: 공격자가 Cloud Storage에 저장된 빌드 스크립트 (예: cloudbuild.yaml 또는 Makefile)를 수정하여 빌드 프로세스 자체를 변경합니다. 공격자는 빌드 스크립트를 수정하여 컴파일 중에 비밀을 유출하거나 백도어를 삽입할 수 있습니다.

  • AI 모델 포이즈닝: 공격자가 Cloud Storage의 유효한 모델 체크포인트를 프로덕션 시스템에서 로드될 때 코드를 실행하는 악성 체크포인트로 바꿀 수 있습니다. 또는 공격자가 모델 학습에 사용되는 Cloud Storage 버킷의 데이터를 수정하여 학습된 모델에 백도어나 악성 행위를 삽입할 수도 있습니다.

완화 조치
  • 취약점 검사 및 향상된 액세스 제어를 제공하는 Artifact Registry와 같은 전용 아티팩트 관리 서비스를 사용하세요. 중요한 소프트웨어 아티팩트를 저장하는 데 표준 Cloud Storage 버킷을 사용하지 마세요.

  • 모든 빌드 아티팩트에 디지털 서명 구현 아티팩트를 배포하기 전에 서명을 확인하여 무결성과 출처를 보장하도록 CI/CD 파이프라인을 구성합니다.

  • 악성 데이터로 덮어쓴 객체를 보관하도록 버킷에 객체 버전 관리를 구성합니다.

Cloud Storage 객체 플러딩 또는 이그레스 악용을 사용한 비용 기반 서비스 거부

공개적으로 쓰기 가능하거나 보안이 취약한 버킷에 객체 생성 권한이 있는 공격자는 수많은 작은 객체를 업로드하여 클래스 A 작업 및 스토리지 요금으로 인해 상당한 재정적 비용이 발생할 수 있습니다. 또는 '요청자 지불'이 사용 중지된 버킷에 대한 읽기 액세스 권한이 있는 공격자가 대형 객체를 반복적으로 다운로드하여 과도한 네트워크 아웃바운드 요금을 발생시키고 요금 한도로 인해 정상 사용자의 서비스 가용성에 영향을 미칠 수 있습니다.

STRIDE 카테고리

서비스 거부

MITRE ATT&CK 전술

영향

창문 처리
  • 객체 플러딩: 공격자가 스크립트를 사용하여 버킷에 수백만 개의 작은 객체를 빠르게 만들어 운영 비용을 높이고 버킷 콘텐츠를 나열하거나 처리하는 애플리케이션에 영향을 줄 수 있습니다.

  • 이그레스 악용: 대규모 공개 데이터 세트를 호스팅하는 버킷에서 공격자가 파일을 반복적으로 다운로드하여 이그레스 대역폭 비용을 통해 재정적 손실을 일으킵니다. 이러한 악용으로 인해 프로젝트가 결제 할당량에 도달하여 서비스 거부가 발생할 수 있습니다.

완화 조치
  • 비용이 사전 정의된 예산 기준액을 초과할 때 관리자에게 알리도록 Cloud Billing 알림을 구성하여 이상 지출을 조기에 감지할 수 있습니다.

  • 공개적으로 액세스할 수 있는 버킷의 경우 요청자 지불을 사용 설정합니다. 이 기능은 데이터 액세스 및 이그레스 비용을 데이터를 다운로드하는 사용자에게 이전하여 버킷 소유자에 대한 이그레스 기반 비용 공격을 완화합니다.

  • Storage Insights를 사용하여 객체 수준 활동을 모니터링합니다. Storage Insights는 비용 예측에 필요하고 이그레스 악용의 타겟이 될 수 있는 트래픽이 많은 객체를 식별하는 데 필요한 가시성을 제공합니다.

Cloud Storage 객체 버전 관리를 악용한 데이터 무결성 조작

객체 버전 관리는 중요한 방어 수단이지만 storage.objects.delete 또는 storage.objects.create과 같은 충분한 권한이 있는 공격자는 객체 기록을 조작하여 데이터 무결성을 손상시킬 수 있습니다. 객체의 현재 버전을 삭제하여 오래되고 잠재적으로 잘못되거나 취약한 버전이 '라이브' 버전이 될 수 있습니다. 객체가 계속 존재하므로 보안 패치를 되돌리거나, 버그를 다시 도입하거나, 오래된 정보를 복원하는 데 사용할 수 있습니다.

STRIDE 카테고리

조작

MITRE ATT&CK 전술

영향

창문 처리
  • 보안 패치 되돌림: 공격자가 보안 패치가 포함된 애플리케이션 바이너리 또는 구성 파일의 최신 버전을 삭제하여 시스템이 취약한 이전 버전으로 되돌아갑니다.

  • 되돌리기로 인한 데이터 손상: 상태 또는 구성을 저장하기 위해 Cloud Storage를 사용하는 시스템에서 공격자가 중요한 구성 객체를 이전 상태로 되돌려 서비스 구성 오류 또는 데이터 처리 오류를 일으킵니다.

  • AI 모델 무결성 조작: 공격자가 Cloud Storage 버킷에 저장된 AI 모델 체크포인트를 덮어쓰거나 되돌릴 수 있습니다.

완화 조치
  • 객체의 특정 버전을 사용하는 애플리케이션을 개발하여 이름뿐만 아니라 고유한 세대 번호로 객체를 검색합니다. 이렇게 하면 항상 올바른 버전이 가져와집니다.

  • 변함없는 스토리지가 필요한 데이터에는 정의된 보관 정책이 있는 버킷 잠금을 사용합니다.

  • 악의적인 삭제에 대한 추가 방어 계층으로 소프트 삭제 정책을 구성합니다. 객체 버전 관리는 버킷 삭제에 대한 보호를 제공하지 않습니다.

Cloud Storage에 의해 트리거된 Dataflow 파이프라인을 사용한 데이터 무단 반출

Cloud Storage 버킷에서 객체 생성 시 자동으로 트리거되도록 Dataflow 파이프라인이 구성된 경우 해당 버킷에 쓸 수 있는 공격자가 데이터를 유출할 수 있습니다. Dataflow 작업의 서비스 계정에 다른 민감한 데이터에 액세스하고 외부 위치 (예: 다른 Cloud Storage 버킷 또는 BigQuery)에 쓸 수 있는 권한이 있는 경우 공격자는 파이프라인이 민감한 데이터를 읽고 공격자가 제어하는 위치에 쓰도록 하는 입력 파일을 만들 수 있습니다.

STRIDE 카테고리

정보 공개

MITRE ATT&CK 전술

유출

창문 처리

교차 프로젝트 유출: 공격자가 트리거 버킷에 파일을 업로드합니다. 권한이 있는 서비스 계정으로 실행되는 Dataflow 파이프라인이 다른 프로젝트에서 민감한 정보을 읽고 공격자의 입력 파일에 지정된 공개 Cloud Storage 버킷에 출력을 씁니다.

완화 조치
  • Dataflow 파이프라인과 Cloud Storage 종속 항목을 VPC 서비스 제어 경계 내에 포함하여 파이프라인이 승인되지 않은 외부 대상으로 데이터를 전송하지 못하도록 합니다.

  • Dataflow 작업자 서비스 계정에 최소 권한 원칙을 적용합니다. 소스에서 읽고 의도한 대상에 쓰는 데 필요한 특정 권한만 있어야 합니다.

  • Dataflow 파이프라인의 의심스러운 활동을 감사할 수 있도록 DATA_WRITE 이벤트에 데이터 액세스 감사 로그를 사용 설정합니다.

  • 일관된 IAM 기반 액세스 제어를 위해 Cloud Storage 버킷에서 균일한 버킷 수준 액세스를 사용 설정하세요.

Cloud Storage에서 IaC 상태 조작을 사용한 무결성 손상

Cloud Storage 버킷을 사용하여 코드형 인프라 (IaC) 상태 파일 (예: Terraform의 terraform.tfstate 파일)을 저장하는 경우 상태 버킷에 대한 쓰기 액세스 권한이 있는 공격자가 상태 파일을 조작할 수 있습니다. 상태를 수정하면 공격자가 악성 리소스를 삽입하거나, 중요한 보안 구성을 변경하거나, 다음 IaC 실행 시 리소스 파괴를 유발할 수 있습니다. 이러한 조작은 코드 자체가 아닌 상태를 타겟팅하므로 코드 검토 프로세스를 우회합니다.

STRIDE 카테고리

조작

MITRE ATT&CK 전술

영향

창문 처리

보안 제어 사용 중지: 공격자가 상태 파일을 변경하여 방화벽 규칙 또는 IAM 허용 정책의 상태를 부정확하게 표시합니다. 다음 Terraform 적용 시 의도한 보안 구성이 올바르게 적용되지 않을 수 있습니다.

완화 조치
  • 상태 파일을 저장하는 Cloud Storage 버킷에서 객체 버전 관리를 사용 설정합니다. 객체 버전 관리를 사용하면 실수로 또는 악의적으로 수정된 경우 상태 파일을 복구할 수 있습니다.

  • 상태 파일 버킷에 엄격한 IAM 제어를 구현합니다. CI/CD 서비스 계정에만 쓰기 액세스 권한이 있고 개발자에게는 최대 읽기 전용 액세스 권한이 있는지 확인합니다.

Cloud Storage에 저장된 시작 또는 부트스트랩 스크립트의 권한 에스컬레이션

Compute Engine 인스턴스 또는 GKE 노드가 Cloud Storage 버킷에서 시작 또는 부트스트랩 스크립트를 가져오는 경우 해당 버킷에 대한 쓰기 액세스 권한이 있는 공격자가 이러한 스크립트를 수정할 수 있습니다. 이러한 스크립트는 높은 권한 (예: VM의 루트 또는 노드의 서비스 계정)으로 실행되는 경우가 많으므로 공격자는 백도어 사용자를 만들거나, 메타데이터 및 액세스 토큰을 유출하거나, 악성 소프트웨어를 설치하는 명령어를 삽입할 수 있습니다. 이러한 작업을 통해 공격자는 Cloud Storage 객체 쓰기 권한에서 컴퓨팅 리소스에 대한 완전한 제어 권한으로 권한을 에스컬레이션할 수 있습니다.

STRIDE 카테고리

권한 승격

MITRE ATT&CK 전술

권한 에스컬레이션

창문 처리
  • 메타데이터 유출: 공격자가 서비스 계정 토큰이나 기타 보안 비밀을 훔치기 위해 시작 스크립트에 curl -H 'Metadata-Flavor: Google' http://metadata.google.internal/...와 같은 명령어를 추가합니다.

  • 리버스 셸: 공격자가 컴퓨팅 인스턴스에서 공격자가 제어하는 서버로 리버스 셸을 시작하는 명령어를 삽입하여 대화형 액세스 권한을 부여합니다.

완화 조치
  • 엄격하게 관리되는 전용 Cloud Storage 버킷에 시작 스크립트를 저장합니다. 승인된 관리자 또는 CI/CD 파이프라인만 스크립트를 수정할 수 있도록 최소 권한 IAM 허용 정책을 적용합니다. 시작 스크립트에 사용되는 버킷에 리소스 태그를 구성하고 IAM 태그 기반 조건부 액세스를 사용하여 액세스를 추가로 제한하는 데이터 분류 전략을 고려하세요.

  • Cloud Storage에서 스크립트를 가져오는 대신 커스텀 머신 이미지에 포함하세요. 이 전략은 런타임 수정에 덜 취약한 변경 불가능한 아티팩트를 만듭니다.

Cloud Storage 호스팅 ML 학습 데이터를 사용하는 공급망 백도어

머신러닝 모델의 학습 데이터가 포함된 Cloud Storage 버킷에 대한 쓰기 액세스 권한이 있는 공격자는 데이터 세트를 손상시킬 수 있습니다. 신중하게 제작된 악성 데이터를 삽입하여 공격자는 학습된 모델에 백도어를 만들 수 있습니다. 이 백도어는 모델이 감지를 피하기 위해 일반 데이터에서는 정상적으로 작동하면서 공격자에게 유리한 방식으로 특정 입력을 잘못 분류하도록 할 수 있습니다. 예를 들어 모델이 사기 거래를 승인하거나 보안 검사를 우회할 수 있습니다.

STRIDE 카테고리

조작

MITRE ATT&CK 전술

영향

창문 처리
  • 타겟팅된 잘못된 분류: 공격자가 학습된 사기 탐지 모델이 공격자가 관리하는 계정의 거래를 항상 합법적인 것으로 분류하도록 하는 포이즌 데이터를 삽입합니다.

  • 모델 회피: 공격자가 멀웨어 감지 모델의 학습 데이터에 멀웨어의 예시를 양성으로 라벨링하여 최종 모델이 특정 도구를 무시하도록 합니다.

완화 조치
  • 학습 데이터가 포함된 Cloud Storage 버킷에 강력한 액세스 제어를 구현합니다. 이러한 버킷에 대한 쓰기 액세스 권한을 부여할 때는 최소 권한의 원칙을 적용하고 정책 분석 도구와 같은 도구를 사용하여 정기적으로 감사하세요.

  • ML 학습 데이터에 사용되는 버킷에 리소스 태그를 구성하고 액세스를 추가로 제한하는 IAM 태그 기반 조건을 추가하는 데이터 분류 전략을 고려하세요.

  • 학습 데이터에 사용된 객체의 무단 수정 여부를 감사합니다. DATA_WRITE 이벤트의 객체 버전 관리를 구성하고, 체크섬을 유지하고, 데이터 액세스 감사 로그를 구성하여 학습 데이터와 관련된 객체 생성 이벤트의 비정상적인 상황을 감사합니다.

  • 예상치 못한 동작이 있는지 ML 모델을 정기적으로 감사하고 검증합니다. 적대적 테스트 기법을 사용하여 학습 중에 도입된 숨겨진 백도어나 취약점을 조사합니다.

  • 신뢰할 수 있는 경계 외부에서 학습 데이터 및 모델 생성과 관련된 기타 서비스와 같은 민감한 리소스에 대한 액세스를 제한하도록 VPC 서비스 제어 경계를 구성합니다.

Cloud Storage에서 객체 생성에 의해 트리거되는 팬아웃 워크플로를 사용한 서비스 거부

워크플로 (예: Cloud Run 함수 또는 워크플로)가 Cloud Storage 버킷에서 객체 생성을 트리거하고 리소스 집약적인 작업을 실행하도록 구성된 경우 storage.objects.create 권한이 있는 공격자가 서비스 거부 공격을 시작할 수 있습니다. 공격자는 짧은 기간에 많은 파일을 업로드하여 (팬아웃 트리거라고 함) 다운스트림 서비스가 급격히 확장되도록 유도하여 과도한 리소스를 소비하고, 동시 실행 또는 확장 한도에 도달하고, 상당한 비용을 발생시켜 궁극적으로 정당한 사용자의 서비스 이용을 불가능하게 만들 수 있습니다.

STRIDE 카테고리

서비스 거부

MITRE ATT&CK 전술

영향

창문 처리
  • 리소스 소진: 공격자가 작은 파일 10,000개를 업로드하여 프로젝트의 CPU 할당량, 메모리 또는 다운스트림 API 비율 제한을 소진하는 Cloud Run 함수 호출을 10,000개 병렬로 트리거합니다.

  • 비용 기반 DoS: 팬아웃으로 인해 유료 서비스에서 대규모 실행이 트리거되어 청구액이 크게 늘어나고 계정이 정지될 수 있으며, 결과적으로 서비스가 거부됩니다.

완화 조치
  • 워크플로를 트리거하는 Cloud Storage 버킷에 강력한 액세스 제어를 구현합니다. 이러한 버킷에 대한 쓰기 액세스 권한을 부여할 때는 최소 권한의 원칙을 적용하고 정책 분석 도구와 같은 도구를 사용하여 정기적으로 감사하세요.

  • 이벤트 기반 Cloud Run Functions에서 동시 실행 제한을 설정하여 병렬 실행의 최대 수를 제어하고 리소스 소진을 방지하세요.

  • 디바운싱 메커니즘을 구현한 후 기본 처리 로직을 호출합니다. 디바운싱 메커니즘의 예는 비율 제한이 있는 Cloud Tasks 큐에 태스크를 추가하는 것입니다. 이 메커니즘은 요청 볼륨을 시간에 따라 분산하여 갑작스러운 급증을 관리하는 데 도움이 됩니다.

  • 신뢰할 수 있는 경계 외부에서 워크플로를 트리거하는 버킷에 쓰기와 같은 민감한 리소스에 대한 액세스를 제한하도록 VPC 서비스 제어 경계를 구성합니다.

Cloud Storage 지원 백업 파이프라인을 사용한 무단 데이터 이동

백업 및 재해 복구 (DR) 도구는 Cloud Storage를 백업의 스테이징 영역 또는 최종 대상으로 사용하는 경우가 많습니다. 공격자가 이 도구의 구성을 손상시키면 공격자가 제어하는 Cloud Storage 버킷으로 백업을 리디렉션할 수 있습니다. 백업 서비스 계정에는 여러 데이터 소스 (예: 데이터베이스 또는 VM)에 대한 광범위한 읽기 권한이 있는 경우가 많으므로 공격자가 백업 작업의 대상 매개변수를 조작하여 대량의 민감한 정보를 유출할 수 있습니다.

STRIDE 카테고리

정보 공개

MITRE ATT&CK 전술

유출

창문 처리
  • 백업 작업 리디렉션: 백업 작업 구성을 수정할 권한이 있는 공격자가 타겟 Cloud Storage 버킷 경로를 gs://attacker-public-bucket/로 변경합니다.

  • 프로젝트 간 백업: 공격자는 보안이 취약한 프로젝트 내에서 새로운 백업 작업을 구성하여 민감한 소스에서 데이터를 읽고 공격자가 관리하는 다른 Google Cloud 프로젝트의 버킷에 백업합니다.

완화 조치
  • 백업 도구의 서비스 계정에 범위가 좁은 권한이 있는지 확인합니다. 임의의 위치에서 읽지 않고 지정된 특정 백업 버킷에만 쓸 수 있도록 백업 도구를 설정합니다.

  • VPC 서비스 제어를 사용하여 백업 서비스가 민감한 정보 소스에 액세스하고 보안 경계 외부의 Cloud Storage 버킷에 쓰는 것을 방지합니다.

하이브리드 환경에서 기존 Cloud Storage ACL 사용을 통한 정책 우회

Cloud Storage는 IAM과 기존 ACL이라는 상호 배타적인 두 가지 액세스 제어 시스템을 지원합니다. 균일한 버킷 수준 액세스가 사용 중지되면 두 시스템이 모두 평가됩니다. 공격자는 버킷 수준 허용 정책이 제한적으로 보이더라도 객체에 기존 ACL (예: 개인 Google 계정 또는 공개 그룹 액세스 권한 부여)을 추가하여 이 구성을 악용할 수 있습니다. 이 공격은 IAM 중심 보안 스캐너에서 종종 누락되는 섀도 액세스 경로를 만들어 공격자가 의도된 보안 정책을 우회할 수 있도록 합니다.

STRIDE 카테고리

권한 승격

MITRE ATT&CK 전술

방어 회피

창문 처리
  • 객체 수준 공개 액세스: storage.objects.update 권한이 있는 공격자가 민감한 객체에 public-read ACL을 추가하여 인터넷에 연결된 모든 사용자가 액세스할 수 있도록 하여 제한적인 버킷 허용 정책을 우회합니다.

  • 교차 계정 액세스: 공격자가 ACL을 사용하여 중요한 구성 객체에 자신의 외부 계정의 소유자 권한을 할당하여 IAM 감사에서 감지되지 않은 상태로 객체를 수정할 수 있습니다.

완화 조치
  • 모든 Cloud Storage 버킷에서 균일한 버킷 수준 액세스를 사용 설정합니다. 균일한 버킷 수준 액세스는 모든 ACL을 사용 중지하고 IAM이 액세스를 관리하는 유일하고 일관된 방법이 되도록 하여 감사를 간소화하고 이러한 우회를 방지합니다.

  • 조직 정책 제약 조건 constraints/storage.uniformBucketLevelAccess를 사용하여 프로젝트, 폴더 또는 조직의 모든 새 버킷에 균일한 버킷 수준 액세스를 적용합니다.

Cloud Storage를 타겟팅하는 손상된 CI/CD 파이프라인을 사용한 데이터 삭제

CI/CD 파이프라인에는 인프라를 관리하고 아티팩트를 배포할 수 있는 높은 권한이 있는 서비스 계정이 부여되는 경우가 많습니다. 공격자가 CI/CD 시스템을 손상시키면 파이프라인의 서비스 계정을 사용하여 Cloud Storage에서 파괴적인 작업을 실행할 수 있습니다. 침해의 예로는 공격자가 빌드 스크립트에 악성 코드를 삽입하거나 오케스트레이터에 액세스하는 것을 들 수 있습니다. 이러한 침해에는 버킷 삭제 또는 중요한 객체 덮어쓰기가 포함될 수 있습니다.

STRIDE 카테고리

조작

MITRE ATT&CK 전술

영향

창문 처리
  • 악성 빌드 단계: 공격자가 모든 데이터를 삭제하는 단계를 CI/CD 파이프라인에 추가합니다. 예를 들어 공격자는 gcloud storage rm -r gs://critical-bucket/과 같은 명령어를 실행하는 단계를 cloudbuild.yaml에 추가합니다.

  • 권한 상속: 공격자는 광범위한 권한이 있는 손상된 파이프라인의 서비스 계정을 사용하여 나중에 사용할 수 있도록 공격자 자신의 계정에 Cloud Storage 버킷에 대한 관리 액세스 권한을 부여합니다.

완화 조치
  • CI/CD 서비스 계정에 최소 권한 원칙을 적용합니다. 예를 들어 프로덕션 버킷을 삭제할 빌드 파이프라인 권한을 할당하지 마세요. 빌드, 테스트, 배포와 같은 다양한 파이프라인 단계에 별도의 ID를 사용합니다.

  • 버킷 잠금 또는 객체 잠금을 사용 설정하거나 CI/CD 서비스 계정에 storage.buckets.delete 권한이 없는지 확인하여 중요한 Cloud Storage 버킷이 삭제되지 않도록 보호합니다.

권한이 과도한 break-glass 계정을 사용한 승인되지 않은 버킷 삭제

Break-glass 또는 긴급 액세스 계정은 긴급 상황에서만 사용되는 권한이 높은 ID입니다. 이러한 계정이 적절하게 보호되고 관리되지 않으면 (예: 사용자 인증 정보가 유출되거나 액세스가 시간 제한되지 않음) 비상용 계정을 도용한 공격자가 매우 파괴적인 작업을 실행할 수 있습니다. 주요 위험은 전체 Cloud Storage 버킷의 삭제입니다. 버킷 삭제는 영구적인 작업이므로 심각하고 되돌릴 수 없는 데이터 손실이 발생할 수 있습니다.

STRIDE 카테고리

권한 승격

MITRE ATT&CK 전술

권한 에스컬레이션

창문 처리
  • 심각한 데이터 손실: 공격자가 관리가 제대로 되지 않는 비상용 계정을 탈취하고 스크립트를 실행하여 프로젝트의 모든 Cloud Storage 버킷을 삭제합니다.

  • 갈취: 공격자가 액세스 권한을 획득하고 대가를 지불하지 않으면 중요한 버킷을 삭제하겠다고 위협합니다.

완화 조치
  • 상시 권한이 있는 계정을 사용하는 대신 break-glass 절차에 적시 (JIT) 액세스를 구현합니다. 제한된 시간 동안 특정 목적으로 주문형 권한을 부여합니다.

  • 중요한 객체가 포함된 버킷에는 버킷 잠금을 적용하고 개별 객체에는 객체 잠금을 적용합니다. 잠금은 소유자 권한이 있는 사용자라도 지정된 보관 기간 동안 버킷과 객체를 삭제하지 못하도록 합니다.

손상된 로그 싱크를 사용하여 Cloud Storage에 쓰는 무음 데이터 무단 반출

Cloud Logging은 로그를 Cloud Storage 버킷으로 내보내도록 구성할 수 있습니다. 공격자가 로깅 싱크를 수정할 권한을 얻으면 다른 프로젝트에서 공격자가 제어하는 Cloud Storage 버킷으로 민감한 로그를 내보내도록 싱크를 재구성할 수 있습니다. 민감한 로그를 내보내면 공격자가 로그에 포착된 민감한 정보를 자동으로 지속적으로 유출할 수 있습니다.

STRIDE 카테고리

정보 공개

MITRE ATT&CK 전술

유출

창문 처리
  • 로그 싱크 리디렉션: 공격자가 기존 로그 싱크의 대상 속성을 수정하여 자체 Cloud Storage 버킷을 가리키도록 합니다.

  • 악성 필터 생성: 공격자가 민감한 정보 (예: PII 또는 토큰)가 포함된 로그를 구체적으로 타겟팅하는 필터가 있는 싱크를 만들어 내보냅니다.

완화 조치
  • CreateSinkUpdateSink API 호출에 대한 Cloud 감사 로그를 모니터링합니다. 보안팀에 새 로그 싱크 또는 수정된 로그 싱크를 알리도록 알림을 구성하여 승인되었는지 확인합니다.

  • VPC 서비스 제어 경계를 구성하여 데이터 무단 반출을 완화합니다.

중앙 집중식 CMEK 취소를 사용한 랜섬웨어 사용 설정

Cloud Storage 버킷이 CMEK로 암호화되면 데이터의 가용성이 키의 가용성과 연결됩니다. Cloud KMS에 대한 충분한 권한을 획득한 공격자는 중요한 Cloud Storage 버킷에 사용되는 키를 폐기하거나 사용 중지할 수 있습니다. 이 작업은 버킷의 모든 데이터에 암호화 방식으로 액세스할 수 없도록 렌더링합니다. 데이터는 남아 있지만 복호화할 수 없으므로 사실상 데이터 파괴 또는 랜섬웨어의 한 형태입니다.

STRIDE 카테고리

조작

MITRE ATT&CK 전술

영향

창문 처리
  • 키 폐기: cloudkms.cryptoKeyVersions.destroy 권한이 있는 공격자가 키 버전을 영구적으로 폐기하여 데이터 복구가 불가능해집니다.

  • 키 사용 중지: cloudkms.cryptoKeyVersions.disable 권한이 있는 공격자가 키를 사용 중지하여 키가 다시 사용 설정될 때까지 Cloud Storage 데이터를 읽을 수 없게 만듭니다. 이 작업으로 인해 장기간의 서비스 중단이 발생할 수 있습니다.

완화 조치
  • Cloud KMS 키가 폐기되기 전에 폐기 예약 상태의 최소 기간을 적용합니다. 기본적으로 이 기간은 30일이지만 키가 처음 생성될 때 1~120일의 기간을 구성할 수 있습니다. 키가 삭제된 후에는 이 기간을 수정할 수 없습니다. 예상되는 최소 기간보다 짧은 폐기 예약 기간으로 키를 만들 수 없도록 하려면 constraints/cloudkms.minimumDestroyScheduledDuration 조직 정책 제약 조건을 적용하세요.

  • Cloud KMS 관리 역할에 대한 액세스를 엄격하게 제한합니다. 단일 도용된 계정이 키를 사용하고 폐기하는 것을 방지하기 위해 키 사용과 키 관리 업무를 분리합니다.

  • 워크로드의 민감도 또는 규정 준수 요구사항에 따라 순환 기간을 선택하여 Cloud KMS 키를 주기적으로 순환합니다.

스냅샷 또는 백업 내보내기를 Cloud Storage로 사용한 데이터 무단 반출

많은 Google Cloud 서비스 (예: Compute Engine 또는 Cloud SQL)에서 스냅샷을 만들거나 백업을 Cloud Storage로 내보낼 수 있습니다. 이러한 내보내기 작업을 실행할 권한이 있는 공격자는 민감한 정보가 포함된 리소스의 스냅샷을 만들고 공개 버킷이나 외부 계정과 공유된 버킷과 같이 권한이 느슨한 Cloud Storage 버킷에 스냅샷을 저장할 수 있습니다. 이제 Cloud Storage IAM을 사용하여 데이터에 액세스할 수 있으므로 이 작업은 기본 리소스의 더 엄격한 액세스 제어 (예: 데이터베이스 사용자 인증 정보)를 우회합니다.

STRIDE 카테고리

정보 공개

MITRE ATT&CK 전술

유출

창문 처리
  • 디스크 스냅샷을 공개 버킷으로: compute.snapshots.createstorage.objectAdmin 권한이 있는 내부 개발자가 보안 비밀이 포함된 VM 디스크의 스냅샷을 만들어 공개 Cloud Storage 버킷으로 내보냅니다.

  • 데이터베이스 내보내기: cloudsql.instances.export 권한이 있는 공격자가 공격자가 관리하는 프로젝트의 Cloud Storage 버킷으로 프로덕션 데이터베이스를 내보냅니다.

완화 조치
  • 백업 및 스냅샷용으로 지정된 프로젝트에 소스 프로젝트만큼 엄격한 IAM 및 VPC 서비스 제어 정책이 있는지 확인하여 일관된 보안 상태를 유지합니다.

  • 백업에 사용되는 버킷에 리소스 태그를 구성하고 액세스를 추가로 제한하는 IAM 태그 기반 액세스 조건을 추가하는 데이터 분류 전략을 고려하세요.