์ด ๋ฌธ์์์๋ 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 ์ฃผ์์ ๋๋ค.
ํธ์ถ์ด ์ธํฐ๋ท์์ ์์๋ ๊ฒฝ์ฐ ํธ์ถ์ด Compute Engine VM์์ ์์๋ ๊ฒฝ์ฐ Google์ ๋ด๋ถ ํ๋ก๋์
๋คํธ์ํฌ ๋ด์์ ๋ฐ์ํ ํธ์ถ์ ๊ฒฝ์ฐ ์ด ํ๋์ ๊ฐ์ |
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 ํ๋ก์ ํธ, ํด๋ ๋๋ ์กฐ์ง์ ๊ฐ์ฌ ๋ก๊ทธ ํญ๋ชฉ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
-
Google Cloud ์ฝ์์์ ๋ก๊ทธ ํ์๊ธฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๊ฒ์์ฐฝ์ ์ฌ์ฉํ์ฌ ์ด ํ์ด์ง๋ฅผ ์ฐพ์ ๊ฒฝ์ฐ ๋ถ์ ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์ ํํฉ๋๋ค.
๊ธฐ์กด Google Cloud ํ๋ก์ ํธ, ํด๋ ๋๋ ์กฐ์ง์ ์ ํํฉ๋๋ค.
๋ชจ๋ ๊ฐ์ฌ ๋ก๊ทธ๋ฅผ ํ์ํ๋ ค๋ฉด ์ฟผ๋ฆฌ ํธ์ง๊ธฐ ํ๋์ ๋ค์ ์ฟผ๋ฆฌ ์ค ํ๋๋ฅผ ์ ๋ ฅํ ํ ์ฟผ๋ฆฌ ์คํ์ ํด๋ฆญํฉ๋๋ค.
logName:"cloudaudit.googleapis.com"
protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
ํน์ ๋ฆฌ์์ค ๋ฐ ๊ฐ์ฌ ๋ก๊ทธ ์ ํ์ ๋ํ ๊ฐ์ฌ ๋ก๊ทธ๋ฅผ ํ์ํ๋ ค๋ฉด ์ฟผ๋ฆฌ ๋น๋ ์ฐฝ์์ ๋ค์์ ์ํํฉ๋๋ค.
๋ฆฌ์์ค ์ ํ์์ ๊ฐ์ฌ ๋ก๊ทธ๋ฅผ ํ์ธํ 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๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ์์ค์ ๊ฐ์ฌ ๋ก๊ทธ ํญ๋ชฉ์ ๋ณด๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
entries.list
๋ฉ์๋ ๋ฌธ์์ API ์ฌ์ฉํด ๋ณด๊ธฐ ์น์ ์ผ๋ก ์ด๋ํฉ๋๋ค.API ์ฌ์ฉํด ๋ณด๊ธฐ ์์์ ์์ฒญ ๋ณธ๋ฌธ ๋ถ๋ถ์ ๋ค์์ ์ ๋ ฅํฉ๋๋ค. ์ด ์๋ ์ ๋ ฅ๋ ์์์ ํด๋ฆญํ๋ฉด ์์ฒญ ๋ณธ๋ฌธ์ด ์๋์ผ๋ก ์ ๋ ฅ๋์ง๋ง ๊ฐ ๋ก๊ทธ ์ด๋ฆ์ ์ ํจํ PROJECT_ID๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค.
{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
์คํ์ ํด๋ฆญํฉ๋๋ค.
์ํ ์ฟผ๋ฆฌ
๋ค์ ํ์ ์ํ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ์ ์ฐจ๋ฅผ ์๋ฃํ์ธ์.
์ฟผ๋ฆฌ ํํ์์ ๋ณ์๋ฅผ ์์ฒด ํ๋ก์ ํธ ์ ๋ณด๋ก ๋ฐ๊พผ ๋ค์ ํด๋ฆฝ๋ณด๋ ์์ด์ฝ content_copy๋ฅผ ์ฌ์ฉํ์ฌ ํํ์์ ๋ณต์ฌํฉ๋๋ค.
-
Google Cloud ์ฝ์์์ ๋ก๊ทธ ํ์๊ธฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๊ฒ์์ฐฝ์ ์ฌ์ฉํ์ฌ ์ด ํ์ด์ง๋ฅผ ์ฐพ์ ๊ฒฝ์ฐ ๋ถ์ ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์ ํํฉ๋๋ค.
์ฟผ๋ฆฌ ํ์๋ฅผ ์ฌ์ฉ ์ค์ ํ์ฌ ์ฟผ๋ฆฌ ํธ์ง๊ธฐ ํ๋๋ฅผ ์ฐ ๋ค์ ์ฟผ๋ฆฌ ํธ์ง๊ธฐ ํ๋์ ํํ์์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
์ฟผ๋ฆฌ ์คํ์ ํด๋ฆญํฉ๋๋ค. ์ฟผ๋ฆฌ์ ์ผ์นํ๋ ๋ก๊ทธ๊ฐ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ฐฝ์ ๋์ด๋ฉ๋๋ค.
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"
|
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"
|
์๋น์ค ์๋ฐ | 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"
|
๊ฒฝ๊ณ์ ๋ํ ์ก์ธ์ค ์์ค ๋ณ๊ฒฝ | 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"
|
๊ฒฝ๊ณ 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 ๊ฐ๊ฒฉ ์ฑ ์ ์์ฝ์ ์ฐธ์กฐํ์ธ์.