VPC ์๋น์ค ์ ์ด๋ ๋ฐ์ดํฐ ๋ฌด๋จ ๋ฐ์ถ์ ๋ฐฉ์งํ๋ ๊ฒฝ๊ณ๋ฅผ ์ค์ ํ ์ ์๊ฒ ํด์ฃผ๋ Google Cloud ๊ธฐ๋ฅ์ ๋๋ค. ์ด ๊ฐ์ด๋์์๋ Dataform๊ณผ ํจ๊ป VPC ์๋น์ค ์ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ๋ ์์ ํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
VPC ์๋น์ค ์ ์ด๋ Identity and Access Management(IAM)์์ ์ ๊ณตํ๋ ๋ณดํธ์ ๋ณ๊ฐ๋ก Google Cloud ์๋น์ค ๋ณด์์ ๊ฐํํฉ๋๋ค.
VPC ์๋น์ค ์ ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ VPC ์๋น์ค ์ ์ด ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํ์ฌํญ
Dataform์ VPC ์๋น์ค ์ ์ด๋ฅผ ์ง์ํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ์ ํ์ฌํญ์ด ์์ต๋๋ค.
dataform.restrictGitRemotes
์กฐ์ง ์ ์ฑ ์ ์ค์ ํด์ผ ํฉ๋๋ค.Dataform ๋ฐ BigQuery๋ ๊ฐ์ VPC ์๋น์ค ์ ์ด ์๋น์ค ๊ฒฝ๊ณ๋ก ์ ํ๋์ด์ผ ํฉ๋๋ค.
๋ณด์ ๊ณ ๋ ค์ฌํญ
Dataform์ VPC ์๋น์ค ์ ์ด ๊ฒฝ๊ณ๋ฅผ ์ค์ ํ ๋ Dataform ์๋น์ค ๊ณ์ ์ ๋ถ์ฌ๋ ๊ถํ์ ๊ฒํ ํ๊ณ ๋ณด์ ์ํคํ ์ฒ์ ์ผ์นํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
Dataform ์๋น์ค ๊ณ์ ์ ๋ถ์ฌํ ๊ถํ์ ๋ฐ๋ผ ํด๋น ์๋น์ค ๊ณ์ ์ VPC ์๋น์ค ์ ์ด์ ๊ด๊ณ์์ด ์๋น์ค ๊ณ์ ์ด ์ํ ํ๋ก์ ํธ์ BigQuery ๋๋ Secret Manager ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ VPC ์๋น์ค ์ ์ด ๊ฒฝ๊ณ๋ฅผ ์ฌ์ฉํ์ฌ Dataform์ ์ ํํด๋ BigQuery ๋๋ Secret Manager์์ ํต์ ์ ์ฐจ๋จ๋์ง ์์ต๋๋ค.
Dataform ์ ์ฅ์์์ ์์๋ ์ํฌํ๋ก ํธ์ถ์ ์คํํ ํ์๊ฐ ์์ผ๋ฉด BigQuery์์ ํต์ ์ ์ฐจ๋จํด์ผ ํฉ๋๋ค. BigQuery์์ ํต์ ์ฐจ๋จ์ ๋ํ ์์ธํ ๋ด์ฉ์ BigQuery์์ ํต์ ์ฐจ๋จ์ ์ฐธ์กฐํ์ธ์.
์๋ ํํฐ Git ์ ์ฅ์์ ์ฐ๊ฒฐ๋ Dataform ์ ์ฅ์๊ฐ ์์ผ๋ฉด Secret Manager์์ ํต์ ์ ์ฐจ๋จํด์ผ ํฉ๋๋ค. Secret Manager์์ ํต์ ์ฐจ๋จ์ ๋ํ ์์ธํ ๋ด์ฉ์ Secret Manager์์ ํต์ ์ฐจ๋จ์ ์ฐธ์กฐํ์ธ์.
์์ํ๊ธฐ ์ ์
Dataform์ VPC ์๋น์ค ์ ์ด ์๋น์ค ๊ฒฝ๊ณ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ ์ ์๊ฒฉ ์ ์ฅ์ ์ ํ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ผ dataform.restrictGitRemotes
์กฐ์ง ์ ์ฑ
์ ์ค์ ํฉ๋๋ค.
Dataform์ ์ฌ์ฉํ ๋ VPC ์๋น์ค ์ ์ด ๊ฒ์ฌ๊ฐ ์ํ๋๊ณ Dataform Git ์ ์ฅ์์ ๋ํ ์๋ ํํฐ ์ก์ธ์ค๊ฐ ์ ํ๋๋์ง ํ์ธํ๋ ค๋ฉด dataform.restrictGitRemotes
์กฐ์ง ์ ์ฑ
์ด ํ์ํฉ๋๋ค.
ํ์ํ ์ญํ
VPC ์๋น์ค ์ ์ด ์๋น์ค ๊ฒฝ๊ณ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ํ๋ก์ ํธ์ ๋ํ Access Context Manager ํธ์ง์(roles/accesscontextmanager.policyEditor
) IAM ์ญํ ์ ๋ถ์ฌํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ํตํด ํ์ํ ๊ถํ์ ์ป์ ์๋ ์์ต๋๋ค.
VPC ์๋น์ค ์ ์ด ๊ถํ์ ๋ํ ์์ธํ ๋ด์ฉ์ IAM์ผ๋ก ์ก์ธ์ค ์ ์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
VPC ์๋น์ค ์ ์ด๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
๋ค์ ๋ฐฉ๋ฒ์ผ๋ก VPC ์๋น์ค ์ ์ด ์๋น์ค ๊ฒฝ๊ณ๋ฅผ ์ฌ์ฉํ์ฌ Dataform์ ์ ํํ ์ ์์ต๋๋ค.
- Dataform์ BigQuery๋ฅผ ์ ํํ๋ ๊ธฐ์กด ์๋น์ค ๊ฒฝ๊ณ์ ์ถ๊ฐํฉ๋๋ค.
- Dataform ๋ฐ BigQuery๋ฅผ ๋ชจ๋ ์ ํํ๋ ์๋น์ค ๊ฒฝ๊ณ๋ฅผ ๋ง๋ญ๋๋ค.
BigQuery๋ฅผ ์ ํํ๋ ์๋น์ค ๊ฒฝ๊ณ์ Dataform์ ์ถ๊ฐํ๋ ค๋ฉด VPC ์๋น์ค ์ ์ด ๋ฌธ์์ ์๋น์ค ๊ฒฝ๊ณ ์ ๋ฐ์ดํธ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์.
Dataform ๋ฐ BigQuery๋ฅผ ๋ชจ๋ ์ ํํ๋ ์ ์๋น์ค ๊ฒฝ๊ณ๋ฅผ ๋ง๋ค๋ ค๋ฉด VPC ์๋น์ค ์ ์ด ๋ฌธ์์ ์๋น์ค ๊ฒฝ๊ณ ๋ง๋ค๊ธฐ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์.
์ ํ์ฌํญ: BigQuery์์ ํต์ ์ฐจ๋จ
Dataform์ด BigQuery์ ํต์ ํ๋ ๋ฐฉ๋ฒ์ Dataform์ ์ฌ์ฉ๋๋ ์๋น์ค ๊ณ์ ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ์ bigquery.jobs.create
๊ถํ์ ์ฌ์ฉํ์ฌ BigQuery์ ํต์ ํฉ๋๋ค. Dataform์ด BigQuery์์ SQL ์ํฌํ๋ก๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ์ญํ ์ ๋ถ์ฌํ ๋ ์ด ๊ถํ์ด ํฌํจ๋ ๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ์ญํ ์ ๋ถ์ฌํฉ๋๋ค.
๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ๊ณผ BigQuery ๊ฐ์ ํต์ ์ ์ฐจ๋จํ๋ ค๋ฉด ๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ์ ๋ถ์ฌ๋ bigquery.jobs.create
๊ถํ์ด ํฌํจ๋ ๋ชจ๋ ์ฌ์ ์ ์๋ ์ญํ ๊ณผ ์ปค์คํ
์ญํ ์ ์ทจ์ํด์ผ ํฉ๋๋ค. ์ญํ ์ ์ทจ์ํ๋ ค๋ฉด ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์.
์ปค์คํ Dataform ์๋น์ค ๊ณ์ ์ ๋ค์ ๊ถํ๊ณผ ์ญํ ์ ์ฌ์ฉํ์ฌ BigQuery์ ํต์ ํฉ๋๋ค.
- ์ปค์คํ
์๋น์ค ๊ณ์ ์ ๋ถ์ฌ๋๋
bigquery.jobs.create
๊ถํ - ์ปค์คํ
์๋น์ค ๊ณ์ ์ ๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ์ ๋ถ์ฌ๋๋ ์๋น์ค ๊ณ์ ํ ํฐ ์์ฑ์(
roles/iam.serviceAccountTokenCreator
) ์ญํ
๋ค์ ๋ฐฉ๋ฒ ์ค ํ๋๋ก ์ปค์คํ Dataform ์๋น์ค ๊ณ์ ๊ณผ BigQuery ๊ฐ์ ํต์ ์ ์ฐจ๋จํ ์ ์์ต๋๋ค.
์ ํํ ์ปค์คํ Dataform ์๋น์ค ๊ณ์ ์ ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ ์ ๋ถ์ฌ๋ ์๋น์ค ๊ณ์ ํ ํฐ ์์ฑ์(
roles/iam.serviceAccountTokenCreator
) ์ญํ ์ ์ทจ์ํฉ๋๋ค. ์๋น์ค ๊ณ์ ํ ํฐ ์์ฑ์(roles/iam.serviceAccountTokenCreator
) ์ญํ ์ ์ทจ์ํ๋ ค๋ฉด ์๋น์ค ๊ณ์ ์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์.ํ๋ก์ ํธ ์์ค์์
bigquery.jobs.create
๊ถํ์ด ํฌํจ๋ ์ปค์คํ ์๋น์ค ๊ณ์ ์ ๋ถ์ฌ๋ ๋ชจ๋ ์ฌ์ ์ ์๋ ์ญํ ๊ณผ ์ปค์คํ ์ญํ ์ ์ทจ์ํฉ๋๋ค. ์ญํ ์ ์ทจ์ํ๋ ค๋ฉด ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์.
bigquery.jobs.create
๊ถํ์ ์ทจ์๋์ด์ผ ํ๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ์ ์ ์๋ BigQuery IAM ์ญํ ์ ํฌํจ๋์ด ์์ต๋๋ค.
- BigQuery ๊ด๋ฆฌ์(
roles/bigquery.admin
) - BigQuery ์์
์ฌ์ฉ์(
roles/bigquery.jobUser
) - BigQuery ์ฌ์ฉ์(
roles/bigquery.user
) - BigQuery Studio ๊ด๋ฆฌ์(
roles/bigquery.studioAdmin
) - BigQuery Studio ์ฌ์ฉ์(
roles/bigquery.studioUser
)
์ ํ์ฌํญ: Secret Manager์์ ํต์ ์ฐจ๋จ
Dataform์ secretmanager.versions.access
๊ถํ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ Secret Manager ๋ณด์ ๋น๋ฐ์ ์ก์ธ์คํฉ๋๋ค. Dataform ์ ์ฅ์๋ฅผ ์๋ ํํฐ ์ ์ฅ์์ ์ฐ๊ฒฐํ ๋ ์ ํํ Secret Manager ๋ณด์ ๋น๋ฐ์ ๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ์ ์ด ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
Dataform ๋ฐ Secret Manager ๊ฐ์ ํต์ ์ ์ฐจ๋จํ๋ ค๋ฉด ๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ์์ ๋ชจ๋ ๋ณด์ ๋น๋ฐ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ์ทจ์ํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ์์ Secret Manager ๋ณด์ ๋น๋ฐ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ์ทจ์ํ๋ ค๋ฉด Secret Manager ๋ฌธ์์ ๋ณด์ ๋น๋ฐ์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์. ์ ํํ ๋ณด์ ๋น๋ฐ์ ๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ์ ๋ถ์ฌ๋ secretmanager.versions.access
๊ถํ์ด ํฌํจ๋ ์ฌ์ ์ ์๋ ์ญํ ๊ณผ ์ปค์คํ
์ญํ ์ ๋ชจ๋ ์ทจ์ํด์ผ ํฉ๋๋ค.
secretmanager.versions.access
๊ถํ์ ๋ค์๊ณผ ๊ฐ์ ์ฌ์ ์ ์๋ Secret Manager IAM ์ญํ ์ ํฌํจ๋์ด ์์ต๋๋ค.
- Secret Manager ๊ด๋ฆฌ์(
roles/secretmanager.admin
) - Secret Manager ๋ณด์ ๋น๋ฐ ์ ๊ทผ์(
roles/secretmanager.secretAccessor
) - Secret Manager ๋ณด์ ๋น๋ฐ ๋ฒ์ ๊ด๋ฆฌ์(
roles/secretmanager.secretVersionManager
)
๋ค์ ๋จ๊ณ
- VPC ์๋น์ค ์ ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ VPC ์๋น์ค ์ ์ด ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
- ์กฐ์ง ์ ์ฑ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์กฐ์ง ์ ์ฑ ์๋น์ค ์๊ฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
- Dataform์ ์๋น์ค ๊ณ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ Dataform์ ์๋น์ค ๊ณ์ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ์ธ์.