จัดการ Local Account และ API Token ใน Argo CD

จัดการ Local Account และ API Token ใน Argo CD

บทนำ

Argo CD เป็นเครื่องมือ GitOps ที่มีประสิทธิภาพสำหรับการจัดการการปรับใช้งาน Kubernetes อย่างอัตโนมัติ การจัดการ Local Account และ API Token อย่างถูกต้องเป็นสิ่งสำคัญเพื่อรักษาความปลอดภัยและควบคุมการเข้าถึง (Access Control) ในระบบ บทความนี้จะอธิบายวิธีการสร้าง จัดการ และตั้งค่าสิทธิ์สำหรับ Local Account และ API Token ใน Argo CD โดยรายละเอียด

เมื่อคุณใช้บริการ Cloud VPS จาก Dot Enterprise (https://de.co.th/cloud-vps) สำหรับการติดตั้ง Argo CD คุณจะได้รับ infrastructure ที่มีความเสถียรและปลอดภัย ซึ่งช่วยให้คุณสามารถมุ่งเน้นไปที่การจัดการการตรวจสอบสิทธิ์และสิทธิ์การใช้งาน

ความเข้าใจเกี่ยวกับ Local Account ใน Argo CD

Local Account คือบัญชีผู้ใช้ที่สร้างและจัดการภายในระบบ Argo CD โดยตรง ไม่เกี่ยวข้องกับ LDAP หรือ OAuth การใช้ Local Account เหมาะสำหรับการทดสอบ การพัฒนา หรือเมื่อคุณต้องการการควบคุมการเข้าถึงที่มีความแม่นยำสูง

ประเภทของ Local Account

Argo CD มี 2 ประเภทหลักของ Local Account:

  • Admin Account: มีสิทธิ์เต็มที่ในการจัดการระบบ สามารถสร้าง ลบ และแก้ไข repository, application, และ project ได้
  • Read-Only Account: มีสิทธิ์ในการดูและตรวจสอบสถานะของ application เท่านั้น ไม่สามารถสร้างหรือแก้ไขได้

คุณยังสามารถตั้งค่า RBAC (Role-Based Access Control) เพื่อกำหนดสิทธิ์ที่มีความเฉพาะเจาะจงสำหรับแต่ละบทบาท

การสร้าง Local Account ใหม่

มีหลายวิธีในการสร้าง Local Account ใน Argo CD ขึ้นอยู่กับคุณลักษณะและการตั้งค่าของระบบของคุณ

วิธีที่ 1: ผ่าน Argo CD UI

  1. เข้าสู่ Argo CD Web UI ด้วยบัญชี admin
  2. ไปที่ Settings > Users
  3. คลิก “Create user” (หรือ “New user”)
  4. ใส่ username และเลือก role ที่ต้องการ
  5. คลิก “Create” เพื่อสร้างบัญชี
  6. ระบบจะสร้างรหัสผ่านชั่วคราว ให้บันทึกไว้อย่างปลอดภัย

วิธีที่ 2: ผ่าน argocd CLI

คุณสามารถใช้ argocd CLI เพื่อสร้าง Local Account โดยใช้คำสั่ง:

argocd account create <username> --password <password>

ตัวอย่างเช่น:

argocd account create developer --password MySecurePassword123!

วิธีที่ 3: ผ่าน ConfigMap

คุณสามารถแก้ไข ConfigMap ชื่อ “argocd-cm” ในไฟล์ YAML:

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
  namespace: argocd
data:
  accounts.developer: apiKey
  accounts.developer.enabled: "true"

จากนั้นนำไปใช้งานด้วยคำสั่ง:

kubectl apply -f argocd-cm.yaml

การจัดการรหัสผ่าน (Password Policies)

การตั้งค่านโยบายรหัสผ่านที่แข็งแกร่งเป็นส่วนสำคัญของความปลอดภัย

การเปลี่ยนรหัสผ่านของผู้ใช้

ผู้ใช้สามารถเปลี่ยนรหัสผ่านของตัวเองได้:

argocd account update-password --account <username> --current-password <current-password> --new-password <new-password>

การรีเซตรหัสผ่านโดย Admin

Admin สามารถรีเซตรหัสผ่านของผู้ใช้อื่นได้:

argocd account set-password --account <username> --password <new-password>

นโยบายรหัสผ่านที่แนะนำ

  • ความยาวต่ำสุด 12 ตัวอักษร
  • รวมตัวอักษรตัวใหญ่ ตัวเล็ก ตัวเลข และสัญลักษณ์พิเศษ
  • เปลี่ยนรหัสผ่านทุก 90 วัน
  • ห้ามใช้รหัสผ่านเดิมมา 5 ครั้ง

การสร้างและจัดการ API Token

API Token ใช้สำหรับการตรวจสอบสิทธิ์ (Authentication) โดยไม่ต้องใช้รหัสผ่านในการเรียก API การสร้าง API Token ที่ปลอดภัยเป็นวิธีที่ดีที่สุดสำหรับการโต้ตอบ CLI และ CI/CD pipeline

การสร้าง API Token ผ่าน UI

  1. เข้าสู่ Argo CD Web UI
  2. ไปที่ Settings > Accounts > [username]
  3. คลิก “Generate Token”
  4. ตั้งชื่อและวันหมดอายุสำหรับ token (ปล่อยว่างไว้หากต้องการไม่มีวันหมดอายุ)
  5. คลิก “Generate”
  6. บันทึก token ที่สร้างขึ้น ซึ่งจะแสดงเพียงครั้งเดียว

การสร้าง API Token ผ่าน CLI

argocd account generate-token --account <username>

ตัวอย่าง:

argocd account generate-token --account developer

ใช้งาน API Token กับ CLI

เมื่อได้ API Token แล้ว คุณสามารถใช้มันสำหรับการเข้าสู่ระบบ CLI:

argocd login <argocd-server> --username <username> --password <api-token>

หรือตั้งค่าเป็น Environment Variable:

export ARGOCD_AUTH_TOKEN=<api-token>
argocd app list

ใช้งาน API Token กับ CI/CD Pipeline

สำหรับการใช้งานใน CI/CD pipeline เช่น GitHub Actions หรือ GitLab CI:

steps:
  - name: Deploy with Argo CD
    run: |
      argocd app sync my-app --grpc-web --auth-token ${{ secrets.ARGOCD_TOKEN }}
    env:
      ARGOCD_SERVER: argocd.example.com

การจัดการและยกเลิก API Token

การจัดการ API Token อย่างเหมาะสมช่วยป้องกันการเข้าถึงที่ไม่ได้รับอนุญาต

ดูรายการ Token ทั้งหมด

argocd account list-tokens --account <username>

ยกเลิก (Revoke) API Token

เมื่อต้องการยกเลิก token:

argocd account revoke-token --account <username> --id <token-id>

นโยบายการจัดการ API Token

  • สร้าง token แยกสำหรับแต่ละ CI/CD pipeline
  • ตั้งวันหมดอายุสำหรับ token ที่ใช้ในระยะสั้น
  • ยกเลิก token ที่ไม่ใช้งานอีกต่อไป
  • เก็บ token ไว้ในที่ปลอดภัย (secrets management system)
  • หมุนเวียน token เป็นระยะ

การตั้งค่า RBAC (Role-Based Access Control)

RBAC ช่วยให้คุณสามารถกำหนดสิทธิ์ที่มีความเฉพาะเจาะจงสำหรับแต่ละผู้ใช้หรือกลุ่มผู้ใช้

ตัวอย่าง RBAC Policy ใน argocd-rbac-cm ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-rbac-cm
  namespace: argocd
data:
  policy.default: 'role:readonly'
  policy.csv: |
    p, role:admin, applications, *, *, allow
    p, role:readonly, applications, get, *, allow
    p, role:developer, applications, sync, *, allow
    p, role:developer, repositories, get, *, allow
    g, developer, role:developer
    g, admin-user, role:admin

ความหมายของ Policy Rules

รูปแบบพื้นฐาน: p, <role>, <resource>, <action>, <object>, <effect>

  • role: บทบาทที่กำลังกำหนด
  • resource: ประเภทของทรัพยากร (applications, repositories, clusters, exec)
  • action: การดำเนินการ (get, create, update, delete, sync, override, action)
  • object: ชื่อเฉพาะของทรัพยากร หรือ * สำหรับทั้งหมด
  • effect: allow หรือ deny

การกำหนด Group ให้กับ Role

ใช้ “g” rules เพื่อกำหนด user ให้กับ role:

g, <username>, <role>

ความปลอดภัยและแนวทางปฏิบัติที่ดี

Best Practices สำหรับการจัดการ Account

  • ใช้ account admin เพื่อการจัดการเท่านั้น ไม่ใช่สำหรับงานประจำวัน
  • สร้าง service account แยกสำหรับแต่ละ CI/CD pipeline
  • ตั้งค่า RBAC ให้เข้มงวด ให้สิทธิ์ต่ำสุดที่จำเป็น (principle of least privilege)
  • ติดตามและตรวจสอบ audit logs สำหรับการเข้าถึง
  • ใช้ OIDC หรือ SAML สำหรับการตรวจสอบสิทธิ์ในสภาพแวดล้อม production

ความปลอดภัยสำหรับการใช้งาน Cloud VPS

เมื่อคุณใช้ Argo CD บน Cloud VPS ของ Dot Enterprise ให้พิจารณาการตั้งค่าเพิ่มเติม:

  • เปิดใช้ TLS/SSL สำหรับการสื่อสารทั้งหมด
  • กำหนด Firewall rules ให้เข้มงวด
  • ใช้ VPN หรือ SSH tunnel สำหรับการเข้าถึง Argo CD API
  • สำรองข้อมูล (Backup) configuration และ API tokens อย่างสม่ำเสมอ

การแก้ไขปัญหาที่พบบ่อย

ปัญหา: ไม่สามารถเข้าสู่ระบบด้วย API Token

สาเหตุ: Token อาจหมดอายุแล้ว หรือเซิร์ฟเวอร์ Argo CD ไม่รู้จัก token

วิธีแก้: ตรวจสอบวันหมดอายุของ token ด้วยคำสั่ง argocd account list-tokens --account <username> หากหมดอายุแล้ว ให้สร้าง token ใหม่

ปัญหา: ผู้ใช้ไม่สามารถเข้าถึง Application บางตัว

สาเหตุ: RBAC policy ไม่ได้กำหนดสิทธิ์ที่ถูกต้อง

วิธีแก้: ตรวจสอบ argocd-rbac-cm ConfigMap และตรวจสอบว่า policy rule ครอบคลุม application ทั้งหมดที่ผู้ใช้ต้องการเข้าถึง

ปัญหา: ลืมรหัสผ่าน Admin

วิธีแก้: ในกรณีฉุกเฉิน คุณสามารถรีเซตรหัสผ่าน admin ด้วยการแก้ไข secret “argocd-secret” โดยตรง:

kubectl edit secret argocd-secret -n argocd

ลบ key “admin.password” เพื่อให้ระบบสร้างรหัสผ่านใหม่โดยอัตโนมัติ

การตรวจสอบ Audit Logs

Argo CD บันทึก audit logs สำหรับการดำเนินการทั้งหมด คุณสามารถตรวจสอบ logs เพื่อติดตามการเข้าถึง:

kubectl logs -f deployment/argocd-server -n argocd

ค้นหาการเข้าสู่ระบบและการสร้าง token:

kubectl logs deployment/argocd-server -n argocd | grep "token\|login\|account"

สรุป

การจัดการ Local Account และ API Token ใน Argo CD อย่างถูกต้องเป็นสิ่งสำคัญสำหรับการรักษาความปลอดภัยและการควบคุมการเข้าถึง ด้วยการตั้งค่า RBAC ที่เหมาะสม การใช้ API Token แทนรหัสผ่าน และการปฏิบัติตามแนวทางความปลอดภัย คุณจะสามารถจัดการ Argo CD ได้อย่างปลอดภัยและมีประสิทธิภาพ

สำหรับสภาพแวดล้อม production คุณควรพิจารณาการใช้บริการ Cloud VPS จาก Dot Enterprise (https://de.co.th/cloud-vps) ซึ่งมีความปลอดภัย เสถียร และมีการสนับสนุนที่ดี สิ่งนี้จะช่วยให้คุณมุ่งเน้นไปที่การบริหารจัดการแอปพลิเคชันแทนการกังวลเกี่ยวกับ infrastructure

Dot Enterprise Knowledge Base

บทความนี้เป็นส่วนหนึ่งของฐานความรู้ของ Dot Enterprise Co, Ltd. สำหรับข้อมูลเพิ่มเติมเกี่ยวกับบริการ Cloud VPS และ Cloud Hosting โปรดเยี่ยมชม https://de.co.th