이 문서에서는 Google Cloud 조직에 정의한 Security Health Analytics 감지기 및 조직 정책에 대조하여 코드형 인프라(IaC)를 검증하는 방법을 설명합니다. IaC를 사용하면 Terraform과 같은 언어를 사용하여 클라우드 리소스를 만들고 관리할 수 있으므로 개발 워크플로를 사용하여 리소스를 배포할 수 있습니다. IaC 검증 기능은 조직 정책 및 Security Health Analytics 감지기만 지원합니다.
IaC를 검증하면 새 리소스 정의나 수정된 리소스 정의가 Google Cloud 리소스(예: 클러스터, 버킷 또는 인스턴스)에 적용된 기존 정책을 위반하는지 확인할 수 있습니다. 보안 상황을 사용하여 이러한 정책을 정의할 수 있지만 IaC 검증 기능은 Google Cloud 조직의 모든 정책을 기준으로 코드를 분석합니다. IaC 검증은 개발자가 Google Cloud 환경에 적용하기 전에 애셋 또는 리소스의 IaC 구성에서 보안 문제를 식별하고 수정하는 데 도움이 됩니다.
IaC 검증 기능은 Terraform 계획 파일을 지원합니다. Google Cloud CLI를 사용하여 Terraform 계획을 검증하거나 Cloud Build, Jenkins 또는 GitHub Actions 개발자 워크플로에 검증 프로세스를 통합할 수 있습니다.
시작하기 전에
IaC 검증을 시작하려면 다음 작업을 완료하세요.
Security Command Center 프리미엄 등급 또는 Enterprise 등급 활성화
Security Command Center 프리미엄 등급 또는 Enterprise 등급이 조직 수준에서 활성화되었는지 확인합니다.
Security Command Center를 활성화하면 securityposture.googleapis.com
및 securitycentermanagement.googleapis.com
API가 사용 설정됩니다.
권한 설정
-
Make sure that you have the following role or roles on the organization: Security Posture Shift-Left Validator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the organization.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
IAM으로 이동 - 조직을 선택합니다.
- 액세스 권한 부여를 클릭합니다.
-
새 주 구성원 필드에 사용자 식별자를 입력합니다. 일반적으로 Google 계정의 이메일 주소입니다.
- 역할 선택 목록에서 역할을 선택합니다.
- 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
- 저장을 클릭합니다.
IaC 검증 권한에 대한 자세한 내용은 조직 수준 활성화를 위한 IAM을 참조하세요.
Google Cloud CLI 설정
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
서비스 계정 가장 기능을 사용하여 사용자 인증 정보 대신 Google API에 인증하도록 gcloud CLI를 설정하려면 다음 명령어를 실행합니다.
gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
자세한 내용은 서비스 계정 가장을 참조하세요.
정책 정의
조직 정책 및 Security Health Analytics 감지기를 정의합니다. 보안 상황을 사용하여 이러한 정책을 정의하려면 상황 만들기 및 배포의 태스크를 완료합니다.
Terraform 코드 만들기
개발자 워크플로 및 도구를 사용하여 만들거나 수정하려는 Google Cloud 애셋이 포함된 Terraform 파일을 만듭니다.
한 가지 예를 살펴보겠습니다.
- Terraform 구성에 있는 모든 리소스 또는 애셋의 상위 속성(프로젝트, 폴더 또는 조직)을 채웁니다.
- 애셋과 정책을 별도로 수정합니다. API는 애셋과 정책을 동시에 수정하는 Terraform 계획 파일의 검증을 지원하지 않습니다.
- 지원되는 애셋 유형 및 정책만 사용하세요. 지원되는 애셋 유형 및 정책의 목록은 IaC 검증에 지원되는 애셋 유형 및 정책을 참조하세요.
- IaC 검증 제한사항을 검토합니다.
- Terraform 계획 파일에 비밀번호 또는 기타 개인 식별 정보와 같은 민감한 정보를 포함하지 마세요. 검증 기능이 리소스 변경사항에서 민감하다고 표시된 필드를 발견하면 필드가 삭제됩니다.
Terraform 코드를 만든 후 IaC 검증 보고서를 실행할 수 있습니다. gcloud CLI, Cloud Build, 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.json
다음을 바꿉니다.
PARENT
: IaC 유효성 검사 보고서를 만들 Google Cloud 조직. 형식은organizations/ORGANIZATION_ID/locations/LOCATION
입니다.LOCATION
은global
입니다.TF_PLAN_JSON_FILENAME
: 유효성을 검사할 IaC 계획이 포함된 JSON 파일의 경로
예를 들어
organizations/3589215982/locations/global
조직 아래에planFile.json
에 IaC 계획이 포함된 IaC 검증 보고서를 만들려면 다음 명령어를 실행합니다.gcloud scc iac-validation-reports create organizations/3589215982/locations/global --tf-plan-file=planFile.json
이 명령어는 IAC 검증 보고서를 만드는 작업의 세부정보를 반환합니다. 작업에 대한 자세한 내용은 상황 배포 작업에 대한 정보 보기를 참조하세요.
다음 단계
- 샘플 튜토리얼 검토
- IaC 검증을 Cloud Build 워크플로와 통합
- IaC 검증을 GitHub Actions 또는 Jenkins 프로젝트와 통합
- 보안 상황 관리
-