harbor Authentication 설정을 통해 Keycloak OIDC Client와 연동하는 방법을 설명합니다. Configure OIDC Provider Authentication 문서와 Keycloak as OIDC Provider for Harbor 블로그를 참고하였습니다.

image

Keycloak OIDC Flow

구성환경

설치 전 확인

  • harbor 설치 시 생성되는 admin(관리자) 계정 외 사용자 계정이 없는 상태에서만 설정이 가능합니다.
  • OIDC Provider 연동시 harbor에서 사용자를 추가할 수 없습니다.

Harbor Redirect URI 확인

Harbor admin 계정 로그인 > Administration > Configuration > Authentication image

Keycloak Client 설정에서 사용할 Redirect URI 복사

Keycloak 설정

OIDC Client 생성

Keycloak > Administration Console > (Realm) > Clients > Create Client

  • Client type : OpenID Connect
  • Client ID : harbor
  • Client authentication : On
  • Valid redirect URIs : ${Redirect URI}

Client Secret 복사

Keycloak > Administration Console > (Realm) > Clients > harbor > Credentials image

Harbor Authentication에 설정할 Client Secret 복사

OIDC Endpoint 복사

Keycloak > Administration Console > (Realm) > Realm settings > Endpoints > OpenID Endpoint Configuration

{"issuer":"https://keycloak.example.com/realms/test"}

Harbor Authentication에 설정할 OIDC Endpoint 복사

Harbor 설정

Harbor admin 계정 로그인 > Administration > Configuration > Authentication

  • Auth Mode : OIDC
  • OIDC Provider Name : keycloak
  • OIDC Endpoint : ${OIDC Endpoint}
  • OIDC Client ID : harbor
  • OIDC Client Secret : ${Client Secret}
  • OIDC Scope : openid,profile,email,offline_access

image

Harbor Authentication 설정

테스트

사용자 추가

Keycloak > Administration Console > (Realm) > Users > Add user

  • Username : username
  • Email : username@example.com

패스워드 설정

Keycloak > Administration Console > (Realm) > Users > username > Credentials > Set password

  • Password : password
  • Password confirmation : password

Harbor 로그인

harbor > LOGIN VIA OIDC PROVIDER image

위는 Keycloak 사용자 로그인, 아래는 관리자 로그인

CLI secret 확인

harbor 로그인 후 우측 상단 유저이름의 User Profile 메뉴를 보면 CLI secret이 별도로 존재하는 것을 볼 수 있습니다. Docker나 Helm CLI 사용 시 필요한 key입니다. image

Docker나 Helm 로그인 시 Username은 ID, CLI Secret은 Password로 사용

Docker 로그인

docker login harbor.example.com
Username : [Username]
Password : [CLI secret]

마치며

참고한 블로그의 keycloak 버전과 설치한 keycloak 버전 차이가 있어 설정 화면이 조금 달랐지만 대부분 그대로 설정 가능했고, harbor에서 OIDC Provider를 통한 인증 설정 화면을 제공하기 때문에 쉽게 연동이 가능했습니다.
그리고 keycloak 사용자로 harbor에 로그인하게 되면 keycloak 사용자 정보를 바탕으로 harbor에도 사용자가 생성되는데, admin 계정으로 로그인하여 프로젝트 접근 사용자 추가 및 역할 설정으로 권한을 관리할 수 있었습니다.

참고