VPC ์„œ๋น„์Šค ์ œ์–ด ๊ฐ์‚ฌ ๋กœ๊น…

์ด ๋ฌธ์„œ์—์„œ๋Š” VPC ์„œ๋น„์Šค ์ œ์–ด์—์„œ Cloud ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ์ผ๋ถ€๋กœ ๋งŒ๋“œ๋Š” ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

Google Cloud ์„œ๋น„์Šค๋Š” Google Cloud ๋ฆฌ์†Œ์Šค ๋‚ด์—์„œ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ '๋ˆ„๊ฐ€, ์–ธ์ œ, ์–ด๋””์„œ, ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€'๋ผ๋Š” ์งˆ๋ฌธ์— ๋‹ตํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

Google Cloud ํ”„๋กœ์ ํŠธ์—๋Š” Google Cloud ํ”„๋กœ์ ํŠธ ๋‚ด์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋”, ์กฐ์ง, ๊ฒฐ์ œ ๊ณ„์ •๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ Google Cloud ๋ฆฌ์†Œ์Šค์—๋Š” ํ•ญ๋ชฉ ์ž์ฒด์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ์ „๋ฐ˜์ ์ธ ๊ฐœ์š”๋Š” Cloud ๊ฐ์‚ฌ ๋กœ๊ทธ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ๊ฐ์‚ฌ ๋กœ๊ทธ ํ˜•์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ์‚ฌ ๋กœ๊ทธ ์ดํ•ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์‚ฌ ๋กœ๊ทธ

VPC ์„œ๋น„์Šค ์ œ์–ด์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์œ ํ˜•์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ •์ฑ… ๊ฑฐ๋ถ€ ๊ฐ์‚ฌ ๋กœ๊ทธ

    ๋ณด์•ˆ ์ •์ฑ… ์œ„๋ฐ˜์œผ๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์— ์•ก์„ธ์Šค๊ฐ€ ๊ฑฐ๋ถ€๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ •์ฑ… ๊ฑฐ๋ถ€ ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ์„œ๋น„์Šค ์ด๋ฆ„ ๋ฐ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์€ ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์˜ ์•ก์„ธ์Šค๊ฐ€ ๊ฑฐ๋ถ€๋œ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

    ์ •์ฑ… ๊ฑฐ๋ถ€ ๊ฐ์‚ฌ ๋กœ๊ทธ๋Š” ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ _Default ์‹ฑํฌ์˜ ์ œ์™ธ ํ•„ํ„ฐ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ •์ฑ… ๊ฑฐ๋ถ€ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. LOG_ID("cloudaudit.googleapis.com/policy") ๋˜ํ•œ Cloud Logging์— ๋Œ€ํ•ด _Default ์‹ฑํฌ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜์—ฌ ๋กœ๊ทธ๊ฐ€ _Default ๋ฒ„ํ‚ท์œผ๋กœ ๋ผ์šฐํŒ…๋˜์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ๋กœ๊ทธ ์œ ํ˜•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ์‚ฌ ๋กœ๊ทธ ์œ ํ˜•์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ์‚ฌ ๋Œ€์ƒ ์ž‘์—…

๋‹ค์Œ์€ VPC ์„œ๋น„์Šค ์ œ์–ด์˜ ๊ฐ ๊ฐ์‚ฌ ๋กœ๊ทธ ์œ ํ˜•์— ํ•ด๋‹นํ•˜๋Š” API ์ž‘์—…์„ ์š”์•ฝํ•œ ํ‘œ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ๋กœ๊ทธ ๋ฒ”์ฃผ VPC ์„œ๋น„์Šค ์ œ์–ด ๋ฉ”์„œ๋“œ
์ •์ฑ… ๊ฑฐ๋ถ€ ๊ฐ์‚ฌ ๋กœ๊ทธ VPC ์„œ๋น„์Šค ์ œ์–ด์™€ ํ†ตํ•ฉ๋˜๋Š” ์„œ๋น„์Šค์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ ์ฝ˜ํ…์ธ  ๊ฐ์‚ฌ

๊ฐ ๊ฐ์‚ฌ ๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ์— ํฌํ•จ๋œ ์ •๋ณด๋Š” ์›๋ž˜ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ์ •๋ณด์™€ ๋ณด์•ˆ ์ •์ฑ… ์œ„๋ฐ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฒ”์ฃผ๋กœ ํฌ๊ฒŒ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” VPC Service Controls API๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ๋กœ๊ทธ ํ•„๋“œ ์„ค๋ช…
serviceName ์„œ๋น„์Šค ๊ฒฝ๊ณ„๋กœ ์•ก์„ธ์Šค๊ฐ€ ์ œํ•œ๋˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์š”์ฒญ์ด VPC ์„œ๋น„์Šค ์ œ์–ด ํ™•์ธ์„ ์œ„๋ฐ˜ํ•˜์—ฌ ์ด ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
methodName ๋ ˆ์ฝ”๋“œ์— ์„ค๋ช…๋œ ๋ณด์•ˆ ์ •์ฑ… ์œ„๋ฐ˜์„ ์ดˆ๋ž˜ํ•œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. methodName์€ serviceName ํ•„๋“œ์— ์ง€์ •๋œ Google Cloud ์„œ๋น„์Šค์™€ ์—ฐ๊ฒฐ๋œ ๋ฉ”์„œ๋“œ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
authenticationInfo.principalEmail ์š”์ฒญ์„ ๋ฐœ๊ธ‰ํ•œ ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
์ผ๋ถ€ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ์ˆ˜์ •๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ํ˜ธ์ถœ์ž ID๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
resourceName ํด๋ผ์ด์–ธํŠธ์˜ ์›๋ž˜ ์š”์ฒญ์— ์ง€์ •๋œ Google Cloud ๋ฆฌ์†Œ์Šค์ž…๋‹ˆ๋‹ค. resourceName๋Š” ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง ๋˜๋Š” Google Cloud ๋ฒ„ํ‚ท๊ณผ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
requestMetadata.callerIp

ํ˜ธ์ถœ์ž์˜ IP ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

ํ˜ธ์ถœ์ด ์ธํ„ฐ๋„ท์—์„œ ์‹œ์ž‘๋œ ๊ฒฝ์šฐ requestMetadata.callerIp๋Š” ๊ณต๊ฐœ IPv4 ๋˜๋Š” IPv6 ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

ํ˜ธ์ถœ์ด Compute Engine VM์—์„œ ์‹œ์ž‘๋œ ๊ฒฝ์šฐ requestMetadata.callerIp๋Š” VM IP ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. VM IP ์ฃผ์†Œ๋Š” ๋‚ด๋ถ€ IP ์ฃผ์†Œ ๋˜๋Š” ์™ธ๋ถ€ IP ์ฃผ์†Œ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Google์˜ ๋‚ด๋ถ€ ํ”„๋กœ๋•์…˜ ๋„คํŠธ์›Œํฌ ๋‚ด์—์„œ ๋ฐœ์ƒํ•œ ํ˜ธ์ถœ์˜ ๊ฒฝ์šฐ ์ด ํ•„๋“œ์˜ ๊ฐ’์€ private์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ๋Š” ํ˜ธ์ถœ์ด ํ•œ Google Cloud ์„œ๋น„์Šค์—์„œ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋กœ ์ „์†ก๋  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

request_metadata.caller_network ํ˜ธ์ถœ์ž ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ๋„คํŠธ์›Œํฌ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•ก์„ธ์Šค๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์†ํ•œ ๋™์ผํ•œ Google Cloud ์กฐ์ง ๋˜๋Š” ํ”„๋กœ์ ํŠธ์— ์†ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
status ๋ ˆ์ฝ”๋“œ์— ์„ค๋ช…๋œ ์ž‘์—…์˜ ์ „๋ฐ˜์ ์ธ ์ฒ˜๋ฆฌ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
metadata ๋ณด์•ˆ ์ •์ฑ… ์œ„๋ฐ˜์— ๋Œ€ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค.
metadata.resourceNames ๋ ˆ์ฝ”๋“œ์— ์„ค๋ช…๋œ ๋ณด์•ˆ ์ •์ฑ… ์œ„๋ฐ˜๊ณผ ๊ด€๋ จ๋œ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
metadata.dryRun ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ •์ฑ… ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•œ ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ๊ฒฝ์šฐ True์˜ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์ž…๋‹ˆ๋‹ค.
metadata.vpcServiceControlsUniqueId ๋ ˆ์ฝ”๋“œ์— ์„ค๋ช…๋œ VPC ์„œ๋น„์Šค ์ œ์–ด ์œ„๋ฐ˜์˜ ๊ณ ์œ  ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.
metadata.violationReason ์œ„๋ฐ˜ ์ด์œ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด RESOURCE_NOT_IN_SAME_SERVICE_PERIMETER๋Š” ์•ก์„ธ์Šค ์ค‘์ธ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋™์ผํ•œ ์„œ๋น„์Šค ๊ฒฝ๊ณ„์— ์†ํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
metadata.securityPolicyInfo ์œ„๋ฐ˜์ด ๋ฐœ์ƒํ•œ ์„œ๋น„์Šค ๊ฒฝ๊ณ„์˜ ์ด๋ฆ„๊ณผ ๊ฒฝ๊ณ„๊ฐ€ ์†ํ•œ ์กฐ์ง์˜ ๊ณ ์œ  ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.
metadata.egressViolations ์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ์Šค๊ฐ€ ์„œ๋น„์Šค ๊ฒฝ๊ณ„๋กœ ๋ณดํ˜ธ๋˜๊ณ  ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ฒฝ๊ณ„ ์™ธ๋ถ€์— ์žˆ์œผ๋ฏ€๋กœ ์ด๊ทธ๋ ˆ์Šค ์œ„๋ฐ˜์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค๋Š” ํ”„๋กœ์ ํŠธ ๋˜๋Š” VPC ๋„คํŠธ์›Œํฌ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
metadata.ingressViolations ์œ„๋ฐ˜ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์š”์ฒญ์ด ์„œ๋น„์Šค ๊ฒฝ๊ณ„๋กœ ๋ณดํ˜ธ๋˜๋Š” ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์œ„๋ฐ˜์ด ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค๋Š” ํ”„๋กœ์ ํŠธ ๋˜๋Š” VPC ๋„คํŠธ์›Œํฌ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•„๋“œ์—๋Š” ์ธ๊ทธ๋ ˆ์Šค ์œ„๋ฐ˜์„ ์„ค๋ช…ํ•˜๋Š” ๊ตฌ์กฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
metadata.accessLevels ๋™์ผํ•œ ์•ก์„ธ์Šค ์ •์ฑ…์— ์†ํ•˜๋Š” ์กฐ์ง์˜ ๋ชจ๋“  ์ผ์น˜ํ•˜๋Š” ์•ก์„ธ์Šค ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์•ก์„ธ์Šค ์ˆ˜์ค€์€ ์œ„๋ฐ˜ํ•œ ๊ฒฝ๊ณ„์— ์ง€์ •๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ NO_MATCHING_ACCESS_LEVEL ์œ„๋ฐ˜์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
metadata.intermediateServices ์š”์ฒญ ์ฒด์ธ๊ณผ ๊ด€๋ จ๋œ ์„œ๋น„์Šค ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์ž‘ํ•œ ์š”์ฒญ์—์„œ๋Š” ์ด ํ•„๋“œ๊ฐ€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
metadata.deviceState ๊ธฐ๊ธฐ ์ •์ฑ…์ด ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ์„ ๋•Œ ์š”์ฒญ์„ ๋งŒ๋“œ๋Š” ๊ธฐ๊ธฐ์˜ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ด ํ•„๋“œ์˜ ๊ธฐ๋ณธ๊ฐ’์€ Unknown์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ๋กœ๊ทธ ํ˜•์‹

๊ฐ์‚ฌ ๋กœ๊ทธ ํ•ญ๋ชฉ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • LogEntry ์œ ํ˜•์˜ ๊ฐ์ฒด์ธ ๋กœ๊ทธ ํ•ญ๋ชฉ ์ž์ฒด์ž…๋‹ˆ๋‹ค. ์œ ์šฉํ•œ ํ•„๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • logName์—๋Š” ๋ฆฌ์†Œ์Šค ID์™€ ๊ฐ์‚ฌ ๋กœ๊ทธ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • resource์—๋Š” ๊ฐ์‚ฌ ์ž‘์—… ๋Œ€์ƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • timeStamp์—๋Š” ๊ฐ์‚ฌ ์ž‘์—… ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • protoPayload์—๋Š” ๊ฐ์‚ฌ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ ํ•ญ๋ชฉ์˜ protoPayload ํ•„๋“œ์— AuditLog ๊ฐ์ฒด๋กœ ๋ณด๊ด€๋˜๋Š” ๊ฐ์‚ฌ ๋กœ๊น… ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.

  • ์„ ํƒ์  ์„œ๋น„์Šค๋ณ„ ๊ฐ์‚ฌ ์ •๋ณด๋กœ, ์„œ๋น„์Šค๋ณ„ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์ด์ „ ํ†ตํ•ฉ์—์„œ ์ด ๊ฐ์ฒด๋Š” AuditLog ๊ฐ์ฒด์˜ serviceData ํ•„๋“œ์— ๋ณด๊ด€ํ•˜๊ณ  ์ตœ์‹  ํ†ตํ•ฉ์€ metadata ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐ์ฒด์˜ ๋‹ค๋ฅธ ํ•„๋“œ์™€ ํ•„๋“œ ํ•ด์„ ๋ฐฉ๋ฒ•์€ ๊ฐ์‚ฌ ๋กœ๊ทธ ์ดํ•ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋กœ๊ทธ ์ด๋ฆ„

Cloud ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ๋กœ๊ทธ ์ด๋ฆ„์—๋Š” ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ์†Œ์œ ํ•œGoogle Cloud ํ”„๋กœ์ ํŠธ๋‚˜ ๊ธฐํƒ€ Google Cloud ํ•ญ๋ชฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž์™€ ๋กœ๊ทธ์— ๊ด€๋ฆฌ์ž ํ™œ๋™, ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค, ์ •์ฑ… ๊ฑฐ๋ถ€ ๋˜๋Š” ์‹œ์Šคํ…œ ์ด๋ฒคํŠธ ๊ฐ์‚ฌ ๋กœ๊น… ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•œ ๊ฐ์‚ฌ ๋กœ๊ทธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

์„œ๋น„์Šค ์ด๋ฆ„

VPC ์„œ๋น„์Šค ์ œ์–ด ๊ฐ์‚ฌ ๋กœ๊ทธ๋Š” VPC ์„œ๋น„์Šค ์ œ์–ด์™€ ํ†ตํ•ฉ๋˜๋Š” ์„œ๋น„์Šค์˜ ์„œ๋น„์Šค ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  Cloud Logging API ์„œ๋น„์Šค ์ด๋ฆ„๊ณผ ํ•ด๋‹น ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฆฌ์†Œ์Šค ์œ ํ˜•์˜ ๋ชฉ๋ก์€ ๋ฆฌ์†Œ์Šค์— ์„œ๋น„์Šค ๋งคํ•‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฆฌ์†Œ์Šค ์œ ํ˜•

VPC ์„œ๋น„์Šค ์ œ์–ด ๊ฐ์‚ฌ ๋กœ๊ทธ๋Š” VPC ์„œ๋น„์Šค ์ œ์–ด์™€ ํ†ตํ•ฉํ•˜๋Š” ์„œ๋น„์Šค์—์„œ ์ง€์›ํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  Cloud Logging ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฆฌ์†Œ์Šค ์œ ํ˜•๊ณผ ์„ค๋ช… ์ •๋ณด์˜ ๋ชฉ๋ก์€ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ˜ธ์ถœ์ž ID

ํ˜ธ์ถœ์ž IP ์ฃผ์†Œ๋Š” AuditLog ๊ฐ์ฒด์˜ RequestMetadata.caller_ip ํ•„๋“œ์— ๋ณด๊ด€๋ฉ๋‹ˆ๋‹ค. Logging์€ ํŠน์ • ํ˜ธ์ถœ์ž ID์™€ IP ์ฃผ์†Œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ๋กœ๊ทธ์—์„œ ์ˆ˜์ •๋œ ์ •๋ณด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ํ˜ธ์ถœ์ž ID๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ์‚ฌ ๋กœ๊น… ์‚ฌ์šฉ ์„ค์ •

๊ด€๋ฆฌ์ž ํ™œ๋™ ๊ฐ์‚ฌ ๋กœ๊ทธ๋Š” ํ•ญ์ƒ ์‚ฌ์šฉ ์„ค์ •๋˜๋ฉฐ ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ถŒํ•œ ๋ฐ ์—ญํ• 

IAM ๊ถŒํ•œ๊ณผ ์—ญํ• ์— ๋”ฐ๋ผ Google Cloud ๋ฆฌ์†Œ์Šค์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ์šฉํ•  Logging ๊ด€๋ จ ๊ถŒํ•œ ๋ฐ ์—ญํ• ์„ ๊ฒฐ์ •ํ•  ๋•Œ๋Š” ๋‹ค์Œ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜์„ธ์š”.

  • ๋กœ๊ทธ ๋ทฐ์–ด ์—ญํ• (roles/logging.viewer)์€ ๊ด€๋ฆฌ์ž ํ™œ๋™, ์ •์ฑ… ๊ฑฐ๋ถ€, ์‹œ์Šคํ…œ ์ด๋ฒคํŠธ ๊ฐ์‚ฌ ๋กœ๊ทธ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ์ „์šฉ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ญํ• ๋งŒ ์žˆ์œผ๋ฉด _Default ๋ฒ„ํ‚ท์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ๋น„๊ณต๊ฐœ ๋กœ๊ทธ ๋ทฐ์–ด ์—ญํ• (roles/logging.privateLogViewer)์—๋Š” roles/logging.viewer์— ํฌํ•จ๋œ ๊ถŒํ•œ๊ณผ _Default ๋ฒ„ํ‚ท์˜ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ฐ์‚ฌ ๋กœ๊ทธ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๊ถŒํ•œ๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋น„๊ณต๊ฐœ ๋กœ๊ทธ๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜๋œ ๋ฒ„ํ‚ท์— ์ €์žฅ๋œ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋ฒ„ํ‚ท์—์„œ ๋กœ๊ทธ ์ฝ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๋น„๊ณต๊ฐœ ๋กœ๊ทธ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช…์€ ๋ผ์šฐํŒ… ๋ฐ ์Šคํ† ๋ฆฌ์ง€ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ์‚ฌ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ์— ์ ์šฉ๋˜๋Š” IAM ๊ถŒํ•œ๊ณผ ์—ญํ• ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ IAM์œผ๋กœ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋กœ๊ทธ ๋ณด๊ธฐ

๋ชจ๋“  ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ์ฟผ๋ฆฌํ•˜๊ฑฐ๋‚˜ ๊ฐ์‚ฌ ๋กœ๊ทธ ์ด๋ฆ„๋ณ„๋กœ ๋กœ๊ทธ๋ฅผ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ๋กœ๊ทธ ์ด๋ฆ„์—๋Š” ๊ฐ์‚ฌ ๋กœ๊น… ์ •๋ณด๋ฅผ ๋ณด๋ ค๋Š” Google Cloud ํ”„๋กœ์ ํŠธ, ํด๋”, ๊ฒฐ์ œ ๊ณ„์ • ๋˜๋Š” ์กฐ์ง์˜ ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ์—์„œ ์ƒ‰์ธ์ด ์ƒ์„ฑ๋œ LogEntry ํ•„๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ๋ฅผ ์ฟผ๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์—์„œ ์ฟผ๋ฆฌ ๋นŒ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ณ„ ๋กœ๊ทธ ํ•ญ๋ชฉ์„ ํ•„ํ„ฐ๋งํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SQL์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ ํ•ญ๋ชฉ ๊ทธ๋ฃน์„ ๋ถ„์„ํ•˜๋ ค๋ฉด ๋กœ๊ทธ ์• ๋„๋ฆฌํ‹ฑ์Šค ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Google Cloud ์ฝ˜์†”, Google Cloud CLI ๋˜๋Š” Logging API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud Logging์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฐ์ œ์™€ ๊ด€๋ จ๋œ ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ๊ฒฝ์šฐ Google Cloud CLI ๋˜๋Š” Logging API๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

Google Cloud ์ฝ˜์†”์—์„œ ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Google Cloud ํ”„๋กœ์ ํŠธ, ํด๋” ๋˜๋Š” ์กฐ์ง์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Google Cloud ์ฝ˜์†”์—์„œ ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ๋กœ ์ด๋™

    ๊ฒ€์ƒ‰์ฐฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํŽ˜์ด์ง€๋ฅผ ์ฐพ์€ ๊ฒฝ์šฐ ๋ถ€์ œ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  2. ๊ธฐ์กด Google Cloud ํ”„๋กœ์ ํŠธ, ํด๋” ๋˜๋Š” ์กฐ์ง์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ๋ชจ๋“  ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ ํ•„๋“œ์— ๋‹ค์Œ ์ฟผ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ž…๋ ฅํ•œ ํ›„ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. ํŠน์ • ๋ฆฌ์†Œ์Šค ๋ฐ ๊ฐ์‚ฌ ๋กœ๊ทธ ์œ ํ˜•์— ๋Œ€ํ•œ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ ๋นŒ๋” ์ฐฝ์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • ๋ฆฌ์†Œ์Šค ์œ ํ˜•์—์„œ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•  Google Cloud ๋ฆฌ์†Œ์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • ๋กœ๊ทธ ์ด๋ฆ„์—์„œ ํ™•์ธํ•  ๊ฐ์‚ฌ ๋กœ๊ทธ ์œ ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

      • ๊ด€๋ฆฌ์ž ํ™œ๋™ ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ๊ฒฝ์šฐ activity๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ๊ฒฝ์šฐ data_access๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ์‹œ์Šคํ…œ ์ด๋ฒคํŠธ ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ๊ฒฝ์šฐ system_event๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ์ •์ฑ… ๊ฑฐ๋ถ€ ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ๊ฒฝ์šฐ policy๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • ์ฟผ๋ฆฌ ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋Ÿฌํ•œ ์˜ต์…˜ ์ค‘ ์–ด๋А ๊ฒƒ๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด Google Cloud ํ”„๋กœ์ ํŠธ๋‚˜ ํด๋”, ์กฐ์ง์— ํ•ด๋‹น ์œ ํ˜•์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ๊ฐ€ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

    ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์—์„œ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•œ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช…์€ ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์—์„œ ์ฟผ๋ฆฌ ๋นŒ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

gcloud

Google Cloud CLI๋Š” Logging API์— ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋กœ๊ทธ ์ด๋ฆ„์— ์œ ํšจํ•œ ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฟผ๋ฆฌ์— PROJECT_ID๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ์ œ๊ณตํ•œ ํ”„๋กœ์ ํŠธ ์‹๋ณ„์ž๊ฐ€ ํ˜„์žฌ ์„ ํƒ๋œGoogle Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Google Cloud ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ ํ•ญ๋ชฉ์„ ์ฝ์œผ๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \
    --project=PROJECT_ID

ํด๋” ์ˆ˜์ค€์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ ํ•ญ๋ชฉ์„ ์ฝ์œผ๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \
    --folder=FOLDER_ID

์กฐ์ง ์ˆ˜์ค€์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ ํ•ญ๋ชฉ์„ ์ฝ์œผ๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \
    --organization=ORGANIZATION_ID

Cloud Billing ๊ณ„์ • ์ˆ˜์ค€์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ ํ•ญ๋ชฉ์„ ์ฝ์œผ๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

1์ผ ์ด์ƒ ๋œ ๋กœ๊ทธ๋ฅผ ์ฝ์œผ๋ ค๋ฉด ๋ช…๋ น์–ด์— --freshness ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

gcloud CLI ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช…์€ gcloud logging read๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

REST

์ฟผ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ๊ฐ ๋กœ๊ทธ ์ด๋ฆ„์— ์œ ํšจํ•œ ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฟผ๋ฆฌ์— PROJECT_ID๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ์ œ๊ณตํ•œ ํ”„๋กœ์ ํŠธ ์‹๋ณ„์ž๊ฐ€ ํ˜„์žฌ ์„ ํƒ๋œGoogle Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Logging API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ ํ•ญ๋ชฉ์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. entries.list ๋ฉ”์„œ๋“œ ๋ฌธ์„œ์˜ API ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ ์„น์…˜์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  2. API ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ ์–‘์‹์˜ ์š”์ฒญ ๋ณธ๋ฌธ ๋ถ€๋ถ„์— ๋‹ค์Œ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž๋™ ์ž…๋ ฅ๋œ ์–‘์‹์„ ํด๋ฆญํ•˜๋ฉด ์š”์ฒญ ๋ณธ๋ฌธ์ด ์ž๋™์œผ๋กœ ์ž…๋ ฅ๋˜์ง€๋งŒ ๊ฐ ๋กœ๊ทธ ์ด๋ฆ„์— ์œ ํšจํ•œ PROJECT_ID๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ƒ˜ํ”Œ ์ฟผ๋ฆฌ

๋‹ค์Œ ํ‘œ์˜ ์ƒ˜ํ”Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ ˆ์ฐจ๋ฅผ ์™„๋ฃŒํ•˜์„ธ์š”.

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

  2. Google Cloud ์ฝ˜์†”์—์„œ ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ๋กœ ์ด๋™

    ๊ฒ€์ƒ‰์ฐฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํŽ˜์ด์ง€๋ฅผ ์ฐพ์€ ๊ฒฝ์šฐ ๋ถ€์ œ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์ฟผ๋ฆฌ ํ‘œ์‹œ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜์—ฌ ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ ํ•„๋“œ๋ฅผ ์—ฐ ๋‹ค์Œ ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ ํ•„๋“œ์— ํ‘œํ˜„์‹์„ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.

    ์ƒ˜ํ”Œ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ์ž…๋‹ˆ๋‹ค.

  4. ์ฟผ๋ฆฌ ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ์™€ ์ผ์น˜ํ•˜๋Š” ๋กœ๊ทธ๊ฐ€ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ฐฝ์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

VPC ์„œ๋น„์Šค ์ œ์–ด์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์—์„œ ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์„ค๋ช… ํ‘œํ˜„์‹
๊ฑฐ๋ถ€ ID๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์œ„๋ฐ˜ ์„ธ๋ถ€์ •๋ณด
log_id("cloudaudit.googleapis.com/policy") severity=ERROR
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.metadata.vpcServiceControlsUniqueId="UNIQUE_ID" 

UNIQUE_ID๋ฅผ ๊ฑฐ๋ถ€์˜ ๊ณ ์œ  ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

IP ์ฃผ์†Œ ์œ„๋ฐ˜
log_id("cloudaudit.googleapis.com/policy")
severity=ERROR
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.requestMetadata.callerIp="IP_ADDRESS"

IP_ADDRESS๋ฅผ ํ˜ธ์ถœ์ž์˜ IP ์ฃผ์†Œ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์œ„๋ฐ˜
log_id("cloudaudit.googleapis.com/policy")
severity=ERROR
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.serviceName="SERVICE_NAME"

SERVICE_NAME์„ ์ œํ•œ๋œ ์„œ๋น„์Šค์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๊ฒฝ๊ณ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์ˆ˜์ค€ ๋ณ€๊ฒฝ
logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
severity=NOTICE
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName="google.identity.accesscontextmanager.v1.AccessContextManager.UpdateServicePerimeter"
-protoPayload.metadata.previousState:"ACCESS_LEVEL"
protoPayload.request.servicePerimeter.status.accessLevels:"ACCESS_LEVEL"

ORGANIZATION_ID๋ฅผ ์กฐ์ง์˜ ์ˆซ์ž ID๋กœ ๋ฐ”๊พธ๊ณ  ACCESS_LEVEL์„ ์•ก์„ธ์Šค ์ˆ˜์ค€์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๊ฒฝ๊ณ„ CRUD ์ž‘์—…
logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
severity=NOTICE
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.*ServicePerimeter"
protoPayload.request.servicePerimeter.name=~".*PERIMETER_NAME$"
PERIMETER_NAME์„ ๊ฒฝ๊ณ„์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
์•ก์„ธ์Šค ์ˆ˜์ค€ CRUD ์ž‘์—…
logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
severity=NOTICE
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.*AccessLevel"
protoPayload.request.accessLevel.name=~".*ACCESS_LEVEL$"
์ธ๊ทธ๋ ˆ์Šค ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ ๋ฐ ์—…๋ฐ์ดํŠธ ์ž‘์—…
logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.*ServicePerimeter"
protoPayload.request.servicePerimeter.status.ingressPolicies:"*"
์ด๊ทธ๋ ˆ์Šค ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ ๋ฐ ์—…๋ฐ์ดํŠธ ์ž‘์—…
logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.*ServicePerimeter"
protoPayload.request.servicePerimeter.status.egressPolicies:"*"

๊ฐ์‚ฌ ๋กœ๊ทธ ๋ผ์šฐํŒ…

๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋กœ๊ทธ๋ฅผ ๋ผ์šฐํŒ…ํ•  ๋•Œ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ง€์›๋˜๋Š” ๋Œ€์ƒ์— ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ๋ผ์šฐํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ๋ผ์šฐํŒ…ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์žฅ๊ธฐ๊ฐ„ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ๋ณด๊ด€ํ•˜๊ฑฐ๋‚˜ ๋”์šฑ ๊ฐ•๋ ฅํ•œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ๋ณต์‚ฌ๋ณธ์„ Cloud Storage, BigQuery ๋˜๋Š” Pub/Sub๋กœ ๋ผ์šฐํŒ…ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Pub/Sub์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋‹ค๋ฅธ ์ €์žฅ์†Œ, ์„œ๋“œ ํŒŒํ‹ฐ๋กœ ๋ผ์šฐํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์กฐ์ง ์ „์ฒด์˜ ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ์กฐ์ง์˜ Google Cloud ํ”„๋กœ์ ํŠธ ์ผ๋ถ€ ๋˜๋Š” ์ „์ฒด์—์„œ ๋กœ๊ทธ๋ฅผ ๋ผ์šฐํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ์ง‘๊ณ„ ์‹ฑํฌ๋ฅผ ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ ๋ผ์šฐํŒ…์— ๋Œ€ํ•œ ์•ˆ๋‚ด๋Š” ์ง€์›๋˜๋Š” ๋Œ€์ƒ์œผ๋กœ ๋กœ๊ทธ ๋ผ์šฐํŒ…์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ€๊ฒฉ ์ฑ…์ •

๊ฐ€๊ฒฉ ์ฑ…์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Logging ๊ฐ€๊ฒฉ ์ฑ…์ • ์š”์•ฝ์„ ์ฐธ์กฐํ•˜์„ธ์š”.