이 문서에서는 Google Cloud 조직에서 정의한 Security Health Analytics 감지기 및 조직 정책에 대조하여 코드형 인프라(IaC)를 검증하는 방법을 설명합니다. IaC를 사용하면 개발 워크플로를 사용하여 리소스를 배포할 수 있도록 Terraform과 같은 언어를 사용하여 클라우드 리소스를 만들고 관리할 수 있습니다.
IaC를 검증하면 새 리소스 정의나 수정된 리소스 정의가 Google Cloud 리소스(예: 클러스터, 버킷 또는 인스턴스)에 적용된 기존 정책을 위반하는지 확인할 수 있습니다. 보안 상태를 사용하여 이러한 정책을 정의할 수 있지만 IaC 검증 기능은 Google Cloud 조직의 모든 정책과 비교하여 코드를 분석합니다. IaC 검증을 사용하면 Google Cloud 환경에 적용하기 전에 개발자가 애셋 또는 리소스의 IaC 구성에서 보안 문제를 식별하고 수정할 수 있습니다.
IaC 검증 기능은 Terraform 계획 파일을 지원합니다. Google Cloud CLI를 사용하여 Terraform 계획을 검증하거나 검증 프로세스를 Jenkins 또는 GitHub Actions 개발자 워크플로에 통합할 수 있습니다.
시작하기 전에
IaC 검증을 시작하려면 이 작업을 완료하세요.
Security Command Center 프리미엄 등급 또는 엔터프라이즈 등급 활성화
Security Command Center 프리미엄 등급 또는 엔터프라이즈 등급이 조직 수준에서 활성화되었는지 확인합니다.
권한 설정
-
조직에 다음 역할이 있는지 확인합니다. Security Posture Shift-Left Validator
역할 확인
-
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
IAM으로 이동 - 조직을 선택합니다.
-
주 구성원 열에서 이메일 주소가 있는 행을 찾습니다.
이메일 주소가 열에 없으면 역할이 없는 것입니다.
- 이메일 주소가 있는 행에 대해 역할 열에서 역할 목록에 필요한 역할이 있는지 확인합니다.
역할 부여
-
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
IAM으로 이동 - 조직을 선택합니다.
- 액세스 권한 부여를 클릭합니다.
- 새 주 구성원 필드에 이메일 주소를 입력합니다.
- 역할 선택 목록에서 역할을 선택합니다.
- 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
- 저장을 클릭합니다.
-
IaC 검증 권한에 대한 자세한 내용은 조직 수준 활성화를 위한 IAM을 참조하세요.
Google Cloud CLI 설정
다음 개발 환경 중 하나에서 이 페이지의 gcloud CLI 샘플을 사용할 수 있습니다.
-
Cloud Shell: gcloud CLI가 이미 설정된 온라인 터미널을 사용하려면 Cloud Shell을 활성화하세요.
이 페이지 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
서비스 계정 가장 기능을 사용하여 사용자 인증 정보 대신 Google API에 인증하도록 gcloud CLI를 설정하려면 다음 명령어를 실행합니다.
gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
자세한 내용은 서비스 계정 가장을 참조하세요.
API 사용 설정
API Security posture service and Security Command Center management 사용 설정
정책 정의
조직 정책 및 Security Health Analytics 감지기를 정의합니다. 보안 상황을 사용하여 이러한 정책을 정의하려면 상태 만들기 및 배포의 태스크를 완료하세요.
Terraform 코드 만들기
개발자 워크플로 및 도구를 사용해서 만들거나 수정하려는 Google Cloud 애셋이 포함된 Terraform 파일을 만듭니다.
한 가지 예를 살펴보겠습니다.
- Terraform 구성에 있는 모든 리소스 또는 애셋의 상위 속성(프로젝트, 폴더 또는 조직)을 채웁니다.
- 애셋 및 정책을 개별적으로 수정합니다. 이 API는 애셋과 정책을 동시에 수정하는 Terraform 계획 파일의 검증을 지원하지 않습니다.
- 지원되는 확장 소재 유형 및 정책만 사용하세요. 지원되는 애셋 유형 및 정책 목록은 IaC 검증에 지원되는 애셋 유형 및 정책을 참조하세요.
- IaC 검증 제한사항을 검토합니다.
- Terraform 계획 파일에 비밀번호 또는 기타 개인 식별 정보와 같은 민감한 정보를 포함하지 마세요. 검증 기능에서 리소스 변경사항에서 민감한 항목으로 표시된 필드를 발견하면 해당 필드가 삭제됩니다.
Terraform 코드를 만든 후 IaC 검증 보고서를 실행할 수 있습니다. Google Cloud CLI, Jenkins, GitHub Actions를 사용할 수 있습니다.
Google Cloud CLI를 사용하여 IaC 검증 보고서 만들기
IaC 검증 보고서를 만들려면 다음을 완료하세요.
gcloud CLI에서
terraform init
를 실행합니다.Terraform 제공업체 버전 v5.5 이상을 실행 중인지 확인합니다. 필요한 경우 최신 Google 공급업체 버전으로 업그레이드합니다.
terraform init -upgrade
Terraform 계획 파일을 JSON 형식으로 변환합니다.
terraform plan -out TF_PLAN_FILENAME terraform show -json TF_PLAN_FILENAME > TF_PLAN_JSON_FILENAME.json
다음을 바꿉니다.
TF_PLAN_FILENAME
: Terraform 계획 파일의 이름TF_PLAN_JSON_FILENAME
: JSON 형식의 Terraform 계획을 포함할 파일의 이름
IaC 검증 보고서를 만듭니다.
gcloud scc iac-validation-reports create PARENT \ --tf-plan-file=TF_PLAN_JSON_FILENAME
다음을 바꿉니다.
PARENT
: IaC 유효성 검사 보고서를 만들 Google Cloud 조직. 형식은organizations/ORGANIZATION_ID/locations/LOCATION
입니다.LOCATION
은global
입니다.TF_PLAN_JSON_FILENAME
: 유효성을 검사할 IaC 계획이 포함된 JSON 파일의 경로
예를 들어
planFile.json
에 포함된 IaC 계획을 사용하여organizations/3589215982/locations/global
조직 아래에 IaC 검증 보고서를 만들려면 다음 명령어를 실행합니다.gcloud scc iac-validation-reports create organizations/3589215982/locations/global --tf-plan-file=planFile.json
이 명령어는 IAC 검증 보고서를 만들기 위한 작업 세부정보를 반환합니다. 작업에 대한 자세한 내용은 상태 배포 작업에 대한 정보 보기를 참조하세요.
다음 단계
- 샘플 튜토리얼 검토
- IaC 유효성 검사를 GitHub Actions 또는 Jenkins 프로젝트와 통합하기
- 보안 상태 관리