Keycloak Harbor 연동
harbor Authentication 설정을 통해 Keycloak OIDC Client와 연동하는 방법을 설명합니다. Configure OIDC Provider Authentication 문서와 Keycloak as OIDC Provider for Harbor 블로그를 참고하였습니다.
구성환경
- keycloak 21.1.1
- harbor 2.7.0
설치 전 확인
- harbor 설치 시 생성되는 admin(관리자) 계정 외 사용자 계정이 없는 상태에서만 설정이 가능합니다.
- OIDC Provider 연동시 harbor에서 사용자를 추가할 수 없습니다.
Harbor Redirect URI 확인
Harbor admin 계정 로그인 > Administration > Configuration > Authentication
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
OIDC Endpoint 복사
Keycloak > Administration Console > (Realm) > Realm settings > Endpoints > OpenID Endpoint Configuration
{"issuer":"https://keycloak.example.com/realms/test"}
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
테스트
사용자 추가
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
CLI secret 확인
harbor 로그인 후 우측 상단 유저이름의 User Profile 메뉴를 보면 CLI secret이 별도로 존재하는 것을 볼 수 있습니다. Docker나 Helm CLI 사용 시 필요한 key입니다.
Docker 로그인
docker login harbor.example.com
Username : [Username]
Password : [CLI secret]
마치며
참고한 블로그의 keycloak 버전과 설치한 keycloak 버전 차이가 있어 설정 화면이 조금 달랐지만 대부분 그대로 설정 가능했고, harbor에서 OIDC Provider를 통한 인증 설정 화면을 제공하기 때문에 쉽게 연동이 가능했습니다.
그리고 keycloak 사용자로 harbor에 로그인하게 되면 keycloak 사용자 정보를 바탕으로 harbor에도 사용자가 생성되는데, admin 계정으로 로그인하여 프로젝트 접근 사용자 추가 및 역할 설정으로 권한을 관리할 수 있었습니다.