환경 구성 정보 및 내용

 

Grafana Version : 9.3.1

bitnami Keycloak Version : 20.0.2

 


상세 설정 내용

 

 

 

1. Create Realm 버튼을 사용하여 Relam 생성

  • relam 명 : grafana2

keycloak main

 

2. 생성된 relam 안에 Create client 를 사용하여 client 생성

  • Client Id : grafana2
  • Client authentication : ON
  • Authorization : OFF
  • Authentication flow : Standard flow ON, Direct access grants ON, Implicit flow ON, 나머지 OFF

Client 생성 설정 1
Clitnt 생성 설정 2

 

3. Client 세부 설정

  • Root URL : <grafana URL>
  • Valid redirect URLs : <grafana URL>/login/generic_oauth

 

Clitnt 세부 설정 1

 

 

4. 위 내용들을 저장 하면 Credentials Tab 이 생기는데 아래 Client secret 을 메모장에 저장 

Credentials -> Client secret key 확인 후 저장

 

5. Role 생성

  • role name : admin / editor
  • 아래 그림의 admin 설정 적용 후 editor 도 같은 방식으로 생성

Roles 생성

 

admin role 생성

 

 

6. admin role 생성 후 아래와 같이 설정 적용

  • 우측 상단에 Action 콤보박스에서 Add associated roles 적용
  • admin 에는 admin role 적용
  • editor 에는 editor role 적용

Add associated roles

Client role 로 생성한 admin 을 추가

아래 사진과 같이 필터항목 탭을 Filter by clients 로 변경 후 생성한 role 선택하여 추가

Assign roles to admin account 설정 적용

 

 

 

7. User 생성 

  • id : user-admin / user-editor
  • user-admin 생성 후 user-editor 도 같은 방식으로 생성 및 적용
  • email 은 아무내용이나 입력
  • Required user actions 설정을 통해 2차인증 적용 가능 

user 생성
user-admin 설정

 

 

8. user-admin Credentials 생성

  • password 변경
  • Temporary(비밀번호 변경 옵션) OFF

Credentials 생성
설정 화면

 

9. 생성된 user-admin 에 Role Mapping

  • Assign role 클릭
  • Assign roles to user-admin account 에서 Filter by Clients 클릭 후 admin 권한 추가

Role mapping 화면
Role mapping

 

 

 

10. Client Scope 설정

  • Clients - Client scopes - grafana2-dedicated 클릭
  • scope 탭에서 full scope allowed OFF 

Client scopes 설정 화면
Full scope allowed OFF

 

11. Mappers 설정

  • Configure a new mapper 추가
  • Mapper Type : User Client Role
  • Client ID : grafana2
  • Token Claim Name : roles
  • Claim JSON Type : String
  • Add to ID token : ON 
  • Add to access token : ON
  • Add to userinfo : ON

Configure a new mapper 설정

 

세부 설정 내용

 

 

12. Token 값 확인

  • 입력한 client id / client secret key / grafana url / relams 명을 사용하여 아래 명령어 입력 후 token 확인
curl -s \
-d "client_id=<client id>" \
-d "client_secret=<secret key>" \
-d "username=<ID>" \
-d "password=<Password>" \
-d "grant_type=password" \
"<grafana URL>/realms/<relams 명>/protocol/openid-connect/token"

 

 

13. Token decode

  • 12번에서 curl 을 입력 함으로써 나온 JSON 형식의 token 을 https://jwt.io/ 에서 decode 해서 내용 확인
  • decode 한 내용중 roles : admin 값이 있는지 확인

decode 상세 내용중 일부

14. 지금 까지 한 내용들을 바탕으로 user-editor 생성 후 role 매핑 진행 -> 10번 11번은 공통 내용이믈 제외하고 진행

 

15. grafana.ini 설정 변경

  • 아래 내용을 참고하여 설정한 값으로 입력
  • grafana 설치관련된 내용은 이전 게시글 확인
kubectl edit -n monitoring cm/grafana
apiVersion: v1
data:
  grafana.ini: |
    [analytics]
    check_for_updates = true
    [grafana_net]
    url = https://grafana.net
    [log]
    mode = console
    [paths]
    data = /var/lib/grafana/
    logs = /var/log/grafana
    plugins = /var/lib/grafana/plugins
    provisioning = /etc/grafana/provisioning
    [server]
    domain = <grafana url>
    root_url = <grafana url>
    [auth.generic_oauth]
    enabled = true
    name = Keycloak-OAuth
    allow_sign_up = true
    client_id = <client id>
    client_secret = <secret key>
    scopes = profile openid
    auth_url = <grafana url>/realms/<realm name>/protocol/openid-connect/auth
    token_url = <grafana url>/realms/<realm name>/protocol/openid-connect/token
    api_url = <grafana url>/realms/<realm name>/protocol/openid-connect/userinfo
    role_attribute_path = contains(roles[*], 'admin') && 'Admin' || contains(roles[*], 'editor') && 'Editor' || 'Viewer'
    tls_skip_verify_insecure = true
    [auth]
    disable_login_form: false
    oauth_auto_login: false
    [security]
    allow_embedding: true
    cookie_secure: false
    cookie_samesite: lax

 

 

16. Configmap 수정후 pod 재배포를 위해 grafana pod 삭제

  • grafana 를 pod를 삭제할 경우 deploy 에 의해서 pod가 재배포됨
  • 재배포시 15번에서 수정한 Configmap 부분이 수정되어 배포가됨
kubectl delete -n monitoring po/<GRAFANA pod 명>

 

 

17. 접속 확인

  • Grafana 계정을 사용한 login이 아닌 keycloak login 사용
  • keycloak 에서 생성한 user id/pw 로 접속
  • 접속 후 생성한 role 권한이 적용 되었는지 확인

Grafana Main
Grafana 에서 keycloak 으로 login 화면 전환
user-admin 으로 접속 하였을 경우 권한
user-editor 로 접속 하였을 경우 권한

 

+ Recent posts