Grafana - SAML

circle-info

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

circle-exclamation

Ⅰ. Okta-Grafana SSO 연동 (SAML)

1. [Okta] 앱 등록 및 설정

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

  • "SAML 2.0" 선택 후 "Next" 선택

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

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

General 옵션 설정

  • Single sign-on URL : https://<Grafana_ORG>.grafana.net/saml/acs

  • Audience URI (SP Entity ID) : https://<Grafana_ORG>.grafana.net/saml/metadata

  • Default RelayState : https://<Grafana_ORG>.grafana.net

  • Attribute Statements (optional) 설정

Name
Name format (optional)
Value

Login

Unspecified

user.login

Email

Unspecified

user.email

DisplayName

Unspecified

user.firstName + " " + user.lastName

  • Group Attribute Statements (optional)

Name
Name format (optional)
Filter
Value

Group

Unspecified

Matches regex

.*

  • "Next" 선택

  • "Feedback" 사항에서는 구성에 필요한 사항이 없으므로 "Finish" 선택

2. [Grafana] 인증 설정

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

  • 각 "General settings" 항목을 입력 후 "Next: Sign Requests" 선택합니다.

    • Display name for this SAML 2.0 integration :

      • SSO IDP에 대한 네이밍을 입력합니다. Login 항목에서 네이밍이 표시됩니다.

    • Entity ID :

      • Grafana instance의 metadata URL을 입력 합니다. https://<Grafana_ORG>.grafana.net/saml/metadata

    • Relay state * :

      • Grafana instance의 도메인 정보를 입력합니다. https://<Grafana_ORG>.grafana.net

  • "2 Sign requests" 항목은 설정 사항이 없으며, "Next: Connect Grafana with Identity Provider" 클릭합니다.

  • "3 Connect Grafana with Identity Provider" 에서 2번 "Finish configuring Grafana using IdP data" 항목을 선택 및 입력 합니다.

    • IdP's metadata : "URL for metadata" 선택

    • Metadata URL : Metadata URL 정보는 아래 Okta 관리 콘솔에서 확인이 가능하며 복사 후 붙여 넣어 주시면 됩니다.

    모두 완료 되었다면 "Next: User mapping"을 선택합니다.

  • "4 User mapping" 항목에서 Okta 속성 정보를 매핑하기 위한 필드를 입력합니다.

    • Name attribute : DisplayName

    • Login attribute : Login

    • Email attribute : Email

    • Groups attribute : Group

  • 입력이 완료 되면, "Next: Test and enable" 선택합니다.

  • "Save and enble" 선택 합니다.

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

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


3. 사용자 인증 경험

1) Grafana Web 인증

circle-info
  • 모든 구성이 완료되면 아래와 같이 Grafana 로그인 페이지에서 아래와 같이 Okta 로그인 항목이 추가되며, 해당 "Sign in with Okta-SAML" 선택시 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" 선택

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

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

  • "Save Mappings" 선택

  • "Apply updates now" 선택

3) "Attribute Statements" 구성

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

  • "General" 항목에 "SAML Setting"의 "Edit" 선택

  • "General Settings" 항목에서 "Next" 선택합니다.

  • "Configure SAML" 항목 중, "Attribute Statements (optional)"에서 "Add Another" 선택합니다.

  • 아래 항목으로 옵션 값을 입력합니다.

Name
Name format (optional)
Value

GrafanaRole

Unspecified

user.grafana_role

  • 입력이 완료되면 맨 하단의 "Next"를 선택합니다.

  • "Feedback" 항목에서 "Finish" 선택합니다.

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

  • "Administration" → "Authentication" → "SAML" 선택

  • "4 User mapping" 선택

  • "User mapping" 옵션 중, "Role attribute"와 "Role mapping" 항목을 아래와 같이 입력하고 "Save and apply" 선택합니다.

    • Role attribute : GrafanaRole

    • Role mapping 옵션

      • Viewer : Viewer

      • Editor : Editor

      • Admin : Admin

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 그룹명에 대한 Grafana 그룹 Role 구성

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

  • "4 User mapping" 선택

  • "User mapping" 옵션 중, "Role attribute"와 "Role mapping" 항목을 아래와 같이 입력하고 "Save and apply" 선택합니다.

    • Role attribute : Group

    • Role mapping 옵션 (Okta Role Group name)

      • Viewer : Grafana_Viewer_Role_Group

      • Editor : Grafana_Editor_Role_Group

      • Admin : Grafana_Admin_Role_Group

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