Argo CD

จัดการ 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