ใช้ IAM Policy และ Tag ป้องกันเผลอลบ Resource บน AWS โดยไม่ตั้งใจ

Use IAM Policy and Tag to Prevent Accidental Deletion of AWS Resources

Nopnithi Khaokaew (Game)
2 min readMar 16, 2022

สมมุติผมสร้าง ECS cluster ขึ้นมา จะทำยังไงได้บ้างเพื่อป้องกันไม่ให้คนที่ “มีสิทธิ์ลบ” ไป “เผลอลบ” มันโดยไม่ตั้งใจ หรือภาษาชาวบ้านเรียกมือลั่น (อ้อ resource อื่นก็ใช้หลักการเดียวกันครับ)

— — — — — — — — —
บทความทั้งหมดของผม
— — — — — — — — —

ใช้ IAM Policy และ Tag ร่วมกัน

1. สร้าง IAM Policy

ใส่ชื่อเป็น DenyDeleteProtectedECSClusters และใส่ policy ตามนี้

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyDeleteProtectedECSClusters",
"Effect": "Deny",
"Action": [
"ecs:DeleteService",
"ecs:DeleteCluster",
"ecs:DeleteCapacityProvider"
],
"Resource": [
"arn:aws:ecs:*:*:service/*/*",
"arn:aws:ecs:*:*:cluster/*",
"arn:aws:ecs:*:*:capacity-provider/*"
],
"Condition": {
"StringEquals": {
"ecs:ResourceTag/DeleteProtection": "true"
}
}
}
]
}

ป.ล. อันนี้เป็นเพียงตัวอย่าง สามารถแก้ไขตามสะดวก

2. ใส่ Tag ให้กับ Resource

ตัวอย่างของผมเป็น ECS cluster ใช่มั้ยครับ ผมก็ไปใส่ tag ตามนี้

  • Key = DeleteProtection
  • Value = true

3. นำ Policy ไปใช้งาน

สามารถเลือก apply ได้หลายที่ตามสะดวกเลย เช่น

  • IAM User
  • IAM Group
  • IAM Role
  • OU บน AWS Organizations (ผ่าน SCP - Service Control Policy)

หรืออย่างของผมมีหลาย account อยู่ใน AWS Organizations ผมก็ไปสร้าง SCP แล้ว apply ไปที่ root เลย เพราะฉะนั้นทุก account/OU ที่ผมมีจะโดน policy นี้หมด

4. ผลลัพธ์ที่ได้

ตอนนี้จะไม่มีใครสามารถลบ resource ที่ติด tag เป็น DeleteProtection = true ได้แม้จะมี permission ก็ตาม ถ้าหากต้องการลบก็จะต้องแก้ไขหรือลบ tag ออกก่อน

5. แล้วจะบังคับให้ใส่ Tag ตอนสร้าง Resource ได้มั้ย?

ได้ครับ เมื่อเป็นแบบนี้แล้วก็ควรบังคับให้ต้องใส่ tag ดังกล่าวทุกครั้งที่สร้าง resource เลยจะดีกว่า ซึ่งตรงนี้ผมขอรวบไปว่ากันในบทความนี้เลย

ถ้าคิดว่าบทความนี้มีประโยชน์ ฝากกด clap, follow และ share บทความนี้ให้ผมด้วยนะครับ ขอบคุณมากครับ ^_^

— — — — — — — — —
บทความทั้งหมดของผม
— — — — — — — — —

--

--

Nopnithi Khaokaew (Game)
Nopnithi Khaokaew (Game)

Written by Nopnithi Khaokaew (Game)

Cloud Solutions Architect & Hobbyist Developer | 6x AWS Certified, CKA, CKAD, 2x HashiCorp Certified (Terraform, Vault), etc.