1. ภาพรวม
Cloud KMS คือบริการการจัดการคีย์ที่โฮสต์ไว้ในระบบคลาวด์ ซึ่งช่วยให้คุณจัดการคีย์การเข้ารหัสของบริการระบบคลาวด์ได้เช่นเดียวกับที่ทำภายในองค์กร ซึ่งรวมถึงการรองรับการเข้ารหัส การถอดรหัส การรับรอง และการยืนยันโดยใช้ประเภทคีย์และแหล่งที่มาที่หลากหลาย เช่น Cloud HSM สำหรับคีย์ที่สนับสนุนด้วยฮาร์ดแวร์ บทแนะนำนี้จะสอนวิธีเข้ารหัสและถอดรหัสข้อมูลโดยใช้คีย์ Cloud KMS แบบสมมาตร
คุณจะได้เรียนรู้
- วิธีเปิดใช้ Cloud KMS API
- วิธีสร้างคีย์ริง Cloud KMS
- วิธีสร้างคีย์การเข้ารหัส Cloud KMS สำหรับการเข้ารหัส/การถอดรหัสแบบสมมาตร
- วิธีหมุนเวียนคีย์การเข้ารหัส Cloud KMS แบบสมมาตร
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)
โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีคนใช้แล้ว และจะใช้ไม่ได้ ขออภัย) และจะมีการอ้างอิงใน Codelab ว่า PROJECT_ID
ในภายหลัง
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี ตรวจสอบว่าคุณได้ทำตามวิธีการใน "การล้างข้อมูล" ซึ่งจะแนะนำคุณเกี่ยวกับวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD
เริ่มต้น Cloud Shell
ใน Codelab นี้ คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมเสมือนจริงแบบฟรีที่ทำงานบน Google Cloud จากคอนโซล GCP ให้คลิกไอคอน Cloud Shell บนแถบเครื่องมือด้านขวาบนดังนี้
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมนี้ควรใช้เวลาเพียงครู่เดียว เมื่อเสร็จแล้ว คุณจะเห็นข้อมูลต่อไปนี้
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ทำงานอย่างต่อเนื่องบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก เรียกใช้คำสั่งทั้งหมดจาก Shell นี้ เว้นแต่จะมีคำแนะนำไว้เป็นอย่างอื่น
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"
ตอนนี้ให้สร้าง CryptoKey ชื่อ my-symmetric-key
ตามวัตถุประสงค์ encryption
ภายในคีย์ริงที่คุณเพิ่งสร้าง
$ gcloud kms keys create "my-symmetric-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "encryption"
5. เข้ารหัสข้อมูล
สร้างไฟล์ที่มีข้อมูลเพื่อเข้ารหัสและใช้เครื่องมือบรรทัดคำสั่ง gcloud
เพื่อเข้ารหัสข้อมูลในไฟล์ ดังนี้
$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --plaintext-file ./data.txt \ --ciphertext-file ./data.txt.enc
ระบบจะบันทึกข้อมูลที่เข้ารหัส (หรือที่เรียกว่า "ข้อความเข้ารหัส") ไว้ใน data.txt.enc
ในดิสก์ หากคุณเปิดไฟล์ data.txt.enc
คุณจะสังเกตเห็นว่ามีอักขระแปลกๆ และไม่สามารถพิมพ์ได้ เนื่องจากข้อมูลผลลัพธ์อยู่ในรูปแบบไบนารี
เมื่อจัดเก็บข้อความเข้ารหัสในฐานข้อมูลหรือส่งโดยเป็นส่วนหนึ่งของคำขอ HTTP คุณอาจต้องเข้ารหัสข้อมูล กลไกการเข้ารหัสทั่วไปคือ base64
Cloud KMS ไม่จัดเก็บข้อความธรรมดาที่คุณระบุ คุณต้องบันทึกข้อความเข้ารหัสนี้ในตำแหน่งที่ปลอดภัยเนื่องจากจะต้องใช้เพื่อดึงค่าข้อความธรรมดา
6. ถอดรหัสข้อมูล
ถอดรหัสข้อความเข้ารหัสจากไฟล์โดยใช้เครื่องมือบรรทัดคำสั่ง gcloud
ดังนี้
$ gcloud kms decrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --plaintext-file - \ --ciphertext-file ./data.txt.enc
เครื่องมือบรรทัดคำสั่ง gcloud
จะอ่านข้อความเข้ารหัสจากไฟล์และถอดรหัสโดยใช้ Cloud KMS โปรดทราบว่าตัวอย่างนี้ระบุอาร์กิวเมนต์ --plaintext-file
เป็น -
ซึ่งจะเป็นการสั่งให้ gcloud
พิมพ์ผลลัพธ์ไปยังเครื่องชำระเงิน
คอนโซลจะพิมพ์ my-contents
ซึ่งเป็นค่าข้อความธรรมดาเดียวกับไฟล์ด้านบน
7. หมุนคีย์
ใน Cloud KMS จริงๆ แล้ว CryptoKey คือคอลเล็กชันของเวอร์ชันคีย์การเข้ารหัส คุณสร้างเวอร์ชันคีย์การเข้ารหัสใหม่เพื่อทำการหมุนเวียนคีย์ได้ นอกจากนี้ Cloud KMS ยังหมุนเวียนคีย์โดยอัตโนมัติตามกำหนดเวลาได้ด้วย
หากต้องการหมุนเวียนคีย์ด้วยตนเอง ให้สร้างเวอร์ชันคีย์การเข้ารหัสใหม่และตั้งค่าเป็นเวอร์ชันหลัก
$ gcloud kms keys versions create \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --primary
คำขอในอนาคตทั้งหมดเพื่อเข้ารหัสข้อมูลจะใช้คีย์ใหม่นี้ คีย์เก่าจะยังคงใช้งานได้เพื่อถอดรหัสข้อมูลที่เคยเข้ารหัสไว้ก่อนหน้านี้โดยใช้คีย์เหล่านั้น Cloud KMS จะกำหนดคีย์การถอดรหัสที่เหมาะสมโดยอัตโนมัติตามข้อความเข้ารหัสที่มีให้ คุณไม่จำเป็นต้องระบุเวอร์ชันคีย์การเข้ารหัสที่จะใช้สำหรับการถอดรหัส
หากไม่ต้องการให้มีการถอดรหัสค่าข้อความเข้ารหัสที่เข้ารหัสโดยใช้เวอร์ชันคีย์การเข้ารหัสที่เก่ากว่าโดยใช้ Cloud KMS คุณสามารถปิดหรือทำลายเวอร์ชันคีย์การเข้ารหัสดังกล่าวได้ การปิดใช้เป็นการดำเนินการที่ย้อนกลับได้ ส่วนการทำลายจะมีผลถาวร วิธีปิดใช้เวอร์ชัน
$ gcloud kms keys versions disable "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key"
8. ยินดีด้วย
คุณเปิดใช้ Cloud KMS API สร้างคีย์การเข้ารหัสแบบสมมาตร และข้อมูลที่เข้ารหัสและถอดรหัสแล้ว Cloud KMS เป็นผลิตภัณฑ์ที่มีประสิทธิภาพและการเข้ารหัส/การถอดรหัสเป็นขีดฆ่าความสามารถเท่านั้น
ล้างข้อมูล
หากสำรวจเสร็จแล้ว โปรดลองลบโปรเจ็กต์
- ไปที่คอนโซล Cloud Platform
- เลือกโปรเจ็กต์ที่คุณต้องการปิดการทำงาน แล้วคลิก "ลบ" ที่ด้านบน การดำเนินการนี้จะกำหนดเวลาการลบโปรเจ็กต์
ดูข้อมูลเพิ่มเติม
ใบอนุญาต
ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตทั่วไปครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 2.0