0Pricing
Cyber Security Academy · บทเรียน

ข้อมูลลับแบบไดนามิกและการเช่า

ข้อมูลรับรองอายุสั้นที่หมดอายุโดยอัตโนมัติ

ข้อมูลลับแบบไดนามิกและการเช่า เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

ข้อมูลลับแบบคงที่เทียบกับแบบไดนามิก

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

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

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

วิธีทำงานของข้อมูลลับแบบไดนามิก

ข้อมูลลับแบบไดนามิกกำหนดให้ห้องนิรภัยมีสิทธิ์การเข้าถึงระดับสูงในระบบส่วนหลัง กระบวนการสำหรับฐานข้อมูลมีดังนี้:

  • ผู้ดูแลระบบกำหนดค่าห้องนิรภัยด้วยข้อมูลรับรองฐานข้อมูลระดับรากและแม่แบบการสร้าง
  • แอปพลิเคชันยืนยันตัวตนและร้องขอข้อมูลรับรอง
  • ห้องนิรภัยเรียกใช้ CREATE USER บนฐานข้อมูล แล้วส่งคืนชื่อผู้ใช้และรหัสผ่านชุดใหม่
  • เมื่อสัญญาเช่าหมดอายุ ห้องนิรภัยจะเรียกใช้ DROP USER โดยอัตโนมัติ

แอปพลิเคชันจะไม่เห็นรหัสผ่านที่มีอายุยาวนาน แต่จะได้รับข้อมูลรับรองชั่วคราวที่ผูกกับข้อมูลระบุตัวตนและสัญญาเช่าของตน

# Configure Vault's database engine with a creation statement
vault write database/roles/billing-readonly \
  db_name=appdb \
  creation_statements="CREATE ROLE \"{{name}}\" LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT ON billing TO \"{{name}}\";" \
  default_ttl="1h" max_ttl="24h"

การขอข้อมูลรับรองแบบไดนามิก

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

ผู้ใช้บริการแต่ละรายจะได้รับข้อมูลรับรองของตนเอง หากพ็อดสองรายการของบริการเดียวกันเริ่มทำงาน พวกมันจะได้รับชื่อผู้ใช้ที่แตกต่างกันสองชื่อ ทำให้สามารถตรวจสอบแยกตามผู้ใช้บริการได้ในระดับฐานข้อมูล

vault read database/creds/billing-readonly

# Example response:
# lease_id     database/creds/billing-readonly/abc123
# lease_duration  1h
# password     A1b-2Cd3-temp-xyz
# username     v-approle-billing-9f3a2

สัญญาเช่า: ข้อตกลงเรื่องอายุการใช้งาน

สัญญาเช่าคือข้อตกลงที่ระบุว่าข้อมูลลับนี้ใช้ได้เป็นเวลานานเท่าใด ข้อมูลลับแบบไดนามิกทุกรายการมีTTL (อายุการใช้งาน) และอาจมีTTL สูงสุด

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

เมื่อสัญญาเช่าหมดอายุ ห้องนิรภัยจะเพิกถอนข้อมูลรับรอง โดยลบผู้ใช้ฐานข้อมูลนั้นออกจริง ๆ การหมดอายุไม่ใช่เพียงเครื่องหมาย แต่จะเรียกใช้การล้างข้อมูลจริง นี่คือสิ่งที่ทำให้ข้อมูลลับแบบไดนามิกที่รั่วไหลสามารถฟื้นฟูตัวเองได้ ข้อมูลรับรองที่ถูกขโมยจะใช้การไม่ได้ภายในช่วง TTL

การต่ออายุและการเพิกถอนสัญญาเช่า

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

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

คุณยังสามารถเพิกถอนสัญญาเช่าทั้งหมดภายใต้คำนำหน้าเดียวกัน เพื่อหยุดการเข้าถึงของบริการหรือสภาพแวดล้อมทั้งหมดได้ทันที

# Renew a lease before it expires
vault lease renew database/creds/billing-readonly/abc123

# Revoke a single lease immediately (incident kill switch)
vault lease revoke database/creds/billing-readonly/abc123

# Revoke every lease under a path prefix
vault lease revoke -prefix database/creds/billing-readonly

นอกเหนือจากฐานข้อมูล

ข้อมูลลับแบบไดนามิกไม่ได้จำกัดอยู่แค่ฐานข้อมูล ห้องนิรภัยและเครื่องมือที่คล้ายกันสามารถสร้างข้อมูลรับรองอายุสั้นสำหรับระบบต่าง ๆ ได้มากมาย:

  • IAM บนคลาวด์ คีย์การเข้าถึงชั่วคราวของ AWS/GCP/อาซัวร์ผ่านการสวมบทบาทในรูปแบบ STS
  • SSH ใบรับรอง SSH อายุสั้นที่ลงนามแล้ว แทนคีย์แบบคงที่
  • PKI/TLS ใบรับรองที่ออกให้ตามคำขอและมีอายุการใช้งานสั้น
  • RabbitMQ, MongoDB, คอนซูล ข้อมูลรับรองบริการแบบชั่วคราว

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

# Generate temporary AWS credentials scoped to a role
vault read aws/creds/deploy-role
# returns short-lived access_key, secret_key, security_token

# Sign an SSH key for short-lived access (valid minutes, not forever)
vault write ssh/sign/admin public_key=@id_ed25519.pub ttl=15m

เหตุใดข้อมูลลับแบบไดนามิกจึงลดขอบเขตความเสียหาย

ลองพิจารณาข้อมูลรับรองที่รั่วไหลภายใต้แต่ละรูปแบบ:

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

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

ข้อแลกเปลี่ยนของข้อมูลรับรองระดับราก

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

มาตรการลดความเสี่ยง:

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

ห้องนิรภัยสามารถหมุนเวียนข้อมูลรับรองระดับรากของตนเองได้ ดังนั้นหลังจากตั้งค่าแล้วจึงไม่มีมนุษย์คนใดรู้ข้อมูลดังกล่าว

# After configuring the engine, rotate the root credential
# so even operators no longer know the original password
vault write -force database/rotate-root/appdb

การจัดการการหมดอายุในโค้ดแอปพลิเคชัน

แอปพลิเคชันต้องเขียนให้รองรับการเปลี่ยนแปลงข้อมูลรับรอง เมื่อใช้ข้อมูลลับแบบคงที่ โค้ดจะอ่านรหัสผ่านเพียงครั้งเดียวตอนเริ่มต้น แต่เมื่อใช้ข้อมูลลับแบบไดนามิก โค้ดต้อง:

  • ดึงข้อมูลรับรองและจดจำ TTL ของสัญญาเช่า
  • ต่ออายุสัญญาเช่า หรือดึงข้อมูลรับรองชุดใหม่ก่อนหมดอายุ
  • เชื่อมต่อใหม่อย่างเหมาะสมเมื่อข้อมูลรับรองเดิมถูกเพิกถอน

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

# Vault Agent auto-renews and re-templates on rotation
auto_auth { method "approle" { ... } }
template {
  contents    = "{{ with secret \"database/creds/billing-readonly\" }}{{ .Data.username }}:{{ .Data.password }}{{ end }}"
  destination = "/run/secrets/db"
  command     = "systemctl reload billing-app"
}

เมื่อหลีกเลี่ยงข้อมูลลับแบบคงที่ไม่ได้

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

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

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

ข้อมูลลับแบบไดนามิกในกระบวนการผสานรวมและส่งมอบอย่างต่อเนื่อง

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

  • ยืนยันตัวตนกับห้องนิรภัยโดยใช้ข้อมูลระบุตัวตน OIDC ของตน (เช่น โทเค็น OIDC จากการดำเนินการของ GitHub)
  • ร้องขอข้อมูลรับรองคลาวด์อายุสั้นที่ใช้ได้เฉพาะตลอดระยะเวลาของงาน
  • ปล่อยให้ข้อมูลรับรองหมดอายุโดยอัตโนมัติเมื่องานสิ้นสุด

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

# GitHub Actions job exchanges its OIDC token for a short-lived AWS role
# No static AWS keys stored as repo secrets
permissions:
  id-token: write
steps:
  - uses: aws-actions/configure-aws-credentials@v4
    with:
      role-to-assume: arn:aws:iam::123:role/deploy
      aws-region: eu-central-1

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจเกี่ยวกับสัญญาเช่าและข้อมูลลับแบบไดนามิก

สรุป: ข้อมูลลับแบบไดนามิกและสัญญาเช่า

คุณได้เรียนรู้ว่าข้อมูลรับรองอายุสั้นที่หมดอายุโดยอัตโนมัติเปลี่ยนแปลงการจัดการข้อมูลลับอย่างไร

  • ข้อมูลลับแบบไดนามิกถูกสร้างขึ้นตามคำขอ มีค่าเฉพาะสำหรับผู้ใช้บริการแต่ละราย และหมดอายุโดยอัตโนมัติ แตกต่างจากข้อมูลลับแบบคงที่ที่นำกลับมาใช้ซ้ำ
  • สัญญาเช่ากำหนด TTL และ TTL สูงสุด เมื่อหมดอายุ ห้องนิรภัยจะเพิกถอนข้อมูลรับรองพร้อมล้างข้อมูลจริง
  • แอปพลิเคชันที่ทำงานต่อเนื่องเป็นเวลานานสามารถต่ออายุสัญญาเช่าได้ หรือสามารถเพิกถอนได้ทันทีเพื่อใช้เป็นสวิตช์หยุดฉุกเฉินเมื่อเกิดเหตุการณ์ผิดปกติ
  • ข้อมูลลับแบบไดนามิกใช้ได้กับฐานข้อมูล IAM บนคลาวด์ SSH PKI และระบบอื่น ๆ ช่วยลดขอบเขตความเสียหายและทำให้การหมุนเวียนเป็นอัตโนมัติ
  • ข้อแลกเปลี่ยนคือการมีข้อมูลรับรองระดับรากอยู่ในห้องนิรภัย จึงต้องหมุนเวียนและจำกัดขอบเขตอย่างรัดกุม
  • แอปพลิเคชันและกระบวนการผสานรวมและส่งมอบอย่างต่อเนื่องต้องเขียนให้รองรับการหมดอายุ เลือกใช้ข้อมูลลับแบบไดนามิกก่อน และหมุนเวียนข้อมูลลับแบบคงที่เมื่อหลีกเลี่ยงไม่ได้

ถัดไป เราจะกล่าวถึงการหมุนเวียนคีย์และการตรวจจับการรั่วไหลเมื่อข้อมูลลับหลุดรอดการป้องกัน

คำถามที่พบบ่อย

บทเรียน “ข้อมูลลับแบบไดนามิกและการเช่า” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ข้อมูลลับแบบไดนามิกและการเช่า” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ข้อมูลลับแบบไดนามิกและการเช่า”

ข้อมูลรับรองอายุสั้นที่หมดอายุโดยอัตโนมัติ คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ข้อมูลลับแบบไดนามิกและการเช่า” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม

ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ปัญหาข้อมูลลับกระจัดกระจาย
  2. ห้องนิรภัยและที่จัดเก็บข้อมูลลับ
  3. ข้อมูลลับแบบไดนามิกและการเช่า
  4. การหมุนเวียนคีย์และการตรวจจับ
← กลับไปที่ Cyber Security Academy