การทํางานกับแผนที่ค่าคีย์

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

บางครั้งคุณอาจต้องการจัดเก็บข้อมูลเพื่อเรียกข้อมูลในรันไทม์ ซึ่งเป็นข้อมูลที่ไม่หมดอายุ ที่ไม่ควรฮาร์ดโค้ดไว้ในตรรกะพร็อกซี API แมปค่าคีย์ (KVM) เหมาะอย่างยิ่งสำหรับกรณีนี้ KVM คือคอลเล็กชันคู่คีย์/ค่าสตริงที่กำหนดเอง ซึ่งอาจเข้ารหัสหรือไม่เข้ารหัสก็ได้ โดยมี 2 ตัวอย่างดังนี้

ดูข้อมูลเกี่ยวกับการคงอยู่ประเภทอื่นๆ ได้ที่ การเพิ่มการแคชและการคงอยู่

สถานการณ์ KVM

ต่อไปนี้คือสถานการณ์บางอย่างที่ KVM มีประโยชน์

  • คุณมีพร็อกซี API ที่ต้องเรียก URL เป้าหมาย (หรือ Service Callout) หนึ่งรายการในสภาพแวดล้อมการทดสอบ และ URL เป้าหมายอีกรายการในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ แทนที่จะฮาร์ดโค้ด URL ใน พร็อกซี คุณสามารถให้พร็อกซีตรวจหาสภาพแวดล้อมที่พร็อกซีอยู่ ดำเนินการตามนโยบายการดำเนินการแมปค่าคีย์ที่เกี่ยวข้อง และเรียก URL เป้าหมายที่ถูกต้องจาก KVM ที่คุณสร้างขึ้น และในภายหลัง หากเป้าหมายอย่างน้อย 1 รายการมีการเปลี่ยนแปลง คุณเพียงแค่อัปเดต KVM ด้วย URL ใหม่ พร็อกซีจะเลือกค่าใหม่ และไม่จำเป็นต้องปรับใช้พร็อกซีใหม่
  • คุณต้องการจัดเก็บข้อมูลเข้าสู่ระบบ คีย์ส่วนตัว หรือโทเค็น เช่น โทเค็นสำหรับบริการภายนอก บริการ ข้อมูลเข้าสู่ระบบที่จำเป็นในการสร้างโทเค็น OAuth หรือคีย์ส่วนตัว ที่ใช้ใน Java Callout หรือ JavaScript สำหรับการเข้ารหัสหรือการลงชื่อ JSON Web Token (JWT) แทนที่จะส่งข้อมูลเข้าสู่ระบบ คีย์ หรือโทเค็นในคำขอ หรือฮาร์ดโค้ดข้อมูลดังกล่าวในตรรกะพร็อกซี คุณสามารถจัดเก็บข้อมูลดังกล่าวใน KVM (เข้ารหัสเสมอ) และเรียกข้อมูลแบบไดนามิกในการเรียกเป้าหมายที่ต้องใช้ข้อมูลดังกล่าว

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

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

KVM มีขอบเขต

ขอบเขตหมายถึง "ตำแหน่งที่ KVM พร้อมใช้งาน" คุณสร้าง KVM ได้ในขอบเขตต่อไปนี้: organization, environment และ apiproxy

ตัวอย่างเช่น หากมีเพียงพร็อกซี API รายการเดียวที่ต้องใช้ข้อมูลใน KVM คุณสามารถสร้าง KVM ในขอบเขต apiproxy ซึ่งมีเพียงพร็อกซี API นั้นเท่านั้นที่จะเข้าถึงข้อมูลได้

หรือคุณอาจต้องการให้พร็อกซี API ทั้งหมดในสภาพแวดล้อมการทดสอบเข้าถึงแมปค่าคีย์ได้ ใน กรณีนี้ คุณจะต้องสร้างแมปค่าคีย์ในขอบเขตสภาพแวดล้อม พร็อกซีที่ปรับใช้ในสภาพแวดล้อม "prod" จะเข้าถึง KVM ในขอบเขตสภาพแวดล้อม "test" ไม่ได้ หากต้องการให้คีย์ KVM เดียวกันพร้อมใช้งานในการใช้งานจริง ให้สร้าง KVM แบบขนานที่มีขอบเขตเป็นสภาพแวดล้อม "prod"

หากต้องการให้พร็อกซีทั้งหมดในทุกสภาพแวดล้อมเข้าถึง KVM เดียวกัน ให้สร้าง KVM ในขอบเขต organization

เกี่ยวกับ KVM ที่เข้ารหัส

KVM ที่เข้ารหัสจะเข้ารหัสด้วยคีย์การเข้ารหัส AES-128 ที่ Apigee สร้างขึ้น คีย์ที่ใช้เข้ารหัส KVM จะจัดเก็บไว้ในขอบเขตของ KVM ตัวอย่างเช่น ภายในองค์กร KVM ที่เข้ารหัสทั้งหมดที่คุณสร้างในขอบเขตสภาพแวดล้อมจะสร้างขึ้นโดยใช้คีย์ขอบเขตสภาพแวดล้อมเดียวกัน

Edge จะจัดการการแสดงค่าที่เข้ารหัสด้วยวิธีต่อไปนี้ (ดูข้อมูลเกี่ยวกับการสร้าง KVM ที่เข้ารหัสได้ที่ การจัดการและการใช้ KVM)

UI ของ Edge

แมปค่าคีย์ที่เข้ารหัสจะแสดงค่าที่มาสก์ด้วยดอกจันใน UI (*****) เช่น

Management API

ใน Management API ค่าที่เข้ารหัสจะแสดงผลแบบมาสก์ ต่อไปนี้คือตัวอย่างการตอบกลับของ Management API ในการเรียก Get KVM ที่เข้ารหัส

{
  "encrypted": true,
  "entry": [
    {
      "name": "Key1",
      "value": "*****"
    },
    {
      "name": "Key2",
      "value": "*****"
    }
  ],
  "name": "secretMap"
}

การติดตามและแก้ไขข้อบกพร่อง

เมื่อใช้นโยบาย การดำเนินการแมปค่าคีย์ เพื่อเรียกค่า KVM ที่เข้ารหัส คุณจะต้องระบุชื่อตัวแปรเพื่อจัดเก็บ ค่า หากต้องการรับค่าที่เข้ารหัส คุณต้องเพิ่มคำนำหน้า "private." ลงใน ชื่อตัวแปร ซึ่งจะป้องกันไม่ให้คีย์/ค่า KVM ปรากฏในเซสชันการติดตามและแก้ไขข้อบกพร่อง

จำกัดสูงสุด

ในองค์กรที่เปิดใช้ บริการการคงอยู่หลัก (CPS) จะมีข้อจำกัดดังนี้

  • ชื่อ/ตัวระบุ KVM จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  • ขนาดคีย์จำกัดไว้ที่ 2 KB
  • ขนาดค่าจำกัดไว้ที่ 10 KB

สำหรับ Apigee Edge for Private Cloud แต่ละ KVM ไม่ควรมีขนาดเกิน 15 MB (ซึ่งเป็นขนาดรวมของคีย์และค่า) หากเกินขีดจำกัดนี้ Apigee Edge for Private Cloud จะแสดงข้อผิดพลาด คุณสามารถใช้ คำสั่ง nodetool cfstats เพื่อกำหนดขนาดของ KVM

KVM ที่มีขนาดใหญ่ขึ้นอาจทำให้ประสิทธิภาพลดลง ดังนั้น คุณควรแยก KVM ขนาดใหญ่แบบโมโนลิธออกเป็น KVM ขนาดเล็กลงเพื่อปรับปรุงประสิทธิภาพ

การจัดการและการใช้ KVM

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

การสร้างและอัปเดต KVM

คุณสร้างและอัปเดต KVM ได้ด้วยวิธีต่อไปนี้

  • นโยบายการดำเนินการแมปค่าคีย์ (ไม่มีการเข้ารหัส)

    หากต้องการให้พร็อกซี API สร้างและอัปเดต KVM ในรันไทม์ ให้ใช้ นโยบายการดำเนินการแมปค่าคีย์ (ในนโยบาย คุณระบุชื่อ KVM ใน แอตทริบิวต์ mapIdentifier ในองค์ประกอบระดับบนสุด )

    องค์ประกอบ <InitialEntries> ช่วยให้คุณสร้างและป้อนข้อมูลชุดรายการพื้นฐานใน KVM ใหม่ได้ทันทีที่บันทึกนโยบายใน UI หรือปรับใช้พร็อกซี API (หากคุณพัฒนาพร็อกซีแบบออฟไลน์) หากค่ามีการเปลี่ยนแปลงในนโยบาย ระบบจะเขียนทับค่าที่มีอยู่ ระบบจะเพิ่มคีย์/ค่าใหม่ลงใน KVM ที่มีอยู่พร้อมกับคีย์/ค่าที่มีอยู่ ที่มีอยู่

    องค์ประกอบ <Put> จะสร้าง KVM ใหม่หากยังไม่มี และสร้างคีย์ที่มีค่าอย่างน้อย 1 ค่า หาก KVM มีอยู่แล้ว ระบบจะเพิ่มคีย์/ค่า (หรืออัปเดตหากคีย์มีอยู่แล้ว) คุณสามารถใช้ องค์ประกอบ <Put> หลายรายการในนโยบาย KVM

  • Management API

    Management API ใช้สำหรับจัดการ KVM ในฐานะผู้ดูแลระบบ ไม่ใช่ในรันไทม์ ในพร็อกซี API ตัวอย่างเช่น คุณอาจมีสคริปต์ภายในที่ใช้ Management API เพื่อลบและสร้าง KVM ใหม่ในสภาพแวดล้อมการทดสอบ หรือคุณอาจต้องการรีเซ็ตค่าของคีย์ ใน KVM เพื่อให้พร็อกซีทั้งหมดเลือกค่าดังกล่าว (หากต้องการจัดการ KVM ในรันไทม์ ให้ใช้ นโยบายการดำเนินการแมปค่าคีย์ ในพร็อกซี)

    Management API ของแมปค่าคีย์ ช่วยให้คุณสร้าง อัปเดต และลบ KVM และคีย์/ค่าที่เข้ารหัสได้ใน ทุก ขอบเขต (องค์กร สภาพแวดล้อม และ apiproxy)

    หากต้องการสร้าง KVM ที่เข้ารหัสด้วย Management API ให้เพิ่ม "encrypted" : "true" ลงในเพย์โหลด JSON คุณจะเข้ารหัส KVM ได้ก็ต่อเมื่อสร้าง KVM เท่านั้น คุณจะเข้ารหัส KVM ที่มีอยู่ไม่ได้

  • UI การจัดการ

    ใน UI การจัดการของ Edge คุณสามารถสร้างและอัปเดต KVM ที่มีขอบเขตเป็นสภาพแวดล้อม ซึ่งเป็นขอบเขต KVM เพียงขอบเขตเดียวที่ ปรากฏใน UI UI การจัดการเป็นวิธีที่ดีในการจัดการข้อมูล KVM สำหรับพร็อกซี API ด้วยตนเองในรันไทม์ ดูข้อมูลเพิ่มเติมได้ที่ การสร้างและแก้ไขแมปค่าคีย์ของสภาพแวดล้อม

การเรียก KVM

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

  • นโยบาย: ใช้องค์ประกอบ <Get> ใน นโยบายการดำเนินการแมปค่าคีย์ เพื่อเรียก KVM ที่เข้ารหัสและไม่เข้ารหัส ความแตกต่างเล็กน้อยคือ การเรียกค่าที่เข้ารหัสด้วยนโยบาย ซึ่งคุณต้องเพิ่มคำนำหน้า "private." ลงในชื่อตัวแปรที่จะมีค่าที่เรียกมา ดังที่อธิบายไว้ใน ส่วนการดำเนินการ Get ของหัวข้ออ้างอิง คำนำหน้าดังกล่าวจะซ่อนค่าจากเซสชันการติดตามและแก้ไขข้อบกพร่อง ขณะที่คุณกำลังแก้ไขข้อบกพร่องของพร็อกซี API
  • Management API: คุณสามารถใช้ การสร้างและแก้ไขแมปค่าคีย์ของสภาพแวดล้อม เพื่อรับ KVM และคีย์/ค่าได้เพื่อวัตถุประสงค์ในการจัดการดูแลระบบ ตัวอย่างเช่น หากต้องการ สำรองข้อมูล KVM โดยการรับและจัดเก็บคำจำกัดความ JSON ให้ใช้ Management API โปรดทราบว่าค่าที่เข้ารหัสจะแสดงเป็น ***** ในการตอบกลับของ API
  • UI การจัดการ: คุณสามารถดู KVM ที่มีขอบเขตเป็นสภาพแวดล้อมใน UI การจัดการได้โดยไปที่ API > การกำหนดค่าสภาพแวดล้อม > แมปค่าคีย์ (Classic Edge) หรือ ผู้ดูแลระบบ > สภาพแวดล้อม > แมปค่าคีย์ (New Edge)

ตัวอย่าง KVM

ดูตัวอย่างการใช้ KVM เพื่อป้อนค่าใน URL ได้ที่ การสร้างเทมเพลต URL เป้าหมายด้วย KVM ตามสภาพแวดล้อม