นักพัฒนามักจะฝังรหัสผ่านไว้ใน public หรือ private GitHub repository ซึ่งเพิ่มความเสี่ยงในการรั่วไหลของข้อมูล มันก็ไม่ดีไปกว่าการเก็บรหัสผ่านแบบคงที่ในโฟลเดอร์ .aws/credentials บนเซิร์ฟเวอร์หรือเครื่องของผู้ปฏิบัติงานท้องถิ่น ตามที่ Bruce Schneier นักเข้ารหัสชาวอเมริกัน นักเขียน และผู้เชี่ยวชาญด้านความปลอดภัยคอมพิวเตอร์กล่าวไว้: . “Only amateurs attackWe machines; professionals target people.” ดังนั้น คุณ ไม่ใช่ฮาร์ดแวร์ของคุณ คือสิ่งที่เสี่ยง

โดยการรันซอฟต์แวร์ที่เป็นการฉ้อโกง อาชญากรไซเบอร์สามารถขโมยข้อมูลทั้งหมดจากโฟลเดอร์หรือไดเรกทอรีทั้งหมดที่มีรหัสผ่านของคุณ เพื่อนของคุณ และลูกค้าได้อย่างง่ายดาย แม้แต่ทีมสนับสนุน AWS ก็เหนื่อยกับตั๋วร้องเรียนเกี่ยวกับรหัสผ่านที่ถูกขโมยจาก public Git repos อยู่เสมอ นี่คือเหตุผลว่าทำไมถ้าคุณ commit keys คาดว่าจะได้รับอีเมลภายใน 3-5 นาทีแจ้งว่า IAM policy ได้ถูกนำไปใช้แล้ว ซึ่งหมายความว่าคุณไม่สามารถลบ policy หรือทำลายรหัสผ่านที่ถูกเปิดเผยได้

FirstImage

แม้มาตรการเหล่านี้ก็ยังไม่แก้ปัญหา ตามรายงาน Verizon 2022 Data Breach Investigations Report พบว่ามีการเพิ่มขึ้นเกือบ 30% ของรหัสผ่านที่ถูกขโมย ซึ่งพิสูจน์ว่าเป็นวิธีที่ใช้ได้ผลจริงในการเข้าถึงองค์กรโดยไม่ได้รับอนุญาตในช่วงห้าปีที่ผ่านมา ในความเป็นจริง รหัสผ่านเหล่านี้คิดเป็นเกือบครึ่งหนึ่งของการละเมิดทั้งหมด

FirstImage

ในช่วง 12 เดือนที่ผ่านมา พบรหัสผ่านที่ถูกขโมยและรั่วไหลกว่า 31,000+ สำหรับบริษัทใน FTSE 100 ขณะที่เกือบ 40% ถูกเปิดเผยในโลกใต้ดิน เหตุการณ์เดียวกันเกิดขึ้นกับข้อมูลของประชาชนชาวจีนจำนวน 1 พันล้านรายการ private citizens’ data ที่ถูกขโมยจากตำรวจเซี่ยงไฮ้ในฤดูร้อนปี 2022 ทั้งหมดนี้เป็นไปได้เนื่องจาก exposed credentials บน CSDN—เครือข่ายนักพัฒนาซอฟต์แวร์ของจีน

ส่วนที่แย่ที่สุด — นักพัฒนาทำอะไรไม่ได้เพื่อป้องกันการโจมตีแม้ว่าจะตรวจพบได้อย่างรวดเร็ว ผลลัพธ์ Honeypot แสดงให้เห็นว่าใช้เวลาเพียง 1 นาทีในการค้นหารหัสผ่านที่ถูกเปิดเผยและเริ่มโจมตี การโจมตีทั้งหมดใช้เวลาสูงสุดเพียง 4 นาทีจากช่วงเวลาที่รหัสผ่านถูกเปิดเผย

ใช้ aws-vault เพื่อเก็บและเข้าถึง AWS Credentials อย่างปลอดภัยในสภาพแวดล้อมการพัฒนา ลิงก์ไปยังหัวข้อ

Aws-vault เป็นเครื่องมือที่แก้ปัญหารหัสผ่านที่ถูกขโมยมาแล้วเป็นเวลาหกปี มันเก็บ IAM credentials ของคุณใน keystore ที่ปลอดภัย จากนั้นสร้างรหัสผ่านชั่วคราวเพื่อเปิดเผยให้กับ shell และแอปพลิเคชันของคุณ ดังนั้น keys จึงไม่ถูกฝังในโค้ดหรือเป็นแบบคงที่ ซึ่งช่วยลดความเสี่ยงการรั่วไหลของข้อมูล นี่คือสี่ปัญหาหลักที่ aws-vault แก้ไขได้:

  • รักษาความปลอดภัยการเข้าถึงผลิตภัณฑ์ที่อยู่ระหว่างการพัฒนา วิศวกรที่ทำงานบนโซลูชันดิจิทัลสามารถรันการทดสอบโดยไม่ต้อง commit keys ใน public Git repos แม้ว่าคุณจะ commit ความลับใน private Git repo ก็ยังเสี่ยงด้านความปลอดภัย เพราะจะไม่มีการแจ้งเตือน คุณจะรู้เรื่องเหตุการณ์เมื่อผลิตภัณฑ์ของคุณเปิดให้สาธารณะเข้าถึง เช่น หากคุณกำลังจะเริ่มการนำเสนอแต่การเข้าถึงโซลูชันถูกบล็อก
  • ควบคุมประเภทของรหัสผ่านที่ใช้ ปัญหาทั่วไปที่นักพัฒนาพบคือไม่เข้าใจว่าประเภทของรหัสผ่านที่แอปใช้คืออะไร อาจเป็นแบบ local, static hardcoded, environment variables, containers, EC2 Instance profiles หรือ ECS Container task roles Aws-vault จะเติม environment variables แต่ยังสามารถจำลอง EC2 metadata servers และ ECS credential servers ได้

FirstImage

  • ให้การเข้าถึงที่ราบรื่นในหลายแอป การใช้หลายบัญชีเป็นเรื่องปกติสำหรับนักพัฒนา แต่ละบัญชีมีสิทธิ์การเข้าถึงของตัวเอง โดยไม่ต้อง hardcoding คุณต้องคิดว่าจะเก็บรหัสผ่านไว้ที่ไหนและแจกจ่ายอย่างไรให้ปลอดภัยในทีม ด้วย aws-vault คุณไม่ต้องกังวลเกี่ยวกับกลยุทธ์ AWS Multi-Account ว่าควร commit keys หรือไม่ เครื่องมือนี้ส่งรหัสผ่านแบบไดนามิกที่หมดอายุในเวลาสั้น ๆ ซึ่งลดโอกาสให้แฮกเกอร์
  • การนำทางที่สะดวกในหลายแอป เนื่องจากรหัสผ่านของคุณเป็นแบบ environment type เครื่องมือโครงสร้างพื้นฐานคลาวด์ที่ใช้ AWS SDK (เช่น Terraform) สามารถนำไปใช้และอนุญาตให้คุณเข้าถึงได้ง่าย หากคุณต้องการปิดทุก session ให้รันคำสั่ง exit แอปใด ๆ จะรีเฟรชรหัสผ่านไดนามิกโดยอัตโนมัติเมื่อจำเป็น

วิธีฝึกใช้ aws-vault ลิงก์ไปยังหัวข้อ

มีแนวโน้มว่าปัจจุบัน login และรหัสผ่านของคุณถูก hardcoded คุณอาจเชื่อว่านี่เป็นวิธีที่สะดวกในการแชร์รหัสผ่านกับทีมโดยไม่ต้องส่งด้วยตนเอง ดังนั้นโค้ดของคุณจึงเป็นดังนี้:

FirstImage

ในกรณีนี้ ข้อมูลของคุณสามารถถูกขโมยและนำไปใช้ในทางที่ผิดได้ง่าย นี่คือคำแนะนำสั้น ๆ ในการเพิ่มความปลอดภัยของรหัสผ่านด้วย aws-vault:

  • สร้างบัญชี AWS หากคุณยังไม่มี สร้าง IAM user และกำหนด roles ซึ่งอนุญาตให้คุณเข้าถึง keys ที่ใช้กับ API หรือ CLI ตั้ง secret keys รหัสผ่าน และสิทธิ์การกระทำและการเข้าถึง
  • หากคุณใช้หลาย AWS profiles ให้สมมติสิทธิ์ชั่วคราวสำหรับแต่ละโปรไฟล์ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิธีทำได้ ที่นี่

เมื่อคุณตั้งค่าเสร็จแล้ว คุณสามารถเริ่มสร้าง environment credentials ด้วย aws-vault สมมติว่าคุณมี แอปที่ใช้ JavaScript แบบพื้นฐาน เพื่อทดสอบ คุณสั่งคำสั่งให้ vault นำรหัสผ่านไดนามิกและเพิ่มเข้าไปในสภาพแวดล้อมการพัฒนาสำหรับแอปที่จะรัน ด้วย AWS SDK แอป JavaScript จะได้รับรหัสผ่าน

FirstImage

กระบวนการเหมือนกันถ้าคุณต้องการส่งมอบรหัสผ่านสภาพแวดล้อมให้กับ docker ง่าย ๆ แก้ไขคำสั่ง docker เล็กน้อย แล้วคุณจะได้รับรหัสผ่านสภาพแวดล้อม

FirstImage

Aws-vault ยังช่วยให้คุณ จำลองเซิร์ฟเวอร์ ESC credential และ ES2 Instance Profile ได้ เช่น หากคุณใช้เครื่องมือนี้เพื่อส่งมอบรหัสผ่านให้กับ docker-compose aws-vault จะทำตัวเหมือนเป็นส่วนหนึ่งของเซิร์ฟเวอร์ที่รับผิดชอบการโอนรหัสผ่าน ผลลัพธ์ในสภาพแวดล้อมการพัฒนาแสดงว่า aws-vault เปิดตัวจำลองในเครื่องด้วยโทเค็นเฉพาะเหมือนกับ ESC จะมีรหัสผ่านระยะไกล ในขณะที่ access key และ session tokens จะไม่ถูกส่งผ่าน

FirstImage

FirstImage

ถ้าคุณต้องการจำลอง ES2 Instance Profile เครื่องมือจะรัน proxy ในเครื่อง ที่นี่คุณไม่สามารถหลีกเลี่ยงการใช้ root ได้ ผลลัพธ์คือคุณจะได้รับ EC2 metadata credentials

FirstImage

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับตัวอย่างทั้งหมดที่อธิบายไว้ได้ที่นี่: https://github.com/cageyv/aws-vault-examples

ประโยชน์ของ aws-vault ลิงก์ไปยังหัวข้อ

นี่คือประโยชน์หลักของการใช้ aws-vault

  • ฟังก์ชันการทำงานที่เรียบง่าย ใช้เวลาเพียงไม่กี่นาทีในการเริ่มใช้เครื่องมือ โดยพื้นฐานคุณต้องสร้างบัญชี ตั้งค่า IAM และ roles, secret keys และรหัสผ่านเพื่อเริ่มต้น
  • ความปลอดภัย รหัสผ่านไดนามิกที่หมดอายุในเวลาสั้น ๆ ไม่ก่อให้เกิดภัยคุกคามด้านความปลอดภัย แม้ว่าจะถูกขโมย อาชญากรไซเบอร์ไม่สามารถขโมยแล้วซ่อนตัว จากนั้นจึงขโมยข้อมูลหรือแอปของคุณอย่างกะทันหัน นอกจากนี้ หากบริษัทของคุณใช้ AWS Single Sign-on (SSO) aws-vault ยังสามารถใช้รหัสผ่านที่กำหนดโดย AWS SSO CLI v2 ได้ด้วย
  • ความสะดวกสบาย ด้วย AWS SDK โซ่ของรหัสผ่านทั้งหมดได้รับการสนับสนุนโดยค่าเริ่มต้น คุณไม่ต้องเพิ่มการตั้งค่าใด ๆ ในขณะที่แอปจะรีเฟรชรหัสผ่านไดนามิกหากหมดอายุระหว่างเซสชันของคุณ
  • การทดสอบในเครื่อง Aws-vault ช่วยให้คุณทดสอบแอปในสภาพแวดล้อมที่จะเปิดตัวก่อนปล่อย คุณสามารถตรวจจับบั๊กและแก้ไขได้โดยไม่ต้องดีพลอยหรือให้สิทธิ์เข้าถึงกับแอดมินหรือ DevOps

อีกหนึ่งบริการที่ช่วยพัฒนาและทดสอบแอปแบบออฟไลน์คือ Local Stack มีทั้งเวอร์ชันฟรีและเสียเงิน และทำหน้าที่เป็น metal developer ที่สร้างแอปด้วย AWS ในเครื่อง Local Stack สามารถจำลองบริการ AWS หลายอย่างโดยไม่ต้องเข้าถึงคลาวด์เพื่อให้ประสบการณ์การเขียนโค้ดที่ราบรื่น เครื่องมือนี้มีฐานข้อมูลโอเพนซอร์สที่ดีเพื่อเร่งกระบวนการเขียนโค้ดและช่วยให้คุณมุ่งเน้นที่เป้าหมายทางธุรกิจ เช่นเดียวกับ aws-vault ที่ช่วยอำนวยความสะดวกในการโอนรหัสผ่าน ลดความเสี่ยงการรั่วไหลของข้อมูลที่ละเอียดอ่อน และช่วยให้คุณมีเวลามากขึ้นกับงานที่มีความหมายแทนที่จะคิดว่าจะส่งมอบ keys อย่างไรโดยไม่ต้องฝังในโค้ด