Infograb logo
AWS IAM 역할을 통한 서비스 가입

이 가이드는 IAM 가입 방법을 사용하여 AWS에서 실행 중일 때 비밀을 공유하지 않고 Teleport 프로세스가 Teleport 클러스터에 가입하도록 구성하는 방법을 설명합니다.

사용 사례에 따라 사용할 수 있는 두 가지 다른 AWS 가입 방법이 있습니다:

  1. EC2 가입 방법은 자체 호스팅된 Teleport 배포에만 사용할 수 있습니다 (자세한 내용은 문서를 참조하세요). EC2 인스턴스에서 실행 중인 Teleport 프로세스는 서명된 EC2 인스턴스 신원 문서를 요청하고 이를 Teleport Auth Service에 제시합니다. Teleport Auth Service는 EC2 API를 쿼리하여 인스턴스가 진짜인지 확인합니다. 이 방법은 자체 호스팅된 Teleport 클러스터와 Teleport Auth Service용 IAM 자격 증명이 필요합니다.
  2. AWS에서 서명되지 않은 토큰: AWS에서 실행 중인 Teleport 프로세스를 Teleport 가입 토큰을 통해 클러스터에 가입하게 하거나, Kubernetes에서 실행 중인 Teleport 프로세스에 대해 서명된 ServiceAccount 토큰을 사용할 수 있습니다. 이러한 방법들은 클라우드 독립적 접근 방식을 채택할 때 AWS 전용 API에 의존하고 싶지 않을 때 Teleport 프로세스를 클러스터에 가입할 수 있도록 해줍니다.

작동 방식

IAM 가입 방법은 IAM 자격 증명에 접근할 수 있는 모든 곳에서 실행 중인 Teleport 프로세스에서 사용할 수 있습니다. 예를 들어 IAM 역할이 부착된 EC2 인스턴스와 같습니다. 특정 권한이나 IAM 정책은 필요하지 않습니다. 부착된 정책이 없는 IAM 역할이면 충분합니다. Teleport Auth Service에 IAM 자격 증명은 필요하지 않습니다.

Teleport 프로세스는 미리 서명된 sts:GetCallerIdentity 요청을 Teleport Auth Service에 보내어 AWS 계정에서 실행되고 있음을 증명합니다. 서비스의 ID는 AWS 서비스 가입 토큰에 구성된 허용 규칙에서 일치해야 합니다.

Proxy Service가 7계층 로드 밸런서나 리버스 프록시 뒤에 있는 클러스터에 가입 지원은 Teleport 13.0+에서 제공됩니다.

필수 조건

  • 실행 중인 Teleport 클러스터 버전 이상. Teleport를 시작하려면, 가입하기 위해 무료 평가판에 등록하거나 데모 환경 설정하기를 참조하세요.

  • tctl 관리 도구와 tsh 클라이언트 도구.

    tctltsh 다운로드에 대한 지침은 설치를 방문하세요.

  • Teleport 바이너리가 설치된 Teleport 서비스를 호스트할 AWS EC2 인스턴스가 필요합니다.

당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면, tsh login으로 로그인한 다음 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오.

예를 들어:

tsh login --proxy=teleport.example.com --user=email@example.com
tctl status

클러스터 teleport.example.com

버전 16.2.0

CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

클러스터에 연결하고 tctl status 명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 작업대에서 후속 tctl 명령어를 실행할 수 있습니다.

자신의 Teleport 클러스터를 호스팅하는 경우, Teleport 인증 서비스를 호스팅하는 컴퓨터에서 전체 권한으로 tctl 명령어를 실행할 수도 있습니다.

1단계/4. AWS IAM 자격 증명 설정

IAM 방법을 사용하여 Teleport 클러스터에 가입하는 모든 Teleport 프로세스는 sts:GetCallerIdentity API를 호출하기 위해 AWS IAM 자격 증명이 필요합니다. 특정 IAM 정책이나 권한이 필요하지 않습니다. 모든 IAM 사용자 또는 역할이 이 API를 호출할 수 있습니다.

EC2 인스턴스에서 Teleport를 실행 중이라면 인스턴스에 아무 IAM 역할을 부착하는 것으로 충분합니다. EC2 대시보드에서 IAM 역할을 부착하려면 작업 > 보안 > IAM 역할 수정을 선택합니다. 역할에 부착된 IAM 정책이 필요하지 않습니다. 인스턴스가 AWS 자격 증명이 필요하지 않다면, 부착된 정책이 없는 빈 역할을 생성하여 부착하는 것이 좋습니다.

2단계/4. AWS 가입 토큰 생성

다음의 token.yaml을 생성하여 AWS 계정 및 Teleport 프로세스의 ID가 일치해야 하는 ARN을 지정하는 allow 규칙을 작성합니다.

  # token.yaml
  kind: token
  version: v2
  metadata:
    # 이 토큰 이름은 비밀이 아닙니다. 인스턴스는 이 토큰을 사용하기 위해 
    # AWS 계정에서 실행되고 있음을 증명해야 합니다.
    name: iam-token
  spec:
    # 필요한 최소 권한 집합을 사용하세요 (예: Node, App, Kube, DB, WindowsDesktop)
    roles: [Node]
    
    # 이 토큰에 허용된 조인 방법을 설정하세요
    join_method: iam
    
    allow:
      # Teleport 프로세스가 조인할 수 있는 AWS 계정을 지정하세요
      - aws_account: "111111111111"
      # 여러 개의 허용 규칙이 지원됩니다
      - aws_account: "222222222222"
      # aws_arn은 선택 사항이며 Teleport 프로세스의 IAM 역할을 제한하는 데 사용됩니다
      - aws_account: "333333333333"
        aws_arn: "arn:aws:sts::333333333333:assumed-role/teleport-node-role/i-*"

토큰 이름 iam-token은 단지 예시일 뿐이며, 사용하고 싶은 값으로 어떤 것이든 가능합니다. 3단계에서 join_params.token_name에 동일한 값을 사용하면 됩니다.

허용 규칙의 선택적 aws_arn 필드는 와일드카드 문자를 지원합니다:

  • *는 모든 조합의 문자를 일치시킵니다.
  • ?는 단일 문자를 일치시킵니다.

다음 명령어를 실행하여 토큰을 생성합니다:

tctl create -f token.yaml

3단계/4. 서비스를 구성하세요

IAM 가입 방법은 SSH, Proxy, Kubernetes, Application 또는 Database Service를 실행 중인 Teleport 프로세스에서 사용할 수 있습니다.

커스텀 teleport.yaml 파일로 Teleport 서비스를 구성하세요. 2단계에서 생성한 토큰의 token_name과 일치하는 join_params 섹션을 사용하고 method: iam으로 설정합니다. 다음 예시 구성과 같이 설정합니다:

# /etc/teleport.yaml
version: v3
teleport:
  join_params:
    token_name: iam-token
    method: iam
  proxy_server: teleport.example.com:443
ssh_service:
  enabled: yes
auth_service:
  enabled: no
proxy_service:
  enabled: no

teleport.proxy_server 필드에서 값을 Teleport Proxy Service 또는 Teleport Enterprise Cloud 테넌트의 호스트와 웹 포트로 교체하세요. 예: mytenant.teleport.sh:443.

4단계/4. Teleport 프로세스 시작

your Teleport instance에 AWS에 인증하는 데 사용할 수 있는 자격 증명에 대한 액세스를 부여합니다.

your Teleport instance를 EC2 인스턴스에서 실행하는 경우 EC2 인스턴스 메타데이터 서비스 방법을 사용할 수 있습니다. 그렇지 않은 경우 환경 변수를 사용해야 합니다:

Teleport는 EC2 인스턴스에서 실행될 때 이를 감지하고 인스턴스 메타데이터 서비스를 사용하여 자격 증명을 가져옵니다.

EC2 인스턴스는 EC2 인스턴스 프로파일을 사용하도록 구성되어 있어야 합니다. 자세한 내용은 인스턴스 프로파일 사용하기를 참조하세요.

Teleport의 내장 AWS 클라이언트는 다음 환경 변수에서 자격 증명을 읽습니다:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_DEFAULT_REGION

your Teleport instance를 시작하면 서비스는 /etc/default/teleport 경로의 파일에서 환경 변수를 읽습니다. 이 자격 증명은 귀하의 조직에서 가져오십시오. /etc/default/teleport에 다음 내용을 포함하고 각 변수의 값을 대체해야 합니다:

AWS_ACCESS_KEY_ID=00000000000000000000
AWS_SECRET_ACCESS_KEY=0000000000000000000000000000000000000000
AWS_DEFAULT_REGION=<YOUR_REGION>

Teleport의 AWS 클라이언트는 자격 증명을 다음 순서로 다양한 출처에서 로드합니다:

  • 환경 변수
  • 공유 자격 증명 파일
  • 공유 구성 파일 (Teleport는 항상 공유 구성을 활성화합니다)
  • EC2 인스턴스 메타데이터 (자격 증명 전용)

공유 자격 증명 파일 또는 공유 구성 파일을 통해 AWS 자격 증명을 제공할 수 있지만, your Teleport instance를 실행할 때 AWS_PROFILE 환경 변수를 선택한 프로파일의 이름으로 지정해야 합니다.

위의 지침이 고려하지 않은 특정 사용 사례가 있는 경우, 자격 증명 로딩 동작에 대한 자세한 설명을 보려면 AWS SDK for Go의 문서를 참조하십시오.

호스트가 부팅될 때 your Teleport instance가 자동으로 시작되도록 시스템 데몬 서비스를 생성하여 구성합니다. 지침은 your Teleport instance를 설치한 방법에 따라 다릅니다.

your Teleport instance를 실행할 호스트에서 Teleport를 활성화하고 시작하십시오:

sudo systemctl enable teleport
sudo systemctl start teleport

your Teleport instance를 실행할 호스트에서 Teleport에 대한 시스템 데몬 서비스 구성을 생성하고, Teleport 서비스를 활성화한 후 Teleport를 시작하십시오:

sudo teleport install systemd -o /etc/systemd/system/teleport.service
sudo systemctl enable teleport
sudo systemctl start teleport

your Teleport instance의 상태는 systemctl status teleport로 확인할 수 있으며, 로그는 journalctl -fu teleport로 볼 수 있습니다.

Teleport를 시작한 후, 서비스가 클러스터에 연결하고 가입할 수 있는지 확인하세요.

Teleport 원문 보기