Grafana - OIDC

circle-info

OIDC를 통한 SSO 구성 가이드 입니다.

Ⅰ. Okta-Grafana SSO 연동

1. [Okta] 앱 등록 및 설정

경로": "Applications" → "Applications" → "Create App Integration" 선택

옵션 선택 후 "Next" 선택

  • "Sign-in method" → "OIDC - OpenID Connect" 선택

  • "Application type" → "Web Application" 선택

  • App integration name (필수) : Application 이름 입력

  • Logo (선택) : 별도로 다운 받거나 아래 로고 파일 다운로드 후 업로드

  • Grant type (필수) :

    • "Authorization Code", "Refresh Token" 선택

Sign-in redirect URIs : 아래 옵션 중 Grafana 환경에 적합한 1개 옵션 입력

  • Grafana Cloud : https://<Grafana_ORG>.grafana.net/login/okta

  • Grafana On-premise : http://<on-premises_grafana_server_domain_or_ip>:<grafana_server_port>/login/okta

circle-exclamation

Logout redirect URIs : 아래 옵션 중 Grafana 환경에 적합한 1개 옵션 입력

  • Grafana Cloud : https://<Grafana_ORG>.grafana.net/logout

  • Grafana On-premise : http://<on-premises_grafana_server_domain_or_ip>:<grafana_server_port>/logout

circle-exclamation

  • Controlled access 옵션 중 "Skip group assignment for now" 선택 후 "Save" 선택

  • 사용자 Okta 대시보드에 Grafana 앱 구성

    • "General" → "General Settings" 옵션(Edit)에서 "LOGIN" 항목의 "Login initiated by"를 "Either Okta or App"으로 선택합니다.

    • "Initiate login URI" : 위의 "Sign-in redirect URIs" 항목과 동일하게 입력합니다.

circle-info

Okta 구성은 완료 되었으며 Grafana Application의 "General" 항목 중 Client ID, Client Secret 대한 정보가 Grafana 구성 시 필요하여 별도로 복사해둡니다.

2. [Grafana] 인증 설정

  • Grafana 관리자 권한 연결

    • 경로 : "Administration" → "Authentication" → "Okta" 선택

Okta 인증 정보 입력

  • Client ID : <Okta에서 복사한 Client ID 정보>

  • Client Secret : <Okta에서 복사한 Client Secret 정보>

  • Auth URL : https://<OKTA_TENANT_Subdomain>.okta.com/oauth2/v1/authorize

  • Token URL : https://<OKTA_TENANT_Subdomain>.okta.com/oauth2/v1/token

  • API URL : https://<OKTA_TENANT_Subdomain>.okta.com/oauth2/v1/userinfo

  • Sign out redirect URL : 아래 옵션 중 Grafana 환경에 적합한 1개 옵션 입력

    • Grafana Cloud : https://<Grafana_ORG>.grafana.net/logout

    • Grafana On-premise : http://<on-premises_grafana_server_domain_or_ip>:<grafana_server_port>/logout

circle-check

  • Okta 인증 정보 입력 완료 후 "Save and enable" 선택

  • "Authentication" 항목에서 우측 상단 "Auth settings"을 선택합니다.

  • "Enable insecure email lookup" 설정 옵션을 활성화 합니다.

3. 사용자 인증 경험

1) Grafana Web 인증

circle-info
  • 모든 구성이 완료되면 아래와 같이 Grafana 로그인 페이지에서 아래와 같이 Okta 로그인 항목이 추가되며, 해당 "Sign in with Okta" 선택시 Okta를 통해 정상 인증이 완료 됩니다.

2) Okta 대시보드를 통한 인증

circle-info
  • Grafana Application에 Assign 된 사용자는 아래와 같이 Okta 대시보드에 "Grafana Application"이 UI에서 확인되며, 해당 앱을 클릭하여 Grafana 인증이 가능합니다.


Ⅱ. Okta-Grafana 권한 구성 (Basic Role)

triangle-exclamation
circle-info
  • Okta 개별 사용자의 속성 정보로 구성하는 "ABAC" 구성과 Okta 그룹을 통한 "RABC" 구성으로 분류됩니다.

  • Role에 대한 구성만 적용되며, 계정 삭제는 Application에서 별도 진행이 필요합니다.

1. 개별 사용자 Role 구성 (ABAC)

1) Okta Default User의 Profile 추가

  • 경로 : "Directory" → "Profile Editor" → Okta "User (default)" 선택

  • "Add Attribute" 선택

  • 아래 옵션 입력 및 설정 → "Save" 선택

    • Display name : Grafana Role

    • Variable name : grafana_role

    • Enum : (Enable) Define enumerated list of values

    • Attribute members

      • Display name / Value

        • Viewer Value / Viewer

        • Editor Value / Editor

        • Admin Value / Admin

2) Grafana Application의 User Profile 추가

경로 : "Directory" → "Profile Editor" 선택

  • "Users" 항목에서 "Grafana" 검색 후 해당 Application 선택

  • "Add Attribute" 선택

  • 옵션 입력 및 선택 항목 → "Save" 선택

    • Display name : Grafana Role

    • Variable name : grafana_role

    • Enum : (Enable) Define enumerated list of values

    • Attribute members

      • Display name / Value

        • Viewer Value / Viewer

        • Editor Value / Editor

        • Admin Value / Admin

  • Attributes 매핑

    • "Mappings" 옵션에서 "Configure User mappings" 선택

  • "Okta User to Grafana-OIDC" 항목 선택

  • 맨 아래의 Grafana "grafana_role" 속성 정보와 Okta의 "grafana_role" 속성 필드랑 매핑합니다.

  • 매핑 옵션을 "Apply mapping on user create and update" 항목으로 변경

  • "Save Mappings" 선택

  • "Apply updates now" 선택

3) Grafana 관리 콘솔에서 Role 속성 구성

  • "Administration" → "Authentication" → " Okta" 선택

  • "User mapping" 옵션 중, "Role attribute path" 항목에 "grafana_role" 입력 후 "Save" 선택

4) Okta에서 사용자 할당 및 Grafana Role 적용

  • "Applications" → "Applications" → "Grafana" 검색 후 Grafana Application 선택

  • "Assignments" → "Assign" 옵션 중, "Assign to People" 선택

  • Application 할당할 사용자 검색 후 해당 사용자 "Assign" 선택

  • 사용자 속성 필드 중, Grafana Role에 대하여 사용자에게 할당할 Basic Role을 선택 후 "Save and Go Back" 선택

  • "Done" 선택

circle-info
  • 위의 Okta에서 구성한 Basic Role 부여는 Grafana 사용자 정보에 실시간 적용되지 않으며, 사용자가 Okta를 통해 정상적으로 인증이 완료되면 Okta에서 부여한 Role 정보를 수집하여 Grafana Role이 부여 됩니다.


2. 그룹 사용자 Role 구성 (RBAC)

circle-info

Role 그룹에 중복된 사용자는 우선순위 권한이 부여 됩니다.

  • 1순위: Admin, 2순위:Editor, 3순위:Viewer

1) Okta 그룹 생성 및 사용자 할당

  • "Directory" → "Group" → "Add group" 선택

  • Grafana Role을 부여하고 식별하기 위한 그룹명을 입력하고 "Save" 선택합니다.

  • 동일한 방법으로 3가지 Basic Role의 그룹을 생성합니다.

  • 생성 완료 되었다면, 각 그룹(Basic Role)에 사용자를 할당합니다.

    • 그룹 선택 후 "Assign people" 선택합니다.

    • 할당하고자 하는 사용자들에 대하여 우측에 "+" 버튼을 선택하여 등록 후 상단의 "Done"을 선택합니다.

2) Application 그룹 할당

  • "Application" → "Application" 에서 Grafana Application을 검색 및 선택합니다.

  • "Assignments" 항목에서 "Assign" 옵션 중, "Assign to Groups" 선택합니다.

  • 위에서 생성한 Grafana 그룹명을 검색 후 Role 구성의 그룹에 대하여 "Assign"을 선택합니다.

  • Grafana 그룹이 모두 "Assigned" 되면 하단에 "Done"을 선택합니다.

3) Okta OIDC Token에 사용자 그룹 Claims 구성

circle-info
  • Okta 다수 그룹에 적용된 사용자의 경우, Groups claim을 전송할 JWT 토큰에 최대 Data 제한으로 Role 적용 그룹이 토큰에 모두 포함되지 못하여 Role 부여가 되지 않을 수 있습니다.

  • 이를 방지하고자 "Grafana"라는 특정 키워드가 포함된 그룹만 Claim에 전송하도록 하는 구성입니다.

  • "Sign On" 항목에서 "OpenID Connect ID Token"에 "Edit" 선택합니다.

  • "Groups claim filter" 항목에 대한 옵션과 Value를 입력 후 "Save" 선택합니다.

    • Option : Matches regex

    • Value : .*Grafana.*

4) Okta 그룹명에 대한 Grafana 그룹 Role 구성

  • Grafana 관리 콘솔에서 "Administration" → "Authentication" → "Okta" 선택합니다.

  • "User mapping" 옵션 중, "Role attribute path"에 아래 항목을 입력합니다.

  • 위의 Value는 예시로 구성한 Grafana Okta 그룹을 기준으로 생성한 Role 매핑 Value입니다.

  • 다른 그룹명으로 생성하였을 경우, 생성한 그룹으로 매칭 값을 변경하여 입력하시기 바랍니다.

circle-info
  • 위의 Okta에서 구성한 Basic Role 부여는 Grafana 사용자 정보에 실시간 적용되지 않으며, 사용자가 Okta를 통해 정상적으로 인증이 완료되면 Okta에서 부여한 Role 정보를 수집하여 Grafana Role이 부여 됩니다.


Ⅲ. Teams 동기화 구성 (Fixed Roles)

circle-info

Teams 동기화 구성은 "Fixed role"이 할당된 Grafana 팀 구성원에 대하여 Okta 그룹 정보를 매핑하여 사용자(팀원)의 동기화 구성 가이드입니다.

circle-check

1. Okta 에서 Grafana Application 그룹 할당

  • "Applications" → "Applications" → "Grafana" Application 선택 → "Assignments" → Groups Assign

2. Grafana Teams 구성 설정

  • "Administration" → "Users and access" → "Teams" → 동기화 구성할 팀 선택

  • "External group sync" → "Add group" 선택

  • Okta 그룹명(Grafana_Admin_Role_Group)을 입력 후 "Add group" 선택

circle-info

팀 동기화 구성 가이드가 모두 완료된 이후 Okta 그룹에 할당된 사용자가 Okta 인증 후 Grafana 팀에 자동으로 할당되었는지 검증합니다.


circle-exclamation
  • Okta 중복 그룹 사용자

    • Grafana Teams 구성원 현황

    • Okta 사용자 중복 그룹 할당

    • Okta 사용자 인증 후 Grafana Teams 매핑구성원 추가

    • Okta에서 사용자의 그룹(Grafana_Editor_Role_Group) 제거

    • Okta에서 제거 된 그룹에 대하여 매핑 된 Grafana Teams에서 구성원 자동 삭제

triangle-exclamation

Last updated