การเปิดใช้การเข้ารหัสลับคีย์ลับ

เอกสารนี้อธิบายวิธีเปิดใช้การเข้ารหัสข้อมูลลับของผู้ใช้แอปของ นักพัฒนาแอป (ข้อมูลเข้าสู่ระบบของไคลเอ็นต์) ที่จัดเก็บ ไว้ในฐานข้อมูล Cassandra

ภาพรวม

โดยปกติแล้ว Apigee Edge for Private Cloud จะมีการเข้ารหัสข้อมูลแผนที่คีย์-ค่า (KVM) และโทเค็นเพื่อการเข้าถึง OAuth เป็นตัวเลือก

ตารางต่อไปนี้อธิบายตัวเลือกการเข้ารหัสข้อมูลที่ไม่มีการเคลื่อนไหวใน Apigee for Private Cloud

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

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

  • สร้างคีย์สโตร์เพื่อจัดเก็บ คีย์การเข้ารหัสคีย์ (KEK) Apigee ใช้คีย์ที่เข้ารหัสนี้เพื่อเข้ารหัสคีย์ลับที่จำเป็นต่อการเข้ารหัสข้อมูล
  • แก้ไขพร็อพเพอร์ตี้การกำหนดค่าในโหนดเซิร์ฟเวอร์การจัดการและ Message Processor ทั้งหมด
  • สร้างแอปของนักพัฒนาแอปเพื่อทริกเกอร์การสร้างคีย์
  • รีสตาร์ทโหนด

เราจะอธิบายงานเหล่านี้ในเอกสารนี้

สิ่งที่ควรรู้เกี่ยวกับฟีเจอร์การเข้ารหัสคีย์

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

โดยค่าเริ่มต้น ค่าที่มีอยู่ในฐานข้อมูลจะยังคงไม่เปลี่ยนแปลง (เป็นข้อความธรรมดา) และจะยังคงทำงานได้เหมือนเดิม

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

การเก็บรักษาคีย์ให้ปลอดภัย

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

การเปิดใช้การเข้ารหัสคีย์

ทำตามขั้นตอนต่อไปนี้เพื่อเข้ารหัสคีย์ข้อมูลลับของผู้ใช้

ข้อกำหนดเบื้องต้น

คุณต้องมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้ก่อนที่จะทำตามขั้นตอนในเอกสารนี้

  • คุณต้องติดตั้งหรืออัปเกรดเป็น Apigee Edge for Private Cloud 4.50.00.10 ขึ้นไป
  • คุณต้องเป็นผู้ดูแลระบบ Apigee Edge for Private Cloud

ขั้นตอนที่ 1: สร้างคีย์สโตร์

ทำตามขั้นตอนต่อไปนี้เพื่อสร้างคีย์สโตร์สำหรับจัดเก็บคีย์การเข้ารหัสคีย์ (KEK)

  1. เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างคีย์สโตร์สำหรับจัดเก็บคีย์ที่จะใช้เพื่อ เข้ารหัส KEK ป้อนคำสั่งตามที่แสดงทุกประการ (คุณสามารถระบุชื่อคีย์สโตร์ที่ต้องการได้)
    keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \
    -keystore kekstore.p12 -storetype PKCS12

    เมื่อระบบแจ้ง ให้ป้อนรหัสผ่าน คุณจะใช้รหัสผ่านนี้ในส่วนต่อๆ ไปเมื่อคุณ กำหนดค่าเซิร์ฟเวอร์การจัดการและ Message Processor

    คำสั่งนี้จะสร้างไฟล์คีย์สโตร์ kekstore.p12 ที่มีคีย์ที่มี นามแฝง KEYSTORE_NAME

  2. (ไม่บังคับ) ตรวจสอบว่าระบบสร้างไฟล์อย่างถูกต้องด้วยคำสั่งต่อไปนี้ หากไฟล์ ถูกต้อง คำสั่งจะแสดงคีย์ที่มีนามแฝง KEYSTORE_NAME ดังนี้
    keytool -list -keystore kekstore.p12

ขั้นตอนที่ 2: กำหนดค่าเซิร์ฟเวอร์การจัดการ

จากนั้นกำหนดค่าเซิร์ฟเวอร์การจัดการ หากคุณติดตั้งเซิร์ฟเวอร์การจัดการไว้ในหลายโหนด คุณต้องทำตามขั้นตอนเหล่านี้ซ้ำในแต่ละโหนด

  1. คัดลอกไฟล์คีย์สโตร์ที่สร้างไว้ในขั้นตอนที่ 1 ไปยังไดเรกทอรีในโหนดเซิร์ฟเวอร์การจัดการ เช่น /opt/apigee/customer/application ตัวอย่างเช่น
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. ตรวจสอบว่าผู้ใช้ apigee อ่านไฟล์ได้
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
    chmod 400 /opt/apigee/customer/application/kekstore.p12
  3. เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงใน /opt/apigee/customer/application/management-server.properties หากไฟล์ไม่มีอยู่ ให้สร้างไฟล์ ดูข้อมูลอ้างอิงไฟล์พร็อพเพอร์ตี้ด้วย
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    โปรดทราบว่า KEK_PASSWORD อาจเหมือนกับ KEYSTORE_PASSWORD ทั้งนี้ขึ้นอยู่กับเครื่องมือที่ใช้สร้างคีย์สโตร์

  4. รีสตาร์ทเซิร์ฟเวอร์การจัดการโดยใช้คำสั่งต่อไปนี้
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready

    คำสั่ง wait_for_ready จะแสดงข้อความต่อไปนี้เมื่อเซิร์ฟเวอร์การจัดการพร้อม

    Checking if management-server is up: management-server is up.
  5. หากคุณติดตั้งเซิร์ฟเวอร์การจัดการไว้ในหลายโหนด ให้ทำตามขั้นตอนที่ 1-4 ด้านบนซ้ำในโหนดเซิร์ฟเวอร์การจัดการแต่ละรายการ

ขั้นตอนที่ 3: สร้างแอปของนักพัฒนาแอป

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

  1. สร้างแอปของนักพัฒนาแอปเพื่อทริกเกอร์การสร้างคีย์การเข้ารหัสข้อมูล (KEK) ดูขั้นตอนได้ที่ ดู การลงทะเบียนแอป
  2. ลบแอปของนักพัฒนาแอปหากต้องการ คุณไม่จำเป็นต้องเก็บแอปไว้เมื่อสร้างคีย์การเข้ารหัส แล้ว

ขั้นตอนที่ 4: กำหนดค่า Message Processor

จนกว่าจะมีการเปิดใช้การเข้ารหัสใน Message Processor คำขอรันไทม์จะไม่สามารถประมวลผลข้อมูลเข้าสู่ระบบที่เข้ารหัสได้

  1. คัดลอกไฟล์คีย์สโตร์ที่สร้างไว้ในขั้นตอนที่ 1 ไปยังไดเรกทอรีในโหนด Message Processor เช่น /opt/apigee/customer/application ตัวอย่างเช่น
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. ตรวจสอบว่าผู้ใช้ apigee อ่านไฟล์ได้
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
  3. เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงใน /opt/apigee/customer/application/message-processor.properties หากไฟล์ไม่มีอยู่ ให้สร้างไฟล์ ดูข้อมูลอ้างอิงไฟล์พร็อพเพอร์ตี้ด้วย
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    โปรดทราบว่า KEK_PASSWORD อาจเหมือนกับ KEYSTORE_PASSWORD ทั้งนี้ขึ้นอยู่กับเครื่องมือที่ใช้สร้างคีย์สโตร์

  4. รีสตาร์ท Message Processor โดยใช้คำสั่งต่อไปนี้
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready

    คำสั่ง wait_for_ready จะแสดงข้อความต่อไปนี้เมื่อ Message Processor พร้อมประมวลผลข้อความ

    Checking if message-processor is up: message-processor is up.
  5. หากคุณติดตั้ง Message Processor ไว้ในหลายโหนด ให้ทำตามขั้นตอนที่ 1-4 ซ้ำในแต่ละโหนด Message Processor

สรุป

แอปของนักพัฒนาแอปทั้งหมดที่คุณสร้างขึ้นนับจากนี้ไปจะมีข้อมูลลับเข้าสู่ระบบที่เข้ารหัสเมื่อไม่มีการเคลื่อนไหวที่ เหลืออยู่ในฐานข้อมูล Cassandra

การใช้ตัวแปรสภาพแวดล้อมสำหรับ พร็อพเพอร์ตี้การกำหนดค่า

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

conf_keymanagement_kmscred.encryption.keystore.pass=
conf_keymanagement_kmscred.encryption.kek.pass=

ตัวแปรสภาพแวดล้อมที่เกี่ยวข้องมีดังนี้

export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD

หากคุณตั้งค่าตัวแปรสภาพแวดล้อมเหล่านี้ คุณสามารถละเว้นพร็อพเพอร์ตี้การกำหนดค่าเหล่านี้จาก ไฟล์การกำหนดค่าในโหนด Message Processor และเซิร์ฟเวอร์การจัดการได้ เนื่องจากระบบจะละเว้นพร็อพเพอร์ตี้เหล่านี้

conf_keymanagement_kmscred.encryption.keystore.pass
conf_keymanagement_kmscred.encryption.kek.pass

ข้อมูลอ้างอิงไฟล์พร็อพเพอร์ตี้

ส่วนนี้อธิบายพร็อพเพอร์ตี้การกำหนดค่าที่คุณต้องตั้งค่าในโหนด Message Processor และเซิร์ฟเวอร์การจัดการทั้งหมดตามที่อธิบายไว้ก่อนหน้านี้ในเอกสารนี้

พร็อพเพอร์ตี้ ค่าเริ่มต้น คำอธิบาย
conf_keymanagement_kmscred.encryption.enabled false ต้องเป็น true เพื่อเปิดใช้การเข้ารหัสคีย์
conf_keymanagement_kmscred.encryption.allowFallback false ตั้งค่า allowFallback เป็น true เพื่อให้ข้อมูลเข้าสู่ระบบข้อความธรรมดาที่มีอยู่ใช้งานได้ต่อไป
conf_keymanagement_kmscred.encryption.keystore.path ไม่มี ระบุเส้นทางไปยังคีย์สโตร์ KEK ในโหนด Message Processor หรือเซิร์ฟเวอร์การจัดการ ดูขั้นตอนที่ 2: กำหนดค่าเซิร์ฟเวอร์การจัดการและขั้นตอนที่ 3: กำหนดค่าตัวประมวลผลข้อความ
conf_keymanagement_kmscred.encryption.kek.alias ไม่มี นามแฝงที่จัดเก็บ KEK ไว้ในคีย์สโตร์
conf_keymanagement_kmscred.encryption.keystore.pass ไม่มี ไม่บังคับหากคุณใช้ตัวแปรสภาพแวดล้อมเพื่อตั้งค่าพร็อพเพอร์ตี้เหล่านี้ ดูการใช้ตัวแปรสภาพแวดล้อมสำหรับพร็อพเพอร์ตี้การกำหนดค่าด้วย Using environment variables for configuration properties.
conf_keymanagement_kmscred.encryption.kek.pass ไม่มี ไม่บังคับหากคุณใช้ตัวแปรสภาพแวดล้อมเพื่อตั้งค่าพร็อพเพอร์ตี้เหล่านี้ ดูการใช้ตัวแปรสภาพแวดล้อมสำหรับพร็อพเพอร์ตี้การกำหนดค่าด้วย Using environment variables for configuration properties.