Overview
이번 포스팅에서는 Google OAuth(GCP 계정 기반)를 활용하여 ArgoCD SSO(Single Sign-On) 기능을 구성해본다.
SSO를 도입하면 ID/Password 기반 인증을 제거하고 조직의 인증 체계(Google Workspace, OAuth, OIDC 등)와 통합할 수 있어 보안성과 사용자 편의성이 크게 향상된다.
실습에서는 다음과 같은 흐름으로 구성한다.
- Google Cloud Console에서 OAuth 2.0 클라이언트 ID 생성
- ArgoCD의 ConfigMap 및 Secret에 OAuth 설정 적용
- RBAC 정책과 사용자 권한 매핑 설정
- Dex 서버와 ArgoCD 서버 재시작
- Google 계정 기반 로그인 테스트 및 사용자 정보 확인
특히 Google Workspace 환경을 사용하는 조직에서는 손쉽게 그룹 단위 권한 관리와 통합 인증을 적용할 수 있으며,
ArgoCD의 RBAC와 연계하여 애플리케이션, 클러스터, 프로젝트에 대한 접근 권한도 정밀하게 제어할 수 있다.
본 포스팅은 GCP 기반 OAuth 환경에 ArgoCD를 연동하고자 하는 사용자에게 실질적인 가이드를 제공하며,
향후 GitLab, Okta, Keycloak 등 다양한 IdP(Identity Provider)와의 연동으로 확장 가능하다.
📅 관련 글
2023.05.16 - [IaC/CI CD Tool] - ArgoCD란?
2023.08.09 - [IaC/CI CD Tool] - ArgoCD 설치 AWS & GCP
2023.10.02 - [IaC/CI CD Tool] - ArgoCD ApplicationSet이란? (작성 방법)
2023.10.08 - [Container Orchestration/Kubernetes] - 2. Kustomize + ArgoCD ApplicationSet
2024.02.02 - [IaC/CI CD Tool] - Argo Workflow란?
2024.04.09 - [IaC/CI CD Tool] - ArgoCD SSO 구성 가이드(GCP Oauth)
2025.02.19 - [IaC/CI CD Tool] - ArgoCD SSO 구성 가이드(Gitlab)
1. OAuth 2.0 클라이언트 ID 생성
Console
- Google Cloud Console에 로그인하고 프로젝트를 선택한다.
- API 및 서비스 > 사용자 인증 정보로 이동한다.
- 사용자 인증 정보 만들기를 클릭하고 OAuth 클라이언트 ID를 선택한다.
- OAuth 동의 화면 생성 - 내부(조직 내 사용자) or 외부(Google 계정이 있는 모든 사용자)
- 앱 등록 수정 - OAuth 동의 화면 - 범위 - 테스트 사용자 - 요약
- OAuth 클라이언트 생성
- 애플리케이션 유형으로 웹 애플리케이션을 선택한다.
- 승인된 리디렉션 URI에 Argo CD의 OAuth 리디렉션 URI를 입력한다. 일반적으로 이는 https://<argocd-server-url>/api/dex/callback 형식이다.
- 사용자 인증 정보를 생성한 후, 생성된 클라이언트 ID와 클라이언트 보안 비밀을 기록해둔다.
# 클라이언트 ID
7xxxxxx-fxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
# 클라이언트 보안 비밀번호
Gxxxx-oxxxxxxxxxxxxxxxxxxxxxxxx
CLI
gcloud config set project [YOUR_PROJECT_ID]
gcloud alpha iam oauth-clients create \\
--project=[YOUR_PROJECT_ID] \\
--display-name="My OAuth Client" \\
--redirect-uris="https://[YOUR_ARGOCD_SERVER_URL]/auth/callback"
2. Argo CD 구성 업데이트
Argo CD의 argocd-cm ConfigMap과 argocd-secret Secret을 업데이트하여, Google OAuth 설정을 추가한다. Kubernetes 클러스터에서 다음 명령어를 사용하여 ConfigMap과 Secret을 수정한다.
업데이트 전 백업
k get cm -n argocd argocd-cm -o yaml | k neat >> argocd-cm.yaml
k get secrets -n argocd argocd-secret -o yaml | k neat >> argocd-secret.yaml
ConfigMap 업데이트 (argocd-cm / argocd-rbac-cm)
`argocd-cm`
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
namespace: argocd
data:
url: https://<argocd-server-url>
dex.config: |
connectors:
- type: oidc
id: google
name: Google
config:
issuer: https://accounts.google.com
clientID: <YOUR-CLIENT-ID>
clientSecret: $google-client-secret
redirectURI: https://<argocd-server-url>/auth/callback
hostedDomains:
- <your-domain.com>
kubectl patch cm argocd-cm -n argocd --type merge -p '{
\"data: {
\"url\": \"https://<argocd-server-url>",\
\"dex.config\": \"connectors:\\n - type: oidc\\n id: google\\n name: Google\\n config:\\n issuer: https://accounts.google.com\\n clientID: ${google_client_id}\\n clientSecret: ${google_client_secret}\\n redirectURI: https://{argocd-server-url}/api/dex/callback\\n\"
}
}'
`argocd-rbac-cm`
apiVersion: v1
data:
policy.csv: |
p, role:org-admin, applications, *, */*, allow
p, role:org-admin, clusters, get, *, allow
p, role:org-admin, repositories, get, *, allow
p, role:org-admin, repositories, create, *, allow
p, role:org-admin, repositories, update, *, allow
p, role:org-admin, repositories, delete, *, allow
p, role:org-admin, projects, get, *, allow
p, role:org-admin, projects, create, *, allow
p, role:org-admin, projects, update, *, allow
p, role:org-admin, projects, delete, *, allow
p, role:org-admin, logs, get, *, allow
p, role:org-admin, exec, create, */*, allow
g, somaz@example.com, role:org-admin
policy.default: role:readonly
scopes: '[groups, email]'
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/name: argocd-rbac-cm
app.kubernetes.io/part-of: argocd
name: argocd-rbac-cm
namespace: argocd
3. Argo CD 재시작
설정 변경사항을 적용하기 위해 Argo CD 서버와 Dex 서버를 재시작한다.
k get deployments.apps -n argocd
NAME READY UP-TO-DATE AVAILABLE AGE
argocd-applicationset-controller 1/1 1 1 300d
argocd-dex-server 1/1 1 1 300d
argocd-notifications-controller 1/1 1 1 300d
argocd-redis 1/1 1 1 300d
argocd-repo-server 1/1 1 1 300d
argocd-server 1/1 1 1 300d
k rollout restart deploy -n argocd argocd-server
k rollout restart deploy -n argocd argocd-dex-server
4. 로그인 테스트
Google Workspace SSO를 통한 로그인이 올바르게 구성되었는지 Argo CD에 접속하여 테스트한다.
이 과정은 기본적인 흐름을 설명한 것으로, 실제 환경에서는 도메인 설정, 보안 정책, 네트워크 구성 등 추가적인 고려사항이 있을 수 있다. 또한, Google Cloud Console과 Argo CD의 설정 옵션이 시간에 따라 변할 수 있으므로, 최신 문서를 참조하는 것이 중요하다.
OAuth Authentication Process
SAML Authentication Process
OpenID Connect Authentication Process
마무리
이번 포스팅을 통해 Google OAuth를 기반으로 ArgoCD에 SSO 인증을 연동하는 과정을 정리해보았다.
OAuth 클라이언트 등록부터 Dex 설정, RBAC 권한 연결, 로그인 테스트까지 전체 흐름을 따라가며,
실무 환경에서도 IAM + GitOps 통합 구조를 손쉽게 구성할 수 있음을 확인할 수 있었다.
SSO를 도입하면 보안성을 높이는 동시에 사용자 관리가 훨씬 수월해지고,
특히 Google Workspace 기반 조직이라면 ArgoCD에 그룹 단위 접근 제어를 설정하는 것도 매우 효율적이다.
추후에는 GitLab, Keycloak, Azure AD 등 다양한 IdP(Identity Provider)와 연계하는 포스팅도 이어서 작성할 예정이며,
ArgoCD의 사용자 인증 체계와 조직의 계정 정책을 통합하고 싶은 분들에게 좋은 레퍼런스가 되었길 바란다.
Reference
https://argo-cd.readthedocs.io/en/stable/operator-manual/user-management/google/
'IaC > CI CD Tool' 카테고리의 다른 글
6. Gitlab CI Build(with GCP Artifact Registry, Harbor) (0) | 2024.06.24 |
---|---|
7. Github Action Build and Push(with GCP Artifact Registry) (0) | 2024.06.19 |
6. Github Action (With Using Concurrency) (0) | 2024.03.20 |
5. Github Action (With Using jobs in a workflow & Choosing the runner for a job) (0) | 2024.03.15 |
4. Github Action (With Matrix Strategy) (2) | 2024.03.12 |