Infograb logo
워크로드 아이덴티티
미리보기

텔레포트 워크로드 아이덴티티는 현재 미리보기 상태입니다. 이는 일부 기능이 누락될 수 있음을 의미합니다. 우리는 워크로드 아이덴티티의 미래를 함께 형성할 디자인 파트너를 적극적으로 찾고 있으며, 피드백을 듣고 싶습니다.

텔레포트의 워크로드 아이덴티티는 워크로드용으로 설계된 유연한 짧은 수명의 아이덴티티를 발급합니다. 워크로드라는 용어는 일반적으로 시스템 내에서 실행되는 소프트웨어 조각을 가리킵니다. 이 아이덴티티는 워크로드 간 통신(mTLS 등)을 안전하게 하거나, 이러한 워크로드가 3자 시스템에 접근할 수 있도록 하는 데 사용될 수 있습니다.

이는 업계 표준인 모두를 위한 안전한 생산 아이덴티티 프레임워크(SPIFFE) 사양과 호환되며, 다른 SPIFFE 호환 아이덴티티 제공자를 대체하는 데 사용할 수 있습니다.

텔레포트 워크로드 아이덴티티는 이미 익숙한 여러 텔레포트 기능을 가져옵니다. 예를 들어:

  • SPIFFE SVID 발급 감사.
  • 특정 머신과 사용자에 대한 SPIFFE ID 접근 제한을 위한 RBAC.
  • SPIFFE CA의 회전 및 관리.
  • AWS Roles Anywhere와 같은 제3자 서비스와 함께 사용하는 텔레포트 SPIFFE CA.

텔레포트 워크로드 아이덴티티는 워크로드 간의 통신을 위해 설계되었으며, 텔레포트 클러스터 자체에 대한 접근을 허용하지 않기 때문에 텔레포트 머신 아이덴티티와 다릅니다. 워크로드 아이덴티티는 텔레포트 프록시를 활용하지 않습니다.

SPIFFE란 무엇인가요?

SPIFFE(모두를 위한 안전한 생산 아이덴티티 프레임워크)는 워크로드를 안전하게 식별하기 위한 표준의 집합입니다.

SPIFFE는 다음을 규정합니다:

  • 아이덴티티를 유일하게 지정하는 형식, SPIFFE ID.
  • SPIFFE ID를 검증 가능한 문서인 SVID로 인코딩하기 위한 표준.
  • 워크로드가 수신한 SVID를 검증하기 위해 사용해야 할 프로세스.
  • 워크로드가 SVIDS, 즉 워크로드 API를 요청하는 데 사용할 수 있는 API 세트.

SPIFFE의 개방적인 성격과 인기 덕분에 전체 워크로드 아이덴티티 구현의 기초로 삼기 좋은 선택입니다. 많은 인기 도구(예: Linkerd 및 Istio)에서 아이덴티티 제공자로 지원되고 있으며, SPIFFE를 직접 자신의 서비스에 구현하기 위한 기성 SDK도 존재합니다.

SPIFFE는 SPIFFE ID를 권한 부여에 어떻게 사용하는지에 대한 규정을 명시하지 않는 것이 중요합니다. 이는 높은 수준의 유연성을 제공하여, 원하는 방식으로 권한 부여를 구현할 수 있도록 합니다.

SPIFFE ID 및 신뢰 도메인

SPIFFE에서 아이덴티티의 기초는 SPIFFE ID입니다. 이는 워크로드를 식별하는 고유한 문자열입니다. SPIFFE ID는 spiffe 스킴이 포함된 URI 형식으로 구성되어 있으며, 신뢰 도메인과 워크로드 식별자를 포함합니다.

신뢰 도메인은 워크로드 아이덴티티의 "신뢰의 근본"입니다. 신뢰 도메인 내의 워크로드는 신뢰 도메인 내의 권한 있는 기관에 의해 아이덴티티를 발급받으며, 신뢰 도메인의 루트 키를 사용하여 이러한 아이덴티티를 검증할 수 있습니다. 신뢰 도메인은 URI 내의 호스트로 인코딩됩니다. 텔레포트 워크로드 아이덴티티의 경우, 신뢰 도메인은 사용자의 텔레포트 클러스터이며, 이는 클러스터에 대해 구성된 이름으로 표시됩니다. 예: example.teleport.sh.

워크로드 식별자는 URI 내의 경로로 인코딩됩니다. 이는 신뢰 도메인 내에서 워크로드를 식별하는 문자열이어야 합니다. 이 경로 내에 포함할 내용은 귀하 및 귀하의 애플리케이션 요구에 따라 다릅니다. 일반적으로 경로의 계층적 성격이 활용됩니다. 예를 들어, europe 지역에서 운영 중인 foo 서비스를 가진 경우 다음과 같이 표현할 수 있습니다: /region/europe/svc/foo.

이것이 결합되어 다음과 같은 SPIFFE ID를 생성합니다:

spiffe://example.teleport.sh/region/europe/svc/foo

안전한 검증 가능한 아이덴티티 문서(SVIDs)

SPIFFE ID는 워크로드에 대한 고유 식별자일 수 있지만, 워크로드가 자신의 아이덴티티를 검증할 수 있는 방법을 제공하지 않습니다. 여기에서 안전한 검증 가능한 아이덴티티 문서(SVIDs)가 등장합니다.

SVID는 SPIFFE ID와 신뢰할 수 있는 기관에서 발급되었음을 검증할 수 있는 암호 증명을 인코딩하는 문서입니다.

SPIFFE는 SVID에 대한 두 가지 형식을 규정합니다:

  • X.509-SVID: SPIFFE ID가 URI SAN 필드에 인코딩된 X.509 인증서입니다. 이 인증서는 신뢰 도메인 내의 신뢰할 수 있는 기관에 의해 서명됩니다.
  • JWT-SVID: SPIFFE ID가 sub 클레임으로 포함된 JWT 토큰입니다. 이들은 신뢰 도메인 내의 신뢰할 수 있는 기관에 의해 서명됩니다.

워크로드가 SVID를 검증하는 데 필요한 데이터는 신뢰 번들로 알려져 있습니다. 이는 신뢰 도메인 내의 신뢰할 수 있는 기관에 속한 인증서 집합입니다.

워크로드 API

워크로드 API는 워크로드가 SPIFFE 아이덴티티 제공자에게 SVID 및 신뢰 번들을 요청할 때 사용해야 하는 표준화된 gRPC API입니다. 워크로드 API 서버는 또한 구독된 워크로드에 대해 자격 증명을 자동으로 갱신하는 역할을 합니다.

워크로드 API는 일반적으로 워크로드와 동일한 호스트에 설치된 에이전트에 의해 노출되며, TCP 엔드포인트 대신 유닉스 소켓을 사용하여 접근합니다. 이는 SVID를 발급하기 전에 워크로드의 기본 인증 및 권한 부여를 수행할 수 있습니다. 이를 워크로드 인증이라고 합니다.

텔레포트의 워크로드 아이덴티티

텔레포트의 워크로드 아이덴티티는 SPIFFE의 구현입니다. 각 텔레포트 클러스터는 SPIFFE 신뢰 도메인으로 작용하며, Auth Service가 SVID 발급을 위한 인증 기관 역할을 합니다.

텔레포트의 RBAC 시스템은 특정 SPIFFE ID에 대해 어떤 봇과 사용자가 SVID를 요청할 수 있는지를 제어하는 데 사용됩니다. 역할은 발급할 수 있는 SPIFFE ID를 지정할 수 있으며, 이 역할은 봇 또는 사용자에게 부여됩니다. 예를 들어:

kind: role
version: v6
metadata:
  name: europe-foo-svid-issuer
spec:
  allow:
    spiffe:
    - path: "/region/europe/svc/foo"

SPIFFE 워크로드 API는 tbot 에이전트 내에서 구성 가능한 서비스로 구현됩니다. tbot 에이전트는 SVID 요청이 필요한 워크로드와 가까운 곳에 설치되어야 하며, 그런 다음 tbot에 의해 노출된 워크로드 API를 사용하여 SVID와 신뢰 번들을 가져올 수 있습니다.

텔레포트의 워크로드 아이덴티티는 현재 X.509-SVID 발급만 지원합니다.

다음 단계

  • 시작하기: 워크로드 아이덴티티를 위해 텔레포트를 구성하는 방법.
  • 모범 사례: 프로덕션에서 워크로드 아이덴티티를 사용하는 모범 사례.
  • 워크로드 인증: 특정 워크로드에 SVID를 안전하게 발급하기 위한 워크로드 인증 사용에 대해 알아보세요.
  • TSH 지원: 사용자를 위해 SVID를 발급하기 위해 tsh를 사용하는 방법.
  • AWS Roles Anywhere: AWS에서 Workload ID 인증서를 인증으로 받아들이도록 구성하는 방법.

기타 리소스

Teleport 원문 보기