จะเข้าถึงความลับ API โดยใช้ AWS Lambda ได้อย่างไร

Ca Khea Thung Khwam Lab Api Doy Chi Aws Lambda Di Xyangri



แนวทางปฏิบัติที่ดีที่สุดของบริการของ AWS เกี่ยวข้องกับการดำเนินการสองประการ ได้แก่ Store-Retrieve และ Audit-Rotate เมื่อรวมแนวทางปฏิบัติทั้งสองนี้เข้าด้วยกัน AWS ได้เปิดตัว Secret Manager ซึ่งช่วยให้ผู้ใช้ปกป้องข้อมูลลับของแอปพลิเคชันของตน AWS Secret Manager ใช้กันอย่างแพร่หลายในการสร้าง การจัดเก็บ , การปรับเปลี่ยน , การจำลองแบบ และการหมุนเวียนข้อมูลรับรองฐานข้อมูล, คีย์ API, โทเค็น OAuth ฯลฯ

โครงร่างด่วน

บทความนี้ครอบคลุมประเด็นต่อไปนี้:

AWS แลมบ์ดาคืออะไร?

AWS Lambda เป็นบริการประมวลผลสำหรับการรันโค้ดในสภาพแวดล้อมและภาษาต่างๆ โดยไม่ต้องจัดเตรียมและจัดการเซิร์ฟเวอร์ นอกจากนี้ AWS Lambda ยังสามารถทริกเกอร์ได้ด้วยบริการต่างๆ ของ AWS เช่น บัคเก็ต S3, เกตเวย์ API ฯลฯ บริการนี้จะปรับขนาดแอปพลิเคชันโดยอัตโนมัติและรันโค้ดอย่างมีประสิทธิภาพโดยที่ผู้ใช้ไม่จำเป็นต้องติดตั้งการขึ้นต่อกันเพิ่มเติมใดๆ







หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับบริการ Lambda โปรดดูบทความนี้ที่นี่: “เริ่มต้นใช้งาน AWS Lambda” .



AWS Secret Manager คืออะไร

AWS Secret Manager ช่วยให้ผู้ใช้สามารถรักษาความปลอดภัยและเข้ารหัสได้ ข้อมูลที่เป็นความลับ ของแอปพลิเคชัน เช่น โทเค็น OAuth ข้อมูลรับรองฐานข้อมูล API ฯลฯ ข้อมูลลับนี้เรียกว่า 'ความลับ' . ความลับเหล่านี้สามารถเข้าถึงได้โดยหน่วยงานที่ได้รับอนุญาตเท่านั้นและสามารถหมุนเวียนได้เพื่อเพิ่มความปลอดภัย



เรียนรู้เพิ่มเติมเกี่ยวกับการจัดเก็บข้อมูลประจำตัว RDS ใน Secret Manager โดยอ้างอิงจากบทความนี้: “จะจัดเก็บข้อมูลรับรอง Amazon RDS โดยใช้ Secret Manager ได้อย่างไร”





จะเข้าถึงความลับ API ใน AWS โดยใช้ AWS Lambda ได้อย่างไร

Lambda ให้การสนับสนุนในตัวสำหรับบริการต่างๆ เช่น บัคเก็ต S3, เกตเวย์ API และ Secret Manager สามารถใช้ฟังก์ชัน Lambda เพื่อรับค่าของความลับที่กำหนดค่าไว้ได้ การใช้ความลับ API ในฟังก์ชัน AWS Lambda ทำให้ผู้ใช้สามารถโต้ตอบกับบริการต่างๆ ของ AWS ได้ ข้อมูลลับของ API ดังกล่าวก็มีความสำคัญในการอนุญาตฟังก์ชันแลมบ์ดาเช่นกัน

หากต้องการเข้าถึงคีย์ API ใน AWS Secret Manager โดยใช้ AWS Lambda ให้ทำตามขั้นตอนที่กล่าวถึงด้านล่าง:



  • ขั้นตอนที่ 1: สร้างความลับ API
  • ขั้นตอนที่ 2: สร้างนโยบาย IAM
  • ขั้นตอนที่ 3: สร้างบทบาท IAM
  • ขั้นตอนที่ 4: สร้างบทบาท Lambda

ขั้นตอนที่ 1: สร้างความลับ API

ก่อนที่จะเข้าถึงคีย์ API ใน AWS Secret Manager เราจะเรียนรู้ก่อน สร้างความลับ API . เพื่อจุดประสงค์นี้ ให้เข้าไปที่ “ผู้จัดการความลับ” บริการจาก คอนโซลการจัดการ AWS:

บน คอนโซลหลัก ของ AWS Secret Manager คลิกที่ “เก็บความลับใหม่” ปุ่ม:

ใน “ประเภทลับ” บล็อค เลือก “ความลับประเภทอื่น” ตัวเลือกจากตัวเลือกต่างๆ ที่แสดง:

เลื่อนลงไปที่ “คู่คีย์/ค่า” ส่วนและให้ คู่คีย์-ค่าที่ไม่ซ้ำกัน สำหรับความลับ API ของคุณ ถึง เพิ่ม มากกว่า คู่คีย์-ค่า , คลิกที่ “เพิ่มแถว” ปุ่ม:

ต่อไปก็คือ “คีย์เข้ารหัส” ส่วน. AWS จัดให้มี คีย์เข้ารหัสเริ่มต้น สำหรับความลับ อย่างไรก็ตาม ผู้ใช้ยังสามารถระบุชื่อที่กำหนดเองสำหรับคีย์ได้ โดยคงค่าเริ่มต้นไว้ ให้คลิกที่ “ ต่อไป ' ปุ่ม:

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

โดยการเก็บ การตั้งค่าไม่เปลี่ยนแปลง ดำเนินการต่อโดยคลิกที่ “ ต่อไป ' ปุ่ม:

ถัดมาเป็น ส่วนรีวิว. เพื่อยืนยันทั้งหมด. ข้อมูล ที่ให้ไว้คือ ถูกต้อง , คลิกที่ ' เก็บ ปุ่ม” ที่อยู่ด้านล่างของอินเทอร์เฟซ:

ความลับที่ได้รับ สร้างสำเร็จแล้ว . คลิกที่ ' โหลดซ้ำ ” เพื่อแสดงชื่อของข้อมูลลับบน แผงควบคุม : :

ขั้นตอนที่ 2: สร้างนโยบาย IAM

ถึง สร้างนโยบาย IAM เข้าถึง บริการไอแอม จากคอนโซลการจัดการ AWS:

จาก แถบด้านข้างของ IAM บริการ คลิกที่ “ นโยบาย ' ตัวเลือก:

บน คอนโซลนโยบาย , คลิกที่ “สร้างนโยบาย” ปุ่ม:

เรียนรู้เพิ่มเติมเกี่ยวกับนโยบาย AWS IAM โดยอ้างอิงจากบทความนี้: “ตัวอย่างนโยบาย AWS IAM”

ต่อไปก็คือ “ระบุสิทธิ์” ส่วน. ค้นหาและเลือก “ผู้จัดการความลับ” บริการ:

เลื่อนลงไปที่ “อนุญาตให้ดำเนินการได้” ปิดกั้น. ที่นี่ จากระดับการเข้าถึงต่างๆ ให้แตะ ' อ่าน ' ตัวเลือก. เลือก “การดำเนินการอ่านทั้งหมด” ตัวเลือกในการ เปิดใช้งานการอ่านทั้งหมด บริการสำหรับนโยบายนี้:

เลื่อนลง ถึง “ ทรัพยากร ” และคลิกที่ “เพิ่ม ARN” ตัวเลือก:

ย้อนกลับไปยัง แดชบอร์ดตัวจัดการความลับของ AWS และคลิกชื่อข้อมูลลับ คัดลอก “ อาร์เอ็นเอ ” ของความลับด้านล่าง “ ความลับ ARN ” จากอินเทอร์เฟซที่แสดง:

บน คอนโซลตอนนี้ ให้วาง ARN ที่คัดลอกไว้ใน ' อาร์เอ็นเอ ' สนาม:

ก่อนที่จะคลิกไปที่ “เพิ่ม ARN” คลิกที่ปุ่ม 'บัญชีนี้' ปุ่มเพื่อยืนยันความลับที่มีอยู่ในบัญชีเดียวกัน หลังจากกำหนดการตั้งค่าแล้วให้คลิกที่ “เพิ่ม ARN” ปุ่ม:

หลังจาก การกำหนดค่า ทั้งหมด การตั้งค่า ของนโยบายให้คลิกที่ปุ่ม “ ต่อไป ' ปุ่ม:

ใน ส่วนรายละเอียดนโยบาย ให้ระบุชื่อนโยบายในส่วน “ ชื่อกรมธรรม์ ' สนาม:

คลิกที่ ' สร้างนโยบาย ' ปุ่ม:

ที่ นโยบาย ได้ถูกสร้างขึ้น ประสบความสำเร็จ : :

ขั้นตอนที่ 3: สร้างบทบาท IAM

ในส่วนนี้ ให้สร้างบทบาท IAM ที่มีสิทธิ์ที่จำเป็นสำหรับฟังก์ชัน Lambda เพื่อเข้าถึงข้อมูลลับ เพื่อจุดประสงค์นี้ คลิกที่ “ บทบาท ” จากแถบด้านข้างของบทบาท IAM จากนั้นแตะ “สร้างบทบาท” ปุ่มจากอินเทอร์เฟซ:

หลังจากคลิกที่ “สร้างบทบาท” ปุ่ม อินเทอร์เฟซต่อไปนี้จะแสดงให้คุณเห็น เลือก “บริการของ AWS” ตัวเลือกจากตัวเลือกต่อไปนี้ตามที่เราจะแนบมาด้วย บทบาทไอแอม ด้วยฟังก์ชันแลมบ์ดา:

ใน “กรณีการใช้งาน” ส่วน ค้นหา บริการแลมบ์ดา และเลือกมัน กดปุ่ม “ ต่อไป ” ที่ด้านล่างของอินเทอร์เฟซเพื่อดำเนินการต่อ:

บน อินเทอร์เฟซถัดไป , ค้นหาชื่อของ ชื่อกรมธรรม์ ที่เรากำหนดค่าไว้ก่อนหน้านี้ จากผลลัพธ์ที่แสดง ให้เลือก ชื่อกรมธรรม์:

คลิก ' ต่อไป ” ที่ด้านล่างของ อินเทอร์เฟซเพื่อดำเนินการต่อไป:

จัดให้มี ตัวระบุที่ไม่ซ้ำ สำหรับคุณ บทบาทไอแอม ในช่องไฮไลต์ต่อไปนี้:

การเก็บรักษา การตั้งค่าที่เหลือเป็นค่าเริ่มต้น , คลิกที่ “สร้างบทบาท” ปุ่มโดยการเลื่อนลงไปที่ด้านล่างของอินเทอร์เฟซ:

บทบาทที่ได้รับ ประสบความสำเร็จ สร้าง:

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการสร้างบทบาท IAM ใน AWS โปรดดูบทความนี้: “วิธีสร้างบทบาท IAM ใน AWS” .

ขั้นตอนที่ 4: สร้างฟังก์ชัน Lambda

ขั้นตอนต่อไปคือการสร้างฟังก์ชัน Lambda ฟังก์ชัน lambda นี้จะมีบทบาท IAM และจะได้รับค่าของข้อมูลลับเมื่อดำเนินการ หากต้องการเข้าถึงบริการ Lambda ให้ค้นหา ' แลมบ์ดา ” ในแถบค้นหาของ คอนโซลการจัดการ AWS . คลิกที่ชื่อบริการจากผลลัพธ์เพื่อไปที่คอนโซล:

บนอินเทอร์เฟซเริ่มต้นของบริการ Lambda ให้คลิกที่ “สร้างฟังก์ชั่น” ปุ่ม:

นี้จะแสดง “สร้างฟังก์ชั่น” อินเตอร์เฟซ. เลือก “ผู้เขียนตั้งแต่เริ่มต้น” และดำเนินการต่อไปโดยระบุชื่อให้กับ ฟังก์ชันแลมบ์ดา ในช่องที่ไฮไลต์:

ใน ฟิลด์รันไทม์ ให้เลือก ' หลาม 3.9 ' สิ่งแวดล้อม:

ใต้ ส่วนรันไทม์ มี “เปลี่ยนบทบาทการดำเนินการเริ่มต้น” ส่วน. เลือก “ใช้บทบาทที่มีอยู่” ตัวเลือกแล้วระบุบทบาทใน “บทบาทที่มีอยู่” สนาม:

บนอินเทอร์เฟซเดียวกัน ให้แตะ “สร้างฟังก์ชั่น” ปุ่มที่ด้านล่างของอินเทอร์เฟซ:

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการสร้างฟังก์ชัน Lambda โปรดดูบทความนี้: “วิธีสร้างฟังก์ชัน Lambda ด้วย Pyhton Runtime” .

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

นำเข้า json.json
นำเข้า โบโต3
นำเข้า ฐาน64
จากโบโตคอร์ ข้อยกเว้น นำเข้า ข้อผิดพลาดของไคลเอ็นต์

def lambda_handler ( เหตุการณ์ , บริบท ) : :
สิ่งแวดล้อม = เหตุการณ์ [ 'env' ]
ความลับ_ชื่อ = 'shmaster19/%s/คีย์' % สิ่งแวดล้อม
ภูมิภาค_ชื่อ = 'ap-ตะวันออกเฉียงใต้-1'

การประชุม = โบโต3 การประชุม . การประชุม ( )
ลูกค้า = การประชุม. ลูกค้า (
บริการ_ชื่อ = 'ผู้จัดการความลับ' ,
ภูมิภาค_ชื่อ = ภูมิภาค_ชื่อ
)

พยายาม : :
Secret_value_response = ลูกค้า. get_secret_value (
รหัสลับ = ความลับ_ชื่อ
)
ยกเว้น ClientError ว่าเป็นข้อผิดพลาด : :
พิมพ์ ( ข้อผิดพลาด )
อื่น : :
ถ้า 'สายลับ' ใน Secret_value_response : :
ความลับ = json.json โหลด ( Secret_value_response [ 'สายลับ' ] )
กลับ ความลับ
อื่น : :
decoded_binary_secret = ฐาน64. b64ถอดรหัส ( Secret_value_Response [ 'ความลับไบนารี' ] )
กลับ decoded_binary_secret
  • นำเข้า json: ใช้เพื่อดำเนินการ JSON
  • นำเข้า boto3: เป็น SDK สำหรับการสื่อสารระหว่าง AWS และ Python
  • นำเข้า base64: ใช้สำหรับดำเนินการฟังก์ชันการเข้ารหัสและถอดรหัสข้อมูลไบนารีเป็น Base64
  • นำเข้าข้อผิดพลาดของลูกค้า: สิ่งนี้ทำให้ผู้ใช้สามารถจัดการกับข้อยกเว้นในโค้ดที่เขียนได้
  • ความลับ_ชื่อ: ในตัวแปรนี้ ให้ระบุชื่อข้อมูลลับของคุณ โปรดทราบว่าความลับนี้ประกอบด้วย “%s” . นี่คือเมื่อผู้ใช้มีหลายคีย์ที่มีรูปแบบคล้ายกัน ตัวอย่างเช่น หากผู้ใช้สร้างข้อมูลลับไว้ 2 รายการ เช่น “apikey/dev/คีย์” และ “apikey/ผลิตภัณฑ์/คีย์” . จากนั้นใน “%s” หากผู้ใช้ระบุ “ ผู้พัฒนา ” ฟังก์ชัน Lambda จะให้ กุญแจสำคัญในการพัฒนา (apikey/dev/key) และในทางกลับกัน
  • โบโต้ เซสชั่น.เซสชั่น(): อนุญาตให้ผู้ใช้สร้างไคลเอนต์บริการและการตอบกลับ
  • ภูมิภาค_ชื่อ: ระบุชื่อภูมิภาคที่กำหนดค่าความลับ AWS ของคุณ
  • Secret_value_response: ในตัวแปรนี้ เราใช้ “ ลูกค้า.get_secret_value ” ฟังก์ชันที่จะคืนค่าของข้อมูลลับ
  • ถอดรหัส_binary_secert: หลังจากได้รับคุณค่าของความลับแล้ว ก็จะถูกถอดรหัสต่อไป รูปแบบฐาน 64 .

หลังจากวางโค้ดในฟังก์ชัน Lambda แล้ว ให้คลิกที่ ' ปรับใช้ ปุ่ม ” เพื่อบันทึกและใช้การเปลี่ยนแปลง:

ขั้นตอนที่ 5: การทดสอบรหัส

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

ในอินเทอร์เฟซถัดไป ให้ระบุ ชื่อสำหรับการทดสอบ เหตุการณ์ใน “ชื่อกิจกรรม” สนาม:

เลื่อนลงไปที่ ส่วน JSON ของเหตุการณ์ ให้ระบุ “ สิ่งแวดล้อม ” และระบุค่าในรูปแบบ JSON “ ค่า ” ของคีย์จะถูกส่งต่อไปยัง “%s” . เนื่องจากความลับที่เราระบุนั้นประกอบด้วย “ ผู้พัฒนา ” คุณค่า “ ผู้พัฒนา ” ค่าถูกส่งไปที่ “ สิ่งแวดล้อม ' ตัวแปร. ฟังก์ชัน Lambda จะระบุความลับเมื่อมีการเรียกใช้โค้ด เนื่องจากตัวระบุของความลับนั้นระบุไว้ในโค้ด หลังจากระบุรายละเอียดแล้วให้คลิกที่ “ บันทึก ' ปุ่ม:

เมื่อสร้างกิจกรรมสำเร็จแล้ว ให้คลิกที่ “ ทดสอบ ' ปุ่ม:

ที่นี่เรามี ได้รับเรียบร้อยแล้ว ค่าของความลับที่เราระบุ:

นั่นคือทั้งหมดจากคู่มือนี้

บทสรุป

หากต้องการเข้าถึงคีย์ API ใน Secret Manager โดยใช้ Lambda ขั้นแรกให้สร้าง API Secret, นโยบาย IAM, บทบาท และฟังก์ชัน Lambda แล้วรันโค้ดของฟังก์ชัน สามารถเรียกใช้ฟังก์ชัน Lambda เพื่อรับค่าของ AWS Secret Manager ได้โดยการระบุตัวระบุของข้อมูลลับเมื่อรันโค้ด บทความนี้ให้แนวทางทีละขั้นตอนสำหรับวิธีเข้าถึงคีย์ API ใน AWS Secret Manager โดยใช้ AWS Lambda