Roles Anywhere를 통한 AWS 콘솔 및 CLI 접근
Teleport는 AWS 콘솔 및 CLI 접근을 제공하기 위해 AWS IAM Roles Anywhere와 통합됩니다. 이미 AWS IAM Roles Anywhere를 사용하고 있으며 CLI 도구나 terraform과 같은 모든 AWS API 기반 도구와의 완전한 호환성을 보장하면서 Teleport로 AWS 환경에 대한 접근을 보호하려는 경우, 이 가이드가 권장 방법을 제공합니다.
Teleport는 AWS 콘솔 및 CLI 접근을 제공하기 위해 AWS IAM Roles Anywhere와 통합됩니다. 이를 통해 Teleport의 역할 기반 접근 제어, 적시 Access Requests 및 기타 Teleport Zero Trust Access와 Identity Governance 기능을 활용하여 AWS 인프라에 대한 접근을 관리할 수 있습니다.
이미 AWS IAM Roles Anywhere를 사용하고 있으며 CLI 도구나 terraform과 같은 모든 AWS API 기반 도구와의 완전한 호환성을 보장하면서 Teleport로 AWS 환경에 대한 접근을 보호하려는 경우, 이 가이드가 권장 방법을 제공합니다. Teleport 프록시를 통해 감사 캡처와 함께 사용자에게 AWS CLI 접근을 제공하거나 조직에서 Roles Anywhere를 채택하지 않은 경우에는 에이전트 기반 AWS 접근 가이드를 참조하세요.
이 가이드에서 다음을 설명합니다:
- Roles Anywhere를 사용하여 Teleport로 AWS 콘솔 및 CLI 접근 구성
- AWS Management Console 접근
- AWS Command Line Interface (CLI) 접근
- AWS SDK를 사용한 애플리케이션 접근
작동 방식#
Teleport는 AWS IAM Roles Anywhere를 사용하여 대상 IAM 역할을 맡기 위한 임시 자격 증명을 발급합니다.
접근은 Teleport의 RBAC 정책을 통해 관리되어 인가된 사용자 및 역할에 대해서만 자격 증명이 생성됩니다. 컨트롤 플레인(Proxy 및 Auth Services)에서 실행되므로 추가 서비스가 필요하지 않습니다.
웹 콘솔 접근의 경우, Teleport Web UI의 리소스 페이지로 이동하여 Roles Anywhere 프로파일의 이름을 따서 명명된 AWS 애플리케이션을 클릭할 수 있습니다.
CLI 및 SDK 기반 접근의 경우, tsh를 사용하여 AWS 자격 증명을 얻어야 합니다.
사전 요구 사항#
-
A running Teleport cluster. If you want to get started with Teleport, sign up for a free trial or set up a demo environment.
-
The
tctlandtshclients.Installing `tctl` and `tsh` clients
-
Determine the version of your Teleport cluster. The
tctlandtshclients must be at most one major version behind your Teleport cluster version. Send a GET request to the Proxy Service at/v1/webapi/findand use a JSON query tool to obtain your cluster version. Replace with the web address of your Teleport Proxy Service:$ TELEPORT_DOMAIN= $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')" -
Follow the instructions for your platform to install
tctlandtshclients:
-
To check that you can connect to your Teleport cluster, sign in with tsh login, then
verify that you can run tctl commands using your current credentials.
For example, run the following command, assigning to the domain name of the Teleport Proxy Service in your cluster and to your Teleport username:
$ tsh login --proxy= --user=
$ tctl status
# Cluster (=teleport.url=)
# Version (=teleport.version=)
# CA pin (=presets.ca_pin=)
If you can connect to the cluster and run the tctl status command, you can use your
current credentials to run subsequent tctl commands from your workstation.
If you host your own Teleport cluster, you can also run tctl commands on the computer that
hosts the Teleport Auth Service for full permissions.
- AWS에서 다음 작업에 대한 권한:
- IAM Roles Anywhere 신뢰 앵커 생성
- IAM Roles Anywhere 프로파일 생성
- IAM 역할 생성
- PATH에
aws명령줄 인터페이스(CLI) 도구. AWS 설명서를 참조하여 최신 버전의 AWS CLI를 설치하거나 업데이트하세요.
1단계/4단계. AWS IAM Roles Anywhere 통합 구성#
이 섹션에서는 Teleport가 AWS 자격 증명을 발급할 수 있도록 AWS IAM 리소스를 구성합니다.
Teleport Web UI로 이동하여 리소스 목록 페이지에서 새 리소스 등록을 클릭하고, AWS CLI/Console Access 타일을 클릭한 후 가이드를 따릅니다.
통합 수동 구성
AWS에서 다음 리소스를 생성합니다:
| 이름 | 리소스 | 기능 |
|---|---|---|
TeleportRolesAnywhereIntegrationCA |
IAM Roles Anywhere 신뢰 앵커 | Teleport에서 AWS로의 접근 허용. |
TeleportRolesAnywhereProfileSync |
IAM 역할 | Teleport가 AWS Roles Anywhere 프로파일을 반복하고 리소스로 가져올 수 있도록 허용. |
TeleportRolesAnywhereProfileSync |
IAM Roles Anywhere 프로파일 | TeleportRolesAnywhereProfileSync IAM 역할에 대한 접근 허용. |
IAM Roles Anywhere 신뢰 앵커 생성#
먼저 Teleport의 AWS Roles Anywhere CA를 신뢰하는 IAM Roles Anywhere 신뢰 앵커를 생성합니다.
- Teleport 인증서 얻기:
$ tctl auth export --type awsra -----BEGIN CERTIFICATE----- MIIDqjCCApKgAwIBAgIQMIK8/WiQ/rUOrjlmB0IHVTANBgkqhkiG9w0BAQsFADBv ... -----END CERTIFICATE----- - 신뢰 앵커 생성 페이지로 이동합니다.
신뢰 앵커 이름을
TeleportRolesAnywhereIntegrationCA로 지정하고 이전 단계에서 얻은 Teleport의awsraCA 인증서를 외부 인증서 번들로 추가합니다. - 신뢰 앵커 ARN 을 복사합니다.
프로파일 동기화 설정#
다음으로 프로파일 동기화를 활성화하는 데 필요한 AWS 리소스를 생성합니다.
-
역할 생성으로 이동하여
TeleportRolesAnywhereProfileSync라는 새 IAM 역할을 생성합니다. 신뢰 정책에는 Roles Anywhere 서비스 주체가 포함되어야 합니다:json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rolesanywhere.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity", "sts:TagSession" ] } ] } -
IAM 역할 ARN 을 복사합니다.
-
TeleportRolesAnywhereProfileSync 역할로 이동하여 새 인라인 정책을 생성합니다:
json { "Version": "2012-10-17", "Statement": [ { "Sid": "RolesAnywhereProfileSync", "Effect": "Allow", "Action": [ "rolesanywhere:ListProfiles", "rolesanywhere:ListTagsForResource", "rolesanywhere:ImportCrl", "iam:GetRole" ], "Resource": [ "*" ] } ] } -
이제 프로파일 생성 페이지로 이동하여
TeleportRolesAnywhereProfileSync로 이름을 지정합니다. 마지막 단계에서 생성한 역할(TeleportRolesAnywhereProfileSync)을 추가하고 프로파일을 생성합니다. -
프로파일 ARN 을 복사합니다.
Teleport AWS IAM Roles Anywhere 통합 생성#
필요한 AWS 리소스가 생성되었으므로 이제 Teleport AWS IAM Roles Anywhere 통합을 생성할 수 있습니다.
-
roles-anywhere-integration.yaml이라는 파일에 다음 내용을 작성합니다:yaml kind: integration sub_kind: aws-ra version: v1 metadata: name: spec: aws_ra: trust_anchor_arn: profile_sync_config: enabled: true profile_arn: role_arn: -
다음 명령으로 통합을 생성합니다:
code $ tctl create -f roles-anywhere-integration.yaml
이제 Teleport는 5분마다 AWS IAM Roles Anywhere 프로파일을 AWS 애플리케이션으로 동기화하기 시작합니다.
2단계/4단계. AWS IAM Roles Anywhere 프로파일 생성 및 IAM 역할 할당#
이제 통합을 테스트할 수 있도록 예시 프로파일과 역할을 생성합니다.
이미 AWS IAM Roles Anywhere 프로파일을 활용하고 있다면 이 단계를 건너뛸 수 있습니다.
- 역할 생성으로 이동하여
ExampleReadOnlyAccess라는 새 IAM 역할을 생성합니다. 신뢰 정책에는 Roles Anywhere 서비스 주체가 포함되어야 합니다:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "rolesanywhere.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:SetSourceIdentity",
"sts:TagSession"
]
}
]
}
역할에 AWS 관리형 ReadOnlyAccess 정책을 추가합니다.
역할 ARN 을 복사합니다.
- 이제 프로파일 생성 페이지로 이동하여
ExampleReadOnlyAccess로 이름을 지정합니다. 마지막 단계에서 생성한 역할(ExampleReadOnlyAccess)을 추가하고 프로파일을 생성합니다.
프로파일 ARN 을 복사합니다.
3단계/4단계. 접근 설정#
이제 사용자에게 가져온 AWS 프로파일/역할에 대한 접근 권한을 부여해야 합니다.
ExampleReadOnlyAccess 프로파일 및 연관된 IAM 역할에 대한 접근 권한을 부여하는 Teleport 역할을 생성합니다.
Teleport 클러스터 Web UI를 열고 "Zero Trust Access"를 선택한 다음 "Roles"를 선택합니다.
"Create New Role" 버튼을 클릭하고 역할 이름을 aws-ro-access로 설정합니다.
다음으로 Resources 섹션에서 Application Access 항목을 추가하고 다음을 입력합니다:
- 레이블:
teleport.dev/aws-roles-anywhere-profile-arn': '' - AWS 역할 ARN:
다음 단계로 진행하여 역할을 생성합니다.
example-read-only-access-role.yaml이라는 파일을 다음 내용으로 생성합니다:
kind: role
version: v8
metadata:
name: aws-ro-access
spec:
allow:
app_labels:
'teleport.dev/aws-roles-anywhere-profile-arn': ''
aws_role_arns:
- name="Read Only Role ARN" />
- 다음 명령으로 역할을 생성합니다:
$ tctl create -f example-read-only-access-role.yaml
접근을 허용하려는 사용자에게 역할을 할당합니다. Access List에 할당하거나 Access Requests와 함께 사용할 수도 있습니다.
4단계/4단계. AWS 리소스 접근#
통합을 구성하고 역할을 설정했으므로 이제 사용자가 Teleport를 통해 AWS 리소스에 접근할 수 있습니다.
AWS Management Console 접근#
-
Teleport Web UI 홈 페이지를 방문하여 Resources를 클릭합니다. 통합이 예상대로 프로파일을 찾으면 Web UI에 프로파일 이름이 표시됩니다. 프로파일이 표시되지 않으면 문제 해결 섹션을 참조하세요.
-
AWS Console 애플리케이션의 Launch 버튼을 클릭한 다음 AWS Console에 로그인할 때 맡을 역할을 클릭합니다:

-
AWS Management Console로 리디렉션되어 선택한 역할로 로그인됩니다. AWS Console 오른쪽 상단 모서리에
ExampleReadOnlyRole에 할당된 페더레이션 로그인으로 Teleport 사용자 이름이 표시됩니다:
AWS CLI 또는 기타 AWS SDK 기반 도구로 AWS 접근#
자격 증명 얻기#
데스크톱에서 동기화된 AWS 앱 프로파일에 로그인합니다:
$ tsh apps login --aws-role arn:aws:iam::278576220453:role/ExampleReadOnlyAccess example-read-only-access
Logged into AWS app "example-read-only-access".
Your IAM role:
arn:aws:iam::123456789012:role/ExampleReadOnlyAccess
Example AWS CLI commands:
aws --profile example-read-only-access s3 ls
AWS_PROFILE=example-read-only-access aws s3 ls
AWS CLI로 AWS 접근#
이제 aws 명령줄 도구를 사용하여 명령줄에서 모든 AWS 리소스에 접근할 수 있습니다.
이전에 생성한 프로파일 이름으로 --profile 플래그를 전달하거나 AWS_PROFILE 환경 변수를 내보내야 합니다.
$ aws --profile example-read-only-access s3 ls
...
Terraform에서 AWS 접근#
Terraform을 사용하려면 공급자에서 프로파일을 설정해야 합니다.
provider "aws" {
profile = "example-read-only-access"
// ...
}
AWS_PROFILE 환경 변수를 설정하는 것도 가능합니다.
문제 해결#
이 가이드를 따르다가 문제가 발생하면 이 섹션을 참조하세요.
리소스 페이지에 프로파일 누락#
Teleport Web UI에서 예상한 AWS 프로파일이 표시되지 않으면 다음을 확인하세요:
-
프로파일 동기화 구성이 활성화되어 있고
profile_name_filters가 적절히 설정되어 있는지 확인합니다(모든 프로파일을 가져오려면*로 설정):$ tctl get integration/ ... spec: aws_ra: profile_sync_config: enabled: true profile_arn: arn:aws:rolesanywhere:eu-west-2:123456789012:profile/5c659b8f-7ca3-48ef-a1aa-14c9c93506ee profile_name_filters: - MarcoRA-* role_arn: arn:aws:iam::123456789012:role/TeleportRolesAnywhereProfileSync trust_anchor_arn: arn:aws:rolesanywhere:eu-west-2:123456789012:trust-anchor/69a0c3f8-3157-49b2-85dd-75bdef828a68 -
다음 명령을 실행하여 통합 상태 요약을 얻을 수 있습니다:
$ tctl get integration/ ... status: aws_ra: last_profile_sync: end_time: "2025-07-23T15:46:27.475629Z" error_message: "" start_time: "2025-07-23T15:46:26.334536Z" status: SUCCESS synced_profiles: 4오류 메시지가 있는지 확인하세요.
-
Teleport 역할이 예상하는 모든 프로파일에 대한 접근을 허용하는지 확인합니다. AWS 앱 리소스에는 접근을 제어하는 데 사용할 수 있는 특정 레이블이 있습니다:
teleport.dev/aws-roles-anywhere-profile-arn. 다음과 같이*로 설정하여 모든 프로파일에 대한 접근을 허용합니다:kind: role spec: allow: app_labels: 'teleport.dev/aws-roles-anywhere-profile-arn': '*'
다음 단계#
이제 AWS Management Console 및 API에 대한 접근을 보호하도록 Teleport를 설정하는 방법을 알았으므로 조직의 필요에 맞게 설정을 조정할 수 있습니다.
AWS IAM 역할 매핑 세분화#
aws_role_arns 필드는 사용자가 Teleport에 인증할 때 동적으로 채울 수 있도록 템플릿 변수를 지원합니다.
예를 들어, ID 공급자를 구성하여 aws_role_arns라는 SAML 속성 또는 OIDC 클레임을 정의한 다음, 이 필드를 사용하여 IdP에서 각 사용자가 허용된 AWS 역할 ARN을 나열할 수 있습니다.
Teleport 역할에서 {{external.aws_role_arns}} 변수를 언급하면 Auth Service가 IdP의 데이터를 기반으로 사용자의 허용된 ARN을 채웁니다:
aws_role_arns:
- {{external.aws_role_arns}}
aws_role_arns 필드에서 사용할 수 있는 모든 변수 및 함수는 Access Controls 참조를 참조하세요.
특정 프로파일 및 IAM 역할에 대한 접근을 부여하는 역할 생성#
각 프로파일의 프로파일 및 IAM 역할에 대한 접근 권한을 부여하는 여러 Teleport 역할을 생성할 수 있습니다.
역할 생성 방법 및 Access Requests를 사용하여 접근하는 방법에 대한 자세한 내용은 역할 Access Requests를 참조하세요.
