การคืนการตั้งค่า Secure Account: ขั้นตอนการคืนค่า AWS CloudTrail
สวัสดีครับ ท่านผู้อ่านทุกท่าน ผมกาญจน์ครับ เรามาพบกันอีกครั้งกับสาระดีๆเกี่ยวกับ Secure Account อีกครั้งครับ
ในบทความนี้ จะมาแนะนำขั้นตอนการปิดการใช้งานการตั้งค่าความปลอดภัยของ AWS CloudTrail (การตั้งค่าการเข้ารหัสไฟล์ log ด้วย SSE-KMS) ที่เกิดขึ้นจากการเปิดใช้บริการ Secure Account ที่ Classmethod Members มอบให้
บทความนี้แปลมาจากบทความภาษาญี่ปุ่นที่ชื่อว่า 【セキュアアカウント切り戻し手順】AWS CloudTrail セキュア設定切り戻し手順のご案内
โดยเจ้าของบทความนี้คือ คุณ べこみんครับ
Secure Account คืออะไร
ที่ Classmethod เรามีการให้บริการบัญชี AWS ที่มีการติดตั้งด้านความปลอดภัยอย่างครบถ้วนตามแนวทาง Best practice แก่ลูกค้าของเรา
คุณลูกค้าที่ใช้บริการบัญชี AWS ผ่าน Classmethod ทุกท่านสามารถใช้บริการนี้ได้ จึงอยากเชิญชวนให้มาใช้กันครับ
สถาปัตยกรรมของ Secure Account
Secure Account มีการตั้งค่าดังต่อไปนี้ครับ
สำหรับรายละเอียดของแต่ละการตั้งค่า สามารถอ้างอิงบทความข้างล่างหรือเอกสารในลิงค์นี้ได้ครับ
บริการที่เป็นเป้าหมายในการปิดการใช้งานครั้งนี้
ครั้งนี้เราจะแนะนำขั้นตอนการปิดการใช้งานการตั้งค่าการเข้ารหัสไฟล์ log ของ AWS CloudTrail ด้วย SSE-KMS (ส่วนที่อยู่ในกรอบสีแดงในภาพด้านบน) ใน Secure Account กันครับ
การเข้ารหัสไฟล์ log ของ AWS CloudTrail ด้วย SSE-KMS คืออะไร
ใน Trail ที่สร้างด้วย CloudTrail จะมีการเข้ารหัสไฟล์ log ที่ถูกบันทึกไว้
โดยค่าเริ่มต้นจะใช้การเข้ารหัสแบบ SSE-S3 ซึ่งเป็นการเข้ารหัสโดยใช้คีย์ที่จัดการโดย AWS S3 แต่สามารถเปิดใช้งานการเข้ารหัสแบบ SSE-KMS ซึ่งใช้ Customer Managed Key ที่ผู้ใช้จัดการเองได้เป็นตัวเลือกได้เช่นเดียวกันครับ
ใน Secure Account จะเป็นการเปิดใช้งาน SSE-KMS ที่ใช้ Customer Managed Key ครับ
ค่าใช้จ่าย
ค่าใช้จ่ายสำหรับการตั้งค่านี้มีดังนี้:
-
ค่าบริหารจัดการ Customer Managed Key (คีย์ที่จัดการโดยผู้ใช้)
- $2/เดือน (ใน Secure Account การหมุนเวียนคีย์อัตโนมัติจะถูกเปิดใช้งาน)
-
ค่าใช้จ่ายในการเข้ารหัส/ถอดรหัสไฟล์ log โดยผู้ใช้
- $0.03/10,000 คำขอ (ฟรี 20,000 คำขอต่อเดือน)
- ไม่มีค่าใช้จ่ายเมื่อ CloudTrail ทำการเข้ารหัส/ถอดรหัส
ทั้งนี้ ค่าใช้จ่ายจะขึ้นอยู่กับขนาดของสภาพแวดล้อมและวิธีการดำเนินงานด้วยครับ แต่โดยทั่วไปค่าใช้จ่ายจะค่อนข้างน้อย เพียงไม่กี่ดอลลาร์ต่อเดือนเท่านั้นครับ
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับค่าบริการของ AWS KMS สามารถอ่านเอกสารเพิ่มเติมข้างล่างนี้ได้ครับ
1. ข้อกำหนดเบื้อง
ปิด Opt-in Classmethod Members Portal (CMP)
ในระบบ Secure Account เราจะต้องไปที่เว็บไซต์ Classmethod Members Portal (CMP) เพื่อทำการปิดการใช้งาน Opt-in ของ CloudTrail
หากไม่ปิดการใช้งานในส่วนนี้ ในทุกๆวันเสาร์ Classmethod Members Portal จะทำการเปิดบริการดังกล่าวขึ้นมาใหม่โดยอัตโนมัติ แม้ว่าเราจะปิดการใช้งาน CloudTrail ใน Console ไปแล้วก็ตาม ฉะนั้น หากต้องการจะปิดการใช้บริการไหน เราต้องปิด Opt-in ในเว็บไซต์ Classmethod Members Portal ก่อนครับ
- อันดับแรก ให้มาที่เว็บไซต์ Classmethod Members Portal จากหัวข้อ "AWS Account" แล้วเลือก Account ID ที่เราต้องการครับ
- จากนั้นเลื่อนลงมาที่หัวข้อ "Security Settings" แล้วคลิกที่ Edit
- หลังจากนั้น ให้เลื่อนลงมาที่ "Secure Settings (affects the existing operating system)" แล้วติ๊ก AWS CloudTrail (Secure Settings) ออก
2. ขั้นตอนการคืนค่า CloudTrail
ในบทความนี้จะแนะนำการย้อน CloudTrail กลับด้วยกัน 2 วิธีครับ คือ การทำผ่าน Classmethod Members Portal (CMP) และการทำผ่าน CloudShell ครับ โดยจะอธิบายข้อดีข้อเสียและสถานการณ์ที่เหมาะสมของแต่ละวิธี เพื่อเป็นข้อมูลในการเลือกขั้นตอนที่เหมาะสมกับผู้อ่านครับ
วิธี 1: วิธีการคืนค่าผ่าน Classmethod Members Portal (CMP): ย้อนค่าได้ง่าย
- วิธีนี้จะย้อนค่า Cloudtrail เป็นแบบ Basic โดยอัตโนมัติ
- ไม่จำเป็นต้องตั้งค่า IAM Permission เพื่อย้อนค่า (Note: แต่ถ้าอยากใช้ Cloudshell เพื่อตรวจสอบสถานะปัจจุบันด้วย จำเป็นต้องใช้ IAM Permission)
วิธี 2: วิธีการคืนค่าผ่าน Cloudshell: สามารถ Customize ได้
- สามารถเลือกบาง Region ให้ไม่ต้องย้อนกลับได้ (เช่น เว้นเฉพาะ Thailand Region ให้คงค่า Cloudtrail ไว้)
- สามารถเพิ่ม custom resource exclusions (รายการยกเว้น Resource แบบกำหนดเอง) เพิ่มเติมที่ไม่ต้องการให้บันทึก Log ใน Cloudtrail แบบ Basic
a. IAM permission ที่จำเป็นสำหรับดำเนินการคืนค่า Cloudtrail
สิทธิ์การเข้าถึง (Access Permissions) ที่ผู้ปฏิบัติงานต้องมีเพื่อทำการย้อนกลับ (Rollback) ในครั้งนี้มีดังนี้
-
[สิทธิ์การอ่าน (Read)]
- cloudtrail:DescribeTrails
- s3:GetEncryptionConfiguration
-
[สิทธิ์การเขียน (Write)]
- cloudtrail:UpdateTrail
- s3:PutEncryptionConfiguration
นอกจากนี้ การใช้งาน CloudShell ต้องเพิ่ม IAM Policy ที่ชื่อว่า AWSCloudShellFullAccess
b. ตรวจสอบสถานะปัจจุบัน
ก่อนอื่นเราต้องตรวจสอบการตั้งค่าปัจจุบันก่อนครับ
เปิด CloudShell และรันคำสั่งต่อไปนี้ (สามารถดูการใช้ Cloudshell ได้ตามลิงค์นี้ครับ)
Note: เนื่องจากปัจจุบัน บริการ Cloudshell จะยังไม่มีใน Thailand Region ครับ หากผู้อ่านจะใช้ Cloudshell จำเป็นต้องเปลี่ยนไปที่ Singapore Region ก่อนครับ
for REGION in $(aws ec2 describe-regions --query "sort(Regions[].RegionName)" --output text); do
ENCRYPTION=$(aws cloudtrail describe-trails --region "${REGION}" --trail-name-list Members --query 'trailList[].KmsKeyId' --output text 2>/dev/null)
if [ -n "$ENCRYPTION" ]; then
echo "${REGION}: Enabled"
else
echo "${REGION}: Disabled"
fi
done
แม้ว่าการสร้าง CloudTrail จะทำใน Singapore Region แต่เพื่อความแน่ใจ เราจะแสดงข้อมูลจากทุก region
ap-northeast-1: Enabled
ap-northeast-2: Enabled
ap-northeast-3: Enabled
ap-south-1: Enabled
ap-southeast-1: Enabled
ap-southeast-2: Enabled
ca-central-1: Enabled
eu-central-1: Enabled
eu-north-1: Enabled
eu-west-1: Enabled
eu-west-2: Enabled
eu-west-3: Enabled
sa-east-1: Enabled
us-east-1: Enabled
us-east-2: Enabled
us-west-1: Enabled
us-west-2: Enabled
ผลลัพธ์คือ ทุกภูมิภาคแสดงสถานะ "Enabled"
c. วิธี 1: คืนค่า Cloudtrail ผ่าน Classmethod Members Portal (CMP)
วิธีนี้จะคล้ายๆกับการปิด Opt-in ที่ได้กล่าวไว้ข้างต้นครับ
-
ให้ไปที่ CMP -> เลือก Account ที่ต้องการแก้ไข -> กด "Edit"
-
เลื่อนลงมาจนถึง "Basic Settings" แล้วตรวจสอบว่า "AWS CloudTrail (Basic Settings)" เปิดอยู่ (หากปิดอยู่ ให้คลิกเปิดด้วย)

-
จากนั้นให้เลื่อนลงมาจนถึง "Secure Settings (affects the existing operating system)" แล้วกดปิด "AWS CloudTrail (Secure Settings)

-
พอมีการเปลี่ยนค่า ให้เลื่อนมากด "Save" ที่ขวาล่างสุดเพื่อบันทึกการเปลี่ยนแปลงด้วย
-
พอทำสำเร็จ ในวันเสาร์ถัดมา การตั้งค่าของ CloudTrail เป็นการตั้งค่าแบบ Basic ตามมาตรฐาน Classmethod (ซึ่งเป็นการตั้งค่าเริ่มต้น ตอนที่ส่งมอบ Account ในครั้งแรก)
Note: สาเหตุที่แม้จะเปิด CloudTrail (Basic Settings) แล้วยังต้องปิด CloudTrail (Secure Settings) เพราะกรณีเปิดทั้ง 2 แบบ ระบบจะใช้ Secure Settings เป็นหลัก ทำให้ไม่คืนค่ากลับเป็น Basic Settings อย่างที่ต้องการ
d. วิธี 2: คืนค่า Cloudtrail ผ่าน CloudShell
ขั้นตอนการคืนค่า CloudTrail ด้วย CloudShell มีดังนี้:
- ปิดการตั้งค่าการเข้ารหัสไฟล์ log ของ CloudTrail
- เปลี่ยนการตั้งค่าการเข้ารหัสเริ่มต้นของ S3 Bucket เป็น SSE-S3
- ปิดการตั้งค่าการเข้ารหัสไฟล์ log ของ CloudTrail
คำสั่งสำหรับปิดการตั้งค่าอยู่ด้านล่างนี้ รันใน CloudShell ครับ
aws cloudtrail update-trail --name Members --kms-key-id "" --region ap-northeast-1
- รันคำสั่งตรวจสอบอีกครั้งเหมือนที่ทำไปก่อนหน้านี้ครับ
for REGION in $(aws ec2 describe-regions --query "sort(Regions[].RegionName)" --output text); do
ENCRYPTION=$(aws cloudtrail describe-trails --region "${REGION}" --trail-name-list Members --query 'trailList[].KmsKeyId' --output text 2>/dev/null)
if [ -n "$ENCRYPTION" ]; then
echo "${REGION}: Enabled"
else
echo "${REGION}: Disabled"
fi
done
ผลลัพธ์ที่ได้เป็นดังนี้ครับ
ap-northeast-1: Disabled
ap-northeast-2: Disabled
ap-northeast-3: Disabled
ap-south-1: Disabled
ap-southeast-1: Disabled
ap-southeast-2: Disabled
ca-central-1: Disabled
eu-central-1: Disabled
eu-north-1: Disabled
eu-west-1: Disabled
eu-west-2: Disabled
eu-west-3: Disabled
sa-east-1: Disabled
us-east-1: Disabled
us-east-2: Disabled
us-west-1: Disabled
us-west-2: Disabled
ต่อไปเราจะเปลี่ยนการตั้งค่าของ S3 Bucket
เปลี่ยนการตั้งค่าการเข้ารหัสเริ่มต้นของ S3 Bucket เป็น SSE-S3
การตั้งค่าการเข้ารหัสเริ่มต้นของ S3 Bucket ก็ใช้ SSE-KMS ที่ใช้คีย์ที่จัดการโดยผู้ใช้เหมือนกันกับ CloudTrail
เพื่อยืนยันชื่อของ Bucket ที่ต้องการเปลี่ยนแปลง รันคำสั่งต่อไปนี้
aws cloudtrail describe-trails --trail-name-list Members --query 'trailList[].S3BucketName' --output text
ก่อนอื่นให้ตรวจสอบสถานะปัจจุบัน รันคำสั่งตรวจสอบด้านล่างนี้
Note: cloudtrail-xxxxxxxxxxxx: ส่วนนี้ให้ใส่เลข ID จริงของเราลงไป
ENCRYPTION_TYPE=$(aws s3api get-bucket-encryption \
--bucket cm-members-cloudtrail-xxxxxxxxxxxx \
--region ap-northeast-1 --query 'ServerSideEncryptionConfiguration.Rules[].ApplyServerSideEncryptionByDefault.SSEAlgorithm' --output text)
if [ ${ENCRYPTION_TYPE} == "aws:kms" ]; then
echo "SSE-KMS is enabled"
elif [ ${ENCRYPTION_TYPE} == "AES256" ]; then
echo "SSE-S3 is enabled"
else
echo "Default encryption is not set"
fi
SSE-KMS is enabled
หากแสดงผลตามที่กล่าวไว้ ให้รันคำสั่งเปลี่ยนการตั้งค่าต่อไปนี้ คำสั่งนี้จะไม่แสดงผลลัพธ์ใดๆ
Note: cloudtrail-xxxxxxxxxxxx: ส่วนนี้ให้ใส่เลข ID จริงของเราลงไป
aws s3api put-bucket-encryption \
--bucket cm-members-cloudtrail-xxxxxxxxxxxx \
--server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}' --region ap-northeast-1
สุดท้าย ให้ตรวจสอบสถานะการเข้ารหัสเริ่มต้นอีกครั้ง รันคำสั่งตรวจสอบที่ได้ทำไปก่อนหน้านี้อีกครั้ง
SSE-S3 is enabled
หากแสดงผลตามที่กล่าวไว้ การดำเนินการก็เสร็จสมบูรณ์
【ข้อควรระวัง】เกี่ยวกับการลบคีย์ที่จัดการโดยผู้ใช้ (Customer Managed Key)
ตามที่อธิบายไว้ในส่วนของค่าบริการ การจัดการคีย์ที่จัดการโดยผู้ใช้ (Customer Managed Key) จะมีค่าใช้จ่าย $2 ต่อเดือน
อย่างไรก็ตาม หากคุณลบคีย์ที่จัดการโดยผู้ใช้นี้ คุณจะไม่สามารถเข้าถึง (ถอดรหัส) ไฟล์ log ที่ได้รับการบันทึกไว้ในปัจจุบันได้
นอกจากนี้ คีย์ที่จัดการโดยผู้ใช้นี้ยังถูกใช้ในการเข้ารหัสไฟล์ log ของ AWS Config ด้วย
※ใน Bucket ที่จัดเก็บไฟล์ log ของ CloudTrail จะมีการตั้งค่า Lifecycle Rule ให้ลบไฟล์หลังจากเก็บไว้เป็นเวลา 3 ปี
สำหรับวิธีการลบ สามารถดูรายละเอียดได้ที่เอกสารข้างล่างนี้ครับ
3. หากต้องการเปิดการใช้งานอีกครั้ง
- ให้มาที่เว็บไซต์ Classmethod Members Portal จากหัวข้อ "AWS Account" ให้เลือก Account ID ที่เราต้องการ
- จากนั้นเลื่อนลงมาที่หัวข้อ "Security Settings" แล้วคลิกที่ "Edit"
- ที่หัวข้อ "Secure Settings (affects the existing operating system)" ให้ติ๊กเปิด ของ "AWS CloudTrail (Secure Settings)" อีกครั้ง
- พอเสร็จแล้ว ก็ให้กด "Save" ที่ขวาล่างสุดเพื่อบันทึกการเปลี่ยนแปลงด้วยครับ
ทิ้งท้าย
จบไปแล้วครับกับบทความ "ขั้นตอนการปิดใช้งานบริการบางส่วนสำหรับ Secure Account: ขั้นตอนการคืนค่า AWS CloudTrail" หวังว่าผู้อ่านทุกท่านจะได้ประโยชน์และเข้าใจเกี่ยวกับการเปิดปิดการใช้ CloudTrail ใน Secure Account มากขึ้นนะครับ
แล้วพบกันใหม่ในบทความหน้า สวัสดีครับ
บทความต้นฉบับ
- 【セキュアアカウント切り戻し手順】AWS CloudTrail セキュア設定切り戻し手順のご案内
(บทความภาษาญี่ปุ่น)















