สวัสดีครับ ผม Chaba_OK! คราวนี้เรามาทำความรู้จักกับ Azure key Vault กัน ปกติ Application ที่ใช้งานกันทั่วไปมีส่วนประกอบสำคัญด้าน Software Infrastructure 3 ส่วนคือ Application, ค่า Configuration และ Data ในส่วนของ Configuration อาจเป็นค่าความลับ (Secret หรือ Key) ที่ใช้ในการเข้าหรือถอดรหัส (Crptographic Key) ที่มีความสำคัญและจำเป็นสำหรับการทำงานของ Application เช่น User ID และ Password เพื่อเรียกใช้งาน Database (Connection String) ถ้าเก็บความลับเหล่านี้ไม่ดี อาจหลุดออกไปทำให้เกิดความเสียหายได้ ดังนั้น ค่าเหล่านี้ควรเก็บไว้ในที่ปลอดภัยซึ่งมีคุณสมบัติเบื้องต้นของการที่ๆ จัดเก็บค่าลับๆ มี 3 ข้อดังนี้
- Authentication สามารถตรวจสอบตัวตนของผู้ที่จะมาดูค่าต่างๆ ที่เก็บไว้
- Authorization สามารถกำหนดสิทธิ เพื่อควบคุมการใช้งานและช่วยแบ่งหน้าที่ตามความรับผิดชอบของผู้ใช้งาน (Role Base Access Control)
- Audit สามารถตรวจสอบการใช้งานได้
สำหรับบางหน่วยงาน การเก็บ Cryptographic Key/Secret จะต้องปฏิบัติตามกฏที่วางไว้โดยหน่วยงานที่กำกับหรือตรวจสอบ เพื่อให้การปฏิบัติงานเข้ามาตราฐาน จึงต้องใช้อุปกรณ์เรียกว่า Hardware Security Management (HSM) เพื่อเป็นช่วยเก็บ Secret และยังใช้ HSM ทำงานเข้ารหัสข้อมูลได้อีกด้วย
Micrisoft Azure Key Vault คือ บริการ Internet HSM บนระบบ Cloud ของ Microsoft Azure ที่รับฝาก Cryptographic Key และ Secret มีความสามารถกำหนดสิทธิผู้ใช้งานตามหน้าที่ (Role Base Access Control) และตรวจสอบการใช้งาน (Audit) และมี API สำหรับผู้พัฒนา Application ใช้สั่งงาน
บริการของ Key Vault ที่เก็บ Cryptographic Key/Secret แบ่งการเก็บข้อมูลเป็น 3 ประเภทคือ
Certificate | สร้าง Certificate ใน Format X509 จาก Certificate Authority (CA) หรืออาจทำเป็น Self-Signed ก็ได้ |
Key | เก็บ Key ที่ใช้ Encryption หรือ Decryption |
Secret | เก็บค่าความลับ |
สิ่งที่ต้องมีก่อนการใช้งาน Key Vault (Prerequisite)
ในบทความนี้ท่านจะต้องมี Resource ต่อไปนี้
- เป็นสมาชิก Microsoft Azure
- ติดตั้ง PowerShell module – Azure Key Vault
ลำดับการใช้งาน Azure Key Vault
การใช้งาน Azure Key Vault ในขั้นเริ่มต้นต้องทำตามขั้นตอนในภาพด้านล่าง
ทำความรู้จักกับ Key Vault แบบง่ายด้วยการฝาก password
1. เมื่อมี Account บน Azure แล้ว วิธีใช้งาน Key Vault สามารถทำงาน GUI หรือ Command-line ได้ ในตัวอย่างเป็นการใช้ GUI สร้าง Key Vault และเก็บข้อมูลใน Key Vault ตามภาพด้านล่าง การใช้ผ่าน Command-line (PowerShell) อยู่ตอนท้าย
การสร้าง Key Vault ต้องเตรียม Parameter ตามนี้
Name | ตั้งชื่อ ซึ่งต่อไปจะถูกนำไปใช้เป็น URL ในตัวอย่างใช้ชื่อ vm360degreekeyvault จะได้ URL คือ https://vm360degreekeyvault.vault.azure.net/ |
Subscription | เลือก subscription |
Resource Group | เลือกว่าจะ เก็บ Resource Group อันไหน หรือจะสร้างใหม่ก็ได้ |
Location | เลือก Azure Location |
Pricing tier | มี 2 ตัวเลือก สำหรับการเรียนรู้ใช้ A1 ได้ A1 – Standard (ประหยัดประมวลผลเข้ารหัสบน Virtual Machine) P2 – Premium (จ่ายแพงกว่า แต่ปลอดภัยกว่า เข้ารหัสใน hardware HSM) |
เมื่อสร้างเสร็จก็จะมี Key Vault ต่อไปจะเป็นการนำ Password ไปเก็บใน Key Vault
จาก Clip ที่ 2 อันข้างบน เป็นการใช้งานของ Admin ของ Azure Portal
Login-AzureRmAccount | |
$MyKeyVaultName = 'vm360degreekeyvault' | |
$mySecretPasswordDB = 'passworddb' | |
New-AzureRmKeyVault -VaultName $MyKeyVaultName -ResourceGroupName 'rgWestUS2' -Location 'westus2' | |
Get-AzureRmKeyVault -VaultName $MyKeyVaultName | |
Set-AzureKeyVaultSecret -VaultName $MyKeyVaultName -Name 'passworddb' ` | |
-SecretValue (ConvertTo-SecureString -String 'p@ssw0rd' -AsPlainText -Force) | |
get-AzureKeyVaultSecret -VaultName $MyKeyVaultName -Name $mySecretPasswordDB | fl * |
สรุป ในตอนนี้เราได้รู้จักกับ Azure Key Vault เบื้องต้นและทดลองเก็บ Secret ในตอนต่อไป จะเป็นเรื่องการกำหนดสิทธิและการจัดเก็บ Audit Log