โ Real-time Security Inspection
ISMS-P 2.9.5๋ ๋ก๊ทธ ๋ฐ ์ ์๊ธฐ๋ก์ ๋ํด ์ ๊ธฐ์ ์ผ๋ก ์ ๊ฒํ์ฌ ์ด์ํ์ ์ฌ๋ถ๋ฅผ ๋ถ์ํ๋๋ก ์๊ตฌํฉ๋๋ค. ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ CloudTrail ์ ์ฒด ๋ฆฌ์ ์์ง๊ณผ ์ ๊ธฐ ์ ๊ฒ ์๋ํ๋ฅผ ํตํด ์ด์ํ์๋ฅผ ๋ถ์ํด์ผ ํฉ๋๋ค.
ISMS-P 2.9.5 ๋ก๊ทธ ๋ฐ ์ ์๊ธฐ๋ก ์ ๊ฒ ์๊ตฌ์ฌํญ
"์๋ฒ, ๋คํธ์ํฌ์์คํ , ๋ณด์์์คํ ๋ฑ์์ ์์ฑ๋ ๋ก๊ทธ ๋ฐ ์ ์๊ธฐ๋ก์ ์ ๊ธฐ์ ์ผ๋ก ์ ๊ฒํ๊ณ ์ด์ํ์ ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ์ผ ํ๋ฉฐ, ๋ก๊ทธ๊ธฐ๋ก์ ๋ณ๋์ ์ ์ฅ์ฅ์น์ ๋ฐฑ์ ยท๋ณด๊ดํ์ฌ์ผ ํ๋ค."
๋ก๊ทธ ์ ๊ฒ ๋ฏธํก์ผ๋ก ๋ฐ์ํ ์ค์ ์ฌ๊ณ
AWS ํ๊ฒฝ์์ SSRF ๊ณต๊ฒฉ์ ํตํด IAM ์๊ฒฉ ์ฆ๋ช ํ์ทจ. CloudTrail ๋ก๊ทธ ์ ๊ธฐ ์ ๊ฒ ๋ฏธ์ํ์ผ๋ก ์๊ฐ์๊ฐ ์ด์ API ํธ์ถ ํ์ง ๋ชปํจ.
๐ก ๊ตํ: CloudTrail ๋ก๊ทธ ์๋ ๋ถ์, ์ด์ API ํธ์ถ ์ค์๊ฐ ํ์ง ํ์
SolarWinds Orion์ ์ ์ฑ์ฝ๋ ์ฝ์ , 9๊ฐ์๊ฐ ํ์ง ๋ชปํจ. ๋ก๊ทธ ์ ๊ธฐ ์ ๊ฒ ๋ฏธ์ํ, ์ด์ํ์ ๋ถ์ ์ฒด๊ณ ๋ถ์ฌ๋ก ๋ฏธ๊ตญ ์ ๋ถ ๊ธฐ๊ด ํฌํจ ๋๊ท๋ชจ ์นจํด.
๐ก ๊ตํ: ๋ก๊ทธ ์ ๊ธฐ ์ ๊ฒ + ์ด์ํ์ ์๋ ๋ถ์ ์ฒด๊ณ ๊ตฌ์ถ ํ์
๋ถ์์ ํ ๋ก๊ทธ ์ค์ ์ผ๋ก ์ธํ ์ํ
# CloudTrail (๋ฌธ์ )
resource "aws_cloudtrail" "main" {
name = "main-trail"
s3_bucket_name = aws_s3_bucket.logs.id
# is_multi_region_trail ๋ฏธ์ค์ โ ๋จ์ผ ๋ฆฌ์ ๋ง
# enable_log_file_validation ๋ฏธ์ค์ โ ๋ณ์กฐ ํ์ง ๋ถ๊ฐ
}
# S3 (๋ฌธ์ )
resource "aws_s3_bucket" "logs" {
bucket = "cloudtrail-logs"
# object_lock ๋ฏธ์ค์ โ ๋ก๊ทธ ์ญ์ ๊ฐ๋ฅ
# lifecycle ๋ฏธ์ค์ โ ๋ณด๊ด ๊ธฐ๊ฐ ๊ด๋ฆฌ ๋ถ๊ฐ
}
๋จ์ผ ๋ฆฌ์ ๋ง ์์ง, ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ ์์, Object Lock ์์ด ๋ก๊ทธ ๋ณ์กฐ/์ญ์ ์ํ
# CloudTrail (๊ถ์ฅ)
resource "aws_cloudtrail" "org" {
is_multi_region_trail = true # ์ ์ฒด ๋ฆฌ์
is_organization_trail = true # ์กฐ์ง ์ ์ฒด
enable_log_file_validation = true # ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ
}
# S3 (๊ถ์ฅ)
resource "aws_s3_bucket" "logs" {
object_lock_enabled = true # ๋ณ์กฐ ๋ฐฉ์ง
}
# + Lifecycle: 1๋
Glacier, 7๋
์ญ์
์ ์ฒด ๋ฆฌ์ ์์ง, ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ, Object Lock์ผ๋ก ๋ก๊ทธ ์์ ๋ณดํธ
์ ๊ธฐ ์ ๊ฒ ๋ฏธ์ํ - ๋ก๊ทธ ๋ถ์ ์ฒด๊ณ ์์
์ผ๋ถ ๋ฆฌ์ ๋ง ์์ง - ์ ์ฒด ๋ฆฌ์ ๋ก๊ทธ ๋๋ฝ
๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ ๋ฏธ์ค์ - ๋ก๊ทธ ๋ณ์กฐ ํ์ง ๋ถ๊ฐ
๋ฐฑ์ ๋ณด๊ด ๋ถ์ฌ - Object Lock ๋ฏธ์ค์
Terraform Plan ๋จ๊ณ์์ OPA/Rego ์ ์ฑ ์ผ๋ก ๋ก๊ทธ ์ ๊ฒ ์ค์ ๊ฒ์ฆ
CloudTrail Insights, Athena Query๋ก ์ด์ํ์ ํ์ง ๋ฐ ์ ๊ธฐ ์ ๊ฒ ์๋ํ
CloudTrail + S3 Object Lock + ์ ๊ธฐ ์ ๊ฒ ์๋ํ
ISMS-P ์ฌ์ฌ ์ฆ์ ๋ฐ ์ ๊ธฐ ๋ณด๊ณ
| ์ ๊ฒ ํญ๋ชฉ | ์ฆ์ ์๋ฃ |
|---|---|
| ๋ก๊ทธ ์์ง ํํฉ | CloudTrail ํ์ฑํ ๋ฆฌ์ , ์์ง ๋์ ์๋น์ค ๋ชฉ๋ก |
| ์ ๊ธฐ ์ ๊ฒ ์ด๋ ฅ | ์ฃผ๊ฐ/์๊ฐ Athena ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ, ์ ๊ฒ ๋ฆฌํฌํธ |
| ์ด์ํ์ ํ์ง | EventBridge ์๋ฆผ ๋ด์ญ, ๋์ ์กฐ์น ๊ธฐ๋ก |
| ๋ฐฑ์ ๋ฐ ๋ณด๊ด | S3 Object Lock ์ค์ , Lifecycle ์ ์ฑ |
| ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ | Log File Validation ์ค์ , ๊ฒ์ฆ ๋ก๊ทธ |
# CloudTrail ์ ์ฒด ๋ฆฌ์ ํ์ฑํ ํ์ธ
aws cloudtrail describe-trails \
--query 'trailList[*].[Name,IsMultiRegionTrail,\
IsOrganizationTrail]'
# ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ ์ํ ํ์ธ
aws cloudtrail describe-trails \
--query 'trailList[*].[Name,LogFileValidationEnabled]'
# S3 Object Lock ์ค์ ํ์ธ
aws s3api get-object-lock-configuration \
--bucket log-archive-bucket
๊ธฐ์กด ๋๊ตฌ๊ฐ ๋์น๋ ์ ๊ฒ ์์ญ
ํ๊ณ: CloudTrail ํ์ฑํ ์ฌ๋ถ๋ง ํ์ธ, ์ค์ง์ ๋ก๊ทธ ์ ๊ฒ ์ฒด๊ณ ๋ฏธ๊ฒ์ฆ
์ฐจ๋ณ์ : ์ธ์ฆ ๊ธฐ์ค ๊ด์ ์์ ์์ง โ ์ ๊ฒ โ ๋ฐฑ์ โ ์ฆ์ ์ ๊ณผ์ ์๋ํ