우노
[Terraform] 동일 GCP Service Account를 사용한 다중 프로젝트 접근 설정 본문
들어가기 앞서,
- 해당 포스트에선, Terraform을 사용해, 동일한 GCP Service Account를 사용해 다중 프로젝트에 접근할 수 있도록 설정하는 방법에 대해서 다뤄보겠습니다.
예제 코드
- 예제 코드는, 프로젝트 C의 Service Account를 사용해 프로젝트 A와 B에 접근하는 설정을 다루고 있으며, 아래와 같은 방식으로 진행됩니다.
- 프로젝트 C에 Service Account 및 Key를 생성합니다.
- 프로젝트 C의 Service Account를 프로젝트 A와 B의 IAM 멤버로 추가합니다.
- 프로젝트 C의 Service Account가 프로젝트 A와 B 각각에 지정된 역할을 가질 수 있도록 설정합니다.
- 사용자는 프로젝트 C의 Service Account와 Key를 사용해 프로젝트 A와 B에 접근할 수 있게 됩니다.
# 각 프로젝트에서 사용할 역할
locals {
sa_roles_used_by_projects = {
projectA_iam_roles_list = [
"roles/firebase.admin"
]
projectB_iam_roles_list = [
"roles/firebase.admin"
]
}
}
# 프로젝트 C에 Service Account 및 Key 생성
resource "google_service_account" "projectC_sa" {
account_id = "projectC-sa"
display_name = "projectC-sa"
description = "ProjectA와 ProjectB에 접근하기 위한 service account 입니다."
}
resource "google_service_account_key" "projectC_sa_key" {
service_account_id = google_service_account.projectC_sa.name
}
# 프로젝트 C의 Service Account를 프로젝트 A의 IAM 멤버로 추가
resource "google_project_iam_member" "projectA_iam" {
project = "prjectA의 ID"
count = length(local.sa_roles_used_by_projects.projectA_iam_roles_list)
role = local.sa_roles_used_by_projects.projectA_iam_roles_list[count.index]
member = "serviceAccount:${google_service_account.projectC_sa.email}"
}
# 프로젝트 C의 Service Account를 프로젝트 B의 IAM 멤버로 추가
resource "google_project_iam_member" "projectB_iam" {
project = "prjectB의 ID"
count = length(local.sa_roles_used_by_projects.projectB_iam_roles_list)
role = local.sa_roles_used_by_projects.projectB_iam_roles_list[count.index]
member = "serviceAccount:${google_service_account.projectC_sa.email}"
}
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] terraform import kubernetes_manifest (0) | 2023.09.07 |
---|---|
[Terraform] Cloud Run에서 VPC Connector를 사용하여 Cloud SQL 접근 (0) | 2023.08.02 |
[Terraform] already exists 해결 방법 (0) | 2023.06.04 |
[Terraform] GCLB 접근 시, 헤더 일치 여부에 따른 접근 허용 설정 (0) | 2023.06.04 |
[Terraform] untaint란? (0) | 2023.05.22 |
Comments