인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
접근 요청 알림 라우팅
Teleport의 접근 모니터링 규칙을 사용하면 접근 요청 알림을 여러 조건에 따라 플러그인으로 라우팅할 수 있습니다. 예를 들어, 어떤 역할이나 자원에 접근하는지 또는 요청하는 사용자가 누구인지에 따라 다른 Slack 채널로 알림을 전송할 수 있습니다.
작동 방식
접근 모니터링 규칙(AMR)은 특정 특성의 감사 이벤트와 일치하는 동적 Teleport 리소스이며 이러한 이벤트를 수신할 때 Teleport 플러그인에 조치를 취하도록 지시합니다. Teleport 플러그인은 Teleport Auth 서비스에 연결되어 AMR을 수신 대기합니다. AMR이 플러그인과 일치하면, 플러그인은 AMR을 로드하고 이를 사용하여 수신 이벤트를 처리합니다.
플러그인은 서로 별도로 AMR 처리 로직을 구현합니다. 현재, 접근 모니터링 규칙을 지원하는 호스팅된 플러그인의 하위 집합만이 이 규칙을 아직 지원하고 있습니다. 나머지 호스팅 플러그인에 대한 지원을 확장하고 있는 중입니다. 새로운 플러그인에 대한 소식을 알려면 Teleport changelog를 주목해 주시기 바랍니다.
전제 조건
-
관리형 Teleport Enterprise 계정.
-
tctl
관리 도구와tsh
클라이언트 도구 버전 >= 17.0.0-dev.설치된 도구를 확인하려면 다음 명령어를 실행하세요:
tctl versionTeleport Enterprise v17.0.0-dev go1.22
tsh versionTeleport v17.0.0-dev go1.22
이러한 도구를 다운로드하려면 적절한 설치 지침을 따라 주시기 바랍니다.
-
접근 모니터링 규칙을 지원하는 Teleport 접근 플러그인이 최소한 하나는 등록되어 있어야 합니다.
-
연결이 가능한지 확인하기 위해
tsh login
으로 로그인한 다음, 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오.예를 들어:
tsh login --proxy=teleport.example.com --user=email@example.comtctl status클러스터 teleport.example.com
버전 17.0.0-dev
CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
클러스터에 연결할 수 있고
tctl status
명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 후속tctl
명령어를 실행할 수 있습니다.
자신의 Teleport 클러스터를 호스팅하는 경우, Teleport Auth Service를 호스팅하는 컴퓨터에서 전체 권한으로tctl
명령어를 실행할 수도 있습니다.
1/2단계. 접근 모니터링 규칙 만들기
접근 요청 알림 규칙을 정의하는 방법은 두 가지입니다:
- 웹 UI 대화상자를 사용.
- 규칙 정의를 포함하는 YAML 리소스 파일 생성.
웹 UI를 통해 접근 모니터링 규칙 만들기
웹 UI를 통해 접근 모니터링 규칙을 만들려면, 먼저
접근 요청 페이지로 이동하여 알림 라우팅 규칙 보$1
를 클릭합니다.
그런 다음 알림 규칙 만들$1
를 클릭합니다.
접근 모니터링 규칙 기반 라우팅을 지원하는 플러그인이 등록되어 있지 않은 경우, 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
을 사용하여 생성할 수 있습니다.
접근 모니터링 규칙에서는 여러 수신자를 지정할 수 있습니다. 규칙의 조건 필드는 규칙이 적용되기를 원하는 조건을 정의하는 프레디케이트 표현식으로 설정됩니다.
현재 지원되는 접근 요청의 필드는 다음과 같습니다
필드 | 설명 |
---|---|
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 | 요청의 만료 시간. |
접근 모니터링 규칙의 조건에서 사용되는 프레디케이트 표현식은 true 또는 false로 평가되어야 합니다.
조건 필드의 몇 가지 예시 값과 그 사용 가능성입니다.
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 채널을 확인하여 알림이 전송되었는지 확인합니다.
Teleport 관리자는 tctl
을 사용하여 다른 사용자에 대한 액세스 요청을 생성할 수 있습니다:
tctl request create myuser --roles=editor
사용자는 tsh
를 사용하여 액세스 요청을 생성하고 승인된 역할로 로그인할 수 있습니다:
tsh request create --roles=editor요청 승인 중... (id: 8f77d2d1-2bbf-4031-a300-58926237a807)
사용자는 "액세스 요청" 탭을 방문하고 "새 요청"을 클릭하여 웹 UI를 사용하여 액세스를 요청할 수 있습니다: