1. ภาพรวม
Cloud KMS เป็นบริการจัดการคีย์ที่โฮสต์ในระบบคลาวด์ ซึ่งช่วยให้คุณจัดการคีย์การเข้ารหัสสำหรับบริการระบบคลาวด์ได้เช่นเดียวกับที่ทำในระบบภายใน ซึ่งรวมถึงการรองรับการเข้ารหัส การถอดรหัส การรับรอง และการยืนยันโดยใช้คีย์ประเภทต่างๆ และแหล่งที่มาต่างๆ รวมถึง Cloud HSM สำหรับคีย์ที่สำรองข้อมูลไว้ในฮาร์ดแวร์ บทแนะนำนี้จะสอนวิธีลงชื่อและยืนยันข้อมูลโดยใช้คีย์แบบไม่สมมาตรของ Cloud KMS
สิ่งที่คุณจะได้เรียนรู้
- วิธีเปิดใช้ Cloud KMS API
- วิธีสร้างคีย์ริง
- วิธีสร้างคีย์คริปโตสําหรับการรับรอง/การยืนยันแบบอสมมาตร
2. การตั้งค่าและข้อกําหนด
การตั้งค่าสภาพแวดล้อมด้วยตนเอง
- ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)
โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันสำหรับโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีผู้ใช้แล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID
ในโค้ดแล็บนี้
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การทำตามโค้ดแล็บนี้ไม่น่าจะเสียค่าใช้จ่ายมากนัก โปรดทําตามวิธีการในส่วน "การล้างข้อมูล" ซึ่งจะแนะนําวิธีปิดใช้ทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินหลังจากบทแนะนํานี้ ผู้ใช้ใหม่ของ Google Cloud มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
เริ่ม Cloud Shell
ใน Codelab นี้ คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมเสมือนจริงแบบไม่มีค่าใช้จ่ายที่ทำงานบน Google Cloud จากคอนโซล GCP ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อดำเนินการเสร็จแล้ว คุณควรเห็นข้อมูลดังต่อไปนี้
เครื่องเสมือนนี้โหลดเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ ซึ่งจะมีไดเรกทอรีหลักขนาด 5 GB ที่เก็บข้อมูลไว้ถาวร และทำงานบน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพเครือข่ายและการรับรองได้อย่างมีประสิทธิภาพ เรียกใช้คําสั่งทั้งหมดจากเชลล์นี้ เว้นแต่จะมีคำสั่งเป็นอย่างอื่น
3. เปิดใช้บริการ Cloud KMS
คุณต้องเปิดใช้บริการในโปรเจ็กต์ก่อนจึงจะใช้ Cloud KMS ได้ โดยจำเป็นต้องดำเนินการเพียงครั้งเดียวต่อโปรเจ็กต์ หากต้องการเปิดใช้บริการ Cloud KMS ให้เรียกใช้คําสั่งต่อไปนี้
$ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}"
การเปิดใช้อาจใช้เวลาถึง 1 นาที คำสั่งจะรายงานความสําเร็จเมื่อดำเนินการเสร็จสิ้น
4. สร้างคีย์ KMS
สร้างคีย์ริง Cloud KMS ใน Cloud KMS คีย์ริงคือคอลเล็กชันคีย์การเข้ารหัสเชิงตรรกะ เก็บข้อมูลเมตาเกี่ยวกับกุญแจ เช่น ตำแหน่ง สร้างคีย์ริงชื่อ my-keyring
ในภูมิภาค global
โดยทำดังนี้
$ gcloud kms keyrings create "my-keyring" \ --location "global"
ตอนนี้ให้สร้างคีย์การเข้ารหัสชื่อ my-asymmetric-signing-key
โดยมีวัตถุประสงค์ asymmetric-signing
ในคีย์ริงที่คุณเพิ่งสร้าง
$ gcloud kms keys create "my-asymmetric-signing-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "asymmetric-signing" \ --default-algorithm "rsa-sign-pkcs1-4096-sha512"
5. ข้อมูลลายเซ็น
การถอดรหัสข้อมูลที่เข้ารหัสโดยใช้คีย์แบบไม่สมมาตรของ Cloud KMS จำเป็นต้องมีการเข้าถึงบริการ Cloud KMS แบบออนไลน์ ซึ่งแตกต่างจากการเข้ารหัส ถอดรหัสข้อความที่เข้ารหัสจากไฟล์โดยใช้gcloud
เครื่องมือบรรทัดคำสั่ง ดังนี้
สร้างไฟล์ที่มีข้อมูลที่จะเซ็นชื่อและใช้gcloud
เครื่องมือบรรทัดคำสั่งเพื่อเซ็นชื่อข้อมูลด้วยคีย์ Cloud KMS ดังนี้
$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-signing-key" \ --version "1" \ --digest-algorithm "sha512" \ --input-file ./data.txt \ --signature-file ./data.txt.sig
ระบบจะบันทึกลายเซ็นไว้ใน data.txt.sig
บนดิสก์ หากเปิดไฟล์ data.txt.sig
คุณจะเห็นว่ามีอักขระแปลกๆ ที่พิมพ์ไม่ได้ เนื่องจากข้อมูลที่ได้อยู่ในรูปแบบไบนารี
เมื่อจัดเก็บลายเซ็นในฐานข้อมูลหรือส่งลายเซ็นเป็นส่วนหนึ่งของคําขอ HTTP คุณอาจต้องเข้ารหัสข้อมูล กลไกการเข้ารหัสที่ใช้กันโดยทั่วไปคือ Base64
6. ยืนยันข้อมูล
เมื่อใช้คีย์แบบไม่สมมาตร Cloud KMS จะไม่ทำการยืนยันโดยตรง แต่จะให้สิทธิ์เข้าถึงคีย์สาธารณะ และคุณจะยืนยันข้อมูลโดยใช้คีย์สาธารณะนั้นผ่านการเข้ารหัสคีย์สาธารณะ เมื่อใช้คีย์แบบไม่สมมาตร คุณจะยืนยันแบบออฟไลน์ได้ทั้งหมดและไม่จำเป็นต้องเข้าถึง Cloud KMS หรือ Google Cloud API อื่นๆ การดำเนินการยืนยันจะใช้เครื่องมือวิทยาการเข้ารหัส เช่น openssl
หรือภาษาโปรแกรมหรือไลบรารีที่รองรับวิทยาการเข้ารหัสคีย์สาธารณะ
ดาวน์โหลดคีย์สาธารณะจาก Cloud KMS โดยทำดังนี้
$ gcloud kms keys versions get-public-key "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-signing-key" \ --output-file ./key.pub
ยืนยันลายเซ็นกับคีย์สาธารณะโดยใช้openssl
เครื่องมือบรรทัดคำสั่ง ดังนี้
$ openssl dgst -sha256 \ -verify ./key.pub \ -signature ./data.txt.sig ./data.txt
คอนโซลจะพิมพ์ข้อความ "สําเร็จ" ซึ่งบ่งบอกว่าลายเซ็นดิจิทัลถูกต้อง
Verified OK
7. ยินดีด้วย
คุณได้เปิดใช้ Cloud KMS API, สร้างคีย์การรับรองแบบไม่สมมาตร และลงนามและยืนยันข้อมูลแล้ว Cloud KMS เป็นผลิตภัณฑ์ที่มีประสิทธิภาพ และการรับรอง/การยืนยันเป็นเพียงความสามารถเพียงส่วนเล็กๆ เท่านั้น
ล้างข้อมูล
หากสำรวจเสร็จแล้ว โปรดพิจารณาลบโปรเจ็กต์
- ไปที่คอนโซลแพลตฟอร์มระบบคลาวด์
- เลือกโปรเจ็กต์ที่ต้องการปิด แล้วคลิก "ลบ" ที่ด้านบน ซึ่งจะกำหนดเวลาการลบโปรเจ็กต์
ดูข้อมูลเพิ่มเติม
ใบอนุญาต
ผลงานนี้ได้รับอนุญาตภายใต้สัญญาอนุญาตครีเอทีฟคอมมอนส์สำหรับยอมรับสิทธิของผู้สร้าง (Creative Commons Attribution License) 2.0 ทั่วไป