Microsoft Entra ID로 SAML 구성

Microsoft Entra ID로 SAML 구성 (Configure SAML with Microsoft Entra ID)

Grafana는 Microsoft Entra ID(이전 Azure AD)를 통한 사용자 인증을 지원해요. 이 문서는 Entra ID를 IdP로 사용해 SAML 인증을 설정하는 전체 과정을 안내합니다. Grafana v11.2부터 Graph API에서 사용자 그룹을 가져오는 메커니즘도 제공된답니다.

출처: Configure SAML with Microsoft Entra ID

본문

참고: Grafana v11.2부터 SAML 통합은 Graph API에서 사용자 그룹을 검색하는 메커니즘을 제공해요. Grafana 11.1 이하 버전은 Graph API 엔드포인트에서 그룹을 가져오는 것을 지원하지 않아요. 따라서 150개가 넘는 그룹을 가진 사용자는 자신의 그룹을 검색할 수 없어요. 대신 Entra ID 커넥터를 사용하세요. 관련 링크: Entra ID SAML limitations 문서를 참고하세요.

시작하기 전에 (Before you begin)

  • SAML 인증을 관리할 권한이 있는지 확인하세요. Grafana의 역할과 권한에 대한 자세한 내용은 Roles and permissions 문서를 참고하세요.
  • 150개가 넘는 그룹을 가진 사용자가 있다면, 그룹을 검색할 Entra ID Graph API를 제공하도록 등록된 애플리케이션을 구성하세요.

자체 서명 인증서 생성 (Generate self-signed certificates)

Entra ID는 SAML 요청 서명을 검증할 인증서가 필요해요. 다음 명령으로 개인 키와 자체 서명 인증서를 생성할 수 있어요(요청 서명에 사용되는 개인 키, 검증용 공개 키를 포함하는 인증서).

$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

이 명령은 private_key_pathcertificate_path 구성 옵션에 사용할 key.pemcert.pem 파일을 생성해요.

갤러리에서 Microsoft Entra SAML Toolkit 추가

(출처: Microsoft Learn 문서에서 발췌)

  1. Azure 포털로 이동해 Entra ID 계정으로 로그인해요.
  2. Enterprise Applications를 검색해요.
  3. Enterprise applications 패널에서 New application을 선택해요.
  4. 검색 상자에 SAML Toolkit을 입력하고 결과 패널에서 Microsoft Entra SAML Toolkit을 선택해요.
  5. 설명이 포함된 이름을 추가하고 Create를 선택해요.

SAML Toolkit 애플리케이션 엔드포인트 구성

Entra ID 사용자를 Grafana로 검증하려면 Entra ID 조직에 새 SAML 통합을 만들어 SAML Toolkit 애플리케이션 엔드포인트를 구성해야 해요. 다음 구성에서는 Grafana URL로 https://localhost를 사용해요. Grafana URL로 바꿔주세요.

  1. SAML Toolkit 애플리케이션에서 Set up single sign-on을 선택해요.
  2. Single sign-on 패널에서 SAML을 선택해요.
  3. Set up Single Sign-On with SAML 패널에서 Basic SAML Configuration의 연필 아이콘을 선택해 설정을 편집해요.
  4. Basic SAML Configuration 패널에서 Edit 버튼을 클릭하고 다음 필드를 업데이트해요.
    • Identifier (Entity ID): https://localhost/saml/metadata
    • Reply URL (Assertion Consumer Service URL): https://localhost/saml/acs
    • Sign on URL: https://localhost
    • Relay State: https://localhost
    • Logout URL: https://localhost/saml/slo
  5. Save를 선택해요.
  6. SAML Certificate 섹션에서 App Federation Metadata Url을 복사해요. 이 URL을 custom.ini 파일의 idp_metadata_url 필드에 사용해요.

클라이언트 시크릿 생성 (Generate a client secret)

  1. Overview 패널에서 Certificates & secrets를 선택해요.
  2. New client secret을 선택해요.
  3. Add a client secret 패널에서 시크릿에 대한 설명을 입력해요.
  4. 시크릿의 만료 날짜를 설정해요.
  5. Add를 선택해요.
  6. 시크릿 값을 복사해요. 이 값은 SAML 구성의 client_secret 필드에 사용돼요.

SCIM 프로비저닝용 SAML assertion 구성

로그인한 사용자가 Entra ID를 통해 프로비저닝된 사용자와 같은 사용자인지 확인하려면 assertion_attribute_external_id SAML assertion을 매핑해 동일한 externalId를 SAML assertion에 포함해야 해요.

  1. Entra ID 애플리케이션을 열어요.
  2. SAML single sign-on 구성을 선택해요.
  3. Attributes & Claims 섹션을 편집해요.
  4. 다음 설정으로 새 claim을 추가해요.
    • Name: userUID
    • Namespace: 비워 둠
    • Source: Attribute
    • Source attribute: user.objectId
  5. 현재 구성을 저장해요.

사용자 매핑 구성을 Entra ID URI로 조정

기본 URI 클레임이 동작하지 않으면 사용자 매핑을 다음으로 조정해요.

  • Name attribute = http://schemas.microsoft.com/identity/claims/displayname
  • Login attribute = http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
  • Email attribute = http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

Entra ID에 Graph API 애플리케이션 구성

SAML로 Grafana에 Entra ID 테넌트를 구성할 수 있지만, 일부 추가 정보는 Graph API로만 접근할 수 있어요. 이 정보를 검색하려면 Entra ID에 새 애플리케이션을 만들고 필요한 권한을 부여해요. 자세한 내용은 Entra ID SAML limitations를 참고하세요. 다음 구성 예시는 Grafana URL로 https://localhost를 사용해요. Grafana 인스턴스 URL로 바꿔주세요.

새 앱 등록 생성:

  1. Azure 포털로 이동해 Entra ID 계정으로 로그인해요.
  2. 왼쪽 탐색 패널에서 Microsoft Entra ID 서비스를 선택한 뒤 App registrations를 선택해요.
  3. New registration 버튼을 클릭해요.
  4. Register an application 패널에 애플리케이션 이름을 입력해요.
  5. Supported account types 섹션에서 애플리케이션을 사용할 계정 유형을 선택해요.
  6. Redirect URI 섹션에서 Web을 선택하고 https://localhost/login/azuread를 입력해요.
  7. Register 버튼을 클릭해요.

애플리케이션 권한 설정:

  1. overview 패널에서 API permissions 섹션을 찾아 Add a permission을 선택해요.
  2. Request API permissions 패널에서 Microsoft Graph를 선택하고 Application permissions을 클릭해요.
  3. Select permissions 패널의 GroupMember 섹션에서 GroupMember.Read.All을 선택해요.
  4. Select permissions 패널의 User 섹션에서 User.Read.All을 선택해요.
  5. 페이지 하단의 Add permissions 버튼을 클릭해요.
  6. Request API permissions 패널에서 Microsoft Graph를 선택하고 Delegated permissions을 클릭해요.
  7. Select permissions 패널의 User 섹션에서 User.Read를 선택해요.
  8. 페이지 하단의 Add permissions 버튼을 클릭해요.
  9. API permissions 섹션에서 Grant admin consent for를 선택해요.

Entra ID 포털에서의 권한 모습:

Permissions name Type Admin consent required Status
GroupMember.Read.All Application Yes Granted
User.Read Delegated No Granted
User.Read.All Application Yes Granted

Graph API가 올바른 권한을 가지는지 테스트하려면 Troubleshoot Graph API calls 섹션을 참고하세요.

더 알아보기 (Learn more)