새소식

CICD

[CI/CD Study 5주차] ArgoCD SSO - Keycloak

  • -

CoudNet@ 팀의 가시다님께서 리딩하시는 CI/CD Study 5주차 스터디 내용 정리

 

 

이번 주차도 마찬가지로 '예제로 배우는 ArgoCD 책' 기반으로 학습했습니다.
이번 글에서는 ArgoCD SSO에 대해서 학습한 내용을 서술하겠습니다.



 

1. ArgoCD SSO

 

SSO (Single-Sign-On) 를 사용하면 마스터 로그인을 할 수 있으며,

이를 기반으로 다른 독립적인 애플리케이션에 대한 권한을 부여받을 수 있습니다.
ArgoCD 는 UI 와 CLI 에서 SSO 를 지원합니다.

 

SSO를 활성화한 상태에서 로그인 할수 있는 로컬 계정이 없고 관리자가 비활성화된 경우,
사용자/비밀번호 입력 양식이 UI에서 자동으로 제거되고 SSO를 통한 로그인 버튼만 남게 됩니다.

 

 

ArgoCD SSO 적용 방안 2가지

 

1. Dex OIDC 공급자
2. Dex 설치 없이 다른 OIDC 공급자 사용




2. Keycloak



2.1. 소개

 

애플리케이션에 초점을 맞춘 오픈 소스 ID 및 접근(권한) 관리 도구

 

- Keycloak 은 암호 복구, 주기적인 암호 업데이트 설정, 이용 약관 동의 등과 같은 다양한 기능을 제공

- Keycloak 을 통해 인증을 수행하면 애플리케이션에서 자격증명을 관리하지 않아도 됨
- Keycloak 은 세션 관리 및 SSO Single Sign-On 기능을 제공해 사용자가 한 번만 인증하면 여러 애플리케이션에 접근 가능
- 사용자와 관리자 모두 사용자가 인증된 위치를 정확하게 파악할 수 있으며 필요한 경우 원격으로 세션을 종료 가능
- OAuth 2.0, OpenID Connect, SAML 2.0을 지원하는 업계 표준 프로토콜 기반

 

 

- ID 브로커링 identity brokering 기능을 통해 소셜 네트워크 또는 다른 엔터프라이즈 ID 공급자의 기존 사용자 데이터를 연동 가능

 

 

2.2. Keycloak 배포

 

ID, PW 를 admin/admin 으로 배포

 

# 도커로 기본 설정 배포
docker run -d \
  --name dev-keycloak \
  -p 8080:8080 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=admin \
  quay.io/keycloak/keycloak:22.0.0 \
  start-dev \
  --hostname-strict=false \
  --http-enabled=true

# Keycloak 접근
open http://localhost:8080/admin

 

 

 

 

2.3. SSO 를 위한 신규 유저 생성

 

Keycloak 접속 후 왼쪽 메뉴에서 Users 를 선택하여 새로운 유저를 생성할 수 있습니다.

 

 

그 후 bob 유저에 대해 비밀번호를 설정해줍니다.

Temporary 옵션은 bob 유저 첫 로그인 후 강제 비밀번호 재설정 옵션인데, 실습인 관계로 설정하지 않았습니다.

 

 

 

2.4. Keycloak Client 생성 - ArgoCD

 

Keycloack 에서 ArgoCD SSO 설정을 위한 Client 연동이 필요합니다.

 

Client 생성

 

Client ID 는 구분을 위해 argocd 로 지칭합니다.

 

 

Capability Config

 

보안을 위해 Client Authentication 만 활성화해줍니다.

 

 

Login Settings

 

- Root URL : 클라이언트 애플리케이션의 기본(base) 주소
- Home URL : 로그인 성공 후 기본적으로 보내고 싶은 메인 페이지 경로
- Valid Redirect URIs : 로그인 후 리다이렉트 허용 목록
- Valid Post Logout Redirect URIs : 로그아웃 후 리다이렉트 허용 목록
- Web origins : CORS 설정

 



생성된 Client Secret 확인

 

클라이언트가 생성되었지만 아무나 Keycloack 으로 인증하면 안되므로 연동을 위해서 시크릿을 확인해야합니다.

 

 

 

2.5. ArgoCD - Keycloack 연동

 

생성한 keycloack Client Secret 을 ArgoCD 에 주입합니다.

 

kubectl -n argocd patch secret argocd-secret --patch='{"stringData": { "oidc.keycloak.clientSecret": "KeyCloak_Secret" }}'

 

 

ArgoCD OIDC 연동

 

kubectl edit cm -n argocd argocd-cm

# data 구문에 아래 내용 삽입
  oidc.config: |
    name: Keycloak
    issuer: http://<Localhost>:8080/realms/master
    clientID: argocd
    clientSecret: <Keycloak Secret>
    requestedScopes: ["openid", "profile", "email"]

 

 

ArgoCD Server 재시작

 

kubectl rollout restart deploy argocd-server -n argocd

 

 

2.6. ArgoCD - Keycloack 접속 시도

 

이후 ArgoCD UI 로 진입하면 Keycloak 을 통한 SSO 로그인 창이 떠있는 것을 확인할 수 있습니다.

 

 

그 후, bob 사용자로 로그인하면 ArgoCD 로 진입할 수 있습니다.

 

Keycloak 접근 시 ArgoCD User 화면

 

 

 

 

Contents

포스팅 주소를 복사했습니다