접근 요청 알림 라우팅
Teleport v18.9Teleport의 접근 모니터링 규칙을 사용하면 여러 조건에 따라 접근 요청 알림을 플러그인으로 라우팅할 수 있습니다. 접근 모니터링 규칙(AMR)은 특정 특성을 가진 감사 이벤트와 일치하고 이러한 이벤트를 수신할 때 Teleport 플러그인이 조치를 취하도록 지시하는 동적 Teleport 리소스입니다.
Teleport의 접근 모니터링 규칙을 사용하면 여러 조건에 따라 접근 요청 알림을 플러그인으로 라우팅할 수 있습니다. 예를 들어, 어떤 역할이나 리소스에 접근하는지, 또는 요청을 만드는 사용자가 누구인지에 따라 다른 Slack 채널로 알림을 보내고 싶을 수 있습니다.
작동 방식#
접근 모니터링 규칙(AMR)은 특정 특성을 가진 감사 이벤트와 일치하고 이러한 이벤트를 수신할 때 Teleport 플러그인이 조치를 취하도록 지시하는 동적 Teleport 리소스입니다. Teleport 플러그인은 Teleport Auth Service에 연결하고 AMR을 수신합니다. AMR이 플러그인과 일치하면 플러그인은 AMR을 로드하고 이를 사용하여 수신 이벤트를 처리합니다.
플러그인은 AMR 처리 로직을 서로 별도로 구현합니다. 현재 호스팅된 플러그인의 일부만 알림 라우팅 규칙을 지원합니다. 나머지 호스팅된 플러그인에 대한 지원을 확장하는 작업을 진행 중입니다. 새 플러그인에 대해 알아보려면 Teleport 변경 로그를 확인하세요.
전제 조건#
-
실행 중인 Teleport Enterprise Cloud 클러스터. Teleport를 시작하려면 무료 체험판에 가입하거나 데모 환경을 구성하세요.
-
tctlandtshclients.Installing `tctl` and `tsh` clients
-
Teleport 클러스터의 버전을 확인합니다.
tctlandtshclients는 Teleport 클러스터 버전보다 최대 한 개의 메이저 버전까지만 뒤처질 수 있습니다. Proxy Service의/v1/webapi/find로 GET 요청을 보내고 JSON 쿼리 도구를 사용하여 클러스터 버전을 확인합니다.teleport.example.com:443를 Teleport Proxy Service의 웹 주소로 바꿉니다:$ TELEPORT_DOMAIN=teleport.example.com:443 $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')" -
사용 중인 플랫폼에 대한 지침에 따라
tctlandtshclients를 설치합니다:
-
Mac
`tctl` and `tsh` clients가 포함된, 서명된 Teleport macOS .pkg 설치 프로그램을 다운로드합니다:
```code
$ curl -O https://cdn.teleport.dev/teleport-${TELEPORT_VERSION?}.pkg
```
Finder에서 `pkg` 파일을 더블 클릭하여 설치를 시작합니다.
Homebrew를 사용하여 Teleport를 설치하는 것은 지원되지 않습니다. Homebrew의
Teleport 패키지는 Teleport에서 유지 관리하지 않으므로 신뢰성이나 보안을
보장할 수 없습니다.
Windows - Powershell
```code
$ curl.exe -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-windows-amd64-bin.zip
# Unzip the archive and move the `tctl` and `tsh` clients to your %PATH%
# NOTE: Do not place the `tctl` and `tsh` clients in the System32 directory, as this can cause issues when using WinSCP.
# Use %SystemRoot% (C:\Windows) or %USERPROFILE% (C:\Users\<username>) instead.
```
Linux
Linux 설치판의 모든 Teleport 바이너리에는 `tctl` and `tsh` clients가 포함되어 있습니다. RPM/DEB
패키지 및 i386/ARM/ARM64용 다운로드를 포함한 더 많은 옵션은
[설치 페이지](../installation/installation.mdx)를 참조하세요.
```code
$ curl -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
$ tar -xzf teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
$ cd teleport
$ sudo ./install
# Teleport binaries have been copied to /usr/local/bin
```
- 접근 모니터링 규칙을 지원하는 Teleport 접근 플러그인이 최소 하나 등록되어 있어야 합니다.
Teleport cluster에 연결할 수 있는지 확인하려면 tsh login으로 로그인한 다음,
현재 자격 증명으로 tctl 명령을 실행할 수 있는지 확인합니다.
예를 들어, teleport.example.com에 cluster 내 Teleport Proxy Service의
도메인 이름을, email@example.com에 Teleport 사용자 이름을 지정하여
다음 명령을 실행합니다:
$ tsh login --proxy=teleport.example.com --user=email@example.com
$ tctl status
# Cluster (=teleport.url=)
# Version (=teleport.version=)
# CA pin (=presets.ca_pin=)
cluster에 연결하여 tctl status 명령을 실행할 수 있다면, 현재 자격 증명을 사용하여
워크스테이션에서 이후의 tctl 명령을 실행할 수 있습니다.
자체 Teleport cluster를 호스팅하는 경우, 전체 권한을 얻기 위해 Teleport Auth Service를
호스팅하는 컴퓨터에서 tctl 명령을 실행할 수도 있습니다.
1/2단계. 접근 모니터링 규칙 만들기#
두 가지 방법으로 접근 요청 알림 규칙을 정의할 수 있습니다:
- Web UI 대화상자 사용.
- 규칙 정의를 포함하는 YAML 리소스 파일 만들기.
Web UI를 통해 접근 모니터링 규칙 만들기#
Web UI를 통해 접근 모니터링 규칙을 만들려면, 먼저 접근 요청 페이지로 이동하고 View Notification Routing Rules를 클릭합니다.

그런 다음 Create Notification Rule을 클릭합니다.

접근 모니터링 규칙 기반 라우팅을 지원하는 플러그인이 등록되지 않은 경우 UI에서 하나를 등록하라는 메시지가 표시됩니다.
YAML 리소스를 사용하여 접근 모니터링 규칙 만들기#
다음은 접근 모니터링 규칙 예시입니다. 이 규칙은 역할 your_role_name이 포함된 접근 요청이 만들어지면 Slack 플러그인을 통해 your_slack_channel에 알림을 보냅니다.
kind: access_monitoring_rule
version: v1
metadata:
name: your-plugin-name
spec:
subjects: ['access_request']
condition: 'access_request.spec.roles.contains("your_role_name")'
notification:
name: 'slack'
recipients: ['your_slack_channel']
위의 라우팅 규칙은 명령줄에서 tctl create -f your-file-name.yaml을 사용하여 만들 수 있습니다.
접근 모니터링 규칙에 여러 수신자를 지정할 수 있습니다. 규칙의 condition 필드는 규칙을 적용하고자 하는 조건을 정의하는 조건 표현식으로 설정됩니다.
현재 지원되는 접근 요청 필드:
| 필드 | 설명 |
|---|---|
| access_request.spec.roles | 요청된 역할 세트. |
| access_request.spec.suggested_reviewers | 요청에 지정된 검토자 세트. |
| access_request.spec.system_annotations | 요청에 대한 시스템 주석 맵. |
| access_request.spec.user | 요청하는 사용자. |
| access_request.spec.request_reason | 요청 이유. |
| access_request.spec.creation_time | 요청의 생성 시간. |
| access_request.spec.expiry | 요청의 만료 시간. |
접근 모니터링 규칙의 condition에 사용되는 조건 표현식은 true 또는 false로 평가되어야 합니다.
condition 필드의 예시 값과 가능한 용도:
access_request.spec.user == "some_user"- 요청하는 사용자에 따른 라우팅.access_request.spec.roles.contains("some_role")- 요청된 역할에 따른 라우팅.access_request.spec.roles.contains_any(set("role_1", "role_2"))- 여러 역할에 따른 라우팅.
2/2단계. 새 접근 모니터링 규칙 테스트#
위의 Slack 플러그인 예시 규칙에서:
- 역할 "your_role_name"을 원하는 역할로 교체합니다.
- "your_slack_channel"을 플러그인이 접근할 수 있는 Slack 채널로 교체합니다.
그런 다음 규칙에 지정한 역할에 대한 접근 요청을 만듭니다.
그런 다음 접근 모니터링 규칙에 설정한 Slack 채널을 확인하여 알림이 전송되었는지 확인합니다.
As an Admin
Teleport 관리자는 tctl을 사용하여 다른 사용자를 위한 Access Request를 생성할 수 있습니다:
$ tctl request create myuser --roles=editor
As a User
사용자는 tsh를 사용하여 Access Request를 생성하고 승인된 역할로 로그인할 수 있습니다:
$ tsh request create --roles=editor
Seeking request approval... (id: 8f77d2d1-2bbf-4031-a300-58926237a807)
From the Web UI
사용자는 Web UI에서 "Identity"로 이동하여 "Access Requests"를 클릭한 다음 "New Request"를 클릭하여 액세스를 요청할 수 있습니다:
