กันข้อมูลลับออกจากโค้ดและล็อก

การใช้ AWS Security สำหรับนักพัฒนา

Rahul Singh

Technical Product Manager

ไม่ใช่ทุกอย่างที่อ่อนไหวจะเป็นข้อมูลลับ

สตริงสามประเภท

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

แผนภาพสามแถวเปรียบเทียบข้อมูลลับ ข้อมูลอ่อนไหว และค่าคอนฟิก แต่ละแถวแสดงตัวอย่างค่าสองค่าและสิ่งที่คนแปลกหน้าทำได้ ตั้งแต่แอบอ้างเป็นคุณไปจนถึงไม่ได้ประโยชน์อะไร

การใช้ AWS Security สำหรับนักพัฒนา

ไม่ใช่ทุกอย่างที่อ่อนไหวจะเป็นข้อมูลลับ

สตริงสามประเภท

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

สองชื่อเรียกข้อมูลส่วนบุคคล

  • PII: ข้อมูลที่ระบุตัวบุคคลได้
  • PHI: ข้อมูลสุขภาพที่ได้รับการคุ้มครอง

แผนภาพสามแถวเปรียบเทียบข้อมูลลับ ข้อมูลอ่อนไหว และค่าคอนฟิก แต่ละแถวแสดงตัวอย่างค่าสองค่าและสิ่งที่คนแปลกหน้าทำได้ ตั้งแต่แอบอ้างเป็นคุณไปจนถึงไม่ได้ประโยชน์อะไร

การใช้ AWS Security สำหรับนักพัฒนา

สี่ช่องทางที่ข้อมูลลับรั่วไหล

ข้อมูลลับในระบบที่กำลังทำงานแตกออกเป็นสี่ทางออกที่มีหมายเลขกำกับ หมายเลขหนึ่งไปยังซอร์สโค้ดและประวัติของมัน หมายเลขสองไปยังตัวแปรสภาพแวดล้อม หมายเลขสามไปยังล็อกของแอปพลิเคชัน หมายเลขสี่ไปยังผลลัพธ์ข้อผิดพลาดและ traces ทั้งสี่ทางมาบรรจบกันที่กล่องข้อความระบุว่าใครก็อ่านได้

  1. ซอร์สโค้ดและประวัติของมัน
  2. ตัวแปรสภาพแวดล้อม
การใช้ AWS Security สำหรับนักพัฒนา

สี่ช่องทางที่ข้อมูลลับรั่วไหล

ข้อมูลลับในระบบที่กำลังทำงานแตกออกเป็นสี่ทางออกที่มีหมายเลขกำกับ หมายเลขหนึ่งไปยังซอร์สโค้ดและประวัติของมัน หมายเลขสองไปยังตัวแปรสภาพแวดล้อม หมายเลขสามไปยังล็อกของแอปพลิเคชัน หมายเลขสี่ไปยังผลลัพธ์ข้อผิดพลาดและ traces ทั้งสี่ทางมาบรรจบกันที่กล่องข้อความระบุว่าใครก็อ่านได้

  1. ซอร์สโค้ดและประวัติของมัน
  2. ตัวแปรสภาพแวดล้อม
  3. ล็อกของแอปพลิเคชัน
  4. ผลลัพธ์ข้อผิดพลาดและ traces
การใช้ AWS Security สำหรับนักพัฒนา

เข้ารหัสขณะจัดเก็บไม่ได้แปลว่าซ่อนอยู่

ตัวเลือกที่ดูปลอดภัย

  • เข้ารหัสขณะจัดเก็บเสมอ
  • คีย์ AWS KMS จัดการโดย AWS โดยค่าเริ่มต้น

ฟังก์ชัน Lambda ที่เก็บตัวแปรสภาพแวดล้อมแยกออกเป็นสองเส้นทาง บนดิสก์ข้อมูลถูกเข้ารหัสขณะจัดเก็บด้วยคีย์ AWS KMS แสดงเป็นสีเขียว ผ่าน API การเรียก GetFunctionConfiguration คืนค่าแบบไม่เข้ารหัส แสดงเป็นสีแดง ทั้งสองเส้นทางมาบรรจบที่หมายเหตุระบุว่ามีเพียงเส้นทางเดียวที่ได้รับการป้องกัน

การใช้ AWS Security สำหรับนักพัฒนา

เข้ารหัสขณะจัดเก็บไม่ได้แปลว่าซ่อนอยู่

ตัวเลือกที่ดูปลอดภัย

  • เข้ารหัสขณะจัดเก็บเสมอ
  • คีย์ AWS KMS จัดการโดย AWS โดยค่าเริ่มต้น

สิ่งที่ GetFunctionConfiguration คืนค่า

  • ค่าจริงแบบไม่เข้ารหัส

คำตอบเรื่องการจัดเก็บ ไม่ใช่เรื่องการเข้าถึง

ฟังก์ชัน Lambda ที่เก็บตัวแปรสภาพแวดล้อมแยกออกเป็นสองเส้นทาง บนดิสก์ข้อมูลถูกเข้ารหัสขณะจัดเก็บด้วยคีย์ AWS KMS แสดงเป็นสีเขียว ผ่าน API การเรียก GetFunctionConfiguration คืนค่าแบบไม่เข้ารหัส แสดงเป็นสีแดง ทั้งสองเส้นทางมาบรรจบที่หมายเหตุระบุว่ามีเพียงเส้นทางเดียวที่ได้รับการป้องกัน

การใช้ AWS Security สำหรับนักพัฒนา

เลือกใช้บริการไหน และทำไม

สองบริการ หน้าที่เฉพาะตัว

  • Secrets Manager: ออกแบบมาสำหรับข้อมูลลับ
  • Parameter Store: ออกแบบมาสำหรับค่าคอนฟิก และพารามิเตอร์แบบ SecureString ถูกเข้ารหัสด้วยคีย์ KMS

แผนภาพสเปกตรัม Secrets Manager อยู่ทางซ้าย Systems Manager Parameter Store อยู่ทางขวา มีเส้นแนวนอนสี่เส้นเชื่อมระหว่างกัน แต่ละเส้นมีจุดหมายเลขกำกับ จุดหนึ่งอยู่ซ้ายสุด จุดสองอยู่ซ้ายของกึ่งกลาง จุดสามอยู่กึ่งกลางเส้น จุดสี่อยู่ขวาสุด พร้อมตัวเลขต้นทุนที่ปลายทั้งสองของเส้นที่สี่ และหมายเหตุระบุว่าการหมุนเวียนคือตัวตัดสิน

การใช้ AWS Security สำหรับนักพัฒนา

เลือกใช้บริการไหน และทำไม

สองบริการ หน้าที่เฉพาะตัว

  • Secrets Manager: ออกแบบมาสำหรับข้อมูลลับ
  • Parameter Store: ออกแบบมาสำหรับค่าคอนฟิก และพารามิเตอร์แบบ SecureString ถูกเข้ารหัสด้วยคีย์ KMS

สี่ปัจจัยในการตัดสินใจ

  1. การหมุนเวียนที่จัดการให้
  2. การแชร์ข้ามบัญชี
  3. การควบคุมเวอร์ชัน
  4. ต้นทุน

แผนภาพสเปกตรัม Secrets Manager อยู่ทางซ้าย Systems Manager Parameter Store อยู่ทางขวา มีเส้นแนวนอนสี่เส้นเชื่อมระหว่างกัน แต่ละเส้นมีจุดหมายเลขกำกับ จุดหนึ่งอยู่ซ้ายสุด จุดสองอยู่ซ้ายของกึ่งกลาง จุดสามอยู่กึ่งกลางเส้น จุดสี่อยู่ขวาสุด พร้อมตัวเลขต้นทุนที่ปลายทั้งสองของเส้นที่สี่ และหมายเหตุระบุว่าการหมุนเวียนคือตัวตัดสิน

การใช้ AWS Security สำหรับนักพัฒนา

ดึงข้อมูลใหม่เสมอ แคชไว้ไม่นาน

โปรเซสที่กำลังทำงานของคุณเรียก GetSecretValue ไปยังที่เก็บข้อมูลลับที่จุดหนึ่ง โดยใช้บทบาทที่จำกัดขอบเขตที่จุดสอง ซึ่งจำกัดไว้เพียง ARN ของข้อมูลลับหนึ่งรายการบวก kms:Decrypt และเก็บค่าที่ได้รับไว้ในแคชในหน่วยความจำที่จุดสาม ก่อนเรียกใช้ฐานข้อมูลหรือ API ของพาร์ตเนอร์

  1. เรียก GetSecretValue ตอนเริ่มทำงาน
  2. จำกัดบทบาทให้ใช้ได้กับ ARN ของข้อมูลลับหนึ่งรายการบวก kms:Decrypt
การใช้ AWS Security สำหรับนักพัฒนา

ดึงข้อมูลใหม่เสมอ แคชไว้ไม่นาน

โปรเซสที่กำลังทำงานของคุณเรียก GetSecretValue ไปยังที่เก็บข้อมูลลับที่จุดหนึ่ง โดยใช้บทบาทที่จำกัดขอบเขตที่จุดสอง ซึ่งจำกัดไว้เพียง ARN ของข้อมูลลับหนึ่งรายการบวก kms:Decrypt และเก็บค่าที่ได้รับไว้ในแคชในหน่วยความจำที่จุดสาม ก่อนเรียกใช้ฐานข้อมูลหรือ API ของพาร์ตเนอร์

  1. เรียก GetSecretValue ตอนเริ่มทำงาน
  2. จำกัดบทบาทให้ใช้ได้กับ ARN ของข้อมูลลับหนึ่งรายการบวก kms:Decrypt
  3. แคชค่าไว้ในหน่วยความจำ

แคชไว้ตลอดไป แล้วการหมุนเวียนจะทำให้พัง

การใช้ AWS Security สำหรับนักพัฒนา

การหมุนเวียนเปลี่ยนค่าโดยที่คุณไม่รู้ตัว

ทำไมต้องสี่ขั้นตอน ไม่ใช่สลับทีเดียว

  • ค่าใหม่ถูกตรวจสอบแล้วก่อนมีใครเอาไปใช้
  • สลับทีเดียวจะทำให้ไคลเอนต์ทุกตัวพังพร้อมกัน

สามคอลัมน์เรียงลงมาตามหน้า ได้แก่ ขั้นตอนการหมุนเวียน ป้ายกำกับ และแคชของคุณ Secrets Manager รัน createSecret, setSecret และ testSecret จากนั้นเส้นประจะระบุช่วงเวลาที่ finishSecret เปลี่ยนป้ายกำกับ เหนือเส้นนั้นป้ายกำกับระบุว่า AWSCURRENT เท่ากับค่าเก่าและแคชถูกต้อง ใต้เส้นนั้นป้ายกำกับระบุว่า AWSCURRENT เท่ากับค่าใหม่แต่แคชเดิมถูกขีดด้วยสีแดง มีวิธีแก้สองอย่างปิดท้ายแผนภาพ คือกำหนดอายุแคชให้สั้น และรีเฟรชเมื่อยืนยันตัวตนล้มเหลว

การใช้ AWS Security สำหรับนักพัฒนา

การหมุนเวียนเปลี่ยนค่าโดยที่คุณไม่รู้ตัว

ทำไมต้องสี่ขั้นตอน ไม่ใช่สลับทีเดียว

  • ค่าใหม่ถูกตรวจสอบแล้วก่อนมีใครเอาไปใช้
  • สลับทีเดียวจะทำให้ไคลเอนต์ทุกตัวพังพร้อมกัน

สี่ขั้นตอน หนึ่งการส่งต่อ

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

สามคอลัมน์เรียงลงมาตามหน้า ได้แก่ ขั้นตอนการหมุนเวียน ป้ายกำกับ และแคชของคุณ Secrets Manager รัน createSecret, setSecret และ testSecret จากนั้นเส้นประจะระบุช่วงเวลาที่ finishSecret เปลี่ยนป้ายกำกับ เหนือเส้นนั้นป้ายกำกับระบุว่า AWSCURRENT เท่ากับค่าเก่าและแคชถูกต้อง ใต้เส้นนั้นป้ายกำกับระบุว่า AWSCURRENT เท่ากับค่าใหม่แต่แคชเดิมถูกขีดด้วยสีแดง มีวิธีแก้สองอย่างปิดท้ายแผนภาพ คือกำหนดอายุแคชให้สั้น และรีเฟรชเมื่อยืนยันตัวตนล้มเหลว

การใช้ AWS Security สำหรับนักพัฒนา

การหมุนเวียนเปลี่ยนค่าโดยที่คุณไม่รู้ตัว

ทำไมต้องสี่ขั้นตอน ไม่ใช่สลับทีเดียว

  • ค่าใหม่ถูกตรวจสอบแล้วก่อนมีใครเอาไปใช้
  • สลับทีเดียวจะทำให้ไคลเอนต์ทุกตัวพังพร้อมกัน

สี่ขั้นตอน หนึ่งการส่งต่อ

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

ไม่มีอะไรบอกแคชของคุณ

  • อายุไม่กี่นาที แล้วอ่านใหม่
  • รีเฟรชเมื่อยืนยันตัวตนล้มเหลว

สามคอลัมน์เรียงลงมาตามหน้า ได้แก่ ขั้นตอนการหมุนเวียน ป้ายกำกับ และแคชของคุณ Secrets Manager รัน createSecret, setSecret และ testSecret จากนั้นเส้นประจะระบุช่วงเวลาที่ finishSecret เปลี่ยนป้ายกำกับ เหนือเส้นนั้นป้ายกำกับระบุว่า AWSCURRENT เท่ากับค่าเก่าและแคชถูกต้อง ใต้เส้นนั้นป้ายกำกับระบุว่า AWSCURRENT เท่ากับค่าใหม่แต่แคชเดิมถูกขีดด้วยสีแดง มีวิธีแก้สองอย่างปิดท้ายแผนภาพ คือกำหนดอายุแคชให้สั้น และรีเฟรชเมื่อยืนยันตัวตนล้มเหลว

การใช้ AWS Security สำหรับนักพัฒนา

ปิดบัง ปกปิด แต่ยังดีบักได้

ล็อกดิบหนึ่งบรรทัดที่มีหมายเลขคำขอ หมายเลขบัตรเต็ม และโทเคน ล้อมกรอบด้วยสีแดง ด้านล่างคือข้อมูลสามฟิลด์เดียวกันหลังผ่านการจัดการ หมายเลขคำขอคงไว้เหมือนเดิม หมายเลขบัตรถูกปิดบังเหลือสี่หลักท้าย และโทเคนถูกแทนที่ด้วยเครื่องหมายปกปิดข้อมูล พร้อมหมายเหตุระบุว่าเหลือข้อมูลพอสำหรับดีบัก

ล้างข้อมูลก่อนเขียนลงล็อก

  • ปิดบัง (Mask): คงรูปแบบไว้ ซ่อนค่า
การใช้ AWS Security สำหรับนักพัฒนา

ปิดบัง ปกปิด แต่ยังดีบักได้

ล็อกดิบหนึ่งบรรทัดที่มีหมายเลขคำขอ หมายเลขบัตรเต็ม และโทเคน ล้อมกรอบด้วยสีแดง ด้านล่างคือข้อมูลสามฟิลด์เดียวกันหลังผ่านการจัดการ หมายเลขคำขอคงไว้เหมือนเดิม หมายเลขบัตรถูกปิดบังเหลือสี่หลักท้าย และโทเคนถูกแทนที่ด้วยเครื่องหมายปกปิดข้อมูล พร้อมหมายเหตุระบุว่าเหลือข้อมูลพอสำหรับดีบัก

ล้างข้อมูลก่อนเขียนลงล็อก

  • ปิดบัง (Mask): คงรูปแบบไว้ ซ่อนค่า
  • ปกปิด (Redact): ลบค่าทิ้ง เหลือแค่เครื่องหมาย
การใช้ AWS Security สำหรับนักพัฒนา

ปิดบัง ปกปิด แต่ยังดีบักได้

ล็อกดิบหนึ่งบรรทัดที่มีหมายเลขคำขอ หมายเลขบัตรเต็ม และโทเคน ล้อมกรอบด้วยสีแดง ด้านล่างคือข้อมูลสามฟิลด์เดียวกันหลังผ่านการจัดการ หมายเลขคำขอคงไว้เหมือนเดิม หมายเลขบัตรถูกปิดบังเหลือสี่หลักท้าย และโทเคนถูกแทนที่ด้วยเครื่องหมายปกปิดข้อมูล พร้อมหมายเหตุระบุว่าเหลือข้อมูลพอสำหรับดีบัก

ล้างข้อมูลก่อนเขียนลงล็อก

  • ปิดบัง (Mask): คงรูปแบบไว้ ซ่อนค่า
  • ปกปิด (Redact): ลบค่าทิ้ง เหลือแค่เครื่องหมาย

ทีมเวรต้องการแค่ค่าคอนฟิก ส่วนคนแปลกหน้าต้องการที่เหลือทั้งหมด

การใช้ AWS Security สำหรับนักพัฒนา

มาฝึกกันเถอะ!

การใช้ AWS Security สำหรับนักพัฒนา

Preparing Video For Download...