Infograb logo
접근 요청 알림 라우팅

Teleport의 접근 모니터링 규칙을 사용하면 접근 요청 알림을 여러 조건에 따라 플러그인으로 라우팅할 수 있습니다. 예를 들어, 어떤 역할이나 자원에 접근하는지 또는 요청하는 사용자가 누구인지에 따라 다른 Slack 채널로 알림을 전송할 수 있습니다.

작동 방식

접근 모니터링 규칙(AMR)은 특정 특성의 감사 이벤트와 일치하는 동적 Teleport 리소스이며 이러한 이벤트를 수신할 때 Teleport 플러그인에 조치를 취하도록 지시합니다. Teleport 플러그인은 Teleport Auth 서비스에 연결되어 AMR을 수신 대기합니다. AMR이 플러그인과 일치하면, 플러그인은 AMR을 로드하고 이를 사용하여 수신 이벤트를 처리합니다.

플러그인은 서로 별도로 AMR 처리 로직을 구현합니다. 현재, 접근 모니터링 규칙을 지원하는 호스팅된 플러그인의 하위 집합만이 이 규칙을 아직 지원하고 있습니다. 나머지 호스팅 플러그인에 대한 지원을 확장하고 있는 중입니다. 새로운 플러그인에 대한 소식을 알려면 Teleport changelog를 주목해 주시기 바랍니다.

전제 조건

  • 관리형 Teleport Enterprise 계정.

  • tctl 관리 도구와 tsh 클라이언트 도구 버전 >= 17.0.0-dev.

    설치된 도구를 확인하려면 다음 명령어를 실행하세요:

    tctl version

    Teleport Enterprise v17.0.0-dev go1.22


    tsh version

    Teleport v17.0.0-dev go1.22

    이러한 도구를 다운로드하려면 적절한 설치 지침을 따라 주시기 바랍니다.

  • 접근 모니터링 규칙을 지원하는 Teleport 접근 플러그인이 최소한 하나는 등록되어 있어야 합니다.

  • 연결이 가능한지 확인하기 위해 tsh login 으로 로그인한 다음, 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오.

    예를 들어:

    tsh login --proxy=teleport.example.com --user=email@example.com
    tctl 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를 사용하여 액세스를 요청할 수 있습니다:

Teleport 원문 보기