CB‐Spider Permission Based Control Test Guide - cloud-barista/cb-spider GitHub Wiki

Cloud Resource Permission Based Control Test

📌 Permission Based Control Test 개요

Permission Based Control은 다양한 클라우드 리소스(VPC, Subnet, Security Group, Key Pair, VM)에 대해 권한을 기반으로 읽기/쓰기를 수행하는 것을 말합니다.
Permission Based Cointrol Test에서는 각 리소스에 대해 읽기/쓰기 권한이 다른 Connection에서 생성, 조회, 삭제할 수 있는지 검증합니다.

📜 목차

  1. 프로젝트 구조
  2. Connection 설정
  3. 테스트 흐름
  4. 환경 설정
  5. 테스트 실행 방법
  6. 결론

📂 프로젝트 구조

cloud-permission-test/
│── main.go
│── test_runner.go
│── request/
│   ├── request.go
│── connection/
│   ├── connection.go
│── resources/
│   ├── vpc.go
│   ├── subnet.go
│   ├── securitygroup.go
│   ├── keypair.go
│   ├── vm.go

🔹 주요 파일 설명

파일명 설명
main.go 테스트 실행 (go run main.go 실행)
test_runner.go 모든 리소스의 생성(Create) → 조회(Read) → 삭제(Delete) 를 관리
request/request.go API 요청을 처리 (SendRequest)
connection/connection.go Connection 정보 (읽기/쓰기 권한 포함)
resources/*.go 개별 리소스(VPC, Subnet, Security Group, Key Pair, VM) 관리

🔗 Connection 설정

이 테스트는 4가지 Connection에서 수행됩니다.

Connection Name 설명 생성 조회 삭제
rw-conn 읽기/쓰기 가능 ✅ 가능 ✅ 가능 ✅ 가능
rw-conn2 읽기/쓰기 가능 ✅ 가능 ✅ 가능 ✅ 가능
readonly-conn 읽기 전용 ❌ 불가능 ✅ 가능 ❌ 불가능
non-permission-conn 권한 없음 ❌ 불가능 ❌ 불가능 ❌ 불가능

각 Connection의 권한에 따라 리소스에 대한 요청이 성공/실패하는지 검증합니다.


🚀 테스트 흐름

✅ 테스트 순서

모든 리소스는 의존 관계에 따라 생성 → 조회 → 삭제 순서로 진행됩니다.

1️⃣ Create (생성)

  • VPCSubnetSecurity GroupKey PairVM
  • 각 Connection이 허용된 리소스를 생성

2️⃣ Read (조회)

  • 생성된 리소스를 읽을 수 있는지 확인
  • readonly-conn은 읽기 가능해야 함
  • non-permission-conn은 500 에러 발생해야 함

3️⃣ Delete (삭제)

  • 역순으로 삭제 (VM → Key Pair → Security Group → VPC)
  • 삭제가 완료된 리소스가 조회되지 않아야 함

4️⃣ 환경 설정 (Setup.env 적용 필요)

  • 테스트 실행 전에 환경 변수를 설정해야 합니다.
  • setup.env 파일에는 Connection 정보 및 VM 생성에 필요한 Image, Spec 설정 값이 포함되어야 합니다.
  • 예시 설정:
export RW_CONN_NAME=aws-rw-conn
export RW_CONN2_NAME=aws-rw-conn2
export READONLY_CONN_NAME=aws-readonly-conn
export NON_PERMISSION_CONN_NAME=aws-non-permission-conn

export VM_IMAGE=ami-00978328f54e31526
export VM_SPEC=t2.micro%

이후 source setup.env를 실행하여 환경 변수를 적용해야 합니다.


🚀 테스트 실행 방법

1️⃣ 프로젝트 디렉토리에서 실행

go run main.go

2️⃣ 출력 확인

  • 성공 메시지 ([SUCCESS]✅) → 기대한 동작 수행
  • 권한 제한 메시지 ([PERMISSION-SUCCESS✅) → 정상적으로 차단됨
  • 오류 메시지 ([ERROR]) → 예상과 다른 결과 발생

🎯 결론

  • 자동화된 권한 검증 시스템을 통해 클라우드 리소스의 접근 권한을 테스트
  • Connection 별 권한을 명확히 검증하여, 의도치 않은 리소스 접근을 방지
  • 병렬 테스트 구조빠르고 안정적인 검증 수행
⚠️ **GitHub.com Fallback** ⚠️