이 문서에서는 Google Cloud용 Terraform을 안전하게 사용하기 위한 가이드라인과 권장사항을 제공합니다. Terraform은 작동을 위해 클라우드 인프라에 대해 민감한 액세스가 필요합니다. 보안 권장사항에 따라 관련된 위험을 최소화하고 전반적인 클라우드 보안 수준을 향상시킬 수 있습니다.
이 가이드는 Terraform 소개 내용이 아닙니다. Google Cloud에서 Terraform 사용에 대한 소개는 정보는 Terraform 시작하기를 참조하세요.
원격 상태 사용
Google Cloud 고객의 경우 Cloud Storage 상태 백엔드를 사용하는 것이 좋습니다. 이 접근 방식은 팀 협업을 위해 상태를 잠급니다. 또한 상태 및 모든 잠재적으로 민감한 정보를 버전 제어와 분리합니다.
빌드 시스템 및 권한이 높은 관리자만 원격 상태에 사용되는 버킷에 액세스할 수 있는지 확인합니다.
개발 상태를 소스 제어에 실수로 커밋하는 것을 방지하기 위해 Terraform 상태 파일에 대해 gitignore를 사용합니다.
상태 암호화
Google Cloud 버킷이 저장 상태에서 암호화되지만 고객 제공 암호화 키를 사용해서 추가적인 보호 레이어를 제공할 수 있습니다. 이렇게 하려면 GOOGLE_ENCRYPTION_KEY
환경 변수를 사용합니다. 상태 파일에는 보안 비밀을 사용하지 않아야 하지만 추가적인 방어 수단으로서 항상 상태를 암호화합니다.
상태에 보안 비밀 저장 안 함
Terraform에는 상태 파일에서 보안 비밀 값을 일반 텍스트로 저장하는 많은 리소스 및 데이터 제공자가 있습니다. 가능한 경우 상태에 보안 비밀을 저장하지 않아야 합니다. 다음은 보안 비밀을 일반 텍스트로 저장하는 몇 가지 제공자 예시입니다.
민감한 출력 표시
민감한 값 암호화를 수동으로 시도하는 대신 민감한 상태 관리를 위해 Terraform에서 기본 제공되는 지원을 사용합니다. 민감한 값을 출력에 내보낼 때는 값이 민감한으로 표시되었는지 확인합니다.
책임 분리 보장
사용자가 액세스할 수 없는 자동화된 시스템에서 Terraform을 실행할 수 없으면 권한 및 디렉터리를 분리하여 책임 분리를 준수합니다. 예를 들어 네트워크 프로젝트는 해당 액세스 권한이 이 프로젝트로 제한되는 네트워크 Terraform 서비스 계정 또는 사용자에 해당합니다.
적용 전 검사 실행
자동화된 파이프라인에서 Terraform을 실행할 때는 적용하기 전 gcloud terraform vet
와 같은 도구를 사용해서 정책에 따라 계획 출력을 확인합니다. 이렇게 하면 작업을 수행하기 전 보안 회귀를 감지할 수 있습니다.
지속적 감사 실행
terraform apply
명령어가 실행된 후 자동화된 보안 확인을 실행합니다.
이러한 확인 작업은 인프라가 안전하지 않은 상태로 전환되지 않도록 보장하는 데 도움이 될 수 있습니다. 다음 도구는 이 유형의 확인 작업을 위해 선택할 수 있는 옵션입니다.