인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
ServiceNow를 통한 접근 요청
Teleport의 ServiceNow 통합을 통해 엔지니어는 사건을 신속하게 해결하기 위해 필요한 인프라에 접근할 수 있으며, 공격의 벡터가 될 수 있는 장기간의 관리자 권한을 부여하지 않습니다.
Teleport의 ServiceNow 통합을 통해 Teleport 접근 요청을 ServiceNow 사건으로 처리하고, 적절한 대기 팀에 알리고, Teleport를 통해 요청을 승인하거나 거부할 수 있습니다. 또한, 요청을 하는 사용자가 특정 대기 순서에 있는 경우, 접근 요청을 자동으로 승인하도록 플러그인을 구성할 수 있습니다.
이 가이드는 Teleport의 접근 요청 플러그인을 ServiceNow에 설정하는 방법에 대해 설명합니다.
사전 요구 사항
-
실행 중인 Teleport 클러스터. Teleport를 시작하려면 가입하여 무료 평가판을 이용해 보십시오.
-
tctl
관리자 도구 및tsh
클라이언트 도구.tctl
및tsh
다운로드에 대한 지침은 설치 를 방문하십시오.
- 'incident' 테이블을 읽고 쓸 수 있는 접근 권한이 있는 ServiceNow 계정.
- 연결이 가능한지 확인하기 위해
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/4단계. 서비스 생성
특정 사용자가 접근 요청을 생성할 때 사건을 생성하도록 ServiceNow 플러그인을 구성할 것입니다.
2/4단계. RBAC 리소스 정의
Teleport ServiceNow 플러그인은 Teleport Auth 서비스에서 접근 요청 이벤트를 수신하고, 이러한 이벤트를 기반으로 ServiceNow API와 상호작용하여 작동합니다.
접근 요청을 하기 전에 요청을 하는 사용자가 requester
역할을 가지고 있는지 확인하십시오.
플러그인이 자동 승인 플로우를 위해 확인해야 하는 ServiceNow 대기 순서가 무엇인지 알기 위해, 사용자를 확인하고자 하는 대기 순서는 요청하는 사용자의 역할 중 하나에 포함되어야 합니다. 이를 위해 아래의 예시처럼 teleport.dev/schedules
주석을 추가하십시오:
kind: role
version: v5
metadata:
name: YOUR_ROLE_NAME_HERE
spec:
allow:
request:
roles: ["editor"]
thresholds:
- approve: 1
deny: 1
annotations:
teleport.dev/schedules:
- YOUR_SERVICENOW_ROTA_ID_HERE
ServiceNow 대기 순서 ID를 가져오려면, 해당 대기 순서에 속하는 ServiceNow 그룹의 그룹 레코드로 이동하여 헤더를 마우스 오른쪽 버튼으로 클릭한 후 'Select copy sys_id'를 클릭하여 ID를 복사합니다.
그런 다음 ServiceNow 엔드포인트 /api/now/on_call_rota/workbench/group/{groupSysId}
를 사용하여 그룹의 대기 순서 정보를 가져옵니다. 응답에서 원하는 'rota'의 값을 선택합니다.
3/4단계. ServiceNow 플러그인 구성
현재 ServiceNow API에 연결하기 위해 플러그인이 사용할 ServiceNow 사용자가 있습니다. 이 사용자를 사용하도록 플러그인을 구성하려면 Management -> Integrations -> Enroll New Integration으로 이동하십시오.
플러그인은 사건 테이블을 읽고 쓸 수 있는 자격 증명이 필요합니다.
여기에 지정된 "Close Code"는 ServiceNow 사건을 해결할 때 사용될 것입니다. "Caller"는 요청하는 Teleport 사용자의 사용자 이름입니다. ("Caller" 필드는 같은 이름의 ServiceNow 사용자가 존재하는 경우에만 채워집니다.)
4/4단계. ServiceNow 플러그인 테스트
접근 요청 생성
Teleport 사용자 myuser
로 editor
역할에 대한 접근 요청을 생성합니다:
Teleport 관리자는 tctl
을 사용하여 다른 사용자에 대한 액세스 요청을 생성할 수 있습니다:
tctl request create myuser --roles=editor
사용자는 tsh
를 사용하여 액세스 요청을 생성하고 승인된 역할로 로그인할 수 있습니다:
tsh request create --roles=editor요청 승인 중... (id: 8f77d2d1-2bbf-4031-a300-58926237a807)
사용자는 "액세스 요청" 탭을 방문하고 "새 요청"을 클릭하여 웹 UI를 사용하여 액세스를 요청할 수 있습니다:
ServiceNow에서 접근 요청에 대한 정보가 포함된 새 사건을 확인할 수 있습니다.
요청자의 역할 주석에 ServiceNow 대기 순서가 지정된 경우, ServiceNow 플러그인은 요청자의 사용자 이름이 해당 대기 순서에서 현재 대기 중인 ServiceNow 사용자와 일치하는지를 확인하고 접근 요청을 승인합니다.
요청 해결
Access Request 메시지를 수신하면 링크를 클릭하여 Teleport를 방문하고 요청을 승인하거나 거부하십시오:
명령줄에서 Access Request를 검토할 수도 있습니다:
REQUEST_ID를 요청의 ID로 변경하십시오
tctl request approve REQUEST_IDtctl request deny REQUEST_ID
REQUEST_ID를 요청의 ID로 변경하십시오
tsh request review --approve REQUEST_IDtsh request review --deny REQUEST_ID