InfoGrab DocsInfoGrab Docs

Teleport의 SAML 공급자를 사용하여 Grafana 인증하기

요약

Grafana는 오픈 소스 관측성 플랫폼입니다. Teleport는 Teleport App Service 뒤에서 실행되는 서비스뿐만 아니라 SAML 호환 서비스에 대한 ID 공급자로 작동할 수 있습니다. Grafana를 통해 사용자는 SAML을 사용하여 인증할 수 있습니다.

Grafana는 오픈 소스 관측성 플랫폼입니다. 엔터프라이즈 버전은 SAML 인증을 지원합니다. 이 가이드는 Teleport를 SAML 공급자로 설정하고, Grafana가 Teleport가 제공하는 ID를 수용하도록 설정하는 방법을 안내합니다.

Teleport는 Teleport App Service 뒤에서 실행되는 서비스뿐만 아니라 SAML 호환 서비스에 대한 ID 공급자로 작동할 수 있습니다.

작동 방식#

Grafana를 통해 사용자는 SAML을 사용하여 인증할 수 있습니다. Teleport에서 SAML IdP 메타데이터를 내보낸 다음, Grafana 설정 파일에 제공하여 Grafana가 Teleport IdP의 인증 기관을 신뢰하도록 지시할 수 있습니다. 그런 다음 Teleport 클러스터는 SAML IdP 서비스 프로바이더 리소스를 사용하여 Teleport SAML IdP에 Grafana 배포에 대한 정보를 제공합니다.

사전 요구사항#

  • grafana.ini에 편집 접근 권한이 있는 Grafana Enterprise 인스턴스.

    • SAML 연결을 위한 TLS 인증서/키를 생성할 신뢰할 수 있는 인증 기관.
  • 실행 중인 Teleport Enterprise 클러스터. Teleport를 시작하려면 무료 체험판에 가입하거나 데모 환경을 구성하세요.

  • tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Teleport 클러스터의 버전을 확인합니다. tctl and tsh clients는 Teleport 클러스터 버전보다 최대 한 개의 메이저 버전까지만 뒤처질 수 있습니다. Proxy Service의 /v1/webapi/find로 GET 요청을 보내고 JSON 쿼리 도구를 사용하여 클러스터 버전을 확인합니다. teleport.example.com:443를 Teleport Proxy Service의 웹 주소로 바꿉니다:

      $ TELEPORT_DOMAIN=teleport.example.com:443
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. 사용 중인 플랫폼에 대한 지침에 따라 tctl and tsh clients를 설치합니다:

Mac

     `tctl` and `tsh` clients가 포함된, 서명된 Teleport macOS .pkg 설치 프로그램을 다운로드합니다:
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-${TELEPORT_VERSION?}.pkg
     ```

     Finder에서 `pkg` 파일을 더블 클릭하여 설치를 시작합니다.
 
     
Warning
       Homebrew를 사용하여 Teleport를 설치하는 것은 지원되지 않습니다. Homebrew의
       Teleport 패키지는 Teleport에서 유지 관리하지 않으므로 신뢰성이나 보안을
       보장할 수 없습니다.
     

Windows - Powershell

     ```code
     $ curl.exe -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-windows-amd64-bin.zip
     # Unzip the archive and move the `tctl` and `tsh` clients to your %PATH%
     # NOTE: Do not place the `tctl` and `tsh` clients in the System32 directory, as this can cause issues when using WinSCP.
     # Use %SystemRoot% (C:\Windows) or %USERPROFILE% (C:\Users\<username>) instead.
     ```
 
   

 
   

Linux

     Linux 설치판의 모든 Teleport 바이너리에는 `tctl` and `tsh` clients가 포함되어 있습니다.  RPM/DEB
     패키지 및 i386/ARM/ARM64용 다운로드를 포함한 더 많은 옵션은
     [설치 페이지](../installation/installation.mdx)를 참조하세요.
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ tar -xzf teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ cd teleport
     $ sudo ./install
     # Teleport binaries have been copied to /usr/local/bin
     ```
   

 

Teleport cluster에 연결할 수 있는지 확인하려면 tsh login으로 로그인한 다음, 현재 자격 증명으로 tctl 명령을 실행할 수 있는지 확인합니다.

예를 들어, teleport.example.com에 cluster 내 Teleport Proxy Service의 도메인 이름을, email@example.com에 Teleport 사용자 이름을 지정하여 다음 명령을 실행합니다:

$ tsh login --proxy=teleport.example.com --user=email@example.com
$ tctl status
# Cluster  (=teleport.url=)
# Version  (=teleport.version=)
# CA pin   (=presets.ca_pin=)

cluster에 연결하여 tctl status 명령을 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 이후의 tctl 명령을 실행할 수 있습니다. 자체 Teleport cluster를 호스팅하는 경우, 전체 권한을 얻기 위해 Teleport Auth Service를 호스팅하는 컴퓨터에서 tctl 명령을 실행할 수도 있습니다.

1/3단계. SAML 서비스 프로바이더 객체 접근을 위한 Teleport 역할 설정#

먼저, saml_idp_service_provider 객체를 읽고 수정할 수 있는 권한이 있는 사용자로 Teleport에 로그인했는지 확인해야 합니다. 기본 editor 역할에는 이미 이 접근 권한이 있지만, 더 맞춤화된 설정을 사용하는 경우 다음 내용으로 sp-manager.yaml이라는 역할을 생성합니다:

kind: role
version: v7
metadata:
  name: sp-manager
spec:
  allow:
    rules:
    - resources: [saml_idp_service_provider]
      verbs: [list, create, read, update, delete]

tctl로 생성합니다:

$ tctl create sp-manager.yaml
role 'sp-manager' has been created
Tip

Web UI를 사용하여 역할을 생성하고 편집할 수도 있습니다. Access -> Roles로 이동하여 Create New Role을 클릭하거나 편집할 기존 역할을 선택하십시오.

인증 공급자에 맞는 적절한 명령을 실행하여 saml_idp_service_provider 역할을 your Teleport user에게 할당하십시오:

Local User

  1. 로컬 사용자의 역할을 쉼표로 구분된 목록으로 가져옵니다:

    $ ROLES=$(tsh status -f json | jq -r '.active.roles | join(",")')
    
  2. 로컬 사용자를 편집하여 새 역할을 추가합니다:

    $ tctl users update $(tsh status -f json | jq -r '.active.username') \
      --set-roles "${ROLES?},saml_idp_service_provider"
    
  3. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

GitHub

  1. 텍스트 편집기에서 github 인증 커넥터를 엽니다:

    $ tctl edit github/github
    
  2. github 커넥터를 편집하여 teams_to_roles 섹션에 saml_idp_service_provider을 추가합니다.

    이 역할에 매핑해야 할 팀은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 팀은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 팀이어야 합니다.

    다음은 예시입니다:

      teams_to_roles:
        - organization: octocats
          team: admins
          roles:
            - access
    +       - saml_idp_service_provider
    
  3. 편집기에서 파일을 저장하고 닫아 변경 사항을 적용합니다.

  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

SAML

  1. saml 구성 리소스를 가져옵니다:

    $ tctl get --with-secrets saml/mysaml > saml.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 saml.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 saml.yaml 파일을 삭제해야 합니다.

  2. saml.yaml을 편집하여 attributes_to_roles 섹션에 saml_idp_service_provider을 추가합니다.

    이 역할에 매핑해야 할 속성은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      attributes_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - saml_idp_service_provider
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f saml.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

OIDC

  1. oidc 구성 리소스를 가져옵니다:

    $ tctl get oidc/myoidc --with-secrets > oidc.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 oidc.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 oidc.yaml 파일을 삭제해야 합니다.

  2. oidc.yaml을 편집하여 claims_to_roles 섹션에 saml_idp_service_provider을 추가합니다.

    이 역할에 매핑해야 할 클레임은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      claims_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - saml_idp_service_provider
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f oidc.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

2/3단계. Teleport ID 공급자를 인식하도록 Grafana 설정#

Grafana SSO 설정의 첫 번째 단계는 Teleport의 SAML ID 공급자 메타데이터를 가져오는 것입니다. https://<proxy-address>/enterprise/saml-idp/metadata로 이동하여 이 메타데이터를 XML 형식으로 얻을 수 있습니다. teleport-metadata.xml과 같이 기억하기 쉬운 파일 이름으로 저장합니다.

Grafana 설정에 제공하기 위해 base64를 사용하여 메타데이터를 인코딩합니다:

$ cat teleport-metadata.xml | base64

Grafana 호스트에서 [auth.saml] 섹션을 추가하여 grafana.ini를 편집합니다:

[auth.saml]
enabled = true
auto_login = false
allow_idp_initiated = true
relay_state = ""
private_key_path = '/path/to/certs/grafana-host-key.pem'
certificate_path = '/path/to/certs/grafana-host.pem'
idp_metadata = 'PEVudGl0eURl.....'
assertion_attribute_name = uid
assertion_attribute_login = uid
assertion_attribute_email = uid
assertion_attribute_groups = eduPersonAffiliation
enabled SAML 인증을 활성화하려면 true로 설정합니다.
auto_login true로 설정하면 SAML을 사용한 자동 로그인이 활성화됩니다.
allow_idp_initiated IdP 시작 로그인을 허용하려면 true로 설정합니다.
relay_state IdP 시작 로그인의 릴레이 상태. Teleport IdP와 함께 작동하려면 ""로 설정해야 합니다.
private_key_path Grafana를 식별하는 데 사용되는 TLS 키 경로.
certificate_path Grafana를 식별하는 데 사용되는 TLS 인증서 경로.
idp_metadata Teleport 메타데이터 XML 파일의 base64로 인코딩된 내용.
assertion_* SAML 어설션에 매핑될 다양한 Grafana 사용자 필드.

SAML을 위한 grafana.ini 편집에 대한 자세한 내용은 Grafana의 Grafana에서 SAML 인증 설정 페이지를 확인할 수 있습니다.

3/3단계. Teleport에 서비스 프로바이더 메타데이터 추가#

편집된 설정으로 Grafana를 다시 시작한 후, /saml/metadata 경로에서 Grafana의 SAML 메타데이터를 다운로드합니다. entity_descriptor 값으로 다운로드한 메타데이터를 사용하여 이 서비스 프로바이더를 정의하는 grafana-sp.yaml 파일을 생성합니다:

kind: saml_idp_service_provider
metadata:
  # 서비스 프로바이더의 친숙한 이름. 서비스 프로바이더 관리 및
  # ID 공급자 시작 SSO에서 사용됩니다.
  name: saml-grafana
spec:
  # entity_descriptor는 서비스 프로바이더 XML입니다.
  entity_descriptor: |
    <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"...
version: v1

Teleport에 서비스 프로바이더 정의를 추가합니다:

$ tctl create grafana-sp.yaml

이제 Grafana 로그인 화면에 "Sign in with SAML" 버튼이 나타나며, 이를 클릭하면 Teleport 로그인 화면으로 이동합니다. 또는 auto_login = true로 설정한 경우 자동으로 리디렉션됩니다.

Teleport의 SAML 공급자를 사용하여 Grafana 인증하기

Teleport v18.9
원문 보기
요약

Grafana는 오픈 소스 관측성 플랫폼입니다. Teleport는 Teleport App Service 뒤에서 실행되는 서비스뿐만 아니라 SAML 호환 서비스에 대한 ID 공급자로 작동할 수 있습니다. Grafana를 통해 사용자는 SAML을 사용하여 인증할 수 있습니다.

Grafana는 오픈 소스 관측성 플랫폼입니다. 엔터프라이즈 버전은 SAML 인증을 지원합니다. 이 가이드는 Teleport를 SAML 공급자로 설정하고, Grafana가 Teleport가 제공하는 ID를 수용하도록 설정하는 방법을 안내합니다.

Teleport는 Teleport App Service 뒤에서 실행되는 서비스뿐만 아니라 SAML 호환 서비스에 대한 ID 공급자로 작동할 수 있습니다.

작동 방식#

Grafana를 통해 사용자는 SAML을 사용하여 인증할 수 있습니다. Teleport에서 SAML IdP 메타데이터를 내보낸 다음, Grafana 설정 파일에 제공하여 Grafana가 Teleport IdP의 인증 기관을 신뢰하도록 지시할 수 있습니다. 그런 다음 Teleport 클러스터는 SAML IdP 서비스 프로바이더 리소스를 사용하여 Teleport SAML IdP에 Grafana 배포에 대한 정보를 제공합니다.

사전 요구사항#

  • grafana.ini에 편집 접근 권한이 있는 Grafana Enterprise 인스턴스.

    • SAML 연결을 위한 TLS 인증서/키를 생성할 신뢰할 수 있는 인증 기관.
  • 실행 중인 Teleport Enterprise 클러스터. Teleport를 시작하려면 무료 체험판에 가입하거나 데모 환경을 구성하세요.

  • tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Teleport 클러스터의 버전을 확인합니다. tctl and tsh clients는 Teleport 클러스터 버전보다 최대 한 개의 메이저 버전까지만 뒤처질 수 있습니다. Proxy Service의 /v1/webapi/find로 GET 요청을 보내고 JSON 쿼리 도구를 사용하여 클러스터 버전을 확인합니다. teleport.example.com:443를 Teleport Proxy Service의 웹 주소로 바꿉니다:

      $ TELEPORT_DOMAIN=teleport.example.com:443
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. 사용 중인 플랫폼에 대한 지침에 따라 tctl and tsh clients를 설치합니다:

Mac

     `tctl` and `tsh` clients가 포함된, 서명된 Teleport macOS .pkg 설치 프로그램을 다운로드합니다:
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-${TELEPORT_VERSION?}.pkg
     ```

     Finder에서 `pkg` 파일을 더블 클릭하여 설치를 시작합니다.
 
     
Warning
       Homebrew를 사용하여 Teleport를 설치하는 것은 지원되지 않습니다. Homebrew의
       Teleport 패키지는 Teleport에서 유지 관리하지 않으므로 신뢰성이나 보안을
       보장할 수 없습니다.
     

Windows - Powershell

     ```code
     $ curl.exe -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-windows-amd64-bin.zip
     # Unzip the archive and move the `tctl` and `tsh` clients to your %PATH%
     # NOTE: Do not place the `tctl` and `tsh` clients in the System32 directory, as this can cause issues when using WinSCP.
     # Use %SystemRoot% (C:\Windows) or %USERPROFILE% (C:\Users\<username>) instead.
     ```
 
   

 
   

Linux

     Linux 설치판의 모든 Teleport 바이너리에는 `tctl` and `tsh` clients가 포함되어 있습니다.  RPM/DEB
     패키지 및 i386/ARM/ARM64용 다운로드를 포함한 더 많은 옵션은
     [설치 페이지](../installation/installation.mdx)를 참조하세요.
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ tar -xzf teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ cd teleport
     $ sudo ./install
     # Teleport binaries have been copied to /usr/local/bin
     ```
   

 

Teleport cluster에 연결할 수 있는지 확인하려면 tsh login으로 로그인한 다음, 현재 자격 증명으로 tctl 명령을 실행할 수 있는지 확인합니다.

예를 들어, teleport.example.com에 cluster 내 Teleport Proxy Service의 도메인 이름을, email@example.com에 Teleport 사용자 이름을 지정하여 다음 명령을 실행합니다:

$ tsh login --proxy=teleport.example.com --user=email@example.com
$ tctl status
# Cluster  (=teleport.url=)
# Version  (=teleport.version=)
# CA pin   (=presets.ca_pin=)

cluster에 연결하여 tctl status 명령을 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 이후의 tctl 명령을 실행할 수 있습니다. 자체 Teleport cluster를 호스팅하는 경우, 전체 권한을 얻기 위해 Teleport Auth Service를 호스팅하는 컴퓨터에서 tctl 명령을 실행할 수도 있습니다.

1/3단계. SAML 서비스 프로바이더 객체 접근을 위한 Teleport 역할 설정#

먼저, saml_idp_service_provider 객체를 읽고 수정할 수 있는 권한이 있는 사용자로 Teleport에 로그인했는지 확인해야 합니다. 기본 editor 역할에는 이미 이 접근 권한이 있지만, 더 맞춤화된 설정을 사용하는 경우 다음 내용으로 sp-manager.yaml이라는 역할을 생성합니다:

kind: role
version: v7
metadata:
  name: sp-manager
spec:
  allow:
    rules:
    - resources: [saml_idp_service_provider]
      verbs: [list, create, read, update, delete]

tctl로 생성합니다:

$ tctl create sp-manager.yaml
role 'sp-manager' has been created
Tip

Web UI를 사용하여 역할을 생성하고 편집할 수도 있습니다. Access -> Roles로 이동하여 Create New Role을 클릭하거나 편집할 기존 역할을 선택하십시오.

인증 공급자에 맞는 적절한 명령을 실행하여 saml_idp_service_provider 역할을 your Teleport user에게 할당하십시오:

Local User

  1. 로컬 사용자의 역할을 쉼표로 구분된 목록으로 가져옵니다:

    $ ROLES=$(tsh status -f json | jq -r '.active.roles | join(",")')
    
  2. 로컬 사용자를 편집하여 새 역할을 추가합니다:

    $ tctl users update $(tsh status -f json | jq -r '.active.username') \
      --set-roles "${ROLES?},saml_idp_service_provider"
    
  3. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

GitHub

  1. 텍스트 편집기에서 github 인증 커넥터를 엽니다:

    $ tctl edit github/github
    
  2. github 커넥터를 편집하여 teams_to_roles 섹션에 saml_idp_service_provider을 추가합니다.

    이 역할에 매핑해야 할 팀은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 팀은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 팀이어야 합니다.

    다음은 예시입니다:

      teams_to_roles:
        - organization: octocats
          team: admins
          roles:
            - access
    +       - saml_idp_service_provider
    
  3. 편집기에서 파일을 저장하고 닫아 변경 사항을 적용합니다.

  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

SAML

  1. saml 구성 리소스를 가져옵니다:

    $ tctl get --with-secrets saml/mysaml > saml.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 saml.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 saml.yaml 파일을 삭제해야 합니다.

  2. saml.yaml을 편집하여 attributes_to_roles 섹션에 saml_idp_service_provider을 추가합니다.

    이 역할에 매핑해야 할 속성은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      attributes_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - saml_idp_service_provider
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f saml.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

OIDC

  1. oidc 구성 리소스를 가져옵니다:

    $ tctl get oidc/myoidc --with-secrets > oidc.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 oidc.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 oidc.yaml 파일을 삭제해야 합니다.

  2. oidc.yaml을 편집하여 claims_to_roles 섹션에 saml_idp_service_provider을 추가합니다.

    이 역할에 매핑해야 할 클레임은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      claims_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - saml_idp_service_provider
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f oidc.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

2/3단계. Teleport ID 공급자를 인식하도록 Grafana 설정#

Grafana SSO 설정의 첫 번째 단계는 Teleport의 SAML ID 공급자 메타데이터를 가져오는 것입니다. https://<proxy-address>/enterprise/saml-idp/metadata로 이동하여 이 메타데이터를 XML 형식으로 얻을 수 있습니다. teleport-metadata.xml과 같이 기억하기 쉬운 파일 이름으로 저장합니다.

Grafana 설정에 제공하기 위해 base64를 사용하여 메타데이터를 인코딩합니다:

$ cat teleport-metadata.xml | base64

Grafana 호스트에서 [auth.saml] 섹션을 추가하여 grafana.ini를 편집합니다:

[auth.saml]
enabled = true
auto_login = false
allow_idp_initiated = true
relay_state = ""
private_key_path = '/path/to/certs/grafana-host-key.pem'
certificate_path = '/path/to/certs/grafana-host.pem'
idp_metadata = 'PEVudGl0eURl.....'
assertion_attribute_name = uid
assertion_attribute_login = uid
assertion_attribute_email = uid
assertion_attribute_groups = eduPersonAffiliation
enabled SAML 인증을 활성화하려면 true로 설정합니다.
auto_login true로 설정하면 SAML을 사용한 자동 로그인이 활성화됩니다.
allow_idp_initiated IdP 시작 로그인을 허용하려면 true로 설정합니다.
relay_state IdP 시작 로그인의 릴레이 상태. Teleport IdP와 함께 작동하려면 ""로 설정해야 합니다.
private_key_path Grafana를 식별하는 데 사용되는 TLS 키 경로.
certificate_path Grafana를 식별하는 데 사용되는 TLS 인증서 경로.
idp_metadata Teleport 메타데이터 XML 파일의 base64로 인코딩된 내용.
assertion_* SAML 어설션에 매핑될 다양한 Grafana 사용자 필드.

SAML을 위한 grafana.ini 편집에 대한 자세한 내용은 Grafana의 Grafana에서 SAML 인증 설정 페이지를 확인할 수 있습니다.

3/3단계. Teleport에 서비스 프로바이더 메타데이터 추가#

편집된 설정으로 Grafana를 다시 시작한 후, /saml/metadata 경로에서 Grafana의 SAML 메타데이터를 다운로드합니다. entity_descriptor 값으로 다운로드한 메타데이터를 사용하여 이 서비스 프로바이더를 정의하는 grafana-sp.yaml 파일을 생성합니다:

kind: saml_idp_service_provider
metadata:
  # 서비스 프로바이더의 친숙한 이름. 서비스 프로바이더 관리 및
  # ID 공급자 시작 SSO에서 사용됩니다.
  name: saml-grafana
spec:
  # entity_descriptor는 서비스 프로바이더 XML입니다.
  entity_descriptor: |
    <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"...
version: v1

Teleport에 서비스 프로바이더 정의를 추가합니다:

$ tctl create grafana-sp.yaml

이제 Grafana 로그인 화면에 "Sign in with SAML" 버튼이 나타나며, 이를 클릭하면 Teleport 로그인 화면으로 이동합니다. 또는 auto_login = true로 설정한 경우 자동으로 리디렉션됩니다.