ฉันควรทำอย่างไรหาก Alibaba Cloud AccessKey รั่วไหลสอนวิธีกำหนดค่าสิทธิ์บทบาท RAM

เมฆ 2026-05-28 阅读 10
1

ทีมเทคนิคหลายทีมต้องเผชิญกับ "ความหวาดกลัวตอนเที่ยงคืน": จู่ๆก็ได้รับการโทรแบบอนุกรมที่เป็นอันตรายหรือการแจ้งเตือนทาง SMS จาก Alibaba Cloud "บัญชีของคุณตรวจพบความเสี่ยงจากการรั่วไหลของ AccessKey และทรัพยากรบางส่วนถูกเรียกว่าผิดปกติความถี่สูง..."

เมื่อฉันลงชื่อเข้าใช้คอนโซลบิลก็ระเบิดและแฮกเกอร์ยังสร้างเซิร์ฟเวอร์เป็นชุดเพื่อขุด

ต้นตอของทั้งหมดนี้มักเป็นเพราะรูปภาพช่วยประหยัดปัญหาโดยตรงในรหัสไฟล์กำหนดค่าหรือคลังสินค้าสาธารณะ GitHub

บัญชีหลัก AccessKey(AK/SK)

。 AK ของบัญชีหลักเปรียบเสมือนคีย์หลักของบ้านของคุณเมื่อรั่วไหลทรัพย์สินบนคลาวด์ทั้งหมดจะเทียบเท่ากับการเปิดให้แฮกเกอร์อย่างสมบูรณ์

วันนี้ฉันจะไม่พูดถึงทฤษฎีเสมือนจริงหรือเรื่องไร้สาระจับมือคุณโดยตรงเพื่อสร้างสองแนวป้องกัน:

ประการแรกการหยุดเลือดฉุกเฉิน5นาทีหลังจาก AK รั่วไหลประการที่สองวิธีใช้บทบาท RAM (Role) เพื่อกำจัดอันตรายที่ซ่อนอยู่ของฮาร์ดโค้ด AK อย่างสมบูรณ์

ขั้นตอนที่1: ห้ามเลือดฉุกเฉิน! การไหลฉุกเฉิน5นาทีรั่วไหลโดย AccessKey

หากคุณพบหรือสงสัยว่า AK รั่วไหลอย่าลังเลที่จะดำเนินการต่อไปนี้ทันทีความล่าช้าอีกหนึ่งนาทีคือการสูญเสียเงินจริง

ขั้นตอนที่1: ปิดใช้งานหรือลบ AK ที่เกี่ยวข้องในเครือข่ายทั้งหมด

ลงชื่อเข้าใช้คอนโซล Alibaba Cloud ทันทีและคลิกที่รูปโปรไฟล์ $ \ rightarrow $ ที่มุมขวาบนเพื่อเลือก "การจัดการ AccessKey"

ค้นหา AccessKey (ไม่ว่าจะเป็นบัญชีหลักหรือบัญชีย่อย) ที่แจ้งว่ารั่วไหล

คลิก "ปิดใช้งาน" ก่อนในขณะนี้คำขอเครือข่ายภายนอกทั้งหมดที่ใช้ AK จะรายงานข้อผิดพลาด403ทันที

หลังจากยืนยันว่าไม่ส่งผลกระทบต่อธุรกิจการผลิตหลักให้คลิก "ลบ" อย่างเด็ดขาด

ขั้นตอนที่2: ตรวจสอบ "แบ็คดอร์" ที่แฮกเกอร์ทิ้งไว้

หลังจากแฮกเกอร์ได้รับ AK สิ่งแรกคือการใช้สคริปต์อัตโนมัติเพื่อสร้างทรัพยากรเป็นชุด

ไปที่รายการอินสแตนซ์ ECS และรายการเซิร์ฟเวอร์แอปพลิเคชันน้ำหนักเบาสลับไปยังภูมิภาคต่างๆ (ปักกิ่งเซี่ยงไฮ้เซินเจิ้นฮ่องกงสหรัฐอเมริกาฯลฯ) และดูว่ามีเซิร์ฟเวอร์เพิ่มเติมที่อธิบายไม่ได้หรือไม่ถ้ามีให้ปล่อยทันที

ไปที่คอนโซล ActionTrail เพื่อตรวจสอบว่า AK เรียก API ใดในช่วง24ชั่วโมงที่ผ่านมาและค้นหาทรัพยากรที่แฮกเกอร์ใช้

ขั้นตอนที่สอง: การกำหนดค่าพื้นฐานของบทบาท RAM และสิทธิ์ขั้นต่ำ

หลังจากลบ AK รหัสโครงการเก่าจะยุบโดยตรงเนื่องจากต้องการสิทธิ์ในการอ่านและเขียน OSS หรือเรียกใช้บริการคลาวด์อื่นๆ

เราไม่สามารถสร้างบัญชีหลักใหม่ได้วิธีที่ถูกต้องคือ:

ใช้บทบาท RAM (RAM Role) เพื่อให้โปรแกรมที่ทำงานบน Alibaba Cloud ได้รับสิทธิ์ชั่วคราวโดยอัตโนมัติโดยไม่ต้องใช้คีย์

ด้านล่างนี้เราใช้ "ให้โปรแกรมบนคลาวด์เซิร์ฟเวอร์ ECS สามารถอ่านและเขียนถังเก็บข้อมูล OSS ได้อย่างปลอดภัย" เป็นตัวอย่างสำหรับการกำหนดค่าการต่อสู้จริง

ขั้นตอนที่1: สร้างตัวละคร RAM (สร้าง "ตัวตน" จากอากาศบางๆ

)

ค้นหาในคอนโซลและป้อน "การควบคุมการเข้าถึง RAM"

คลิกที่ "บทบาท" $ \ rightarrow $ "สร้างตัวละคร" ในเมนูด้านซ้าย

เลือกประเภทเอนทิตีที่เชื่อถือได้เป็น "Alibaba Cloud Service" แล้วคลิกถัดไป

ประเภทบทบาท: เลือก "บทบาทบริการปกติ"

ชื่อตัวละคร: ตั้งชื่อที่เข้าใจง่ายเช่น ECS-OSS-Reader-Role

เลือกบริการที่น่าเชื่อถือ: เนื่องจากเราต้องการโพสต์บทบาทนี้บนเซิร์ฟเวอร์คลาวด์เราจึงเลือก "Cloud Server" (ECS) ที่นี่

คลิกตกลง.

ขั้นตอนที่2: การอนุญาตที่ถูกต้อง (ไม่ให้สิทธิ์พิเศษ)

ตัวละครที่สร้างขึ้นใหม่เป็นแผ่นกระดาษเปล่าที่ไม่มีสิทธิ์เราจำเป็นต้องออกใบอนุญาตให้เป็นไปตาม "หลักการสิทธิ์ขั้นต่ำ"

ค้นหา ECS-OSS-Reader-Role ที่คุณเพิ่งสร้างขึ้นในรายการบทบาทและคลิก "เพิ่มสิทธิ์" ทางด้านขวา

ขอบเขตการอนุญาต: เลือกบัญชี Alibaba Cloud ทั้งหมด (ค่าเริ่มต้น)

กลยุทธ์การเลือก: ถ้าเพียงแค่อ่าน OSS: ค้นหาและติ๊ก AliyunOSSReadOnlyAccess (อ่านอย่างเดียวเข้าถึง OSS) ถ้าคุณต้องการอ่านและเขียน OSS: ค้นหาและติ๊ก AliyunOSSFullAccess (จัดการ OSS)

คลิกตกลง.

ขั้นตอนที่3: ผูกบทบาทกับ ECS Cloud Server

ขั้นตอนนี้สำคัญมากเทียบเท่ากับการวาง "ใบอนุญาต" นี้ไว้ที่หน้าผากของเซิร์ฟเวอร์เฉพาะ

ไปที่คอนโซล "Cloud Server ECS" และค้นหาอินสแตนซ์ที่รันโค้ดของคุณ

คลิกที่ "เพิ่มเติม" $ \ rightarrow $ "ตัวอย่างการตั้งค่า" $ \ rightarrow $ "ให้/ถอนบทบาท RAM" ทางด้านขวา

ในเมนูแบบเลื่อนลงให้เลือก ECS-OSS-Reader-Role ที่คุณเพิ่งสร้างขึ้น

คลิกตกลง.

ขั้นตอนที่สาม: การเปลี่ยนแปลงรหัส-อำลา AK การเข้ารหัสแบบแข็งโดยสิ้นเชิง

ตอนนี้เซิร์ฟเวอร์ของคุณมีสถานะทางกฎหมายเราจะไปแก้ไขโค้ดของโครงการและใส่บรรทัดที่น่ารังเกียจเหล่านั้น

AccessKeyId

และ

AccessKeySecret

ลบทั้งหมด

SDK ของ Alibaba Cloud มี

การฉีดแบบหมุนใบสำคัญอัตโนมัติ

ฟังก์ชั่นเมื่อรหัสทำงานบน ECS ที่ผูกไว้กับบทบาท RAM SDK จะเข้าถึงที่อยู่ข้อมูลเมตาของเครื่องพิเศษภายในเซิร์ฟเวอร์

http

: // 100.100.100.200 /latest/meta-data/

รับโดยอัตโนมัติ

เปลี่ยน Token ชั่วคราวที่หมดอายุโดยอัตโนมัติทุกสองสามชั่วโมง

แม้ว่าแฮ็กเกอร์จะแอบเข้าไปในเซิร์ฟเวอร์และขโมยโทเค็นนี้แต่ก็จะล้มเหลวโดยอัตโนมัติหลังจากผ่านไปสองสามชั่วโมงและไม่สามารถใช้เป็นแบ็คดอร์ถาวรได้

ใช้ Java SDK เข้าถึง OSS เป็นตัวอย่าง:

รหัสเก่า (อันตรายมาก❌):

Java

// ห้ามเขียนแบบนี้เด็ดขาด! เมื่อรหัสอยู่ใน

อัปโหลดไปยังแพลตฟอร์มโฮสต์รหัสสาธารณะและทั้งครอบครัวก็ขึ้นสู่ท้องฟ้าทันที

String accessKeyId = "LTAI5tXXXXXX";

String accessKeySecret = "Pn7yXXXXXX";

OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

รหัสใหม่ (แนะนำโดยกลยุทธ์การรักษาความปลอดภัยดั้งเดิมบนคลาวด์):

Java

Import com.aliyun.oss.OSS;

Import com.aliyun.oss. OSClientBuilder;

Import com.aliyun.credentials.Client;

Import com.aliyun.credentials.mo dels.Config;

// ไม่จำเป็นต้องใช้คีย์ข้อความใดๆเลย!

Config credentialConfig = new Config();

CredentialConfig.setType ("ecs_ram_role"); // ระบุประเภทใบรับรองสำหรับบทบาท RAM ที่ผูกพันกับ ECS

// หากเว้นว่าง SDK จะค้นหาชื่อตัวละครที่ผูกไว้กับเซิร์ฟเวอร์ปัจจุบันโดยอัตโนมัติ

// CredentialConfig.setRoleName ("ECS-OSS-Reader-Role");

Client credentialClient = new Client(credentialConfig);

// สร้างไคลเอนต์ OSS โดยใช้ข้อมูลประจำตัวชั่วคราว

OSS ossClient = new OSSClientBuilder().build(endpoint, credentialClient);

Ultimate Line of Defense: จะป้องกันการรั่วไหลครั้งต่อไปได้อย่างไร?

อย่าส่งไฟล์คอนฟิกูเรชันที่มีข้อความที่ชัดเจน AK ในฐานรหัสสาธารณะใดๆ (เช่น GitHub, Gitee) แม้แต่คลังสินค้าส่วนตัวก็ใช้ไม่ได้การรั่วไหลจำนวนมากเกิดจากพนักงานเปลี่ยนคลังสินค้าส่วนตัวเป็นสาธารณะโดยไม่ได้ตั้งใจ

ใช้ประโยชน์จากมัน Gitignore 。เมื่อเริ่มต้นโครงการให้เพิ่ม application-prod.yml, config.json และไฟล์คอนฟิกูเรชันอื่นๆที่มีข้อมูลที่ละเอียดอ่อนลงในรายการที่ไม่สนใจทันที

วิธีการพัฒนาท้องถิ่น? หากคอมพิวเตอร์ในระบบต้องการการดีบัก AK จริงๆให้กำหนดค่า AK เป็นตัวแปรสภาพแวดล้อมของระบบคอมพิวเตอร์ของคุณ (ผ่าน export ALIBABA_CLOUD_ACCESS_KEY_ID = "xxx") ในรหัส

โดย System.getenv() ไปอ่านด้วยวิธีนี้รหัสจะสะอาดเสมอ

ความปลอดภัยไม่ใช่เรื่องเล็กน้อยคืนนี้เราจะตรวจสอบรายการที่คุณดูแลและฆ่า AK บัญชีหลักที่เข้ารหัสยากทั้งหมด!

cloud
← 返回新闻中心