วิธีการจัดเก็บความลับที่เข้ารหัสในรหัสสำหรับโครงการ serverless.com


12

ด้วย serverless.com วิธีที่ง่ายที่สุดในการเปิดเผยความลับต่อฟังก์ชั่น AWS Lambda คือเก็บไว้ในserverless.ymlไฟล์ (เข้ารหัสด้วย KMS เป็นต้น)

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

แต่ในแง่ของความปลอดภัยเพียงอย่างเดียวทางเลือกที่ดีกว่าคืออะไร? เช่นความลับอาจถูกเก็บไว้ใน S3 (เข้ารหัส) โดยที่ Lambda ให้การเข้าถึงตำแหน่งนั้นและคีย์ KMS แต่จริง ๆ แล้วดีกว่าในทางที่มีความหมาย?


ความเห็นนี้ไม่ได้มีความหมายเหมือนกันฉันไม่สนใจ
Assaf Lavie

คำตอบ:


7

มีองค์ประกอบสองสามข้อที่ควรพิจารณาที่นี่:

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

  2. มันสมเหตุสมผลอย่างสิ้นเชิงจากมุมมอง "โครงสร้างพื้นฐานเป็นรหัส" เพื่อจัดเก็บการกำหนดค่าทั้งหมดใน Git แม้ว่าอาจจะอยู่ในที่เก็บอื่นเนื่องจากขอบเขตของการกำหนดค่ามีแนวโน้มที่จะขยายบริการมากกว่าหนึ่ง

  3. สมมติว่าทั้งสองข้อความข้างต้นเกี่ยวข้องกับสถานการณ์ของคุณฉันจะโน้มน้าวให้เข้ารหัสข้อมูลด้วย KMS และเก็บไว้ใน S3 หรือ DynamoDB ฉันยังจะไปไกลเพื่อบอกว่าในสถานการณ์ที่ง่ายมากมันอาจจะเหมาะสมในการเข้ารหัสและเก็บข้อมูลภายใน KMS เอง

มีไลบรารีโอเพ่นซอร์สหลายแห่งที่จะสนับสนุนการดำเนินการนี้:


1

ฉันมักจะรักษาความลับเป็นข้อมูลการกำหนดค่าในขอบเขต ด้วยเหตุนี้มันจึงไม่ได้อยู่ข้างๆรหัสเนื่องจากมีการจัดการตารางเวลาและกระบวนการต่าง ๆ ที่ปล่อยออกมา repo คอมไพล์ KMS ไดนาโม s3 หรือภายในระบบจัดการการกำหนดค่าของคุณ (ฐานข้อมูล Chef-vault / เข้ารหัสในโลกพ่อครัว) เป็นสถานที่ที่ดี โดยทั่วไปคุณไม่ต้องการสร้างและปรับใช้ซอฟต์แวร์รุ่นใหม่เพื่อรับการอัปเดตที่เป็นความลับ

หากความต้องการการจัดการความลับของคุณซับซ้อนมากขึ้นเช่น Hasicorp Vault ( https://github.com/hashicorp/vault ) จะเป็นตัวเลือกที่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.