เอกสารนี้อธิบายวิธีเปิดใช้การเข้ารหัส Consumer Secret (ข้อมูลเข้าสู่ระบบของไคลเอ็นต์) ของแอปนักพัฒนาซอฟต์แวร์ที่จัดเก็บไว้ในฐานข้อมูล Cassandra
ภาพรวม
โดยปกติแล้ว Apigee Edge สำหรับ Private Cloud จะมีการเข้ารหัสที่ไม่บังคับสำหรับข้อมูลแผนที่คีย์-ค่า (KVM) และโทเค็นเพื่อการเข้าถึง OAuth
ตารางต่อไปนี้อธิบายตัวเลือกการเข้ารหัสสำหรับข้อมูลที่ไม่มีการเคลื่อนไหวใน Apigee สำหรับ Private Cloud
| เอนทิตี | เปิดใช้การเข้ารหัสโดยค่าเริ่มต้น | มีการเข้ารหัสให้เลือกใช้ | เอกสารประกอบที่เกี่ยวข้อง |
| KVM | ไม่ใช่ | ใช่ | ดูเกี่ยวกับ KVM ที่เข้ารหัส |
| โทเค็นเพื่อการเข้าถึง OAuth | ไม่ใช่ | ใช่ | ดูการแฮชโทเค็นเพื่อเพิ่มความปลอดภัย |
| ข้อมูลลับของผู้ใช้แอปของนักพัฒนาแอป | ไม่ใช่ | ใช่ | หากต้องการเปิดใช้ ให้ทำตามขั้นตอนการกำหนดค่าในเอกสารนี้ |
หากต้องการเปิดใช้การเข้ารหัสข้อมูลเข้าสู่ระบบของไคลเอ็นต์ คุณต้องทำงานต่อไปนี้ในโหนด Message Processor และโหนดเซิร์ฟเวอร์การจัดการทั้งหมด
- สร้างคีย์สโตร์เพื่อจัดเก็บคีย์การเข้ารหัสคีย์ (KEK) Apigee จะใช้คีย์ที่เข้ารหัสนี้เพื่อเข้ารหัสคีย์ลับที่จำเป็นสำหรับการเข้ารหัสข้อมูลของคุณ
- แก้ไขพร็อพเพอร์ตี้การกำหนดค่าในโหนดเซิร์ฟเวอร์การจัดการและโหนด Message Processor ทั้งหมด
- สร้างแอปสำหรับนักพัฒนาแอปเพื่อทริกเกอร์การสร้างคีย์
- รีสตาร์ทโหนด
เราจะอธิบายงานเหล่านี้ในเอกสารนี้
สิ่งที่จำเป็นต้องทราบเกี่ยวกับฟีเจอร์การเข้ารหัสคีย์
ขั้นตอนในเอกสารนี้อธิบายวิธีเปิดใช้ฟีเจอร์ KEK ซึ่งช่วยให้ Apigee เข้ารหัสคีย์ลับที่ใช้ในการเข้ารหัสข้อมูลลับของผู้บริโภคแอปของนักพัฒนาซอฟต์แวร์เมื่อจัดเก็บไว้ในฐานข้อมูล Cassandra ได้
โดยค่าเริ่มต้น ค่าที่มีอยู่ในฐานข้อมูลจะยังคงไม่เปลี่ยนแปลง (ในรูปแบบข้อความธรรมดา) และจะยังคงทำงานต่อไปเหมือนเดิม
หากคุณดำเนินการเขียนในเอนทิตีที่ไม่ได้เข้ารหัส ระบบจะเข้ารหัสเอนทิตีเมื่อบันทึกการดำเนินการ เช่น หากคุณเพิกถอนโทเค็นที่ไม่ได้เข้ารหัสแล้วอนุมัติในภายหลัง โทเค็นที่ได้รับอนุมัติใหม่จะได้รับการเข้ารหัส
การเก็บคีย์ให้ปลอดภัย
โปรดเก็บสำเนาของคีย์สโตร์ที่จัดเก็บ KEK ไว้ในตำแหน่งที่ปลอดภัย เราขอแนะนำให้ใช้กลไกที่ปลอดภัยของคุณเองเพื่อบันทึกสำเนาของ Keystore ตามที่คำแนะนำในเอกสารนี้อธิบายไว้ คุณต้องวางคีย์สโตร์ไว้ในโหนด Message Processor และเซิร์ฟเวอร์การจัดการแต่ละโหนดที่ไฟล์การกำหนดค่าในเครื่องสามารถอ้างอิงได้ แต่คุณควรจัดเก็บสำเนาของ Keystore ไว้ที่อื่นด้วยเพื่อความปลอดภัยและเป็นข้อมูลสำรอง
การเปิดใช้การเข้ารหัสคีย์
ทำตามขั้นตอนต่อไปนี้เพื่อเข้ารหัสคีย์ลับของผู้บริโภค
ข้อกำหนดเบื้องต้น
คุณต้องมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้ก่อนจึงจะทำตามขั้นตอนในเอกสารนี้ได้
- คุณต้องติดตั้งหรืออัปเกรดเป็น Apigee Edge สำหรับ Private Cloud 4.50.00.10 ขึ้นไป
- คุณต้องเป็นผู้ดูแลระบบ Apigee Edge สำหรับ Private Cloud
ขั้นตอนที่ 1: สร้างคีย์สโตร์
ทำตามขั้นตอนต่อไปนี้เพื่อสร้าง Keystore เพื่อเก็บคีย์การเข้ารหัสคีย์ (KEK)
- เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างคีย์สโตร์เพื่อจัดเก็บคีย์ที่จะใช้เข้ารหัส KEK ป้อนคำสั่งให้ตรงกับที่แสดงทุกประการ (คุณสามารถระบุชื่อคีย์สโตร์ใดก็ได้ตามต้องการ):
keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \ -keystore kekstore.p12 -storetype PKCS12
เมื่อได้รับข้อความแจ้ง ให้ป้อนรหัสผ่าน คุณจะใช้รหัสผ่านนี้ในส่วนถัดไปเมื่อกำหนดค่าเซิร์ฟเวอร์การจัดการและ Message Processor
คำสั่งนี้จะสร้างไฟล์คีย์สโตร์ kekstore.p12 ที่มีคีย์ซึ่งมีชื่อแทน KEYSTORE_NAME
- (ไม่บังคับ) ยืนยันว่าสร้างไฟล์อย่างถูกต้องด้วยคำสั่งต่อไปนี้ หากไฟล์ถูกต้อง คำสั่งจะแสดงผลคีย์ที่มีชื่อแทน KEYSTORE_NAME ดังนี้
keytool -list -keystore kekstore.p12
ขั้นตอนที่ 2: กำหนดค่าเซิร์ฟเวอร์การจัดการ
จากนั้นให้กำหนดค่าเซิร์ฟเวอร์การจัดการ หากคุณติดตั้งเซิร์ฟเวอร์การจัดการในหลายโหนด คุณต้องทำตามขั้นตอนเหล่านี้ซ้ำในแต่ละโหนด
- คัดลอกไฟล์คีย์สโตร์ที่สร้างในขั้นตอนที่ 1 ไปยังไดเรกทอรีในโหนดเซิร์ฟเวอร์การจัดการ เช่น
/opt/apigee/customer/applicationเช่นcp certs/kekstore.p12 /opt/apigee/customer/application
- ตรวจสอบว่าผู้ใช้
apigeeสามารถอ่านไฟล์ได้โดยทำดังนี้chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
chmod 400 /opt/apigee/customer/application/kekstore.p12
- เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงใน
/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ทั้งนี้ขึ้นอยู่กับเครื่องมือที่ใช้สร้างคีย์สโตร์ - รีสตาร์ทเซิร์ฟเวอร์การจัดการโดยใช้คำสั่งต่อไปนี้
/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.
- หากคุณติดตั้งเซิร์ฟเวอร์การจัดการในหลายโหนด ให้ทำตามขั้นตอนที่ 1-4 ด้านบนซ้ำในโหนดเซิร์ฟเวอร์การจัดการแต่ละโหนด
ขั้นตอนที่ 3: สร้างแอปสำหรับนักพัฒนาแอป
เมื่ออัปเดตเซิร์ฟเวอร์การจัดการแล้ว คุณต้องสร้างแอปนักพัฒนาซอฟต์แวร์เพื่อทริกเกอร์การสร้างคีย์ที่ใช้เข้ารหัสข้อมูลเข้าสู่ระบบของไคลเอ็นต์ โดยทำดังนี้
- สร้างแอปสำหรับนักพัฒนาแอปเพื่อทริกเกอร์การสร้างคีย์การเข้ารหัสข้อมูล (KEK) โปรดดูขั้นตอนที่หัวข้อการลงทะเบียนแอป
- ลบแอปของนักพัฒนาแอปหากต้องการ คุณไม่จำเป็นต้องเก็บไฟล์นี้ไว้เมื่อสร้างคีย์การเข้ารหัสแล้ว
ขั้นตอนที่ 4: กำหนดค่า Message Processor
คำขอรันไทม์จะไม่สามารถประมวลผลข้อมูลเข้าสู่ระบบที่เข้ารหัสได้จนกว่าจะเปิดใช้การเข้ารหัสใน Message Processor
- คัดลอกไฟล์ Keystore ที่สร้างในขั้นตอนที่ 1 ไปยังไดเรกทอรีในโหนด Message Processor เช่น
/opt/apigee/customer/applicationเช่นcp certs/kekstore.p12 /opt/apigee/customer/application
- ตรวจสอบว่าผู้ใช้
apigeeสามารถอ่านไฟล์ได้โดยทำดังนี้chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
- เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงใน
/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ทั้งนี้ขึ้นอยู่กับเครื่องมือที่ใช้สร้าง Keystore - รีสตาร์ท 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.
- หากคุณติดตั้ง 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: กำหนดค่า Message Processor |
conf_keymanagement_kmscred.encryption.kek.alias
|
ไม่มี | ชื่อแทนที่ใช้จัดเก็บ KEK ใน Keystore |
conf_keymanagement_kmscred.encryption.keystore.pass
|
ไม่มี | ไม่บังคับหากคุณใช้ตัวแปรสภาพแวดล้อมเพื่อตั้งค่าพร็อพเพอร์ตี้เหล่านี้ ดูเพิ่มเติมที่การใช้ตัวแปรสภาพแวดล้อมสำหรับพร็อพเพอร์ตี้การกำหนดค่า |
conf_keymanagement_kmscred.encryption.kek.pass
|
ไม่มี | ไม่บังคับหากคุณใช้ตัวแปรสภาพแวดล้อมเพื่อตั้งค่าพร็อพเพอร์ตี้เหล่านี้ โปรดดูหัวข้อการใช้ตัวแปรสภาพแวดล้อมสำหรับพร็อพเพอร์ตี้การกำหนดค่าด้วย |