Hayat
Google Cloud Platform 감사 및 강화 스크립트 ~
"Hayat"이 무슨 뜻인가요?
솔직히 말해서, 독특한 이름을 찾느라 고생했습니다. "Hayat"은 터키어로 영어로 "Life"를 의미하며 제 조카의 이름이기도 합니다. 그녀를 만날 준비가 되셨나요?
😍 😍 😍
Hayat은 Google Cloud Platform 서비스(예: Identity & Access Management, 로깅 및 모니터링, 네트워킹, 가상 머신, 스토리지, Cloud SQL 인스턴스, Kubernetes 클러스터)에 대한 감사 및 강화 스크립트입니다.
현재까지 지원합니다.
Identity & Access Management
- Gmail 계정 대신 기업 로그인 자격 증명이 사용되도록 하십시오.
- 각 서비스 계정에 대해 GCP 관리형 서비스 계정 키만 존재하도록 하십시오.
- ServiceAccount에 관리자 권한이 없도록 하십시오.
- IAM 사용자에게 프로젝트 수준에서 Service Account User 역할이 할당되지 않도록 하십시오.
- 서비스 계정의 사용자 관리형/외부 키가 90일 이내에 교체되도록 하십시오.
- 사용자에게 서비스 계정 관련 역할을 할당할 때 직무 분리가 적용되도록 하십시오.
로깅 및 모니터링
- 모든 로그 항목에 대해 싱크가 구성되도록 하십시오.
- 로그 버킷에 객체 버전 관리가 활성화되어 있는지 확인하십시오.
네트워킹
- 프로젝트에 기본 네트워크가 존재하지 않도록 하십시오.
- 프로젝트에 레거시 네트워크가 존재하지 않도록 하십시오.
- Cloud DNS에 DNSSEC가 활성화되어 있는지 확인하십시오.
- Cloud DNS DNSSEC의 키 서명 키에 RSASHA1이 사용되지 않도록 하십시오.
- Cloud DNS DNSSEC의 영역 서명 키에 RSASHA1이 사용되지 않도록 하십시오.
- 인터넷에서 RDP 액세스가 제한되는지 확인하십시오.
- 인터넷에서 SSH 액세스가 제한되는지 확인하십시오.
- VPC 네트워크의 모든 서브네트워크에 Private Google Access가 활성화되어 있는지 확인하십시오.
- VPC 네트워크의 모든 서브넷에 VPC 흐름 로그가 활성화되어 있는지 확인하십시오.
가상 머신
- 인스턴스가 모든 Cloud API에 대한 전체 액세스 권한이 있는 기본 서비스 계정을 사용하도록 구성되지 않았는지 확인하십시오.
- VM 인스턴스에 대해 "프로젝트 전체 SSH 키 차단"이 활성화되어 있는지 확인하십시오.
- 프로젝트에 oslogin이 활성화되어 있는지 확인하십시오.
- VM 인스턴스에 대해 '직렬 포트 연결 활성화'가 활성화되지 않았는지 확인하십시오.
- 인스턴스에서 IP 전달이 활성화되지 않았는지 확인하십시오.
- 중요 VM의 VM 디스크가 고객 제공 암호화 키(CSEK)로 암호화되었는지 확인하십시오.
스토리지
- Cloud Storage 버킷에 익명 또는 공개적으로 액세스할 수 없도록 하십시오.
- Cloud Storage 버킷에 로깅이 활성화되어 있는지 확인하십시오.
Cloud SQL 데이터베이스 서비스
- Cloud SQL 데이터베이스 인스턴스가 모든 들어오는 연결에 SSL을 사용하도록 요구하는지 확인하십시오.
- Cloud SQL 데이터베이스 인스턴스가 외부에 열려 있지 않은지 확인하십시오.
- MySQL 데이터베이스 인스턴스가 관리자 권한으로 연결하는 것을 허용하지 않는지 확인하십시오.
- MySQL 데이터베이스 인스턴스가 모든 호스트에서 root 로그인을 허용하지 않는지 확인하십시오.
Kubernetes Engine
- Kubernetes Engine 클러스터에서 Stackdriver 로깅이 활성화로 설정되어 있는지 확인하십시오.
- Kubernetes Engine 클러스터에서 Stackdriver 모니터링이 활성화로 설정되어 있는지 확인하십시오.
- Kubernetes Engine 클러스터에서 레거시 권한 부여가 비활성화로 설정되어 있는지 확인하십시오.
- Kubernetes Engine 클러스터에서 Master authorized networks가 활성화로 설정되어 있는지 확인하십시오.
- Kubernetes 클러스터에 레이블이 구성되어 있는지 확인하십시오.
- Kubernetes 웹 UI / 대시보드가 비활성화되어 있는지 확인하십시오.
- Kubernetes 클러스터에 대해
자동 노드 복구가 활성화되어 있는지 확인하십시오.
- Kubernetes Engine 클러스터 노드에서 자동 노드 업그레이드가 활성화되어 있는지 확인하십시오.
- Kubernetes Engine 클러스터 노드 이미지에 Container-Optimized OS (cos)가 사용되는지 확인하십시오.
- Kubernetes Engine 클러스터에서 기본 인증이 비활성화되어 있는지 확인하십시오.
- Kubernetes Engine 클러스터에서 네트워크 정책이 활성화되어 있는지 확인하십시오.
- Kubernetes 클러스터가 클라이언트 인증서를 활성화하여 생성되었는지 확인하십시오.
- Kubernetes 클러스터가 Alias IP 범위를 활성화하여 생성되었는지 확인하십시오.
- Kubernetes Engine 클러스터에서 PodSecurityPolicy 컨트롤러가 활성화되어 있는지 확인하십시오.
- Kubernetes 클러스터가 Private cluster를 활성화하여 생성되었는지 확인하십시오.
- Kubernetes Engine 클러스터 서브넷에 Private Google Access가 설정되어 있는지 확인하십시오.
- Kubernetes 클러스터에서 프로젝트 액세스에 기본 서비스 계정이 사용되지 않는지 확인하십시오.
- Kubernetes 클러스터가 프로젝트 액세스를 위해 제한된 서비스 계정 액세스 범위로 생성되었는지 확인하십시오.
요구 사항
Hayat은 gcloud를 사용하는 bash 스크립트로 작성되었으며 Linux 및 OSX와 호환됩니다.
사용법
git clone https://github.com/DenizParlak/Hayat.git && cd Hayat && chmod +x hayat.sh && ./hayat.sh
특정 기능과 함께 사용할 수 있습니다. 예를 들어 Kubernetes 클러스터만 스캔하려면:
./hayat.sh --only-k8s
스크린샷

