환경 구성 정보 및 내용
Grafana Version : 9.3.1
bitnami Keycloak Version : 20.0.2
상세 설정 내용
1. Create Realm 버튼을 사용하여 Relam 생성
- relam 명 : grafana2
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
3. Client 세부 설정
- Root URL : <grafana URL>
- Valid redirect URLs : <grafana URL>/login/generic_oauth
4. 위 내용들을 저장 하면 Credentials Tab 이 생기는데 아래 Client secret 을 메모장에 저장
5. Role 생성
- role name : admin / editor
- 아래 그림의 admin 설정 적용 후 editor 도 같은 방식으로 생성
6. admin role 생성 후 아래와 같이 설정 적용
- 우측 상단에 Action 콤보박스에서 Add associated roles 적용
- admin 에는 admin role 적용
- editor 에는 editor role 적용
Client role 로 생성한 admin 을 추가
아래 사진과 같이 필터항목 탭을 Filter by clients 로 변경 후 생성한 role 선택하여 추가
7. User 생성
- id : user-admin / user-editor
- user-admin 생성 후 user-editor 도 같은 방식으로 생성 및 적용
- email 은 아무내용이나 입력
- Required user actions 설정을 통해 2차인증 적용 가능
8. user-admin Credentials 생성
- password 변경
- Temporary(비밀번호 변경 옵션) OFF
9. 생성된 user-admin 에 Role Mapping
- Assign role 클릭
- Assign roles to user-admin account 에서 Filter by Clients 클릭 후 admin 권한 추가
10. Client Scope 설정
- Clients - Client scopes - grafana2-dedicated 클릭
- scope 탭에서 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
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 값이 있는지 확인
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, Keycloak' 카테고리의 다른 글
Grafana Cloudwatch DataSource Cloudwatch Add Error (0) | 2023.06.11 |
---|---|
Grafana Migration (0) | 2023.05.21 |
Keycloak API 를 사용한 유저 정보 조회 (0) | 2023.01.23 |
Grafana SSL 설정 / Keycloak SSL 설정 (0) | 2023.01.07 |
helm chart 를 사용한 Grafana Install (0) | 2022.12.18 |