PyPI อนุญาตให้คุณเผยแพร่แพ็คเกจโดยไม่ต้องผูกติดกับรหัสผ่านและโทเค็น

PyPI

PyPI เป็นที่เก็บซอฟต์แวร์อย่างเป็นทางการสำหรับแอปพลิเคชันบุคคลที่สามในภาษาโปรแกรม Python

เมื่อไม่กี่วันก่อนมีข่าวออกมาว่า ที่เก็บแพ็คเกจ Python PyPI (Python Package Index) เรียบร้อยแล้ว ให้ความสามารถในการใช้วิธีการใหม่ที่ปลอดภัยในการเผยแพร่แพ็คเกจซึ่งช่วยลดความจำเป็นในการจัดเก็บรหัสผ่านที่คาดเดายากและโทเค็นการเข้าถึง API ในระบบภายนอก (เช่น ใน GitHub Actions)

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

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

มีการกล่าวถึงวิธีการตรวจสอบความถูกต้องแบบใหม่นี้ให้ประโยชน์ด้านการใช้งานและความปลอดภัยที่สำคัญ เมื่อเทียบกับวิธีการตรวจสอบความถูกต้องแบบ PyPI แบบอื่นๆ:

  • การใช้งาน: ด้วยการเผยแพร่ที่เชื่อถือได้ ผู้ใช้ไม่จำเป็นต้องสร้างโทเค็น API ด้วยตนเองใน PyPI และคัดลอกและวางลงในผู้ให้บริการ CI อีกต่อไป ขั้นตอนด้วยตนเองเพียงอย่างเดียวคือการกำหนดค่าตัวแก้ไขใน PyPI
  • การรักษาความปลอดภัย: โทเค็น PyPI API ปกตินั้นมีอายุยืนยาว ซึ่งหมายความว่าผู้โจมตีที่ประนีประนอมการปล่อยแพ็คเกจสามารถใช้มันได้จนกว่าผู้ใช้ที่ถูกต้องจะแจ้งให้ทราบและเพิกถอนด้วยตนเอง ในทำนองเดียวกัน การอัปโหลดด้วยรหัสผ่านหมายความว่าผู้โจมตีสามารถอัปโหลดโครงการใดๆ ที่เชื่อมโยงกับบัญชีได้ Trusted Publishing หลีกเลี่ยงปัญหาทั้งสองนี้: โทเค็นที่ออกจะหมดอายุโดยอัตโนมัติและจำกัดเฉพาะแพ็คเกจที่ได้รับอนุญาตให้อัปโหลดเท่านั้น

เกี่ยวกับวิธีการพิสูจน์ตัวตนแบบใหม่นี้ ได้กล่าวไว้ว่า เป็นไปตามมาตรฐาน OpenID Connect (คปภ.)ซึ่ง ใช้การแลกเปลี่ยนโทเค็นการตรวจสอบสิทธิ์แบบจำกัดเวลา ระหว่างบริการภายนอกและไดเร็กทอรี PyPI เพื่อตรวจสอบความถูกต้องของการดำเนินการเผยแพร่แพ็คเกจ แทนที่จะใช้การเข้าสู่ระบบ/รหัสผ่านแบบดั้งเดิมหรือ API แบบถาวรที่สร้างขึ้นด้วยตนเองโดยโทเค็นการเข้าถึง

“Trusted Publication” คือข้อกำหนดของเราสำหรับการใช้มาตรฐาน OpenID Connect (OIDC) เพื่อแลกเปลี่ยนโทเค็นระบุตัวตนที่มีอายุสั้นระหว่างบริการของบุคคลที่สามที่เชื่อถือได้และ PyPI วิธีนี้สามารถใช้ในสภาพแวดล้อมอัตโนมัติและขจัดความจำเป็นในการใช้ชุดชื่อผู้ใช้/รหัสผ่านหรือโทเค็น API ที่สร้างขึ้นด้วยตนเองเพื่อตรวจสอบความถูกต้องกับ PyPI เมื่อเผยแพร่

ในทางกลับกัน มีการกล่าวถึงด้วยว่าผู้ดูแลแพ็คเกจสามารถระบุตัวระบุที่เชื่อถือได้ในฝั่ง PyPI ให้กับผู้ให้บริการ OpenID ภายนอก (IdP) ซึ่งบริการภายนอกจะใช้เพื่อขอโทเค็นที่ไม่ได้ใช้งานจริงของ PyPI

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

แต่ผู้ดูแล PyPI สามารถกำหนดค่า PyPI ให้เชื่อถือข้อมูลประจำตัวที่ได้รับจาก OpenID Connect Identity Provider (IdP) สิ่งนี้ทำให้ PyPI สามารถตรวจสอบและมอบความไว้วางใจให้กับตัวตนนั้น ซึ่งจากนั้นจะได้รับอนุญาตให้ขอโทเค็น API ที่มีขอบเขตจำกัดและมีอายุสั้นจาก PyPI โทเค็น API เหล่านี้ไม่จำเป็นต้องจัดเก็บหรือแชร์ หมุนเวียนโดยอัตโนมัติเมื่อหมดอายุอย่างรวดเร็ว และให้ลิงก์ที่ตรวจสอบได้ระหว่างแพ็คเกจที่เผยแพร่และแหล่งที่มา

ขณะนี้ ความสามารถในการใช้กลไก "สำนักพิมพ์ที่เชื่อถือได้" มีการใช้งานและกำลังทำงานอยู่ สำหรับคอนโทรลเลอร์ที่เริ่มต้นบน GitHub Actions สุดท้าย แต่ไม่ท้ายสุด มีการกล่าวถึงความเข้ากันได้กับ Trusted Publishers สำหรับบริการภายนอกอื่น ๆ ที่คาดหวังในอนาคต

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถตรวจสอบรายละเอียด ในลิงค์ต่อไปนี้.


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google