์ œํ•œ๋œ Google Cloud ํ™˜๊ฒฝ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ

Google ๋ฌธ์„œ๋Š” ์ œํ’ˆ ๋˜๋Š” ๊ธฐ๋Šฅ์„ ์ค€๋น„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ์ž‘์„ฑ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€๋งŒ ์กฐ์ง์ด ๋ณด์•ˆ ์ œ์•ฝ์กฐ๊ฑด์„ ์ ์šฉํ•˜๋ฉด ์ผ๋ถ€ ๋ฌธ์„œ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์‚ฌ๋Š” Cloud Foundation Toolkit, Google Cloud ๋ณด์•ˆ ์ฒญ์‚ฌ์ง„์˜ ์ผ๋ถ€ ๋ณด์•ˆ ์ œ์•ฝ์กฐ๊ฑด์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์ž์ฒด์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋„์›€๋ง์€ ๋ณด์•ˆ ์ œ์•ฝ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋Š” ์กฐ์ง์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์˜ค๋ฅ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋ณด์•ˆ ์ œ์•ฝ์กฐ๊ฑด ๋ฌธ์ œ ํ•ด๊ฒฐ

IT ์šด์˜ํŒ€ ๋˜๋Š” ๋ณด์•ˆํŒ€์—์„œ ์กฐ์ง ์ •์ฑ…์„ ํ†ตํ•ด ๋ณด์•ˆ ์ œ์•ฝ์กฐ๊ฑด์„ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œ์•ฝ์กฐ๊ฑด์€ ์กฐ์ง์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” API ์š”์ฒญ์„ ์‹คํ–‰ํ•˜๋ฉด API ์‘๋‹ต์€ ํ•ด๋‹น ์˜ค๋ฅ˜๊ฐ€ ์ •์ฑ… ์œ„๋ฐ˜์œผ๋กœ ์ธํ•œ ๊ฒƒ์ธ์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์‘๋‹ต์€ ์œ„๋ฐ˜๋˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์„ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ์œ„๋ฐ˜ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๊ณ  ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. API ์‘๋‹ต ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ๊ฐ€ ์–ด๋–ค ๋ณด์•ˆ ์ œ์•ฝ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

    ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” sql.restrictPublicIp ์ œ์•ฝ์กฐ๊ฑด์ด ๋ฌธ์ œ์ž„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

    Organization Policy check failure
    The external IP of this instance violates the constraints/sql.restrictPublicIp enforced
    
  2. ์ •์ฑ… ์œ„๋ฐ˜์„ ์ดํ•ดํ•˜๋Š” ๊ฒฝ์šฐ ์ œ์•ฝ์กฐ๊ฑด ๋‚ด์—์„œ ์ž‘๋™ํ•˜๋„๋ก ๋ฆฌ์†Œ์Šค ๋ฐฐํฌ ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    ์™ธ๋ถ€ ๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์ œํ•œํ•˜๋Š” ์œ„์˜ ์˜ˆ์‹œ์—์„œ ๋‚ด๋ถ€ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  3. ์ œ์•ฝ์กฐ๊ฑด์ด ์ ์šฉ๋˜๋Š” ์ด์œ ๋‚˜ ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด ๋ณด์•ˆํŒ€๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ ์กฐ์ง์˜ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ์ •์ฑ…์ด ์ ์šฉ๋˜๋Š” ์œ„์น˜์™€ ๊ถŒ์žฅ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

    Terraform ํ…œํ”Œ๋ฆฟ๊ณผ ๊ฐ™์€ ๋ฐฐํฌ ํ…œํ”Œ๋ฆฟ์ด ์กฐ์ง์— ๊ณต์œ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ…œํ”Œ๋ฆฟ์€ Google Cloud ์ธํ”„๋ผ๊ฐ€ ๊ตฌ์„ฑ๋œ ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฐํฌ๋ฅผ ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ๋ณด์•ˆ ์ œ์•ฝ์กฐ๊ฑด ๋ฌธ์ œ

Google Cloud์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ๋•Œ ๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request:
Organization Policy check failure: the external IP of this instance violates the
constraints/sql.restrictPublicIp enforced at the 123456789 project.

์ด ์˜ˆ์‹œ์—์„œ๋Š” ์™ธ๋ถ€ ๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์— ์ ์šฉ๋˜๋Š” ์ •์ฑ…์—์„œ ๋ณด์•ˆ ์ œ์•ฝ์กฐ๊ฑด์ด ์ ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ๋ณด์•ˆ ์ œ์•ฝ์กฐ๊ฑด์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ณ  API ์˜ค๋ฅ˜ ์‘๋‹ต์—์„œ ์ž์„ธํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Compute Engine

์ œ์•ฝ์กฐ๊ฑด ์ด๋ฆ„ ๊ตฌํ˜„ ์ด์œ  ์ถ”์ฒœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
constraints/compute.disableNestedVirtualization KVM ํ˜ธํ™˜ ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ VM ๋‚ด์— ์„ค์น˜ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋™์ž‘์€ ์ ์ ˆํ•œ ํŒจ์น˜ ์ ์šฉ ๋ฐ ๊ด€๋ฆฌ ์—†์ด ๋ณด์•ˆ ์œ„ํ—˜์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ์ค‘์ฒฉ ๊ฐ€์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก VM์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ Intel Haswell ์ด์ƒ์˜ CPU ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  Compute Engine VM์— ์ด ๊ธฐ๋Šฅ์ด ์‚ฌ์šฉ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
constraints/compute.requireShieldedVm ๋ณด์•ˆ ๋ถ€ํŒ…, vTPM, ๋ฌด๊ฒฐ์„ฑ ๋ชจ๋‹ˆํ„ฐ๋ง ์˜ต์…˜์ด ์‚ฌ์šฉ ์„ค์ •๋œ ์ƒํƒœ๋กœ ๋ณด์•ˆ ๋””์Šคํฌ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ƒˆ VM ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ต์…˜์€ VM์ด ์กฐ์ž‘๋˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์•ก์„ธ์Šค ๋˜๋Š” ์ˆ˜์ •๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. VM์„ ๋งŒ๋“ค ๋•Œ ๋ณด์•ˆ VM์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜์ง€ ๋งˆ์„ธ์š”.

GKE ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋ณด์•ˆ GKE ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Dataflow๋Š” ํ˜„์žฌ ๋ณด์•ˆ VM ์ž‘์—…์ž๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
constraints/compute.disableSerialPortAccess VM๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ฑฐ๋‚˜ ๊ณต๊ฒฉ์„ ํ˜•์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง„๋‹จ ์ถœ๋ ฅ์„ ๋ณด๋ ค๋ฉด ๋ณด์•ˆ ๋ฒกํ„ฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. VM์„ ๋งŒ๋“ค ๋•Œ ์ง๋ ฌ ํฌํŠธ ์•ก์„ธ์Šค๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜์ง€ ๋งˆ์„ธ์š”.
constraints/compute.disableGuestAttributesAccess ์•…์„ฑ ์•ฑ์—์„œ ์•…์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ํ˜ธ์ŠคํŠธ ๋ฐ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ •๋ณด ์–‘์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค. Compute Engine VM์˜ ๊ฒŒ์ŠคํŠธ ์†์„ฑ์„ ์ฝ๊ธฐ ์œ„ํ•ด Compute Engine API๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”.
constraints/compute.vmExternalIpAccess ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์™ธ๋ถ€ IP ์ฃผ์†Œ๋กœ ์‹คํ–‰๋˜๊ณ  ์ธํ„ฐ๋„ท์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. VM์˜ ์™ธ๋ถ€ IP ์•ก์„ธ์Šค๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GKE๋Š” ๊ณต๊ฐœ IP ์ฃผ์†Œ ์—†์ด ๋น„๊ณต๊ฐœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Dataprep๊ณผ Dataflow๋Š” ํ˜„์žฌ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ๋ฐ IP ์ฃผ์†Œ

์ œ์•ฝ์กฐ๊ฑด ์ด๋ฆ„ ๊ตฌํ˜„ ์ด์œ  ์ถ”์ฒœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
constraints/compute.skipDefaultNetworkCreation ํšŒ์‚ฌ ๊ด€๋ฆฌ Virtual Private Cloud(VPC)๋งŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ๋˜๋Š” ํ•„ํ„ฐ๋ง ๊ทœ์น™์ด ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ง์˜ ๊ธฐ์กด VPC์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ ์ƒ์„ฑ๋œ ๊ธฐ๋ณธ VPC๋Š” ์ƒˆ ํ”„๋กœ์ ํŠธ์— ๋ฐฐํฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
constraints/compute.restrictXpnProjectLienRemoval ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ณต์œ  VPC๊ฐ€ ์‹ค์ˆ˜๋กœ ์‚ญ์ œ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ  VPC๋ฅผ ์‚ญ์ œํ•˜์ง€ ๋งˆ์„ธ์š”. ์‚ญ์ œํ•  ์˜ฌ๋ฐ”๋ฅธ ๋ฆฌ์†Œ์Šค๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
constraints/sql.restrictPublicIp Cloud SQL ์ธ์Šคํ„ด์Šค๊ฐ€ ์™ธ๋ถ€ IP ์ฃผ์†Œ๋กœ ์‹คํ–‰๋˜๊ณ  ์ธํ„ฐ๋„ท์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜์ง€ ๋งˆ์„ธ์š”.

๋Œ€์‹  ๋‚ด๋ถ€ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜์„ธ์š”.

ID ๋ฐ ์ธ์ฆ

์ œ์•ฝ์กฐ๊ฑด ์ด๋ฆ„ ๊ตฌํ˜„ ์ด์œ  ์ถ”์ฒœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
constraints/iam.disableServiceAccountKeyCreation ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๊ฐ€ ๋…ธ์ถœ๋˜๋ฉด ๋ณด์•ˆ ์œ„ํ—˜์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‚ด๋ณด๋‚ด์ง€ ๋ชปํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ๋” ์•ˆ์ „ํ•œ ๋Œ€์•ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.
constraints/storage.uniformBucketLevelAccess Identity and Access Management(IAM)๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ ์Šคํ† ๋ฆฌ์ง€ ๋ฒ„ํ‚ท์— ์ž˜๋ชป๋˜๊ฑฐ๋‚˜ ์ผ๊ด€์„ฑ ์—†๋Š” ๊ถŒํ•œ์ด ์ ์šฉ๋  ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ท ์ผํ•œ ๋ฒ„ํ‚ท ์ˆ˜์ค€ ์•ก์„ธ์Šค๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜์—ฌ Cloud Storage ๋ฒ„ํ‚ท์„ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค.
constraints/iam.allowedPolicyMemberDomains Google Cloud ๋ฆฌ์†Œ์Šค ์•ก์„ธ์Šค๋ฅผ ์Šน์ธ๋œ ๋„๋ฉ”์ธ์œผ๋กœ๋งŒ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ์Šน์ธ๋œ ๋„๋ฉ”์ธ ์ค‘ ํ•˜๋‚˜์—์„œ ๊ณ„์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์ œ์•ฝ์กฐ๊ฑด์— ๋Œ€ํ•ด ์•Œ๋ ค์ง„ ๋ฌธ์ œ๊ฐ€ ์ถ”๊ฐ€๋กœ ์žˆ์Šต๋‹ˆ๋‹ค.

API ์‘๋‹ต ์˜ค๋ฅ˜ ์˜ˆ์‹œ

Cloud SQL๋กœ ์™ธ๋ถ€ ๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์ œํ•œํ•˜๋Š” ์•ž์˜ ์˜ˆ์‹œ์—์„œ๋Š” ์ •์ฑ… ์œ„๋ฐ˜์œผ๋กœ ์ธํ•ด API๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ž์„ธํ•œ ์˜ˆ์‹œ์—์„œ๋Š” ์š”์ฒญ์„ ์‹คํŒจํ•˜๊ฒŒ ํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์„ ์•Œ๋ ค์ฃผ๋Š” API ์‘๋‹ต์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ž์ฒด API ์‘๋‹ต์„ ๊ฒ€ํ† ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๊ฐ€ ์‹คํŒจํ•œ ์ด์œ ๋ฅผ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.

Google Cloud CLI์—์„œ Cloud SQL ์‹คํŒจ:

$ gcloud alpha sql instances create mysql-node --project my-sql-project

ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request:
Organization Policy check failure: the external IP of this instance violates the
constraints/sql.restrictPublicIp enforced at the 123456789 project.

Terraform์„ ์‚ฌ์šฉํ•œ Cloud SQL ์‹คํŒจ:

$ terraform apply plan.out

[...]
module.mysql-db.google_sql_database_instance.default: Creating...

Error: Error, failed to create instance backend01-db-1c81e0e3: googleapi:
Error 400: Invalid request: Organization Policy check failure: the external IP
of this instance violates the constraints/sql.restrictPublicIp enforced at the
123456789 project., invalid

ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋œ ์กฐ์ง ์ •์ฑ… ๋‚˜์—ด

ํ”„๋กœ์ ํŠธ๋Š” ํด๋” ๋˜๋Š” ์กฐ์ง ์ˆ˜์ค€์—์„œ ์ •์ฑ…์„ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ์—ญํ• ์— ๋”ฐ๋ผ ์œ„๋ฐ˜๋œ ์ œ์•ฝ์กฐ๊ฑด์ด ์ ์šฉ๋˜๋Š” ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ณ„์ธต ๊ตฌ์กฐ์˜ ๋” ๋†’์€ ์ˆ˜์ค€์—์„œ ์‹œํ–‰๋˜๋Š” ์ •์ฑ…์„ ๋ณด์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋œ ์ •์ฑ… ๋˜๋Š” ์˜ˆ์™ธ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด gcloud org-policies list ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud org-policies list --project=PROJECT_ID

PROJECT_ID๋ฅผ ์ ์šฉ๋œ ์ •์ฑ…์„ ํ™•์ธํ•˜๋ ค๋Š” ํ”„๋กœ์ ํŠธ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

์ ์šฉ๋œ ์ •์ฑ…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๋ ค๋ฉด gcloud org-policies describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์„ค๋ช…ํ•  ์ •์ฑ…์˜ ์ด๋ฆ„๊ณผ --project ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ID๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

gcloud org-policies describe POLICY_NAME \
  --project=PROJECT_ID

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • POLICY_NAME: ์กฐ์ง ์ •์ฑ…์˜ ์ด๋ฆ„

  • PROJECT_ID: ์ ์šฉ๋œ ์ •์ฑ…์„ ํ™•์ธํ•  ํ”„๋กœ์ ํŠธ

๋‹ค์Œ ๋‹จ๊ณ„

์ •์ฑ…์ด ์ ์šฉ๋˜๋Š” ์œ„์น˜์™€ ๋ณด์•ˆ ์ œ์•ฝ์กฐ๊ฑด์„ ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•  ์ˆ˜ ์—†์œผ๋ฉด IT ์šด์˜ํŒ€ ๋˜๋Š” ๋ณด์•ˆํŒ€์— ๋ฌธ์˜ํ•˜์„ธ์š”. ๊ฐ ์กฐ์ง์€ ๊ฐ์ž์˜ ํ™˜๊ฒฝ์— ๋งž์ถค์„ค์ •๋œ ์ •์ฑ…๊ณผ ์ฒญ์‚ฌ์ง„์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์กฐ์ง์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ปจํŠธ๋กค์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์กฐ์ง ์ •์ฑ… ์ œ์•ฝ์กฐ๊ฑด ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์„ธ์š”.