서비스 계정의 키를 사용하여 Terraform을 설정하는 방법은?
_____A: GCP 서비스 계정 키는 JSON 형식의 인증 정보 파일로, Terraform 등 클라이언트가 GCP API를 호출할 때 해당 서비스 계정의 권한으로 인증·인가를 수행하게 해줍니다.
2. Q: Terraform에 서비스 계정 키를 사용하는 이유는 무엇인가요?
A:
- CI/CD 파이프라인 또는 로컬 개발 환경에서 GCP API 호출을 자동화
- 원격 상태(remote state) 백엔드 초기화 및 관리
- 리소스 생성·수정·삭제 시 명시적인 권한 부여로 보안 강화
3. Q: 서비스 계정과 키는 어떻게 생성하나요?
A:
1) GCP Console → IAM & 관리자 → 서비스 계정 → ‘서비스 계정 만들기’
2) 이름·ID 입력, 필요한 IAM 역할(예: Editor, Compute Admin, Storage Admin 등) 부여
3) ‘키’ 탭 → ‘키 추가’ → JSON 형식 선택 → 생성
4) 다운로드된 JSON 파일(.json)을 안전한 위치에 보관
4. Q: 서비스 계정에 어떤 IAM 역할을 부여해야 하나요?
A:
- Terraform으로 관리할 리소스별 최소 권한(Minimum IAM Role) 원칙 적용
- 예: Compute Engine만 다루면 roles/compute.admin, VPC만 다루면 roles/compute.networkAdmin
- BigQuery, Storage 등 여러 서비스 혼합 시 Custom Role 권장
5. Q: Terraform에서 JSON 키 파일을 어떻게 참조하나요?
A: 환경 변수 또는 provider 블록 내 credential 인자로 지정
1) 환경 변수 설정(추천)
• Linux/macOS:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"
• Windows PowerShell:
$Env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\key.json"
2) provider 블록 내 직접 지정
provider "google" {
credentials = file("/path/to/key.json")
project = "your-gcp-project-id"
region = "asia-northeast3"
}
6. Q: Terraform 설정 예시(provider.tf)는 어떻게 작성하나요?
A:
```hcl
terraform {
required_providers {
google = {
source = "hashicorp/google"
version = "~> 4.0"
}
}
backend "gcs" {
bucket = "my-terraform-state-bucket"
prefix = "terraform/state"
}
}
provider "google" {
credentials = file(var.credentials_path)
project = var.project_id
region = var.region
}
variable "credentials_path" { type = string }
variable "project_id" { type = string }
variable "region" { type = string }
```
7. Q: Terraform 실행 단계별 명령은 무엇인가요?
A:
1) terraform init → 플러그인 설치, 백엔드 초기화
2) terraform plan → 변경사항 미리보기
3) terraform apply → 실제 리소스 생성/수정
4) terraform destroy→ 리소스 정리
8. Q: 자주 발생하는 인증 오류와 해결책은?
A:
- GOOGLE_APPLICATION_CREDENTIALS 미설정: 환경 변수 재확인
- 파일 권한 문제: `chmod 600 key.json`
- 잘못된 프로젝트 ID: provider.project 수정
- 만료된 키: 키 재생성 및 교체
9. Q: 보안 모범 사례는 무엇인가요?
A:
- 키 파일을 Git 등 버전 관리에 절대 커밋 금지(.gitignore 설정)
- 최소 권한 원칙으로 IAM 역할 축소
- 키 파일은 암호화 스토리지(AWS Secrets Manager, GCP Secret Manager 등)에 보관
- 주기적인 키 회전(Rotation) 및 감사 로그 확인
10. Q: 서비스 계정 키를 회전하려면 어떻게 하나요?
A:
1) 기존 서비스 계정에 새 키 생성 및 다운로드
2) Terraform 환경 변수나 credential 참조 경로를 새 키로 업데이트
3) terraform plan/apply로 정상 작동 확인
4) 기존 키를 폐기(삭제)
11. Q: 로컬 환경과 CI/CD 파이프라인 설정 차이는?
A:
- 로컬: 직접 JSON 키 파일 다운로드 후 환경 변수 설정
- CI/CD:
• 키 파일을 CI 시크릿에 업로드
• 파이프라인 스크립트에서 환경 변수로 로드
• 필요 시 `gcloud auth activate-service-account` 활용
12. Q: 서비스 계정 키 없이 Terraform을 사용할 수 있나요?
A:
- Workload Identity Federation: 외부 ID 공급자(GitHub, Azure AD 등) 이용해 키 관리 없이 인증
- Cloud Shell: 내장된 계정 인증 활용 (추가 키 불필요)
이 과정은 주로 Google Cloud Platform(GCP)과 같은 클라우드 서비스에서 이루어지며, 다른 클라우드 제공업체에서도 유사한 방식으로 진행됩니다.
아래는 Terraform을 설정하고 서비스 계정 키를 사용하는 방법에 대한 단계별 가이드입니다.
1. 서비스 계정 생성 먼저, GCP 콘솔에서 서비스 계정을 생성해야 합니다.
1. GCP 콘솔에 로그인 : [Google Cloud Console](https://console.cloud.google.com/)에 로그인합니다.
2. IAM 및 관리자 : 왼쪽 사이드바에서 "IAM 및 관리자"를 클릭한 후 "서비스 계정"을 선택합니다.
3. 서비스 계정 만들기 : "서비스 계정 만들기" 버튼을 클릭합니다.
- 서비스 계정 이름과 설명을 입력합니다.
- "만들기"를 클릭합니다.
4. 역할 부여 : 서비스 계정에 필요한 역할을 부여합니다.
예를 들어, Compute Engine API를 사용하려면 "Compute Admin" 역할을 부여할 수 있습니다.
5. 키 생성 : 서비스 계정이 생성된 후, "키" 탭으로 이동하여 "키 추가"를 클릭하고 "새 키 만들기"를 선택합니다.
JSON 형식의 키를 선택하고 "만들기"를 클릭하면 JSON 파일이 다운로드됩니다.
이 파일은 나중에 Terraform에서 사용됩니다.
2. Terraform 설치 Terraform이 설치되어 있지 않다면, [Terraform 공식 웹사이트](https://www.terraform.io/downloads.html)에서 다운로드하여 설치합니다.
3. Terraform 구성 파일 작성 Terraform을 사용하여 GCP 리소스를 관리하기 위해서는 Terraform 구성 파일을 작성해야 합니다.
일반적으로 `.tf` 확장자를 가진 파일을 사용합니다.
```hcl provider "google" { credentials = file("
- `
- `
4. Terraform 초기화 Terraform 구성 파일을 작성한 후, Terraform을 초기화합니다.
터미널에서 다음 명령어를 실행합니다.
```bash terraform init ``` 이 명령어는 필요한 플러그인을 다운로드하고 초기화합니다.
5. Terraform 계획 및 적용 Terraform을 사용하여 리소스를 생성하기 전에 계획을 세우고 적용합니다.
1. 계획 : 다음 명령어를 사용하여 Terraform이 어떤 작업을 수행할 것인지 미리 확인합니다.
```bash terraform plan ```
2. 적용 : 계획이 만족스러우면 다음 명령어로 리소스를 생성합니다.
```bash terraform apply ``` 이 명령어를 실행하면 Terraform이 리소스를 생성하기 전에 확인을 요청합니다.
`yes`를 입력하면 리소스가 생성됩니다.
6. 리소스 관리 Terraform을 사용하여 리소스를 관리할 수 있습니다.
리소스를 수정하거나 삭제할 경우, 구성 파일을 변경한 후 다시 `terraform plan`과 `terraform apply` 명령어를 실행하면 됩니다.
7. 정리 리소스를 삭제하려면 다음 명령어를 사용합니다.
```bash terraform destroy ``` 이 명령어는 Terraform이 관리하는 모든 리소스를 삭제합니다.
결론 Terraform을 사용하여 GCP 리소스를 관리하는 것은 매우 효율적이며, 서비스 계정 키를 사용하여 인증하는 방법은 안전하고 간편합니다.
위의 단계를 따르면 Terraform을 설정하고 클라우드 리소스를 관리하는 데 필요한 기본적인 과정을 이해할 수 있습니다.
추가적으로, Terraform의 문서와 GCP의 문서를 참고하여 더 많은 기능과 옵션을 탐색할 수 있습니다.
작성자:
박지현 [비회원]
| 작성일자: 1년 전
2024-12-18 16:51:45
조회수: 149 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 149 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.