ISMS-P 2.9.2๋ ์ ๋ณด์์คํ ๊ฐ์ฉ์ฑ ๋ณด์ฅ์ ์ํด ์ฑ๋ฅ ๋ฐ ์ฉ๋์ ๋ชจ๋ํฐ๋งํ๊ณ ์ฅ์ ์ ํจ๊ณผ์ ์ผ๋ก ๋์ํ๋๋ก ์๊ตฌํฉ๋๋ค. ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ CloudWatch ๋ชจ๋ํฐ๋ง๊ณผ State ๋ฒ์ ๊ด๋ฆฌ ๊ธฐ๋ฐ Rollback ์ฒด๊ณ๋ฅผ ๊ตฌ์ถํด์ผ ํฉ๋๋ค.
ISMS-P 2.9.2 ์ฑ๋ฅ ๋ฐ ์ฅ์ ๊ด๋ฆฌ ์๊ตฌ์ฌํญ
"์ ๋ณด์์คํ ์ ๊ฐ์ฉ์ฑ ๋ณด์ฅ์ ์ํ์ฌ ์ฑ๋ฅ ๋ฐ ์ฉ๋ ์๊ตฌ์ฌํญ์ ์ ์ํ๊ณ ํํฉ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ฌ์ผ ํ๋ฉฐ, ์ฅ์ ๋ฐ์ ์ ํจ๊ณผ์ ์ผ๋ก ๋์ํ๊ธฐ ์ํ ํ์งยท๊ธฐ๋กยท๋ถ์ยท๋ณต๊ตฌยท๋ณด๊ณ ๋ฑ์ ์ ์ฐจ๋ฅผ ์๋ฆฝยท๊ด๋ฆฌํ์ฌ์ผ ํ๋ค."
์ฑ๋ฅ/์ฅ์ ๊ด๋ฆฌ ๋ฏธํก์ผ๋ก ๋ฐ์ํ ์ค์ ์ฌ๊ณ
ํฌ๋ผ์ฐ๋์คํธ๋ผ์ดํฌ ์ํํธ์จ์ด ์ ๋ฐ์ดํธ ๊ฒฐํจ์ผ๋ก ์ ์ธ๊ณ 850๋ง ๋ Windows ์์คํ BSOD ๋ฐ์. ํญ๊ณต, ๊ธ์ต, ์๋ฃ ๋ฑ ๊ธ๋ก๋ฒ ์๋น์ค ์ค๋จ. Rollback ์ฒด๊ณ ๋ฏธํก์ผ๋ก ๋ณต๊ตฌ๊ฐ ์ง์ฐ๋์์ต๋๋ค.
๐ก ๊ตํ: ๋ฐฐํฌ ์ ํ ์คํธ ๊ฐํ, ๋จ๊ณ์ ๋กค์์, ์ฆ์ ๋กค๋ฐฑ ์ฒด๊ณ ํ์
AWS S3 us-east-1 ๋ฆฌ์ ์ฅ์ ๋ก Slack, Trello, IFTTT ๋ฑ ์์ฒ ๊ฐ ์๋น์ค ๋์ ์ค๋จ. ๋จ์ผ ๋ฆฌ์ ์์กด์ฑ๊ณผ DR ์ฒด๊ณ ๋ถ์ฌ๊ฐ ์์ธ์ด์์ต๋๋ค.
๐ก ๊ตํ: ๋ฉํฐ ๋ฆฌ์ ๊ตฌ์ฑ, ์ฅ์ ํ์ง ์๋ํ, DR ๊ณํ ์๋ฆฝ ํ์
๋ชจ๋ํฐ๋ง ๋ฏธ๊ตฌ์ถ ๋ฐ Rollback ๋ถ๊ฐ ์ํฉ
# ๋ชจ๋ํฐ๋ง ์๋ EC2 ์ธ์คํด์ค
resource "aws_instance" "web" {
ami = "ami-12345678"
instance_type = "t3.large"
# monitoring = false (๊ธฐ๋ณธ๊ฐ)
}
# CloudWatch Alarm ์์
# โ CPU 100%๊ฐ ๋์ด๋ ์ ์ ์์
# โ ์ฅ์ ๋ฐ์ ํ์์ผ ์ธ์ง
# Terraform State - ๋ฒ์ ๊ด๋ฆฌ ์์
terraform {
backend "s3" {
bucket = "my-state-bucket"
key = "terraform.tfstate"
# ๋ฒ์ ๊ด๋ฆฌ ๋ฏธํ์ฑํ โ Rollback ๋ถ๊ฐ!
}
}
์์ธ ๋ชจ๋ํฐ๋ง ๋ฏธํ์ฑํ, ์๊ณ์น ์๋ ์์, State ๋ฒ์ ๊ด๋ฆฌ ์์ด ์ฅ์ ๋ณต๊ตฌ ๋ถ๊ฐ
# ์์ธ ๋ชจ๋ํฐ๋ง ํ์ฑํ
resource "aws_instance" "web" {
ami = data.aws_ami.amazon_linux.id
instance_type = var.instance_type
monitoring = true # 1๋ถ ๊ฐ๊ฒฉ ๋ฉํธ๋ฆญ
}
# CloudWatch Alarm ์ค์
resource "aws_cloudwatch_metric_alarm" "cpu" {
alarm_name = "cpu-high"
metric_name = "CPUUtilization"
threshold = 80 # ์๊ณ์น ์ ์
alarm_actions = [aws_sns_topic.alerts.arn]
}
# S3 ๋ฒ์ ๊ด๋ฆฌ ํ์ฑํ
resource "aws_s3_bucket_versioning" "state" {
versioning_configuration {
status = "Enabled" # Rollback ์ง์
}
}
1๋ถ ๊ฐ๊ฒฉ ๋ฉํธ๋ฆญ, ์๊ณ์น ์๋, State ๋ฒ์ ๊ด๋ฆฌ๋ก ์ฅ์ ํ์ง ๋ฐ ๋ณต๊ตฌ ๊ฐ๋ฅ
์ฑ๋ฅ ์๊ณ์น ๋ฏธ์ ์ - CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ ์๊ณ์น ์ค์ ์์
๋ชจ๋ํฐ๋ง ์ฒด๊ณ ๋ถ์ฌ - ์์ธ ๋ชจ๋ํฐ๋ง ๋ฏธํ์ฑํ
์ฅ์ ์๋ฆผ ๋ถ๊ฐ - CloudWatch Alarm ๋ฏธ๊ตฌ์ฑ
Rollback ๋ถ๊ฐ - State ๋ฒ์ ๊ด๋ฆฌ ๋ฏธํ์ฑํ
Terraform Plan ๋จ๊ณ์์ OPA/Rego ์ ์ฑ ์ผ๋ก ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ์ค์ ๊ฒ์ฆ
CloudWatch ์ค์๊ฐ ๋ฉํธ๋ฆญ ๊ธฐ๋ฐ ์ฑ๋ฅ ์ด์ ๋ฐ ์ฅ์ ํ์ง
CloudWatch + Auto Scaling + State Versioning ๊ตฌ์ฑ
ISMS-P ์ฌ์ฌ ์ฆ์ ๋ฐ ์ ๊ธฐ ๋ณด๊ณ
| ์ ๊ฒ ํญ๋ชฉ | ์ฆ์ ์๋ฃ |
|---|---|
| ์๊ณ์น ์ ์ | CloudWatch Alarm ์ค์ ์คํฌ๋ฆฐ์ท, ์๊ณ์น ๋ฌธ์ |
| ๋ชจ๋ํฐ๋ง ์ฒด๊ณ | CloudWatch Dashboard, ์๋ ๋ชฉ๋ก |
| ์ฅ์ ๋์ | EventBridge ๊ท์น, Auto Scaling ์ ์ฑ |
| Rollback ์ฒด๊ณ | S3 ๋ฒ์ ๊ด๋ฆฌ ์ค์ , State ๋ฒ์ ์ด๋ ฅ |
| ์ฅ์ ๊ธฐ๋ก | CloudWatch Logs, ์ฅ์ ์กฐ์น๋ณด๊ณ ์ |
# CloudWatch Alarm ๋ชฉ๋ก
aws cloudwatch describe-alarms \
--alarm-name-prefix "cpu-" \
--output table
# State ๋ฒ์ ์ด๋ ฅ ํ์ธ (Rollback ๊ฐ๋ฅ ์ฌ๋ถ)
aws s3api list-object-versions \
--bucket terraform-state \
--prefix production/terraform.tfstate
# EC2 ๋ชจ๋ํฐ๋ง ์ํ ํ์ธ
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].\
[InstanceId,Monitoring.State]'
๊ธฐ์กด ๋๊ตฌ๊ฐ ๋์น๋ ์ ๊ฒ ์์ญ
ํ๊ณ: ๊ฐ๋ณ ๋ฆฌ์์ค ์ ๊ฒ๋ง ๊ฐ๋ฅ, ISMS-P ๊ด์ ํตํฉ ๊ฒ์ฆ ๋ถ๊ฐ
์ฐจ๋ณ์ : ์ธ์ฆ ๊ธฐ์ค ๊ด์ ์์ ํ์ง โ ์กฐ์น โ ์ฆ์ ์ ๊ณผ์ ์๋ํ