เอกสารนี้อธิบายวิธีเปิดใช้การเข้ารหัส ข้อมูลลับของผู้ใช้ แอปนักพัฒนาซอฟต์แวร์ (ข้อมูลเข้าสู่ระบบไคลเอ็นต์) ที่จัดเก็บไว้ ในฐานข้อมูล Cassandra
ภาพรวม
เดิมที Apigee Edge สำหรับ Private Cloud ได้ให้การเข้ารหัสที่ไม่บังคับสำหรับแมปค่าคีย์ (KVM) และโทเค็นเพื่อการเข้าถึง OAuth
ตารางต่อไปนี้จะอธิบายตัวเลือกการเข้ารหัสสำหรับข้อมูลที่ไม่มีการเคลื่อนไหวใน Apigee สำหรับ Private Cloud
เอนทิตี | เปิดใช้การเข้ารหัสโดยค่าเริ่มต้นแล้ว | การเข้ารหัสที่พร้อมให้ใช้งาน (ไม่บังคับ) | เอกสารประกอบที่เกี่ยวข้อง |
KVM | ไม่ได้ | ใช่ | ดูเกี่ยวกับ KVM ที่เข้ารหัส |
โทเค็นเพื่อการเข้าถึง OAuth | ไม่ได้ | ใช่ | โปรดดูหัวข้อการแฮชโทเค็นเพื่อเพิ่มความปลอดภัย |
ข้อมูลลับของผู้บริโภคของแอปนักพัฒนาซอฟต์แวร์ | ไม่ได้ | ใช่ | หากต้องการเปิดใช้งาน ให้ทำตามขั้นตอนการกำหนดค่าในเอกสารนี้ |
หากต้องการเปิดใช้การเข้ารหัสข้อมูลเข้าสู่ระบบไคลเอ็นต์ คุณต้องดำเนินการต่อไปนี้ใน โหนดประมวลผลข้อความและเซิร์ฟเวอร์การจัดการทั้งหมด:
- สร้างคีย์สโตร์เพื่อจัดเก็บ คีย์การเข้ารหัสคีย์ (KEK) Apigee ใช้คีย์ที่เข้ารหัสนี้ในการเข้ารหัสคีย์ลับที่ต้องใช้ในการเข้ารหัสข้อมูล
- แก้ไขพร็อพเพอร์ตี้การกำหนดค่าในเซิร์ฟเวอร์การจัดการและโหนดผู้ประมวลผลข้อความ
- สร้างแอปสำหรับนักพัฒนาซอฟต์แวร์เพื่อทริกเกอร์การสร้างคีย์
- รีสตาร์ทโหนด
งานเหล่านี้มีการอธิบายไว้ในเอกสารนี้
สิ่งที่จำเป็นต้องทราบเกี่ยวกับคีย์ ฟีเจอร์การเข้ารหัส
ขั้นตอนในเอกสารนี้จะอธิบายวิธีเปิดใช้ฟีเจอร์ KEK ซึ่งช่วยให้ Apigee เข้ารหัสลับได้ คีย์ลับที่ใช้ในการเข้ารหัสแอปของนักพัฒนาซอฟต์แวร์ ข้อมูลลับของผู้ใช้เมื่อมีการจัดเก็บเมื่อไม่มีการเคลื่อนไหวในฐานข้อมูล Cassandra
โดยค่าเริ่มต้น ค่าใดๆ ที่มีอยู่ในฐานข้อมูลจะไม่มีการเปลี่ยนแปลง (เป็นข้อความธรรมดา) และจะ ทำงานต่อได้เหมือนเดิม
หากคุณดำเนินการเขียนในเอนทิตีที่ไม่ได้เข้ารหัส การดำเนินการนั้นจะได้รับการเข้ารหัสเมื่อ บันทึกการดำเนินการแล้ว เช่น หากคุณเพิกถอนโทเค็นที่ไม่ได้เข้ารหัสแล้วอนุมัติในภายหลัง โทเค็นที่ได้รับการอนุมัติใหม่จะได้รับการเข้ารหัส
รักษากุญแจให้ปลอดภัย
อย่าลืมจัดเก็บสำเนาคีย์สโตร์ซึ่งเก็บ KEK ไว้ในที่ปลอดภัย เราขอแนะนำให้ใช้ กลไกที่ปลอดภัยในการบันทึกสำเนาของคีย์สโตร์ วิธีการในเอกสารนี้อธิบายไว้ว่า คีย์สโตร์จะต้องวางไว้ในโปรเซสเซอร์ข้อความและโหนดเซิร์ฟเวอร์การจัดการแต่ละรายการ ที่ใช้อ้างอิงได้ แต่สิ่งสำคัญอีกอย่างคือการจัดเก็บ ของคีย์สโตร์ที่อื่นเพื่อเก็บไว้อย่างปลอดภัยและใช้เป็นข้อมูลสำรอง
การเปิดใช้การเข้ารหัสคีย์
ทำตามขั้นตอนต่อไปนี้เพื่อเข้ารหัสลับคีย์ผู้บริโภค
ข้อกำหนดเบื้องต้น
คุณต้องปฏิบัติตามข้อกำหนดเหล่านี้ก่อนทำตามขั้นตอนในเอกสารนี้
- คุณต้องติดตั้งหรืออัปเกรดเป็น Apigee Edge สำหรับ Private Cloud 4.50.00.10 ขึ้นไป
- คุณต้องเป็น Apigee Edge สำหรับผู้ดูแลระบบ Private Cloud
ขั้นตอนที่ 1: สร้างคีย์สโตร์
ทำตามขั้นตอนต่อไปนี้เพื่อสร้างคีย์สโตร์เพื่อเก็บคีย์การเข้ารหัสคีย์ (KEK)
- เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างคีย์สโตร์เพื่อจัดเก็บคีย์ที่จะใช้
เข้ารหัส KEK ป้อนคำสั่งให้ตรงตามที่ปรากฏ (คุณระบุชื่อคีย์สโตร์ใดก็ได้ที่ต้องการ):
keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \ -keystore kekstore.p12 -storetype PKCS12
ป้อนรหัสผ่านเมื่อได้รับข้อความแจ้ง คุณจะใช้รหัสผ่านนี้ในส่วนต่อๆ ไปเมื่อคุณ กำหนดค่าเซิร์ฟเวอร์การจัดการและผู้ประมวลผลข้อความ
คำสั่งนี้จะสร้างไฟล์คีย์สโตร์ 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: กำหนดค่าเครื่องมือประมวลผลข้อความ
คำขอรันไทม์จะประมวลผลข้อมูลเข้าสู่ระบบที่เข้ารหัสไม่ได้จนกว่าระบบจะเปิดใช้การเข้ารหัสในตัวประมวลผลข้อความ
- คัดลอกไฟล์คีย์สโตร์ที่คุณสร้างในขั้นตอนที่ 1 ไปยังไดเรกทอรีในโหนดตัวประมวลผลข้อความ
เช่น
/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
โดยขึ้นอยู่กับเครื่องมือที่ใช้สร้างคีย์สโตร์ - รีสตาร์ทโปรแกรมประมวลผลข้อความโดยใช้คำสั่งต่อไปนี้
/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
จะแสดงข้อความต่อไปนี้เมื่อโปรแกรมประมวลผลข้อความ พร้อมที่จะประมวลผลข้อความแล้ว:Checking if message-processor is up: message-processor is up.
- หากติดตั้งเครื่องมือประมวลผลข้อความไว้ในหลายโหนด ให้ทำซ้ำขั้นตอนที่ 1-4 ในแต่ละโหนด โหนดระบบประมวลผลข้อความ
สรุป
แอปของนักพัฒนาแอปที่คุณสร้างขึ้นต่อจากนี้ไปจะได้รับการเข้ารหัสข้อมูลลับสำหรับเข้าสู่ระบบที่ จะอยู่ในฐานข้อมูล Cassandra
การใช้ตัวแปรสภาพแวดล้อมสำหรับ พร็อพเพอร์ตี้การกำหนดค่า
คุณสามารถตั้งค่าเครื่องมือประมวลผลข้อความและการกำหนดค่าเซิร์ฟเวอร์การจัดการต่อไปนี้ ที่ใช้ตัวแปรสภาพแวดล้อม หากมีการตั้งค่า ตัวแปรสภาพแวดล้อมจะลบล้างพร็อพเพอร์ตี้ ที่ตั้งไว้ในไฟล์การกำหนดค่าเซิร์ฟเวอร์การจัดการข้อความหรือเซิร์ฟเวอร์การจัดการ
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
หากตั้งค่าตัวแปรสภาพแวดล้อมเหล่านี้ คุณจะละเว้นพร็อพเพอร์ตี้การกำหนดค่าเหล่านี้จากพร็อพเพอร์ตี้ ไฟล์การกำหนดค่าในระบบประมวลผลข้อความและโหนดเซิร์ฟเวอร์การจัดการ เนื่องจากระบบจะไม่สนใจไฟล์นี้
conf_keymanagement_kmscred.encryption.keystore.pass conf_keymanagement_kmscred.encryption.kek.pass
การอ้างอิงไฟล์พร็อพเพอร์ตี้
ส่วนนี้จะอธิบายพร็อพเพอร์ตี้การกำหนดค่าที่คุณต้องตั้งค่าให้กับระบบประมวลผลข้อความทั้งหมด และโหนดเซิร์ฟเวอร์การจัดการ ตามที่อธิบายไว้ก่อนหน้านี้ในเอกสารนี้
พร็อพเพอร์ตี้ | ค่าเริ่มต้น | คำอธิบาย |
conf_keymanagement_kmscred.encryption.enabled
|
false
|
ต้องเป็น true เพื่อเปิดใช้การเข้ารหัสคีย์
|
conf_keymanagement_kmscred.encryption.allowFallback
|
false
|
ตั้งค่า AllowFallback เป็น true เพื่อให้ข้อมูลเข้าสู่ระบบแบบข้อความธรรมดาที่มีอยู่ทำงานต่อไปได้
|
conf_keymanagement_kmscred.encryption.keystore.path
|
ไม่มี | ระบุเส้นทางไปยังคีย์สโตร์ KEK บนตัวประมวลผลข้อความหรือโหนดเซิร์ฟเวอร์การจัดการ ดูขั้นตอนที่ 2: กำหนดค่าการจัดการ เซิร์ฟเวอร์และขั้นตอนที่ 3: กำหนดค่าโปรแกรมประมวลผลข้อความ |
conf_keymanagement_kmscred.encryption.kek.alias
|
ไม่มี | ชื่อแทนที่เก็บไว้ KEK ในคีย์สโตร์ |
conf_keymanagement_kmscred.encryption.keystore.pass
|
ไม่มี | ไม่บังคับหากคุณใช้ตัวแปรสภาพแวดล้อมในการตั้งค่าพร็อพเพอร์ตี้เหล่านี้ ดูเพิ่มเติม สภาพแวดล้อมการใช้งาน ตัวแปรสำหรับพร็อพเพอร์ตี้การกำหนดค่า |
conf_keymanagement_kmscred.encryption.kek.pass
|
ไม่มี | ไม่บังคับหากคุณใช้ตัวแปรสภาพแวดล้อมในการตั้งค่าพร็อพเพอร์ตี้เหล่านี้ ดูเพิ่มเติม สภาพแวดล้อมการใช้งาน ตัวแปรสำหรับพร็อพเพอร์ตี้การกำหนดค่า |