Infograb logo
SAML 신원 공급자 참조

이 페이지는 Teleport에서 사용할 수 있는 SAML 신원 공급자에 대한 세부정보를 제공합니다.

SAML 신원 공급자란 무엇인가요?

SAML 신원 공급자는 Teleport 사용자가 SAML 싱글 사인온을 지원하는 외부 애플리케이션(사내 및 사외 모두)에 인증하고 권한을 부여할 수 있도록 합니다.

기본 정의

다음 정의는 OASIS의 SAML 사양 문서에서 요약 및 재구성된 것입니다. 이 문서는 페이지 하단에서 참조할 수 있습니다.

어설션

신원 공급자가 제공하는 하나 이상의 진술이 포함된 정보 패키지입니다. 어설션은 일반적으로 주체에 대한 것으로, Teleport의 경우 Teleport 사용자가 됩니다. 이는 사용자가 "user bob은 역할 editor, access에 속한다."와 같은 사실의 진술로 볼 수 있습니다.

서비스 공급자

서비스 공급자는 주체에 대한 어설션을 활용하여 접근을 제어하고 맞춤형 서비스를 제공합니다. 이들은 이러한 어설션을 위해 신원 공급자에 의존합니다. Teleport의 경우, 서비스 공급자는 일반적으로 SAML 싱글 사인온을 허용하는 Slack, Vercel 등과 같은 애플리케이션입니다.

신원 공급자

주체에 대한 어설션을 생성하는 서비스입니다.

서비스/신원 공급자 주도 SSO

로그인 프로세스는 서비스 공급자 또는 신원 공급자에 의해 시작될 수 있습니다. 이들을 트리거하는 프로세스는 미세하게 다릅니다. 서비스 공급자는 서비스 공급자 주도 SSO의 SSO 프로세스를 시작하는 책임이 있습니다. 신원 공급자는 신원 공급자 주도 SSO를 위한 프로세스를 시작하는 책임이 있습니다.

엔드포인트

메타데이터 URL

https://<proxy-address>/enterprise/saml-idp/metadata

이는 신원 공급자 XML 메타데이터를 검색할 수 있는 URL입니다. 서비스 공급자는 이 파일에서 신뢰를 설정하는 데 필요한 정보를 요구합니다.

싱글 사인온 서비스 URL

https://<proxy-address>/enterprise/saml-idp/sso

이는 서비스 공급자가 신원 공급자와 어설션을 교환하는 데 사용할 URL입니다. 이 URL은 다음 바인딩을 지원합니다:

  • HTTP-Redirect
  • HTTP-POST

신원 공급자 주도 SSO URL

https://<proxy-address>/enterprise/saml-idp/login/<sp-name>

이 URL은 신원 공급자 주도 SSO를 트리거합니다. sp-name 은 특정 서비스 공급자 개체의 metadata.name 과 일치합니다.

Teleport SAML 서비스 공급자 객체

아래는 서비스 공급자 객체입니다. 이러한 객체는 Teleport에 추가되어야 외부 서비스 공급자에 대한 신뢰가 설정됩니다.

kind: saml_idp_service_provider
metadata:
  # 서비스 공급자의 친근한 이름입니다. 이는 서비스 공급자를 관리하는 데 사용되며
  # 신원 공급자 주도 SSO에서도 사용됩니다.
  name: saml-service-provider
spec:
  # entity_descriptor는 서비스 공급자 XML입니다.
  entity_descriptor: |
    <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"...
version: v1

어설션

현재 Teleport의 SAML 신원 공급자가 제공하는 어설션은 아래와 같습니다.

친근한 이름전체 이름설명형식
uidurn:oid:0.9.2342.19200300.100.1.1Teleport의 사용자 IDurn:oasis:names:tc:SAML:2.0:attrname-format:uri
eduPersonAffiliationurn:oid:1.3.6.1.4.1.5923.1.1.1.1사용자의 Teleport 역할urn:oasis:names:tc:SAML:2.0:attrname-format:uri

SAML IDP 접근 비활성화

역할 수준

역할 수준에서 SAML IDP 접근을 비활성화하려면, 다음 role 옵션으로 사용자에게 역할을 할당하십시오:

...
options:
    ...
    idp:
      saml:
        enabled: false
    ...

사용자가 IDP 접근을 비활성화하는 역할에 할당되면, 다른 역할이 접근을 허용하더라도 접근이 거부됩니다.

클러스터 수준

클러스터 수준에서 IDP 접근을 비활성화하려면, 다음 설정으로 cluster_auth_preference 객체를 생성하거나 업데이트하십시오:

kind: cluster_auth_preference
metadata:
  name: cluster-auth-preference
spec:
  ...
  idp:
    saml:
      enabled: false
  ...
version: v2

이 설정은 모든 사용자의 SAML IDP 접근을 비활성화합니다 역할 수준 권한과 관계없이 적용됩니다.

문제 해결

외부 애플리케이션에 로그인할 때 Bad Request

Teleport 서버가 Bad Request 를 반환하는 경우, 서비스 제공자 메타데이터가 Teleport에 제대로 추가되지 않았을 수 있으며, 그 결과 Teleport가 서비스 제공자를 찾을 수 없습니다. Teleport의 로그에서 로그 항목을 확인하여 이를 검증할 수 있습니다:

2023-03-01T10:32:34-05:00 INFO [SAMLIDP] failed to validate request: cannot find service provider https://samltest.id/saml/sp: could not find service provider https://samltest.id/saml/sp pid:31036.1 saml@v0.4.12/identity_provider.go:232

외부 애플리케이션에 로그인할 때 Not Found

Teleport 서버가 Not Found 를 반환하는 경우, 사용자의 역할 중 어떤 것에도 SAML IDP 접근이 명시적으로 비활성화되어 있지 않은지 확인하십시오. 각 사용자 역할의 options 섹션에서 saml 접근이 비활성화되어 있는 idp 섹션을 찾아보십시오. 또한 사용자의 역할이 saml_idp_service_provider 리소스에 대해 listread 작업을 허용하는지 확인하십시오.

...
spec:
  allow:
    ...
    rules:
    - resources:
      - saml_idp_service_provider
      verbs:
      - list
      - read
...
options:
    ...
    idp:
      saml:
        enabled: false
    ...

참고 자료

Teleport 원문 보기