Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CureIAM — GCP 인프라에서 권한이 과도한 계정을 대규모로 정리합니다. | Kitploit
도구/GitHubGitHub/gojek/cureiam
Cloud Infrastructure SecurityConfiguration AuditingCloud SecurityDevSecOpsIdentity & Access Management (IAM)
GitHubgojek/cureiam

CureIAM

GCP 인프라에서 권한이 과도한 계정을 대규모로 정리합니다.

저장소 보기
7263년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CureIAM

GCP 인프라의 과도한 권한을 가진 IAM 계정을 자동으로 정리

CureIAM은 GCP 클라우드 인프라에서 최소 권한 원칙을 적용하기 위한 사용하기 쉽고, 안정적이며, 성능이 뛰어난 엔진입니다. DevOps 및 보안 팀이 GCP 인프라에서 필요한 것보다 더 많은 권한이 부여된 계정을 신속하게 정리할 수 있도록 합니다. CureIAM은 GCP IAM 추천자(Recommender)로부터 권장 사항과 인사이트를 가져와 점수를 매기고, 매일 기본적으로 이러한 권장 사항을 자동으로 적용합니다. 일정 관리 및 대규모로 이러한 적용 작업을 실행하는 다른 모든 측면을 처리합니다. GCP IAM 추천자 API와 Cloudmarker 프레임워크 위에 구축되었습니다.

주요 기능

CureIAM을 확장 가능하고 프로덕션 등급으로 만드는 요소를 알아보세요.

  • 설정 기반: CureIAM의 전체 워크플로우는 설정 기반입니다. 자세한 내용은 설정(Config) 섹션을 참조하세요.
  • 확장 가능: 플러그인 기반의 다중 프로세스 및 다중 스레드 접근 방식 덕분에 확장 가능하도록 설계되었습니다.
  • 일정 처리: 일정 처리 부분은 CureIAM 코드 자체에 내장되어 있습니다. 시간을 구성하면 CureIAM이 매일 해당 시간에 실행됩니다.
  • 플러그인 기반: CureIAM 코드베이스는 완전히 플러그인 지향적이므로 기존 플러그인을 연결 및 사용하거나 새로운 플러그인을 만들어 더 많은 기능을 추가할 수 있습니다.
  • 실행 가능한 인사이트 추적: CureIAM이 수행하는 모든 작업은 감사 목적으로 기록됩니다. 파일 저장소 및 Elasticsearch 저장소에 기록할 수 있습니다. 원하는 경우 추적 목적으로 다른 저장소로 푸시하는 다른 저장소 플러그인을 구축할 수 있습니다.
  • 점수 매기기 및 적용: CureIAM이 가져오는 각 권장 사항은 다양한 매개변수에 대해 점수가 매겨집니다. 그 후 safe_to_apply_score, risk_score, over_privilege_score와 같은 여러 점수가 생성됩니다. 각 점수는 다른 목적을 제공합니다. 예를 들어 safe_to_apply_score는 CureIAM.yaml 설정 파일에 설정된 임계값을 기반으로 자동 기준으로 권장 사항을 적용할 수 있는 기능을 식별합니다.

사용법

CureIAM은 Python으로 구축되었으므로 다음 명령어로 로컬에서 실행할 수 있습니다. 실행하기 전에 /etc/CureIAM.yaml, ~/.CureIAM.yaml, ~/CureIAM.yaml 또는 CureIAM.yaml 중 하나에 설정 파일이 준비되어 있고, 현재 디렉토리에 서비스 계정 JSON 파일이 cureiamSA.json이라는 이름으로 있어야 합니다(권장). 이 SA 개인 키는 어떤 이름으로든 지정할 수 있지만, Docker 이미지 빌드 시 이 이름을 사용하는 것이 좋습니다. GCP 클라우드에 대해 이 파일을 config에서 참조해야 합니다.

root@kitploit:~
# 필요한 종속성 설치
$ pip install -r requirements.txt

# CureIAM 지금 실행
$ python -m CureIAM -n

# CureIAM 프로세스를 스케줄러로 실행
$ python -m CureIAM

# CureIAM 도움말 확인
$ python -m CureIAM --help

CureIAM은 Docker 환경 내에서도 실행할 수 있습니다. 이는 완전히 선택 사항이며 K8s 클러스터 배포와 함께 CI/CD에 사용할 수 있습니다.

root@kitploit:~
# Dockerfile에서 Docker 이미지 빌드
$ docker build -t cureiam . 

# 이미지를 스케줄러로 실행
$ docker run -d cureiam 

# 이미지를 지금 실행
$ docker run -f cureiam -m cureiam -n 

설정

CureIAM.yaml 설정 파일은 CureIAM 엔진의 핵심입니다. 엔진이 수행하는 모든 작업은 이 설정 파일에 구성된 파이프라인을 기반으로 합니다. 이 설정을 더 간단하게 보이도록 여러 섹션으로 나누어 보겠습니다.

  1. 먼저 로깅 설정 및 스케줄러 설정인 첫 번째 섹션을 구성해 보겠습니다.
root@kitploit:~
  logger:
    version: 1

    disable_existing_loggers: false

    formatters:
      verysimple:
        format: >-
            [%(process)s]
            %(name)s:%(lineno)d - %(message)s
        datefmt: "%Y-%m-%d %H:%M:%S"

    handlers:
      rich_console:
        class: rich.logging.RichHandler
        formatter: verysimple

      file:
        class: logging.handlers.TimedRotatingFileHandler
        formatter: simple
        filename: /tmp/CureIAM.log
        when: midnight
        encoding: utf8
        backupCount: 5

    loggers:
      adal-python:
        level: INFO

    root:
      level: INFO
      handlers:
        - rich_console
        - file

  schedule: "16:00"

이 설정 하위 섹션은 Rich 로깅 모듈을 사용하고 CureIAM이 매일 16:00에 실행되도록 예약합니다.

  1. 다음 섹션은 파이프라인에서 사용할 수 있는 다양한 모듈을 구성하는 것입니다. 이는 CureIAM.yaml의 plugins 섹션에 속합니다. 이 섹션은 다양한 플러그인에 대한 선언이라고 생각할 수 있습니다.
root@kitploit:~
  plugins:
    gcpCloud:
      plugin: CureIAM.plugins.gcp.gcpcloud.GCPCloudIAMRecommendations
      params:
        key_file_path: cureiamSA.json

    filestore:
      plugin: CureIAM.plugins.files.filestore.FileStore

    gcpIamProcessor:
      plugin: CureIAM.plugins.gcp.gcpcloudiam.GCPIAMRecommendationProcessor
      params:
        mode_scan: true
        mode_enforce: true
        enforcer:
          key_file_path: cureiamSA.json
          allowlist_projects:
            - alpha
          blocklist_projects:
            - beta
          blocklist_accounts:
            - [email protected]
          allowlist_account_types:
            - user
            - group
            - serviceAccount
          blocklist_account_types:
            - None
          min_safe_to_apply_score_user: 0
          min_safe_to_apply_score_group: 0
          min_safe_to_apply_score_SA: 50

    esstore:
      plugin: CureIAM.plugins.elastic.esstore.EsStore
      params:
        # Change http to https later if your elastic are using https
        scheme: http
        host: es-host.com
        port: 9200
        index: cureiam-stg
        username: security
        password: securepassword

이러한 각 플러그인 선언은 다음 형식이어야 합니다.

root@kitploit:~
  plugins:
    <plugin-name>:
      plugin: <class-name-as-python-path>
      params:
        param1: val1
        param2: val2

예를 들어, 플러그인 CureIAM.stores.esstore.EsStore는 이 파일이며 클래스는 EsStore입니다. YAML에 정의된 모든 매개변수는 동일한 플러그인 클래스의 __init__() 함수 선언과 일치해야 합니다.

  1. 플러그인이 정의되면 다음 단계는 감사(Auditing)를 위한 파이프라인을 정의하는 방법입니다. 다음과 같습니다.
root@kitploit:~
  audits:
    IAMAudit:
      clouds:
        - gcpCloud
      processors:
        - gcpIamProcessor
      stores:
        - filestore
        - esstore

이를 통해 여러 감사(Audit)를 생성할 수 있습니다. 여기서 생성된 것은 IAMAudit이며, gcpCloud, gcpIamProcessor, filestores 및 esstore의 세 가지 플러그인을 사용합니다. 이는 2단계에서 정의된 동일한 플러그인 이름입니다. 다시 말하지만, 이는 파이프라인을 정의하는 것이지 실제로 실행하는 것은 아닙니다. 다음 단계의 정의에 따라 실행이 고려됩니다.

  1. CureIAM에게 이전 단계에서 정의된 감사(Audit)를 실행하도록 지시합니다.
root@kitploit:~
  run:
    - IAMAudits

이것이 CureIAM의 전체 설정입니다. 전체 샘플은 여기에서 확인할 수 있습니다. 이 설정 기반 파이프라인 개념은 Cloudmarker 프레임워크에서 상속되었습니다.

대시보드

Elasticsearch 저장소 플러그인을 사용하여 Elasticsearch에 인덱싱된 JSON은 Kibana에서 대시보드를 생성하는 데 사용할 수 있습니다.

기여

[부탁드립니다!] CureIAM의 핵심 기능과 문서를 개선하기 위한 모든 종류의 기여를 환영합니다. 의심스러우면 PR을 만들어 주세요!

크레딧

Gojek 제품 보안 팀 ❤️

데모

<>

=============

2023년 5월 새로운 업데이트 0.2.0

리팩터링

  • 큰 코드를 여러 개의 작은 함수로 분할
  • 모든 플러그인을 plugins 폴더로 이동: Esstore, files, Cloud 및 GCP.
  • 0으로 나누기 문제 수정
  • Elastic의 새로운 주요 버전으로 마이그레이션
  • CureIAM.yaml 파일의 설정 변경
  • Python 버전 3.9.X에서 테스트 완료

라이브러리 업데이트

이전 버전과의 호환성 문제를 피하기 위해 라이브러리에 버전 추가.

  • Elastic==8.7.0 # 이전 7.17.9
  • elasticsearch==8.7.0
  • google-api-python-client==2.86.0
  • PyYAML==6.0
  • schedule==1.2.0
  • rich==13.3.5

Docker 파일

  • 로컬 Elastic 및 Kibana를 위한 Docker Compose 추가 (elastic 폴더)
  • .env-ex 추가 docker 실행 전에 .env-ex를 .env로 변경
root@kitploit:~
Running docker compose: docker-compose -f docker_compose_es.yaml up 

기능

  • 권장 사항을 적용하지 않고 스캔만 실행하는 기능 추가. 기본적으로 mode_scan이 false이면 mode_enforce가 실행되지 않습니다.
root@kitploit:~
      mode_scan: true
      mode_enforce: false
  • 이메일 기능을 일시적으로 비활성화.
도구 다운로드