์ด ๊ฐ์ด๋์์๋ Dataform์ CMEK๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ณ Dataform ์ ์ฅ์์ CMEK ์ํธํ๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Dataform์ ์ ์ฅ ์ค ๊ณ ๊ฐ ์ฝํ ์ธ ๋ฅผ ์ํธํํฉ๋๋ค. Dataform์ ์ฌ์ฉ์ ์ธก์ ์ถ๊ฐ ์์ ์์ด ์๋์ผ๋ก ์ํธํ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ด ์ต์ ์ Google ๊ธฐ๋ณธ ์ํธํ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ํธํ ํค๋ฅผ ์ ์ดํ๋ ค๋ฉด Dataform์ ํฌํจํ CMEK ํตํฉ ์๋น์ค์ ํจ๊ป Cloud KMS์์ ๊ณ ๊ฐ ๊ด๋ฆฌ ์ํธํ ํค(CMEK)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. Cloud KMS ํค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณดํธ ์์ค, ์์น, ์ํ ์ผ์ , ์ฌ์ฉ ๋ฐ ์ก์ธ์ค ๊ถํ, ์ํธํ ๊ฒฝ๊ณ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. Cloud KMS๋ฅผ ์ฌ์ฉํ๋ฉด ํค ์ฌ์ฉ์ ์ถ์ ํ๊ณ , ๊ฐ์ฌ ๋ก๊ทธ๋ฅผ ๋ณด๊ณ , ํค ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ ์ดํ ์๋ ์์ต๋๋ค. Google์์ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๋ ๋์นญ ํค ์ํธํ ํค (KEK)๋ฅผ ์์ ํ๊ณ ๊ด๋ฆฌํ๋ ๋์ ์ฌ์ฉ์๊ฐ Cloud KMS์์ ์ด๋ฌํ ํค๋ฅผ ์ ์ดํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
CMEK๋ก ๋ฆฌ์์ค๋ฅผ ์ค์ ํ ํ Dataform ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ํ๊ฒฝ์ Google ๊ธฐ๋ณธ ์ํธํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ์ ์ฌํฉ๋๋ค. ์ํธํ ์ต์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ณ ๊ฐ ๊ด๋ฆฌ ์ํธํ ํค(CMEK)๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ์ฅ์ ๋ฐ์ดํฐ์ CMEK ์ํธํ
Dataform ์ ์ฅ์์ CMEK ์ํธํ๋ฅผ ์ ์ฉํ๋ฉด ํด๋น ์ ์ฅ์์ ๋ชจ๋ Dataform ๊ด๋ฆฌ ๊ณ ๊ฐ ๋ฐ์ดํฐ๋ ์ ์ฅ์์ ์ค์ ๋ CMEK ๋ณดํธ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅ ์ํ์์ ์ํธํ๋ฉ๋๋ค. ์ด ๋ฐ์ดํฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- Dataform ์ ์ฅ์ ๋ฐ ์์ ๊ณต๊ฐ์ Git ์ ์ฅ์ ์ฝํ ์ธ
- ์ปดํ์ผ๋ SQL ์ฟผ๋ฆฌ ๋ฐ ์ปดํ์ผ ์ค๋ฅ
- ์ํฌํ๋ก ์์ ์ ์ ์ฅ๋ SQL ์ฟผ๋ฆฌ
- ์คํ๋ ์ํฌํ๋ก ์์ ์ ์ค๋ฅ ์ธ๋ถ์ ๋ณด
Dataform์ ๋ค์ ์๋๋ฆฌ์ค์์ CMEK ๋ณดํธ ํค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ ์ฅ๋ ๊ณ ๊ฐ ๋ฐ์ดํฐ์ ๋ณตํธํ๊ฐ ํ์ํ ๋ชจ๋ ์์
์ค.
์ด๋ฌํ ์์
์๋ ๋ค์์ด ํฌํจ๋๋ฉฐ ์ด์ ๊ตญํ๋์ง ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ฟผ๋ฆฌ์ ๋ํ ์๋ต(์:
compilationResults.query
) - ์ด์ ์ ๋ง๋ ์ํธํ๋ ์ ์ฅ์ ๋ฐ์ดํฐ๊ฐ ํ์ํ Dataform ๋ฆฌ์์ค ๋ง๋ค๊ธฐ(์: ์ํฌํ๋ก ํธ์ถ)
- ์๊ฒฉ ์ ์ฅ์๋ฅผ ์ ๋ฐ์ดํธํ๋ Git ์์ (์: Git ์ปค๋ฐ ํธ์)
- ์ฌ์ฉ์ ์ฟผ๋ฆฌ์ ๋ํ ์๋ต(์:
- ๊ณ ๊ฐ ์ ์ฅ ๋ฐ์ดํฐ(customer data at rest)๋ฅผ ์ ์ฅํด์ผ ํ๋ ๋ชจ๋ ์์
์ค.
์ด ์์
์๋ ๋ค์์ด ํฌํจ๋๋ฉฐ ์ด์ ๊ตญํ๋์ง ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ฟผ๋ฆฌ์ ๋ํ ์๋ต(์:
compilationResults.create
) - ์์ ๊ณต๊ฐ์ Git ์์ (์: Git ์ปค๋ฐ ๊ฐ์ ธ์ค๊ธฐ)
- ์ฌ์ฉ์ ์ฟผ๋ฆฌ์ ๋ํ ์๋ต(์:
Dataform์ Dataform ๋ฆฌ์์ค์๋ง ์ฐ๊ฒฐ๋ ๊ณ ๊ฐ ๋ฐ์ดํฐ์ ์ํธํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. Dataform์ Dataform ์ํฌํ๋ก ์คํ์ ํตํด BigQuery์์ ์์ฑ๋ ๊ณ ๊ฐ ๋ฐ์ดํฐ์ ์ํธํ๋ฅผ ๊ด๋ฆฌํ์ง ์์ต๋๋ค. BigQuery์์ ์์ฑ๋๊ณ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ ค๋ฉด BigQuery์ฉ CMEK๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
์ง์๋๋ ํค
Dataform์ ๋ค์ ์ ํ์ CMEK ํค๋ฅผ ์ง์ํฉ๋๋ค.
- Cloud KMS ์ํํธ์จ์ด ํค
- Cloud ํ๋์จ์ด ๋ณด์ ๋ชจ๋(HSM) ํค
- Cloud ์ธ๋ถ ํค ๊ด๋ฆฌ์(Cloud EKM) ํค
ํค ๊ฐ์ฉ์ฑ์ ํค ์ ํ ๋ฐ ๋ฆฌ์ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. CMEK ํค์ ์ง๋ฆฌ์ ๊ฐ์ฉ์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ Cloud KMS ์์น๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํ์ฌํญ
Dataform์ ๋ค์ ์ ํ์ฌํญ์ด ์๋ CMEK๋ฅผ ์ง์ํฉ๋๋ค.
- CMEK๋ก ์ํธํ๋ ์ ์ฅ์์ ์ต๋ ํฌ๊ธฐ๋ 512MB์ ๋๋ค.
- CMEK๋ก ์ํธํ๋ ์ ์ฅ์์ ์์ ๊ณต๊ฐ ์ต๋ ํฌ๊ธฐ๋ 512MB์ ๋๋ค.
- ์ ์ฅ์๋ฅผ ๋ง๋ ํ์๋ ์ ์ฅ์์ CMEK ๋ณดํธ ํค๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. ์ ์ฅ์๋ฅผ ๋ง๋๋ ๋์์๋ง CMEK ์ํธํ๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.
- ์ ์ฅ์์์ CMEK ๋ณดํธ ํค๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
- ์ ์ฅ์์ CMEK ๋ณดํธ ํค๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- Google Cloud ํ๋ก์ ํธ์ ๊ธฐ๋ณธ Dataform CMEK ํค๋ฅผ ์ค์ ํ๋ฉด Google Cloud ํ๋ก์ ํธ ์์น์ ์์ฑ๋ ๋ชจ๋ ์ ์ ์ฅ์๋ CMEK๋ก ์ํธํํด์ผ ํฉ๋๋ค. Google Cloud ํ๋ก์ ํธ ์์น์ ์ ์ ์ฅ์๋ฅผ ๋ง๋ค ๋๋ ๊ธฐ๋ณธ Dataform CMEK ํค ๋๋ ๋ค๋ฅธ CMEK ํค๋ฅผ ์ ์ฉํ ์ ์์ง๋ง ๊ธฐ๋ณธ ์ ์ฅ ๋ฐ์ดํฐ ์ํธํ๋ ์ ์ฉํ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธ Dataform CMEK ํค์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ๊ธฐ์กด ์ ์ฅ์์๋ ์ด์ ๊ฐ์ด ์ ์ฉ๋๊ณ ๋ณ๊ฒฝ ํ ์์ฑ๋ ์ ์ฅ์์๋ ์ ๋ฐ์ดํธ๋ ๊ฐ์ด ์ ์ฉ๋ฉ๋๋ค.
- ์์น๋ณ๋ก Google Cloud ํ๋ก์ ํธ ์ ์ฅ์์ ํ๋์ ๊ธฐ๋ณธ Dataform CMEK ํค๋ง ์ค์ ํ ์ ์์ต๋๋ค.
- CMEK ์กฐ์ง ์ ์ฑ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๊ฐ์ฉ์ฑ์ ๋ฐ๋ผ Cloud HSM ๋ฐ Cloud EKM ํค ์ฌ์ฉ์ด ๊ฒฐ์ ๋ฉ๋๋ค. ์์น ๊ฐ ํค ๊ฐ์ฉ์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ Cloud KMS ์์น๋ฅผ ์ฐธ์กฐํ์ธ์.
Cloud KMS ํ ๋น๋ ๋ฐ Dataform
Dataform์์ Cloud HSM ํค์ Cloud EKM ํค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Dataform์์ CMEK๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ๋ก์ ํธ์์ Cloud KMS ์ํธํ ์์ฒญ ํ ๋น๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด CMEK๋ก ์ํธํ๋ Dataform ์ ์ฅ์๋ ์ ์ฅ์ ์ฝํ ์ธ ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ด ํ ๋น๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค. CMEK ํค๋ฅผ ์ฌ์ฉํ๋ ์ํธํ ๋ฐ ๋ณตํธํ ์์ ์ ํ๋์จ์ด (Cloud HSM) ๋๋ ์ธ๋ถ(Cloud EKM) ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง Cloud KMS ํ ๋น๋์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Cloud KMS ํ ๋น๋์ ์ฐธ๊ณ ํ์ธ์.
ํค ๊ด๋ฆฌ
๋ชจ๋ ํค ๊ด๋ฆฌ ์์ ์ Cloud KMS๋ฅผ ์ฌ์ฉํฉ๋๋ค. Dataform์ Cloud KMS์์ ์ ํ๋ ๋๊น์ง ์ด๋ค ํค ๋ณ๊ฒฝ์ฌํญ๋ ๊ฐ์งํ๊ฑฐ๋ ๋์ํ ์ ์์ต๋๋ค. ํค ์ฌ์ฉ ์ค์ง ๋๋ ์ญ์ ์ ๊ฐ์ ์ผ๋ถ ์์ ์ ์ ํ๋๋ ๋ฐ ์ต๋ 3์๊ฐ๊น์ง ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ๊ถํ ๋ณ๊ฒฝ์ฌํญ์ ์ผ๋ฐ์ ์ผ๋ก ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ์ ํ๋ฉ๋๋ค.
์ ์ฅ์๋ฅผ ๋ง๋ ํ Dataform์ Cloud KMS๋ฅผ ํธ์ถํ์ฌ ์ํธํ๋ ์ ์ฅ์ ๋ฐ์ดํฐ์ ๋ํ ๊ฐ ์์ ์ค์ ํค๊ฐ ์ฌ์ ํ ์ ํจํ์ง ํ์ธํฉ๋๋ค.
Dataform์์ Cloud KMS ํค๊ฐ ์ฌ์ฉ ์ค์ง๋์๊ฑฐ๋ ์ญ์ ๋ ๊ฒ์ผ๋ก ๊ฐ์ง๋๋ฉด ํด๋น ์ ์ฅ์์ ์ ์ฅ๋ ๋ชจ๋ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์๊ฒ ๋ฉ๋๋ค.
Dataform์ ํตํ Cloud KMS ํธ์ถ๋ก ์ด์ ์ ์ฌ์ฉ ์ค์ง๋ ํค๊ฐ ๋ค์ ์ฌ์ฉ ์ค์ ๋ ๊ฒ์ผ๋ก ํ์ธ๋๋ฉด Dataform์ด ์๋์ผ๋ก ์ก์ธ์ค๋ฅผ ๋ณต์ํฉ๋๋ค.
Cloud EKM์์ ์ธ๋ถ ํค ์ฌ์ฉ
Cloud KMS์ ์๋ ํค๋ฅผ ์ฌ์ฉํ๋ ๋์ ์ง์๋๋ ์ธ๋ถ ํค ๊ด๋ฆฌ ํํธ๋์ ์๋ ํค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด Cloud ์ธ๋ถ ํค ๊ด๋ฆฌ์ (Cloud EKM)๋ฅผ ์ฌ์ฉํ์ฌ Google Cloud์ธ๋ถ์ ์๋ ํค์ ๋ํ ํฌ์ธํฐ์ธ ์ธ๋ถ ํค๋ฅผ ๋ง๋ค๊ณ ๊ด๋ฆฌํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Cloud ์ธ๋ถ ํค ๊ด๋ฆฌ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Cloud EKM์ผ๋ก ์ธ๋ถ ํค๋ฅผ ๋ง๋ ํ ์ ์ฅ์๋ฅผ ๋ง๋ค ๋ ํด๋น ํค์ ID๋ฅผ ์ ๊ณตํ์ฌ ์ Dataform ์ ์ฅ์์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด ์ ์ฐจ๋ ์ ์ ์ฅ์์ Cloud KMS ํค๋ฅผ ์ ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค.
Dataform ๊ธฐ๋ณธ CMEK ํค ์ฌ์ฉ
๋์ผํ CMEK ํค๋ก ์ฌ๋ฌ Dataform ์ ์ฅ์๋ฅผ ์ํธํํ๋ ค๋ฉด Google Cloud ํ๋ก์ ํธ์ ๊ธฐ๋ณธ Dataform CMEK ํค๋ฅผ ์ค์ ํ๋ฉด ๋ฉ๋๋ค. ๊ธฐ๋ณธ Dataform CMEK ํค์ Google Cloud ํ๋ก์ ํธ ์์น๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. Google Cloud ํ๋ก์ ํธ๋น ํ๋์ ๊ธฐ๋ณธ CMEK ํค๋ง ์ค์ ํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ Dataform CMEK ํค๋ฅผ ์ค์ ํ๋ฉด Dataform์ ๊ธฐ๋ณธ์ ์ผ๋ก Google Cloud ํ๋ก์ ํธ ์์น์ ์์ฑ๋ ๋ชจ๋ ์ ์ ์ฅ์์ ํค๋ฅผ ์ ์ฉํฉ๋๋ค. ์ ์ฅ์๋ฅผ ๋ง๋ค ๋ ๊ธฐ๋ณธ ํค๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ค๋ฅธ CMEK ํค๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ฌ์ฉํ ์ ์๋ ํค ์ํ์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
๋๋ฌธ ๊ฒฝ์ฐ์ง๋ง Cloud KMS๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๊ฐ ์ค์๋ Dataform์ด Cloud KMS์์ ํค ์ํ๋ฅผ ๊ฒ์ํ์ง ๋ชปํ ์ ์์ต๋๋ค.
Dataform์ด Cloud KMS์ ํต์ ํ ์ ์๊ฒ ๋ ์์ ์ ์ฌ์ฉ ์ค์ ๋ ํค๋ก Dataform ์ ์ฅ์๊ฐ ๋ณดํธ๋๋ ๊ฒฝ์ฐ์๋ ์ํธํ๋ ์ ์ฅ์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์๊ฒ ๋ฉ๋๋ค.
Dataform์ด Cloud KMS์ ๋ค์ ์ฐ๊ฒฐํ ์ ์๊ณ Cloud KMS์์ ํค๊ฐ ํ์ฑ ์ํ๋ผ๊ณ ์๋ตํ ๋๊น์ง ์ํธํ๋ ์ ์ฅ์ ๋ฐ์ดํฐ๊ฐ ์ก์ธ์คํ ์ ์๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
๋ฐ๋๋ก Dataform์ด ์ฒ์์ผ๋ก Cloud KMS์ ํต์ ํ ์ ์๊ฒ ๋ ์์ ์ ์ค์ง๋ ํค๋ก Dataform ์ ์ฅ์๊ฐ ๋ณดํธ๋๋ ๊ฒฝ์ฐ์๋ Cloud KMS์ ๋ค์ ์ฐ๊ฒฐํ ์ ์๊ณ ์ฌ์ฉ์๊ฐ ํค๋ฅผ ๋ค์ ์ฌ์ฉ ์ค์ ํ ๋๊น์ง ์ํธํ๋ ์ ์ฅ์ ๋ฐ์ดํฐ๊ฐ ์ก์ธ์คํ ์ ์๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
๋ก๊น
ํ๋ก์ ํธ์์ Cloud KMS API์ ๋ํด ๊ฐ์ฌ ๋ก๊น ์ ์ฌ์ฉ ์ค์ ํ ๊ฒฝ์ฐ Cloud Logging์์ ์ฌ์ฉ์ ๋์ Dataform์ด Cloud KMS์ ์ ์กํ๋ ์์ฒญ์ ๊ฐ์ฌํ ์ ์์ต๋๋ค. ์ด๋ฌํ Cloud KMS ๋ก๊ทธ ํญ๋ชฉ์ Cloud Logging์์ ํ์ธํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก๊ทธ ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์์ํ๊ธฐ ์ ์
Dataform๊ณผ Cloud KMS๋ฅผ ๋ค๋ฅธ ํ๋ก์ ํธ์์ ์คํํ ์ง ๋๋ ๋์ผํ ํ๋ก์ ํธ์์ ์คํํ ์ง ๊ฒฐ์ ํฉ๋๋ค. ๊ถํ์ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ์ ์ดํ๋ ค๋ฉด ๋ณ๋์ ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. Google Cloud ํ๋ก์ ํธ ID ๋ฐ ํ๋ก์ ํธ ๋ฒํธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ ์๋ณ์ ์ฐธ์กฐํ์ธ์.
Cloud KMS๋ฅผ ์คํํ๋ Google Cloud ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๋ค์์ ์ํํฉ๋๋ค.
- Cloud Key Management Service API ์ฌ์ฉ ์ค์
- ํค๋ง ๋ฐ ํค ๋ง๋ค๊ธฐ์ ์ค๋ช
๋๋ก ํค๋ง๊ณผ ํค๋ฅผ ๋ง๋ญ๋๋ค. Dataform ์ ์ฅ์์ ์์น์ ์ผ์นํ๋ ์์น์์ ํค๋ง์ ๋ง๋ญ๋๋ค.
-
์ ์ฅ์๋ ์ผ์นํ๋ ๋ฆฌ์ ํค๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด
asia-northeast3
๋ฆฌ์ ์ ์ ์ฅ์๋asia-northeast3
์ ์๋ ํค๋ง์ ํค๋ก ๋ณดํธํด์ผ ํฉ๋๋ค. -
global
๋ฆฌ์ ์ Dataform๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
์ ์ฅ์๋ ์ผ์นํ๋ ๋ฆฌ์ ํค๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด
CMEK ์ฌ์ฉ ์ค์
์ฌ์ฉ์๊ฐ Cloud KMS CryptoKey ์ํธํ/๋ณตํธํ(roles/cloudkms.cryptoKeyEncrypterDecrypter
) ์ญํ ์ ๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ์ ๋ถ์ฌํ ํ Dataform์ด ์ฌ์ฉ์ ๋์ ํค์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ID์ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ์ CryptoKey ์ํธํ/๋ณตํธํ ์ญํ ์ ๋ถ์ฌํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
Google Cloud ์ฝ์์์ ํค ๊ด๋ฆฌ ํ์ด์ง๋ฅผ ์ฝ๋๋ค.
ํค๊ฐ ํฌํจ๋ ํค๋ง์ ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
์ญํ ์ ์ถ๊ฐํ ์ํธํ ํค์ ์ฒดํฌ๋ฐ์ค๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ถํ ํญ์ด ์ด๋ฆฝ๋๋ค.
๊ตฌ์ฑ์ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- ์๋น์ค ๊ณ์ ์ด ๊ตฌ์ฑ์ ๋ชฉ๋ก์ ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ ๊ธฐ์กด ์ญํ ์ด ์๋ ๊ฒ์ ๋๋ค. ์๋น์ค ๊ณ์ ์ ํ์ฌ ์ญํ ๋๋กญ๋ค์ด ๋ชฉ๋ก์ ํด๋ฆญํฉ๋๋ค.
์ญํ ์ ํ ๋๋กญ๋ค์ด ๋ชฉ๋ก์์ Cloud KMS๋ฅผ ํด๋ฆญํ ํ Cloud KMS CryptoKey ์ํธํ/๋ณตํธํ ์ญํ ์ ํด๋ฆญํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํ์ฌ ์๋น์ค ๊ณ์ ์ ์ญํ ์ ์ ์ฉํฉ๋๋ค.
gcloud
Google Cloud CLI๋ฅผ ์ฌ์ฉํ์ฌ ์ญํ ์ ํ ๋นํ ์ ์์ต๋๋ค.
gcloud kms keys add-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY
๋ค์์ ๋ฐ๊ฟ๋๋ค.
KMS_PROJECT_ID
: Cloud KMS๋ฅผ ์คํํ๋ Google Cloudํ๋ก์ ํธ์ IDSERVICE_ACCOUNT
: ๊ธฐ๋ณธ Dataform ์๋น์ค ๊ณ์ ์ ์ด๋ฉ์ผ ์ฃผ์KMS_KEY_LOCATION
: Cloud KMS ํค์ ์์น ์ด๋ฆKMS_KEY_RING
: Cloud KMS ํค์ ํค๋ง ์ด๋ฆKMS_KEY
: Cloud KMS ํค์ ํค ์ด๋ฆ
CMEK ์กฐ์ง ์ ์ฑ ์ ์ฉ
Dataform์ ์กฐ์ง ์ ๋ฐ์ CMEK ์ฌ์ฉ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ ๊ฐ์ง ์กฐ์ง ์ ์ฑ ์ ์ฝ ์กฐ๊ฑด๊ณผ ํตํฉ๋ฉ๋๋ค.
constraints/gcp.restrictNonCmekServices
๋ CMEK ๋ณดํธ๋ฅผ ์๊ตฌํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.constraints/gcp.restrictCmekCryptoKeyProjects
๋ CMEK ๋ณดํธ์ ์ฌ์ฉ๋๋ Cloud KMS ํค๋ฅผ ์ ํํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์ด ํตํฉ์ ์ฌ์ฉํ๋ฉด ์กฐ์ง์ Dataform ์ ์ฅ์์ ๋ํด ๋ค์ ์ํธํ ๊ท์ ์ค์ ์๊ตฌ์ฌํญ์ ์ง์ ํ ์ ์์ต๋๋ค.
์กฐ์ง ์ ์ฑ ์ ์ฉ ์ ๊ณ ๋ ค์ฌํญ
CMEK ์กฐ์ง ์ ์ฑ ์ ์ ์ฉํ๊ธฐ ์ ์ ์์๋์ด์ผ ํ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ํ ์ง์ฐ ๋๋น
์กฐ์ง ์ ์ฑ ์ ์ค์ ํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ ํ ์ ์ ์ฑ ์ด ์ ์ฉ๋๋ ๋ฐ ์ต๋ 15๋ถ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๊ธฐ์กด ๋ฆฌ์์ค ๊ณ ๋ ค
๊ธฐ์กด ๋ฆฌ์์ค์๋ ์๋ก ์์ฑ๋ ์กฐ์ง ์ ์ฑ ์ด ์ ์ฉ๋์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์กฐ์ง ์ ์ฑ ์ ๊ธฐ์กด ์ ์ฅ์์ ์๊ธ ์ ์ฉ๋์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ฆฌ์์ค๋ CMEK ์์ด๋ ์ก์ธ์คํ ์ ์์ผ๋ฉฐ, ํด๋นํ๋ ๊ฒฝ์ฐ ๊ธฐ์กด ํค๋ก ๊ณ์ ์ํธํ๋ฉ๋๋ค.
์กฐ์ง ์ ์ฑ ์ ์ค์ ํ๋ ๋ฐ ํ์ํ ๊ถํ ํ์ธ
ํ ์คํธ ๋ชฉ์ ์ผ๋ก๋ ์กฐ์ง ์ ์ฑ ์ ์ค์ ํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ ์ ์๋ ๊ถํ์ ํ๋ํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์กฐ์ง ์ ์ฑ ๊ด๋ฆฌ์ ์ญํ ์ ๋ถ์ฌ๋ฐ์์ผ ํ๋ฉฐ, ์ด ์ญํ ์ ํ๋ก์ ํธ ๋๋ ํด๋ ์์ค์ด ์๋ ์กฐ์ง ์์ค์์๋ง ๋ถ์ฌํ ์ ์์ต๋๋ค.
์กฐ์ง ์์ค์์ ์ญํ ์ ๋ถ์ฌ๋ฐ์์ผ ํ์ง๋ง ํน์ ํ๋ก์ ํธ๋ ํด๋์๋ง ์ ์ฉ๋๋ ์ ์ฑ ์ ์ง์ ํ ์ ์์ต๋๋ค.
๋ชจ๋ ์ Dataform ์ ์ฅ์์ CMEK ํ์
constraints/gcp.restrictNonCmekServices
์ ์ฝ์กฐ๊ฑด์ ์ฌ์ฉํ์ฌ ์กฐ์ง์ ๋ชจ๋ ์ Dataform ์ ์ฅ์๋ฅผ ๋ณดํธํ๋ ๋ฐ CMEK๋ฅผ ์ฌ์ฉํ๋๋ก ์๊ตฌํ ์ ์์ต๋๋ค.
์ด ์กฐ์ง ์ ์ฑ ์ ์ค์ ํ๋ฉด ์ง์ ๋ Cloud KMS ํค๊ฐ ์๋ ๋ชจ๋ ๋ฆฌ์์ค ๋ง๋ค๊ธฐ ์์ฒญ์ด ์คํจํฉ๋๋ค.
์ด ์ ์ฑ ์ ์ค์ ํ๋ฉด ํ๋ก์ ํธ์ ์ ์ ์ฅ์์๋ง ์ ์ฉ๋ฉ๋๋ค. Cloud KMS ํค๊ฐ ์ ์ฉ๋์ง ์์ ๊ธฐ์กด ์ ์ฅ์๋ ๊ณ์ ์กด์ฌํ๋ฉฐ ๋ฌธ์ ์์ด ์ก์ธ์คํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ์กฐ์ง ์ ์ฑ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ์ ์ฝ์กฐ๊ฑด์ ๊ฒ์ํฉ๋๋ค.
constraints/gcp.restrictNonCmekServices
์ด๋ฆ ์ด์์ CMEK ์์ด ๋ฆฌ์์ค๋ฅผ ๋ง๋ค ์ ์๋ ์๋น์ค ์ ํ์ ํด๋ฆญํฉ๋๋ค.
์ ์ฑ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ ์ฑ ์์ ํ์ด์ง์ ์ ์ฑ ์์ค์์ ์์ ์ ์ฑ ์ฌ์ ์๋ฅผ ์ ํํฉ๋๋ค.
๊ท์น์์ ๊ท์น ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ ์ฑ ๊ฐ ๋ชฉ๋ก์์ ์ปค์คํ ์ ์ ํํฉ๋๋ค.
์ ์ฑ ์ ํ ๋ชฉ๋ก์์ ๊ฑฐ๋ถ๋ฅผ ์ ํํฉ๋๋ค.
์ปค์คํ ๊ฐ ํ๋์ ๋ค์์ ์ ๋ ฅํฉ๋๋ค.
is:dataform.googleapis.com
์๋ฃ๋ฅผ ํด๋ฆญํ ๋ค์ ์ ์ฑ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
gcloud
์ ์ฑ ์ ์ ์ฅํ
/tmp/policy.yaml
์์ ํ์ผ์ ๋ง๋ญ๋๋ค.name: projects/PROJECT_ID/policies/gcp.restrictNonCmekServices spec: rules: - values: deniedValues: - is:dataform.googleapis.com
PROJECT_ID
๋ฅผ ์ด ์ ์ฝ์กฐ๊ฑด์ ์ ์ฉํ๋ ํ๋ก์ ํธ์ ID๋ก ๋ฐ๊ฟ๋๋ค.org-policies set-policy
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.gcloud org-policies set-policy /tmp/policy.yaml
์ ์ฑ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ ์ฉ๋์๋์ง ํ์ธํ๋ ค๋ฉด ํ๋ก์ ํธ์ Dataform ์ ์ฅ์๋ฅผ ๋ง๋ค์ด ๋ณด๋ฉด ๋ฉ๋๋ค. Cloud KMS ํค๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ํ๋ก์ธ์ค๊ฐ ์คํจํฉ๋๋ค.
Dataform ํ๋ก์ ํธ์ Cloud KMS ํค ์ ํ
constraints/gcp.restrictCmekCryptoKeyProjects
์ ์ฝ์กฐ๊ฑด์ ์ฌ์ฉํ์ฌ Dataform ํ๋ก์ ํธ์ ์ ์ฅ์๋ฅผ ๋ณดํธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ Cloud KMS ํค๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด 'projects/my-company-data-project
์ ๋ชจ๋ Dataform ์ ์ฅ์์ ๋ํด ์ด ํ๋ก์ ํธ์์ ์ฌ์ฉ๋๋ Cloud KMS ํค๋ projects/my-company-central-keys
๋๋ projects/team-specific-keys
์์ ๊ฐ์ ธ์์ผ ํ๋ค'์ ๊ฐ์ ๊ท์น์ ์ง์ ํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ์กฐ์ง ์ ์ฑ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ์ ์ฝ์กฐ๊ฑด์ ๊ฒ์ํฉ๋๋ค.
constraints/gcp.restrictCmekCryptoKeyProjects
์ด๋ฆ ์ด์์ CMEK์ฉ KMS CryptoKey๋ฅผ ์ ๊ณตํ ์ ์๋ ํ๋ก์ ํธ ์ ํ์ ํด๋ฆญํฉ๋๋ค.
์ ์ฑ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ ์ฑ ์์ ํ์ด์ง์ ์ ์ฑ ์์ค์์ ์์ ์ ์ฑ ์ฌ์ ์๋ฅผ ์ ํํฉ๋๋ค.
๊ท์น์์ ๊ท์น ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ ์ฑ ๊ฐ ๋ชฉ๋ก์์ ์ปค์คํ ์ ์ ํํฉ๋๋ค.
์ ์ฑ ์ ํ ๋ชฉ๋ก์์ ํ์ฉ์ ์ ํํฉ๋๋ค.
์ปค์คํ ๊ฐ ํ๋์ ๋ค์์ ์ ๋ ฅํฉ๋๋ค.
under:projects/KMS_PROJECT_ID
KMS_PROJECT_ID
๋ฅผ ์ฌ์ฉํ๋ ค๋ Cloud KMS ํค๊ฐ ์๋ ํ๋ก์ ํธ์ ID๋ก ๋ฐ๊ฟ๋๋ค.์๋ฅผ ๋ค๋ฉด
under:projects/my-kms-project
์ ๋๋ค.์๋ฃ๋ฅผ ํด๋ฆญํ ๋ค์ ์ ์ฑ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
gcloud
์ ์ฑ ์ ์ ์ฅํ
/tmp/policy.yaml
์์ ํ์ผ์ ๋ง๋ญ๋๋ค.name: projects/PROJECT_ID/policies/gcp.restrictCmekCryptoKeyProjects spec: rules: - values: allowedValues: - under:projects/KMS_PROJECT_ID
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: ์ด ์ ์ฝ์กฐ๊ฑด์ ์ ์ฉํ๋ ํ๋ก์ ํธ์ IDKMS_PROJECT_ID
: ์ฌ์ฉํ๋ ค๋ Cloud KMS ํค๊ฐ ์๋ ํ๋ก์ ํธ์ ID
org-policies set-policy
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.gcloud org-policies set-policy /tmp/policy.yaml
์ ์ฑ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ ์ฉ๋์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค๋ฅธ ํ๋ก์ ํธ์ Cloud KMS ํค๋ฅผ ์ฌ์ฉํ์ฌ Dataform ์ ์ฅ์๋ฅผ ๋ง๋ค์ด ๋ณด๋ฉด ๋ฉ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์คํจํ ๊ฒ์ ๋๋ค.
๊ธฐ๋ณธ Dataform CMEK ํค ์ค์
Google Cloud ํ๋ก์ ํธ์ ๊ธฐ๋ณธ Dataform CMEK ํค๋ฅผ ์ค์ ํ๋ฉด ๋์ผํ CMEK ํค๋ก ์ฌ๋ฌ ์ ์ฅ์๋ฅผ ์ํธํํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Dataform ์ ์ฅ์์ ๊ธฐ๋ณธ ํค ์ฌ์ฉ์ ์ฐธ๊ณ ํ์ธ์.
๊ธฐ๋ณธ CMEK ํค๋ฅผ ์ค์ ํ๊ฑฐ๋ ์์ ํ๋ ค๋ฉด ๋ค์ ์์ฒญ์์ Dataform API๋ฅผ ํธ์ถํ์ธ์.
curl -X PATCH \
-H "Content-Type: application/json" \
-d '{"defaultKmsKeyName":"projects/PROJECT_ID/locations/PROJECT_LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY"}' \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- KMS_KEY_RING: Cloud KMS ํค์ ํค๋ง ์ด๋ฆ
- KMS_KEY: Cloud KMS ํค์ ์ด๋ฆ
- PROJECT_ID: Google Cloud ํ๋ก์ ํธ์ ID์ ๋๋ค.
- PROJECT_LOCATION: Google Cloud ํ๋ก์ ํธ์ ์์น ์ด๋ฆ์ ๋๋ค.
๊ธฐ๋ณธ Dataform CMEK ํค ์ญ์
Google Cloud ํ๋ก์ ํธ์์ ๊ธฐ๋ณธ Dataform CMEK ํค๋ฅผ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ์์ฒญ์์ Dataform API๋ฅผ ํธ์ถํ์ธ์.
curl -X PATCH \
-H "Content-Type: application/json" \
-d '{"defaultKmsKeyName":""}' \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: Google Cloud ํ๋ก์ ํธ์ ID์ ๋๋ค.
- PROJECT_LOCATION: ๊ธฐ๋ณธ CMEK๋ฅผ ์ค์ ํด์ ํ๋ ค๋ Google Cloud ํ๋ก์ ํธ์ ์์น ์ด๋ฆ
๊ธฐ๋ณธ Dataform CMEK ํค๊ฐ ์ค์ ๋์ด ์๋์ง ํ์ธ
Google Cloud ํ๋ก์ ํธ์ ๊ธฐ๋ณธ Dataform CMEK ํค๊ฐ ์ค์ ๋์ด ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ์์ฒญ์์ Dataform API๋ฅผ ํธ์ถํ์ธ์.
curl -X GET \
-H "Content-Type: application/json" \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: Google Cloud ํ๋ก์ ํธ์ ID์ ๋๋ค.
- PROJECT_LOCATION: Google Cloud ํ๋ก์ ํธ์ ์์น ์ด๋ฆ์ ๋๋ค.
์ ์ฅ์์ CMEK ์ ์ฉ
์ ์ฅ์๋ฅผ ๋ง๋๋ ๋์ Dataform ์ ์ฅ์์ CMEK ๋ณดํธ๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.
Dataform ์ ์ฅ์์ CMEK ์ํธํ๋ฅผ ์ ์ฉํ๋ ค๋ฉด ์ ์ฅ์๋ฅผ ๋ง๋ค ๋ ๊ธฐ๋ณธ Dataform CMEK ํค๋ก ์ํธํ๋ฅผ ์ ํํ๊ฑฐ๋ ๊ณ ์ ํ Cloud KMS ํค๋ฅผ ์ง์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ ์ฅ์ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ์ฅ์๋ฅผ ๋ง๋ ํ์๋ Dataform ์ ์ฅ์์ ์ํธํ ๋ฉ์ปค๋์ฆ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์ ํ์ฌํญ์ ์ฐธ์กฐํ์ธ์.
๋ค์ ๋จ๊ณ
- CMEK์ ๋ํ ์์ธํ ๋ด์ฉ์ CMEK ๊ฐ์ ์ฐธ์กฐํ๊ธฐ
- Cloud KMS ํ ๋น๋์ ๋ํ ์์ธํ ๋ด์ฉ์ Cloud KMS ํ ๋น๋ ์ฐธ์กฐํ๊ธฐ
- Cloud KMS ๊ฐ๊ฒฉ ์ฑ ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ Cloud KMS ๊ฐ๊ฒฉ ์ฑ ์ ์ฐธ์กฐํ๊ธฐ
- Dataform ์ ์ฅ์์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์ ์ฅ์ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์ธ์.