
AWS, Azure, GCP 전반에서 비인간 ID를 탐지하고 위험을 평가하며 교정하며, 오프라인 규칙 기반 분석, 권한 상승 탐지, 권한 경계 격리를 활용합니다.
AWS, Azure, Google Cloud Platform(GCP) 전반에서 비인간 신원(NHI) — 서비스 주체, 서비스 계정, 머신 역할, 액세스 키, 자격 증명 — 을 탐색, 인벤토리화, 분석, 위험 평가하고 안전하게 교정하는 엔터프라이즈급 오프라인 우선 보안 자동화 플랫폼입니다.
⭐️ 이 도구가 클라우드 전반의 비인간 신원 감사 및 보안에 도움이 된다면, 저장소에 별을 눌러주시기 바랍니다!
| 클라우드 제공자 | 지원 신원 유형 | 탐색 엔진 | 비밀 / 자격 증명 검사 | 활성 규칙 | 상태 |
|---|---|---|---|---|---|
| 🟧 AWS | IAM 역할, 머신 사용자, 그룹, 정책 | Boto3 + 세션 캐싱 | 액세스 키 (CreateDate, LastUsed) | 13개 규칙 (AWS_01–16, TAG_01) | ✅ 지원됨 |
| 🟦 Azure | Entra ID 서비스 주체, 앱 등록, 관리 ID | 순수 REST (Graph & ARM) | 클라이언트 비밀 (passwordCredentials), 인증서 (keyCredentials) | 5개 규칙 (AZURE_01–05) | ✅ 지원됨 |
| 🟥 GCP | 서비스 계정, 워크로드 아이덴티티, IAM 역할 | 순수 REST (IAM & Resource Mgr) | 서비스 계정 키 (validAfterTime, 사용자 관리형) | 6개 규칙 (GCP_01–06) | ✅ 지원됨 |
🧪 테스트 스위트 상태: 모든 제공자 및 엔진에 걸쳐 102개 통과, 4개 하위 테스트 통과 (100% GREEN).
NHI 위험 분석기는 중대한 멀티클라우드 보안 과제를 해결합니다. 현대 엔터프라이즈 클라우드 환경은 수백 개의 머신 및 비인간 신원(서비스 계정, 자동화 역할, CI/CD 자격 증명, 클라우드 간 신뢰 역할)을 축적하면서도 어떤 신원이 과도한 권한을 보유하고, 휴면 상태이며, 또는 권한 상승 위험을 초래하는지에 대한 가시성이 거의 없습니다.
이 플랫폼은 세 가지 별개의 단계에 걸쳐 엄격한 아키텍처 분리를 적용합니다:
inventory.json 스냅샷으로 수집합니다.엔터프라이즈 멀티클라우드 환경에는 일상적으로 다음과 같은 비인간 신원이 존재합니다:
NHI 위험 분석기는 클라우드 API와 오프라인 규칙 처리를 사용하여 클라우드 제공자 전반에 걸친 탐색, 보안 분석, 표적 교정을 자동화합니다.
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ AWS IAM │ │ Azure Entra │ │ GCP IAM │
│ (Boto3) │ │ (Pure REST) │ │ (Pure REST) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└────────────────┐ │ ┌────────────────┘
▼ ▼ ▼
┌───────────────────────────┐
│ inventory.py │
│ (Multi-Cloud Collector) │
└─────────────┬─────────────┘
▼
┌───────────────────────────┐
│ inventory.json │
│ (Unified State Snapshot) │
└─────────────┬─────────────┘
│
▼
┌───────────────────────────┐
│ risk.py │
│ (--cloud Orchestrator) │
└─────────────┬─────────────┘
│
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ aws.py sub- │ │ azure.py sub-│ │ gcp.py sub- │
│ runner │ │ runner │ │ runner │
│ (13 Rules) │ │ (5 Rules) │ │ (6 Rules) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
└────────────────────────┼────────────────────────┘
▼
┌───────────────────────────┐
│ dispatch.py │
│ (Containment Dispatcher) │
└─────────────┬─────────────┘
│
┌────────────────────────┴────────────────────────┐
▼ ▼
┌─────────────────────────┐ ┌─────────────────────┐
│ policy_surgery.py & │ │ credential.py │
│ policy.py (Boundaries) │ │ (Deactivate Key) │
└─────────────────────────┘ └─────────────────────┘
nhi/services/inventory.py): AWS, Azure, GCP 전반의 클라우드 API를 쿼리하고, 자격 증명 메타데이터(액세스 키 마지막 사용 시각, 시크릿 만료)를 보강하며, 정제된 상태 스냅샷을 inventory.json에 직렬화합니다.nhi/risk/risk.py): --cloud {aws,azure,gcp,all}을 받아 클라우드 제공자를 선택적으로 대상화하여 불필요한 API 호출을 줄이고 테넌트 간 속도 제한을 회피합니다.nhi/risk/runners/): 분리된 실행 엔진(aws.py, azure.py, gcp.py)이 제공자 인벤토리를 모듈식 보안 규칙에 따라 처리하며, 부분적이거나 누락된 클라우드 페이로드에 대한 방어적 가드를 갖춥니다.nhi/services/export.py, nhi/remediation/diff.py): 과거 기준 스캔 대비 보안 드리프트를 계산하고, 실행 아티팩트를 클라우드 스토리지에 업로드하며, 감사 파이프라인을 위해 결과를 CSV 및 OASIS SARIF v2.1.0으로 내보냅니다.nhi/remediation/): AST 수준의 정책 문 파티셔닝(policy_surgery.py)과 드라이런 시뮬레이션 모드 및 nhi-ignore.yaml 예외를 통한 비파괴적 격리 경계/키 비활성화.인벤토리 수집 중 중복되는 AWS STS 인증 호출을 제거하기 위해, 인증된 boto3.Session 객체가 Python 프로세스 수명 동안 nhi/aws/session.py에 캐시됩니다.
AssumeRole 호출 감소: 35 → 179.58s → 45.67s (약 43% 런타임 개선)session.py 내부에 캡슐화되어, 검색 또는 규칙 모듈에 대한 로직 변경이 전혀 필요하지 않습니다.무겁고 파편화된 클라우드 SDK(azure-mgmt-*, msgraph-sdk, google-cloud-iam + grpcio)를 번들로 묶는 대신, 멀티 클라우드 검색 계층은 통합된 경량 순수 HTTP(requests) + Bearer 토큰 설계를 사용합니다:
grpcio)를 제거하여 컨테이너 이미지 크기를 >300MB에서 <50MB로 줄입니다.https://graph.microsoft.com/v1.0에 직접 쿼리합니다.https://management.azure.com에 쿼리합니다.이 플랫폼은 AWS, Azure, GCP 전반에 걸쳐 26개의 활성 보안 규칙을 적용하며, 권한 상승 벡터, 과도하게 허용적인 정책, 휴면 상태의 머신 자격 증명을 대상으로 합니다.