Posted in

Create New Account in ArgoCD and RBAC

Introduction

Secara default, argocd hanya punya akun admin dan menggunakan initial password setelah instalasi. Disini kita akan membuat akun untuk argocd dan memberikan RBAC (Role Based Access Control) pada setiap akun tersebut.

Argo CD RBAC dapat memberikan permission seperti dibawah ini.

  1. Users – Memberikan setiap user dengan spesifik permissions pada ArgoCD.
  2. Groups – Menggunakan ini kita bisa menambahkan banyak user ke grup dan memberikan permission yang sama ke group yang digunakan.
  3. Argo CD Resources – Memberikan permission ke ArgoCD resource seperti applications, projects, dan lain lain.
  4. Actions on Argo CD – Membolehkan user untuk melakukan spesifik aksi pada ArgoCD seperti membuat application atau delete.

Reqruitment

  • Kubernetes Cluster
  • Helm (kita akan menggunakan values.yaml sebagai acuan untuk mengubah konfigurasi argocd)
  • ArgoCD

Configuration

Pada post sebelumnya kita sudah melakukan instalasi argocd pada kubernetes cluster, jika belum ada bisa akses di link berikut.

https://cygnenoir.net/install-argorcd-on-kubernetes/

Update helm values

Update helm values yang sebelumnya kita buat pada tutorial diatas.

server:
  service:
    type: LoadBalancer
    loadBalancerIP: "10.100.19.91"

configs:
  cm:
    kustomize.buildOptions: "--enable-helm"
    users.session.duration: "24h"
    exec.enabled: true
#### ADD BELOW #####
    accounts.user01: login
  rbac:
    policy.csv: |
      p, role:admin-k8s, applications, *, */*, allow
      p, role:admin-k8s, clusters, get, *, allow
      p, role:admin-k8s, clusters, update, *, allow
      p, role:admin-k8s, projects, *, *, allow
      p, role:admin-k8s, repositories, *, *, allow
      p, role:admin-k8s, accounts, *, *, allow
      p, role:admin-k8s, logs, get, *, allow
      p, role:admin-k8s, exec, create, */*, allow
      g, user01, role:admin-k8s

Sekarang saya akan berikan sedikit penjelasan,

account.user01Menambahkan user01 dan bisa melakukan akses login
rbac.policy.svcKita akan melakukan konfigurasi RBAC untuk user yang kita buat

Untuk policy,

p, <role/user/group>, <resource>, <action>, <object>, <effect>
<role/user/group>Identitas untuk siapa policy akan diberikan
<resource>Type resource yang akan diberikan
<action>Action yang akan diberikan
<object>Object yang akan diberikan
<effect>Effek yang akan diberikan
Resource\Actiongetcreateupdatedeletesyncactionoverrideinvoke
applications
applicationsets
clusters
projects
repositories
accounts
certificates
gpgkeys
logs
exec
extensions

Karena kita menggunakan group,

g, <user>, <role>

Untuk referensi tentang RBAC bisa dilihat di link berikut https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/

Upgrade menggunakan helm

helm upgrade argocd -n argocd argo/argo-cd -f values.yaml

Change Password for user01

Kita sudah membuat user baru, jika kita ingin melakukan update password pada user tersebut, kita harus menggunakan cli menggunakan command argocd.

curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
rm argocd-linux-amd64

Login ke argocd menggunakan user admin, kemudian masukan password yang sudah diberikan untuk admin (initial password).

argocd login 10.100.19.91 --username admin --insecure

Setelah itu, kita rubah password user01, nanti kita ditanya untuk masukan password logged admin, dan kita membuat password baru untuk user01.

argocd account update-password --account user01

Disable Account Admin

Setelah kita sudah membuat akun admin, direkomendasikan untuk disable akun default admin.

Ubah values.yaml

server:
  service:
    type: LoadBalancer
    loadBalancerIP: "10.100.19.91"

configs:
  cm:
    kustomize.buildOptions: "--enable-helm"
    users.session.duration: "24h"
    exec.enabled: true
    admin.enabled: false  ### ADD HERE
    accounts.user01: login
  rbac:
    policy.csv: |
      p, role:admin-k8s, applications, *, */*, allow
      p, role:admin-k8s, clusters, get, *, allow
      p, role:admin-k8s, clusters, update, *, allow
      p, role:admin-k8s, projects, *, *, allow
      p, role:admin-k8s, repositories, *, *, allow
      p, role:admin-k8s, accounts, *, *, allow
      p, role:admin-k8s, logs, get, *, allow
      p, role:admin-k8s, exec, create, */*, allow
      g, user01, role:admin-k8s

Upgrade menggunakan helm command

helm upgrade argocd -n argocd argo/argo-cd -f values.yaml

Test login ke argocd

Untuk login sudah berhasil.

Leave a Reply

Your email address will not be published. Required fields are marked *