Infograb logo
Google Cloud KMS

이 가이드는 Google Cloud Key Management Service (KMS)를 사용하여 Teleport 클러스터를 설정하고, Teleport 클러스터에서 발행하는 모든 인증서에 서명하는 데 사용되는 CA 개인 키 자료를 저장하고 처리하는 방법을 보여줍니다.

Teleport는 첫 번째 인증 서버의 초기 시작 동안 내부 인증 기관(CA)을 위한 개인 키 자료를 생성합니다. 이 CA는 Teleport 클러스터에 있는 클라이언트와 호스트에 발행된 모든 인증서에 서명하는 데 사용됩니다. Google Cloud KMS를 사용하도록 구성하면 이 CA의 모든 개인 키 자료는 Google Cloud KMS 내에서 생성되고 저장되며 서명에 사용됩니다. 실제 개인 키 대신 Teleport는 KMS 키의 ID만 저장합니다. 간단히 말해, 개인 키 자료는 절대로 Google Cloud KMS를 벗어나지 않습니다.

새 Teleport 클러스터를 시작하는 경우 초기 시작 동안 모든 것이 처리되며, 구성 후 별도의 개입이 필요하지 않습니다. 소프트웨어 개인 키를 이미 생성한 기존 Teleport 클러스터의 경우 CA 회전이 수행되어야 합니다. 자세한 내용은 기존 클러스터 마이그레이션을 읽어보세요.

필수 조건

이 페이지에 문서화된 기능은 Teleport 11.1.0 이상에서 사용할 수 있습니다.

  • 실행 중인 Teleport 클러스터. Teleport를 시작하려면 가입하기 무료 체험판을 이용해 보세요.

  • tctl 관리 도구 및 tsh 클라이언트 도구 버전 >= 16.2.0.

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

  • 당신의 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 명령어를 실행할 수도 있습니다.

  • Google Cloud 계정이 필요합니다.

1단계/5. GCP에서 키링 만들기

각 Teleport 인증 서버는 해당 인증 서버에서 생성되고 사용되는 모든 키를 보유할 GCP 키링을 사용하도록 구성해야 합니다. 고가용성 Teleport 클러스터를 실행하는 경우 두 개 이상의 인증 서버가 있는 모든 인증 서버는 동일한 키링을 사용하도록 구성되거나 각기 다른 지역에서 고유한 키링을 사용하도록 구성할 수 있습니다(중복성 또는 대기 시간 감소를 위해).

Teleport가 다른 클라우드 계정의 키와 논리적으로 분리할 수 있도록 전용 키링을 만드는 것이 좋습니다. Teleport 인증 서버와 지리적으로 가까운 지원되는 KMS 위치를 선택하십시오.

Google Cloud Console 또는 gcloud CLI 도구를 사용하여 키링을 만들 수 있습니다. 다음 명령어를 실행하려면 gcloud CLI가 구성되어 있어야 합니다:

gcloud kms keyrings create "teleport-keyring" --location location

2단계/5. GCP 서비스 계정 만들기

Teleport는 키링에서 KMS 키를 생성, 나열, 삭제, 서명 및 보기 위한 권한이 필요합니다. 다음과 같은 사용자 정의 IAM 역할을 생성하여 시작하십시오.

# teleport_kms_role.yaml
title: teleport_kms_role
description: 'KMS 키 사용을 위한 Teleport 권한'
stage: ALPHA
includedPermissions:
- cloudkms.cryptoKeys.create
- cloudkms.cryptoKeys.list
- cloudkms.cryptoKeyVersions.create
- cloudkms.cryptoKeyVersions.destroy
- cloudkms.cryptoKeyVersions.useToSign
- cloudkms.cryptoKeyVersions.viewPublicKey
gcloud iam roles create teleport_kms_role \ --project GCP-Project-ID \ --file teleport_kms_role.yaml \ --format yaml

출력 결과에서 name 필드를 주목하십시오. 이 필드는 사용자 정의 역할에 대한 완전한 자격 이름이며 이후 단계에서 사용해야 합니다.

export IAM_ROLE=<위의 출력에서 역할 이름>

Teleport 인증 서버를 위한 GCP 서비스 계정이 없으면 다음 명령을 사용하여 새로 생성할 수 있습니다. 그렇지 않으면 기존 서비스 계정을 사용하십시오.

gcloud iam service-accounts create teleport-auth-server \ --description="Teleport 인증 서버를 위한 서비스 계정" \ --display-name="Teleport 인증 서버" \ --format=yaml

출력에서 email 필드를 주목하십시오. 이것은 서비스 계정의 식별자로 사용해야 합니다.

export SERVICE_ACCOUNT=<위의 출력에서 이메일>

서비스 계정에 대해 이 키링에 역할을 부여하기 위한 IAM 정책 바인딩을 생성하십시오.

gcloud kms keyrings add-iam-policy-binding teleport-keyring \ --location location \ --member "serviceAccount:${SERVICE_ACCOUNT}" \ --role "${IAM_ROLE}"
Warning

이 서비스 계정에 액세스할 수 있는 사람은 누구나 Teleport CA처럼 서명을 생성할 수 있다는 점에 유의하십시오. 이는 높은 권한으로 간주되어야 하며 가능한 한 접근을 제한해야 합니다.

3단계/5. 서비스 계정 자격 증명을 인증 서버에 제공

Teleport 인증 서버는 Application Default Credentials를 사용하여 GCP KMS 서비스에 요청을 합니다. 2단계에서 생성한 teleport-auth-server 서비스 계정의 자격 증명을 Teleport 인증 서버가 실행되는 환경의 Application Default Credentials에 제공합니다. 지원되는 환경에는 GCE VM, GKE 포드 등이 포함됩니다.

자세한 내용은 GCP 문서의 Application Default Credentials를 참조하십시오.

자격 증명이 올바르게 구성되었는지 확인하려면 Teleport 인증 서버 환경에서 gcloud CLI 도구를 실행하여 확인할 수 있습니다. 디버그에 사용할 수 있는 몇 가지 예시 명령어는 다음과 같습니다:

gcloud kms keys list --location location --keyring "teleport-keyring"
Listed 0 items.
gcloud kms keys create --location location --keyring "teleport-keyring" \ --purpose asymmetric-signing \ --default-algorithm rsa-sign-pkcs1-4096-sha512 \ test-key
gcloud kms keys list --location location --keyring "teleport-keyring"
NAME PURPOSE ALGORITHM PROTECTION_LEVELprojects/my-gcp-account/locations/global/keyRings/teleport-keyring/cryptoKeys/test-key ASYMMETRIC_SIGN RSA_SIGN_PKCS1_4096_SHA512 SOFTWARE
echo hello > /tmp/hello.txt
gcloud kms asymmetric-sign --keyring "teleport-keyring" --location location \ --key "test-key" --version 1 \ --input-file /tmp/hello.txt --signature-file /tmp/hello.sig
gcloud kms keys versions destroy --keyring "teleport-keyring" --location location --key "test-key" 1

4단계/5. 인증 서버를 KMS 키 사용하도록 구성

CA 키 매개변수는 클러스터의 Teleport 인증 서버의 teleport.yaml 구성 파일에 정적으로 구성됩니다.

GCP Console에서 생성한 KMS 키랙의 완전한 자격 이름을 찾거나 다음 명령어를 실행하여 확인합니다:

gcloud kms keyrings list --location location

지원되는 KMS 보호 수준은 SOFTWAREHSM입니다. SOFTWARE를 선택하는 경우, GCP KMS는 모든 암호화 작업을 소프트웨어에서 수행하며 (Teleport는 암호화 작업을 수행하지 않음) HSM을 선택하는 경우 GCP KMS는 모든 암호화 작업을 하드웨어 보안 모듈에서 수행합니다.

두 보호 수준은 Google과 Teleport에 의해 안전한 것으로 간주되며, 결정할 때 조직의 요구 사항과 보안 정책을 평가해야 합니다.

관련된 차이점 중 하나는 각 보호 수준의 키에 대해 사용 가능한 쿼터입니다. 작성 당시 소프트웨어 키는 분당 60,000개의 암호화 작업에 대한 프로젝트 전역 쿼타를 가지며, 비대칭 HSM 키는 분당 3,000개의 작업 쿼타를 가집니다. 최신 수치는 KMS 문서를 참조하십시오. 클러스터에 수천 개의 호스트나 활성 사용자가 있을 경우, 더 높은 쿼타를 가지는 소프트웨어 키가 CA 회전 시 많은 새로운 인증서를 서명해야 하므로 잠재적인 쓰로틀링을 피하는 데 도움이 될 수 있습니다.

다음 ca_key_params 구성을 auth_service 섹션에 포함합니다.

# /etc/teleport.yaml
auth_service:
  # ...
  ca_key_params:
    gcp_kms:
      keyring: "projects/<your-gcp-project>/locations/<location>/keyRings/<your-teleport-keyring>"
      protection_level: "SOFTWARE"

새 Teleport 클러스터의 첫 시작 전에 이를 구성하는 경우 초기 CA 키는 GCP에서 생성되며 추가 단계가 필요하지 않습니다. 기존 Teleport 클러스터를 소프트웨어 키에서 GCP KMS 키로 마이그레이션하려는 경우, 계속 읽어보세요. 기존 클러스터 마이그레이션으로 진행해주세요.

5단계/5. 모든 것이 작동하는지 확인

gcp_kms 구성으로 인증 서버를 시작한 후, GCP Console에서 키링에 Teleport가 키를 생성했는지 확인하거나 다음 명령어를 실행하여 확인할 수 있습니다.

gcloud kms keys list --keyring "teleport-keyring" --location location

Teleport 사용자가 클러스터에 로그인하여 새 인증서가 오류 없이 서명될 수 있는지 확인해보십시오.

기존 클러스터 마이그레이션

기존 Teleport 클러스터는 첫 시작 시 소프트웨어 CA 키를 이미 생성했을 것입니다. 기존 CA 키는 모든 기존 사용자 및 호스트 인증서에 서명하는 데 사용되었으며 클러스터의 다른 서비스에서 신뢰할 수 있습니다.

Teleport 인증 서비스가 GCP KMS에서 새 키를 생성하고 나머지 클러스터에서 신뢰할 수 있도록 하려면 모든 Teleport CA를 회전해야 합니다.

teleport start는 시작 시 CA를 회전해야 할 경우 경고를 표시합니다. cert_authority 자원에 대해 update 동사를 허용된 사용자는 클러스터 알림을 통해 CA 회전을 상기시킵니다.

CA 회전은 수동으로 또는 반자동으로 수행할 수 있으며, 인증서 회전 관리 가이드를 참조하십시오. tctl status의 출력에 있는 모든 CA는 회전해야 합니다.

Teleport 원문 보기