ใน vSphere Client บางครั้งจะเจอการแจ้งเตือน: Your password will expire in xx days ผมจึงศึกษาวิธีจัดการนโยบายรหัสผ่านใน VMware vSphere วิธีเปลี่ยนเวลาที่แสดงการแจ้งเตือนหมดอายุสำหรับผู้ใช้ Local และ Domain vSphere และการตั้งค่าให้รหัสผ่านบางบัญชีไม่หมดอายุ นี่คือสิ่งที่พบ
นโยบายรหัสผ่านและการล็อกเอาท์บน VMware Single Sign-On (SSO)
ในกรณีของผม ต้องการปิดการหมดอายุรหัสผ่านสำหรับ Local User administrator@vcenter.local (เพราะไม่มีใครใช้บัญชี Local นี้ถาวร และ Admin vSphere ล็อกอินด้วยบัญชี Active Directory Domain)
โดยค่าเริ่มต้น นโยบาย SSO ถูกนำไปใช้กับ Local User ของ vSphere ซึ่งกำหนดให้เปลี่ยนรหัสผ่านทุก 90 วัน
พบการตั้งค่านโยบายรหัสผ่าน SSO ใน vSphere Client ที่: Administration → Single Sign On → Configuration
ที่แท็บ Password Policy จะเห็นข้อกำหนดต่อไปนี้สำหรับรหัสผ่าน Local vCSA Users ทั้งหมด:
- ความยาวรหัสผ่านขั้นต่ำ 8 ตัวอักษร (สูงสุด 20 ตัวอักษร)
- รหัสผ่านหมดอายุใน 90 วัน (อายุสูงสุด)
- ห้ามใช้รหัสผ่าน 5 รอบล่าสุดซ้ำ
- ข้อจำกัดความซับซ้อนของรหัสผ่านบางอย่าง
คลิก Edit และเปลี่ยนการตั้งค่านโยบาย เช่น เปลี่ยน Maximum lifetime เป็น 365 (หมายถึงเปลี่ยนรหัสผ่านปีละครั้ง) หรือใส่ 0 (หมายถึงรหัสผ่านไม่หมดอายุ)

เปลี่ยนการตั้งค่าหมดอายุรหัสผ่านเป็นไม่มีวันหมดอายุสำหรับ Local VMware vCSA Users เฉพาะราย
หากไม่ต้องการเปลี่ยนนโยบายรหัสผ่านสำหรับ User ทั้งหมดใน vCenter สามารถเปลี่ยนนโยบายและการตั้งค่าหมดอายุสำหรับ User เฉพาะรายได้ เช่น ต้องการตั้งค่าให้ Local backup_user ไม่หมดอายุ ทำได้โดย SSH เข้า vCSA Host
เปิดใช้งาน SSH Access ที่ vCSA ในส่วน Access → SSH login → Enabled ของ Appliance Management (https://your_vcenter_name:5480/ui/access)

จะต้องใช้ Tool dir-cli ซึ่งอยู่ที่ /usr/lib/vmware-vmafd/bin/
cd /usr/lib/vmware-vmafd/bin/
ตรวจสอบว่า Local User มีอยู่จริง:
./dir-cli user find-by-name --account backup_user
Enter password for administrator@vcenter.local: Account: backup_user UPN: backup_user@VCENTER.LOCAL/

สามารถเปลี่ยนรหัสผ่านสำหรับ User นี้ได้:
./dir-cli password reset --account backup_user --password OldBackupP@$$ --new NewBackupP@$$
หรือตั้งค่าให้รหัสผ่านไม่หมดอายุ:
./dir-cli user modify --account backup_user --password-never-expires
Enter password for administrator@vsphere.local: Password set to never expire for [backup_user]
การหมดอายุรหัสผ่าน Root บน vCenter VCSA
ตอนติดตั้ง vCenter Server Appliance อายุการใช้งานรหัสผ่านสำหรับ User root ถูกตั้งเป็น 365 วัน (vCenter 6.5 หรือก่อนหน้า) หรือ 90 วัน (vSphere 6.7) ดังนั้น Root ก็อยู่ภายใต้นโยบายหมดอายุรหัสผ่านเช่นกัน
สามารถดูการตั้งค่านโยบายรหัสผ่านใน vCSA Appliance Management (https://your_vcenter_name:5480/ui/access) ไปที่ส่วน Administration และตรวจสอบค่าในส่วน Password expiration settings
- Password expires: Yes
- Password validity (days): 90
- Password expires on: Jun 13, 2020, 2:00:00 AM

สามารถเปลี่ยนการตั้งค่าหมดอายุรหัสผ่าน Root หรือตั้งเป็นไม่หมดอายุ (ถ้าค่าเป็น 0)
ยังสามารถตรวจสอบการตั้งค่าหมดอายุรหัสผ่าน Root จากคอนโซล vCSA ได้:
chage -l root

Last password change : Mar 15, 2019 Password expires : Jun 20, 2019 Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 90 Number of days of warning before password expires : 7
น่าสนใจที่ vCSA Appliance Management ไม่ได้แจ้งเตือน Root ให้เปลี่ยนรหัสผ่าน หรือแสดงคำเตือนหมดอายุ
อย่างไรก็ตาม หากพยายามอัปเกรด vCenter Server Appliance อาจเจอข้อผิดพลาด:
Appliance (OS) root password is expired or is going to expire soon. Please change the root password before installing an update.
หรือตอนพยายามเปลี่ยนรหัสผ่าน Root ที่หมดอายุแล้วใน vCSA Appliance Management อาจมีคำเตือน:
Permission Denied. Set the maximum number of days when the password will expire. Administrator configuration updated successfully.
ในกรณีนี้ ต้องเปลี่ยนรหัสผ่าน Root ในคอนโซล vCSA ด้วยคำสั่ง:
passwd

การเปลี่ยนการตั้งค่าการแจ้งเตือนหมดอายุรหัสผ่านบน VMware vCenter
โดยค่าเริ่มต้น การแจ้งเตือนรหัสผ่านใกล้หมดอายุใน vCenter Client จะเริ่มแสดง 30 วันก่อนหมดอายุ
หาก User ล็อกอิน vCenter ด้วยบัญชี AD นโยบายรหัสผ่าน Domain จะถูกนำไปใช้ User จะเห็นการแจ้งเตือนเปลี่ยนรหัสผ่าน 30 วันก่อนหมดอายุ ดังนั้นถ้านโยบาย Domain บังคับเปลี่ยนรหัสผ่านทุก 30 วัน User vCenter จะเห็นคำเตือน Your password will expire ตลอดเวลา
ใน vCSA สามารถกำหนดได้ว่าจะแจ้งเตือนกี่วันก่อนหมดอายุ
ถ้าใช้ vSphere HTML5 Client การตั้งค่านี้อยู่ในไฟล์ Config บน vCenter Server Appliance: /etc/vmware/vsphere-ui/webclient.properties
เปิดไฟล์และหา Parameter sso.pending.password.expiration.notification.days

เปลี่ยนค่าเป็น 7 หมายถึงจะแจ้งเตือน 7 วันก่อนหมดอายุ จากนั้น Restart vSphere Client:
service-control --stop vsphere-ui
service-control --start vsphere-ui
หากใช้ Web Client แบบเก่า (Flex) ต้องเปลี่ยนค่า Parameter sso.pending.password.expiration.notification.days ในไฟล์ /etc/vmware/vsphere-client/webclient.properties
หลังแก้ไขแล้ว Restart Web Client Service:
service-control --stop vsphere-client
service-control --start vsphere-client