InfoGrab DocsInfoGrab Docs

Jira Access Request 플러그인 실행

요약

이 가이드는 Jira용 Teleport Access Request 플러그인을 설정하는 방법을 설명합니다. Teleport Enterprise Cloud에서는 Teleport가 the Jira integration를 대신 관리하며, Teleport 웹 UI에서 the Jira integration를 등록할 수 있습니다.

이 가이드는 Jira용 Teleport Access Request 플러그인을 설정하는 방법을 설명합니다. Teleport의 Jira 통합을 사용하면 Jira 이슈로 Access Request를 관리할 수 있습니다.

이 통합은 Teleport Cloud에서 호스팅됩니다

Teleport Enterprise Cloud에서는 Teleport가 the Jira integration를 대신 관리하며, Teleport 웹 UI에서 the Jira integration를 등록할 수 있습니다.

Teleport 웹 UI로 이동하여 왼쪽 사이드바에서 Add New를 클릭한 다음 Integration을 클릭하십시오:

Enroll an Access Request plugin

"Select Integration Type" 메뉴에서 사용할 통합의 타일을 클릭하십시오. 통합을 설정하는 방법에 대한 지침과 함께 통합을 구성하는 데 사용할 수 있는 양식이 있는 페이지가 표시됩니다.

작동 방식#

Teleport Jira 플러그인은 Jira 프로젝트 보드를 Teleport 클러스터에서 처리된 Access Request와 동기화합니다. Teleport 내에서 Access Request 상태를 변경하면 플러그인이 보드를 업데이트합니다. 보드에서 Access Request 상태를 업데이트하면, 플러그인이 실행하는 Jira 웹훅에 알림이 전송되어 Teleport의 Access Request를 수정합니다.

사전 요구사항#

  • 실행 중인 Teleport Enterprise 클러스터. Teleport를 시작하려면 무료 체험판에 가입하거나 데모 환경을 구성하세요.

  • tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Teleport 클러스터의 버전을 확인합니다. tctl and tsh clients는 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')"
      
    2. 사용 중인 플랫폼에 대한 지침에 따라 tctl and tsh clients를 설치합니다:

Mac

     `tctl` and `tsh` clients가 포함된, 서명된 Teleport macOS .pkg 설치 프로그램을 다운로드합니다:
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-${TELEPORT_VERSION?}.pkg
     ```

     Finder에서 `pkg` 파일을 더블 클릭하여 설치를 시작합니다.
 
     
Warning
       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
     ```
   

 

권장: Machine & Workload Identity를 구성하여 플러그인에 수명이 짧은 Teleport 자격 증명을 제공하십시오. 이 가이드를 따르기 전에, 인프라에서 tbot 바이너리를 실행하도록 Machine & Workload Identity 배포 가이드를 먼저 따르십시오.

  • 애플리케이션 및 웹훅을 생성할 권한이 있는 Jira 계정.

  • Jira 웹훅용 등록된 도메인 이름. Jira는 프로젝트 보드의 변경 사항을 웹훅에 알립니다.

  • Jira 플러그인을 실행할 환경. 다음 중 하나입니다:

    • 포트 808081이 열려 있고 호스트에 접근할 수 있는 수단(예: 워크스테이션에 SSH 포트가 노출된 OpenSSH)이 있는 Linux 가상 머신.
    • 클라우드 공급자를 통해 배포된 Kubernetes 클러스터. 이 가이드는 LoadBalancer 서비스를 통해 Jira 플러그인으로 트래픽을 허용하는 방법을 보여주므로, 환경이 이 유형의 서비스를 지원해야 합니다.
  • 플러그인이 실행하는 Jira 웹훅에 TLS 자격 증명을 제공하는 수단. TLS 인증서는 자체 서명이어서는 안 됩니다. 예를 들어, ACME 클라이언트를 사용하여 Let's Encrypt에서 웹훅의 TLS 자격 증명을 얻을 수 있습니다.

    • Linux 서버에서 플러그인을 실행하는 경우, 플러그인이 접근할 수 있는 디렉터리에 TLS 자격 증명을 제공해야 합니다.
    • Kubernetes에서 플러그인을 실행하는 경우, 플러그인이 읽을 수 있는 시크릿에 이 자격 증명을 써야 합니다. 이 가이드에서는 시크릿 이름이 teleport-plugin-jira-tls라고 가정합니다.

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/8단계. RBAC 리소스 정의#

Jira 플러그인을 설정하기 전에, Teleport 클러스터에서 Role Access Request를 활성화해야 합니다.

이 가이드에서는 내장 editor 역할을 요청할 수 있는 editor-requester 역할과, editor 역할에 대한 요청을 검토할 수 있는 editor-reviewer 역할을 정의합니다.

다음 내용으로 editor-request-rbac.yaml라는 파일을 생성합니다:

kind: role
version: v7
metadata:
  name: editor-reviewer
spec:
  allow:
    review_requests:
      roles: ['editor']
---
kind: role
version: v7
metadata:
  name: editor-requester
spec:
  allow:
    request:
      roles: ['editor']
      thresholds:
        - approve: 1
          deny: 1

정의한 역할을 생성합니다:

$ tctl create -f editor-request-rbac.yaml
role 'editor-reviewer' has been created
role 'editor-requester' has been created
Tip

Web UI를 사용하여 역할을 생성하고 편집할 수도 있습니다. Access -> Roles로 이동하여 Create New Role을 클릭하거나 편집할 기존 역할을 선택하십시오.

본인에게 editor-reviewer 역할을 할당하여, editor-requester 역할을 가진 사용자의 요청을 검토할 수 있도록 허용합니다.

인증 공급자에 맞는 적절한 명령을 실행하여 editor-reviewer 역할을 your Teleport user에게 할당하십시오:

Local User

  1. 로컬 사용자의 역할을 쉼표로 구분된 목록으로 가져옵니다:

    $ ROLES=$(tsh status -f json | jq -r '.active.roles | join(",")')
    
  2. 로컬 사용자를 편집하여 새 역할을 추가합니다:

    $ tctl users update $(tsh status -f json | jq -r '.active.username') \
      --set-roles "${ROLES?},editor-reviewer"
    
  3. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

GitHub

  1. 텍스트 편집기에서 github 인증 커넥터를 엽니다:

    $ tctl edit github/github
    
  2. github 커넥터를 편집하여 teams_to_roles 섹션에 editor-reviewer을 추가합니다.

    이 역할에 매핑해야 할 팀은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 팀은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 팀이어야 합니다.

    다음은 예시입니다:

      teams_to_roles:
        - organization: octocats
          team: admins
          roles:
            - access
    +       - editor-reviewer
    
  3. 편집기에서 파일을 저장하고 닫아 변경 사항을 적용합니다.

  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

SAML

  1. saml 구성 리소스를 가져옵니다:

    $ tctl get --with-secrets saml/mysaml > saml.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 saml.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 saml.yaml 파일을 삭제해야 합니다.

  2. saml.yaml을 편집하여 attributes_to_roles 섹션에 editor-reviewer을 추가합니다.

    이 역할에 매핑해야 할 속성은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      attributes_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - editor-reviewer
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f saml.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

OIDC

  1. oidc 구성 리소스를 가져옵니다:

    $ tctl get oidc/myoidc --with-secrets > oidc.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 oidc.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 oidc.yaml 파일을 삭제해야 합니다.

  2. oidc.yaml을 편집하여 claims_to_roles 섹션에 editor-reviewer을 추가합니다.

    이 역할에 매핑해야 할 클레임은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      claims_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - editor-reviewer
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f oidc.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

editor-requester 역할을 가진 myuser라는 사용자를 생성합니다. 이 사용자는 editor 역할을 요청하지 않으면 클러스터 구성을 편집할 수 없습니다:

$ tctl users add myuser --roles=editor-requester 

tctl은 초대 URL을 터미널에 출력합니다. 해당 URL을 방문하여 myuser로 처음 로그인하고, Teleport 클러스터에 구성된 대로 자격 증명을 등록합니다.

이 가이드의 뒷부분에서는 myusereditor 역할을 요청하도록 하여, Teleport 플러그인을 사용해 요청을 검토할 수 있습니다.

2/8단계. Teleport Jira 플러그인 사용자 정의#

플러그인에 필요한 권한은 사전 설정된 access-plugin 역할에 구성되어 있습니다. 플러그인에 대한 자격 증명을 생성하려면, Machine ID 봇 사용자 또는 일반 Teleport 사용자를 정의합니다.

아직 Machine ID 봇을 설정하지 않았다면, 인프라에서 tbot 바이너리를 실행하려면 배포 가이드를 참고하십시오.

다음으로, Machine ID 봇이 access-plugin 역할에 대한 자격 증명을 생성할 수 있도록 허용합니다. tctl을 사용하여 이 작업을 수행할 수 있으며, my-bot을 사용자의 봇 이름으로 바꾸십시오:

$ tctl bots update my-bot --add-roles access-plugin

모든 Teleport 사용자와 마찬가지로, Teleport Auth Service는 수명이 짧은 TLS 자격 증명을 발급하여 access-plugin 사용자를 인증합니다. 이 경우에는 access-plugin 역할과 사용자를 가장(impersonate) 하여 자격 증명을 수동으로 요청해야 합니다.

자체 호스팅 Teleport Enterprise 배포를 실행 중이고 Auth Service 호스트에서 tctl을 사용하는 경우, 이미 가장(impersonation) 권한을 보유하고 있습니다.

사용자에게 access-plugin에 대한 가장 권한을 부여하려면, 다음 YAML 문서를 access-plugin-impersonator.yaml라는 파일에 추가하여 access-plugin이라는 사용자와 access-plugin-impersonator라는 역할을 정의합니다:

kind: user
metadata:
  name: access-plugin
spec:
  roles: ['access-plugin']
version: v2
---
kind: role
version: v7
metadata:
  name: access-plugin-impersonator
spec:
  allow:
    impersonate:
      roles:
      - access-plugin
      users:
      - access-plugin

사용자와 역할을 생성합니다:

$ tctl create -f access-plugin-impersonator.yaml
user "access-plugin" has been created
role "access-plugin-impersonator" has been created
Tip

Web UI를 사용하여 역할을 생성하고 편집할 수도 있습니다. Access -> Roles로 이동하여 Create New Role을 클릭하거나 편집할 기존 역할을 선택하십시오.

access-plugin 역할과 사용자에 대한 자격 증명을 생성하는 데 사용할 사용자에게 이 역할을 할당합니다:

인증 공급자에 맞는 적절한 명령을 실행하여 access-plugin-impersonator 역할을 your Teleport user에게 할당하십시오:

Local User

  1. 로컬 사용자의 역할을 쉼표로 구분된 목록으로 가져옵니다:

    $ ROLES=$(tsh status -f json | jq -r '.active.roles | join(",")')
    
  2. 로컬 사용자를 편집하여 새 역할을 추가합니다:

    $ tctl users update $(tsh status -f json | jq -r '.active.username') \
      --set-roles "${ROLES?},access-plugin-impersonator"
    
  3. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

GitHub

  1. 텍스트 편집기에서 github 인증 커넥터를 엽니다:

    $ tctl edit github/github
    
  2. github 커넥터를 편집하여 teams_to_roles 섹션에 access-plugin-impersonator을 추가합니다.

    이 역할에 매핑해야 할 팀은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 팀은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 팀이어야 합니다.

    다음은 예시입니다:

      teams_to_roles:
        - organization: octocats
          team: admins
          roles:
            - access
    +       - access-plugin-impersonator
    
  3. 편집기에서 파일을 저장하고 닫아 변경 사항을 적용합니다.

  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

SAML

  1. saml 구성 리소스를 가져옵니다:

    $ tctl get --with-secrets saml/mysaml > saml.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 saml.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 saml.yaml 파일을 삭제해야 합니다.

  2. saml.yaml을 편집하여 attributes_to_roles 섹션에 access-plugin-impersonator을 추가합니다.

    이 역할에 매핑해야 할 속성은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      attributes_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - access-plugin-impersonator
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f saml.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

OIDC

  1. oidc 구성 리소스를 가져옵니다:

    $ tctl get oidc/myoidc --with-secrets > oidc.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 oidc.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 oidc.yaml 파일을 삭제해야 합니다.

  2. oidc.yaml을 편집하여 claims_to_roles 섹션에 access-plugin-impersonator을 추가합니다.

    이 역할에 매핑해야 할 클레임은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      claims_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - access-plugin-impersonator
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f oidc.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

이제 access-plugin 역할과 사용자에 대한 서명된 인증서를 생성할 수 있게 됩니다.

3/8단계. 액세스 플러그인 ID 내보내기#

플러그인에 Teleport ID 파일 접근 권한을 부여합니다. 유출 시 위험도가 낮은 단기 ID 파일을 생성하기 위해 Machine ID를 사용하는 것을 권장하지만, 데모 배포에서는 tctl로 장기 ID 파일을 생성할 수 있습니다:

the plugin에서 필요로 하는 자격 증명을 생성하는 output으로 tbot을 구성하세요. the plugin가 Teleport API에 접근하므로, 사용해야 할 올바른 output 유형은 identity입니다.

이 가이드에서는 directory destination을 사용합니다. 이는 이러한 자격 증명을 디스크의 지정된 디렉터리에 기록합니다. 이 디렉터리가 tbot이 실행되는 Linux 사용자에 의해 쓰기 가능하고, the plugin가 실행되는 Linux 사용자에 의해 읽기 가능한지 확인하세요.

identity output을 추가하도록 tbot 구성을 수정하세요.

Linux 서버에서 tbot을 실행하는 경우, directory output을 사용하여 identity 파일을 /opt/machine-id 디렉터리에 기록하세요:

services:
- type: identity
  destination:
    type: directory
    # For this guide, /opt/machine-id is used as the destination directory.
    # You may wish to customize this. Multiple outputs cannot share the same
    # destination.
    path: /opt/machine-id

Kubernetes에서 tbot을 실행하는 경우, identity 파일을 대신 Kubernetes secret에 기록하세요:

services:
  - type: identity
    destination:
      type: kubernetes_secret
      name: teleport-plugin-jira-identity

tbot을 백그라운드 서비스로 운영하는 경우, 재시작하세요. tbot을 one-shot 모드로 실행하는 경우, 지금 실행하세요.

이제 /opt/machine-id 아래에 identity 파일 또는 teleport-plugin-jira-identity이라는 이름의 Kubernetes secret이 보일 것입니다. 여기에는 the plugin가 Teleport Auth Service에 인증하는 데 필요한 개인 키와 서명된 인증서가 담겨 있습니다.

모든 Teleport 사용자와 마찬가지로, access-plugin가 Teleport 클러스터에 연결하려면 서명된 자격 증명이 필요합니다. tctl auth sign 명령을 사용하여 이러한 자격 증명을 요청합니다.

다음 tctl auth sign 명령은 access-plugin 사용자를 impersonate하여 서명된 자격 증명을 생성하고, 로컬 디렉터리에 identity 파일을 작성합니다:

$ tctl auth sign --user=access-plugin --out=identity

plugin는 TLS를 통해 Teleport Auth Service의 gRPC 엔드포인트에 연결합니다.

identity 파일 identity에는 TLS 자격 증명과 SSH 자격 증명이 모두 포함됩니다. plugin는 SSH 자격 증명을 사용하여 Proxy Service에 연결하며, Proxy Service는 Auth Service로의 리버스 터널 연결을 설정합니다. plugin는 이 리버스 터널과 TLS 자격 증명을 함께 사용하여 Auth Service의 gRPC 엔드포인트에 연결합니다.

Certificate Lifetime

기본적으로 tctl auth sign은 비교적 짧은 수명을 가진 인증서를 생성합니다. 프로덕션 배포의 경우, 플러그인의 인증서를 프로그래밍 방식으로 발급하고 갱신하기 위해 Machine & Workload Identity를 사용하는 것을 권장합니다. 자세히 알아보려면 Machine & Workload Identity 시작 가이드를 참조하세요.

기존 자격 증명보다 더 오래 유효한 인증서는 발급할 수 없다는 점에 유의하세요. 예를 들어, 1000시간 TTL을 가진 인증서를 발급하려면 최소 1000시간 동안 유효한 세션으로 로그인되어 있어야 합니다. 즉, 사용자는 최소 1000시간(60000분)의 max_session_ttl을 허용하는 역할을 가지고 있어야 하며, 로그인 시 --ttl을 지정해야 합니다:

$ tsh login --proxy=teleport.example.com --ttl=60060

Linux 서버에서 plugin를 실행하는 경우, plugin의 인증서 파일을 저장할 데이터 디렉터리를 생성합니다:

$ sudo mkdir -p /var/lib/teleport/plugins/api-credentials
$ sudo mv identity /var/lib/teleport/plugins/api-credentials

Kubernetes에서 plugin를 실행하는 경우, Teleport identity 파일이 포함된 Kubernetes secret을 생성합니다:

$ kubectl -n teleport create secret generic --from-file=identity teleport-plugin-jira-identity

Teleport 자격 증명이 만료되면 tctl auth sign 명령을 다시 실행하여 갱신해야 합니다.

4/8단계. Teleport Jira 플러그인 설치#

아래 지침에 따라 Teleport Jira 플러그인을 설치합니다. 플러그인을 호스트(예: EC2 인스턴스)에 배포하는지 Kubernetes 클러스터에 배포하는지에 따라 다릅니다.

Teleport Jira 플러그인은 Jira와 Teleport Proxy Service(또는 Teleport Enterprise Cloud 테넌트) 모두에 접근할 수 있는 호스트 또는 Kubernetes 클러스터에서 실행해야 합니다.

Download

Access Request Plugin은 amd64arm64 Linux 바이너리로 다운로드할 수 있습니다. ARCH를 필요한 버전으로 교체하세요.

$ curl -L -O https://cdn.teleport.dev/teleport-access-jira-v(=teleport.plugin.version=)-linux-ARCH-bin.tar.gz
$ tar -xzf teleport-access-jira-v(=teleport.plugin.version=)-linux-ARCH-bin.tar.gz
$ cd teleport-access-jira
$ sudo ./install

바이너리가 설치되었는지 확인합니다:

$ teleport-jira version
teleport-jira v(=teleport.plugin.version=) git:teleport-jira-v(=teleport.plugin.version=)-fffffffff go(=teleport.golang=)

Docker Image

$ docker pull public.ecr.aws/gravitational/teleport-plugin-jira:(=teleport.plugin.version=)

다음 명령을 실행하여 플러그인이 설치되었는지 확인합니다:

$ docker run public.ecr.aws/gravitational/teleport-plugin-jira:(=teleport.plugin.version=) version
teleport-jira v(=teleport.plugin.version=) (=teleport.golang=)

사용 가능한 태그 목록은 Amazon ECR Public Gallery를 참조하세요.

From Source

소스에서 설치하려면 gitgo가 설치되어 있어야 합니다. Go가 설치되어 있지 않다면 Go downloads page를 방문하세요.

$ git clone https://github.com/gravitational/teleport -b branch/v(=teleport.major_version=)
$ cd teleport/integrations/access/jira
$ git checkout v(=teleport.plugin.version=)
$ make build/teleport-jira

teleport-jira 바이너리를 PATH로 이동합니다.

바이너리가 설치되었는지 확인합니다:

$ teleport-jira version
teleport-jira v(=teleport.plugin.version=) git:teleport-jira-v(=teleport.plugin.version=)-fffffffff go(=teleport.golang=)

Helm Chart

Helm이 Teleport Helm 리포지토리에 호스팅된 차트를 설치할 수 있도록 허용합니다:

$ helm repo add teleport (=teleport.helm_repo_url=)

원격 리포지토리에서 차트 캐시를 업데이트합니다:

$ helm repo update

5/8단계. Jira 프로젝트 설정#

이 섹션에서는 Teleport 사용자가 Access Request를 생성하거나 업데이트할 때 Teleport 플러그인이 수정할 수 있는 Jira 프로젝트를 생성합니다. 그런 다음 플러그인은 Jira 웹훅을 사용하여 보드 상태를 모니터링하고 생성한 티켓의 변경 사항에 응답합니다.

Access Request 관리를 위한 프로젝트 생성#

Jira의 상단 탐색 바에서 프로젝트 -> 프로젝트 생성을 클릭합니다. 템플릿으로 Kanban을 선택한 다음 템플릿 사용을 클릭합니다. 회사 관리형 프로젝트 선택을 클릭합니다.

프로젝트 이름을 입력할 수 있는 화면이 표시됩니다. 이 가이드에서는 프로젝트가 "Teleport Access Requests"라고 가정하며, 기본적으로 키 TAR이 할당됩니다.

"저장소, 문서 등 연결"이 해제되어 있는지 확인한 다음 프로젝트 생성을 클릭합니다.

새 보드의 오른쪽 상단에 있는 세 점 메뉴에서 보드 설정을 클릭한 다음 을 클릭합니다. 다음 네 가지 상태가 포함되도록 보드의 상태를 편집합니다:

  1. Pending
  2. Approved
  3. Denied
  4. Expired

각 상태와 동일한 이름의 열을 생성합니다. 결과는 다음과 같아야 합니다:

Jira 보드 설정

Warning

프로젝트 보드에 이 열들이 (그리고 이 열들만) 없고 각각 동일한 이름의 상태가 없으면, Jira Access Request 플러그인이 예상치 못한 방식으로 동작합니다. 다른 모든 열과 상태를 제거하세요.

보드로 돌아가기를 클릭하여 변경 사항을 검토합니다.

Jira API 토큰 가져오기#

Access Request 플러그인이 Jira 프로젝트를 변경하는 데 사용할 API 토큰을 얻습니다. 화면 오른쪽 상단의 톱니바퀴 메뉴를 클릭한 다음 Atlassian 계정 설정을 클릭합니다. 보안 > API 토큰 생성 및 관리 > API 토큰 생성을 클릭합니다.

레이블을 선택하고 복사를 클릭합니다. 나중에 이 가이드에서 Jira 플러그인을 설정할 때 사용할 수 있도록 API 토큰을 편리한 위치(예: 비밀번호 관리자 또는 로컬 텍스트 문서)에 붙여넣습니다.

Jira 웹훅 설정#

Teleport Jira 플러그인이 프로젝트를 관리하는 데 사용할 API 키를 생성했으므로, 웹훅을 생성하여 프로젝트가 업데이트될 때 Jira가 Teleport Jira 플러그인에 알릴 수 있도록 활성화합니다.

Jira로 돌아갑니다. 화면 오른쪽 상단의 톱니바퀴 메뉴를 클릭합니다. 시스템 > WebHooks > WebHook 생성을 클릭합니다.

"Name" 필드에 "Teleport Access Request Plugin"을 입력합니다. "URL" 필드에 이전에 플러그인을 위해 생성한 도메인 이름과 포트 8081을 입력합니다.

"Name" 필드에 "Teleport Access Request Plugin"을 입력합니다. "URL" 필드에 이전에 플러그인을 위해 생성한 도메인 이름과 포트 443을 입력합니다.

웹훅은 이슈가 생성, 업데이트 또는 삭제될 때만 알림을 받아야 합니다. 다른 모든 박스는 비워 둘 수 있습니다.

생성을 클릭합니다.

6/8단계. Jira Access Request 플러그인 설정#

이전에 Jira 플러그인이 Teleport와 Jira API에 연결하는 데 사용하는 자격 증명을 가져왔습니다. 이제 이 자격 증명을 사용하고 이전에 설정한 주소에서 Jira 웹훅을 실행하도록 플러그인을 설정합니다.

설정 파일 생성#

Teleport Jira 플러그인은 TOML 형식의 설정 파일을 사용합니다. 다음 명령을 실행하여 기본 설정을 생성합니다 (플러그인은 설정 파일이 /etc/teleport-jira.toml에 없으면 실행되지 않습니다):

$ teleport-jira configure | sudo tee /etc/teleport-jira.toml > /dev/null

결과는 아래와 같은 설정 파일이어야 합니다:

<div class="admonition note"><div class="admonition-title">Note</div><p>이 섹션의 내용은 원문 문서를 참조하세요. (<code>teleport-jira-cloud.toml</code>)</p></div>

Jira 플러그인의 Helm 차트는 YAML 값 파일을 사용하여 플러그인을 설정합니다. 로컬 워크스테이션에서 다음 예시를 기반으로 teleport-jira-helm.yaml 파일을 생성합니다:

<div class="admonition note"><div class="admonition-title">Note</div><p>이 섹션의 내용은 원문 문서를 참조하세요. (<code>teleport-jira-helm-cloud.yaml</code>)</p></div>

설정 파일 편집#

Teleport Jira 플러그인을 위해 생성된 설정 파일을 열고 다음 필드를 업데이트합니다:

[teleport]

Jira 플러그인은 이 섹션을 사용하여 Teleport 클러스터에 연결합니다:

Executable or Docker

addr: Teleport Proxy Service 또는 Teleport Enterprise Cloud 계정의 호스트명과 HTTPS 포트를 입력합니다(예: teleport.example.com:443 또는 mytenant.teleport.sh:443).

identity: 앞서 내보낸 identity 파일의 경로를 입력합니다.

client_key, client_crt, root_cas: 이 구성에서는 사용하지 않으므로 주석 처리합니다.

Helm Chart

address: Teleport Proxy Service 또는 Teleport Enterprise Cloud 테넌트의 호스트명과 HTTPS 포트를 입력합니다(예: teleport.example.com:443 또는 mytenant.teleport.sh:443).

identitySecretName: identitySecretName 필드에 앞서 생성한 Kubernetes secret의 이름을 입력합니다.

identitySecretPath: identitySecretPath 필드에 Kubernetes secret 내 identity 파일의 경로를 입력합니다. 위 지침을 따랐다면 identity가 됩니다.

Linux 서버에서 실행되는 tbot 바이너리를 사용하여 플러그인에 자격 증명을 제공하는 경우, identity 값이 tbot이 생성하도록 구성한 신원 파일의 경로인 /opt/machine-id/identity와 동일한지 확인하십시오.

플러그인이 만료된 자격 증명으로 Teleport Auth Service에 연결을 시도하지 않도록 신원 파일을 주기적으로 다시 로드하도록 플러그인을 구성하십시오.

구성의 teleport 섹션에 다음을 추가하십시오:

refresh_identity = true

jira#

url: Jira 테넌트의 URL, 예: https://[your-jira].atlassian.net.

username: API 토큰을 생성할 때 로그인한 사용자 이름.

api_token: 이전에 가져온 Jira API 토큰.

project: 프로젝트 키(이 경우 TAR).

issue_typeTask로 유지하거나 필드를 제거할 수 있습니다. Task가 기본값입니다.

http#

[http] 설정 블록은 플러그인의 웹훅 작동 방식을 설명합니다.

listen_addr는 플러그인이 수신 대기하는 주소를 나타내며 기본값은 :8081입니다. 가이드에서 권장한 대로 플러그인 호스트에서 포트 8081을 열었다면 이 옵션을 설정하지 않아도 됩니다.

public_addr는 웹훅의 공개 주소입니다. 이전에 생성한 DNS A 레코드에 추가한 도메인 이름입니다.

https_key_filehttps_cert_file은 이 가이드를 따르기 전에 얻은 개인 키 및 인증서에 해당합니다. example.com을 이전에 플러그인을 위해 생성한 도메인 이름으로 지정하여 다음 값을 사용합니다:

  • https_key_file:

    $ /var/teleport-jira/tls/certificates/acme-v02.api.letsencrypt.org-directory/example.com/example.com.key
    
  • https_cert_file:

    $ /var/teleport-jira/tls/certificates/acme-v02.api.letsencrypt.org-directory/example.com/example.com.crt
    

jira#

url: Jira 테넌트의 URL, 예: https://[your-jira].atlassian.net.

username: API 토큰을 생성할 때 로그인한 사용자 이름.

apiToken: 이전에 가져온 API 토큰.

project: 프로젝트 키(이 경우 TAR).

issueTypeTask로 유지하거나 필드를 제거할 수 있습니다. Task가 기본값입니다.

http#

http 설정 블록은 플러그인의 웹훅 작동 방식을 설명합니다.

publicAddress: 웹훅의 공개 주소. 웹훅을 위해 생성한 도메인 이름입니다. (나중에 이 도메인 이름의 DNS 레코드를 생성합니다.)

tlsFromSecret: 웹훅에 대한 TLS 자격 증명을 포함하는 Kubernetes 시크릿의 이름. teleport-plugin-jira-tls를 사용합니다.

7/8단계. Jira 플러그인 실행#

설정을 완료한 후, 이제 플러그인을 실행하고 Jira 기반 Access Request 흐름을 테스트할 수 있습니다:

Linux 호스트에서 다음을 실행합니다:

$ sudo teleport-jira start
INFO   Starting Teleport Jira Plugin 12.1.1: jira/app.go:112
INFO   Plugin is ready jira/app.go:142

Teleport Jira 플러그인의 Helm 차트를 설치합니다:

$ helm install teleport-plugin-jira teleport/teleport-plugin-jira \
  --namespace teleport \
  --values values.yaml \
  --version (=teleport.plugin.version=)

웹훅의 도메인 이름을 Jira 플러그인 Helm 차트가 생성한 로드 밸런서의 주소와 연결하는 DNS 레코드를 생성합니다.

로드 밸런서에 도메인 이름이 있는지 IP 주소가 있는지 확인합니다:

$ kubectl -n teleport get services/teleport-plugin-jira
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP                          PORT(S)                      AGE
teleport-plugin-jira   LoadBalancer   10.100.135.75   abc123.us-west-2.elb.amazonaws.com   80:30625/TCP,443:31672/TCP   134m

EXTERNAL-IP 필드에 도메인 이름이 있으면, 웹훅의 도메인 이름이 로드 밸런서의 도메인 이름을 가리키는 CNAME 레코드를 생성합니다.

EXTERNAL-IP 필드의 값이 IP 주소인 경우, DNS A 레코드를 대신 생성합니다.

그런 다음 Jira 플러그인에 대한 서명된 TLS 자격 증명을 생성할 수 있으며, 플러그인은 이를 Kubernetes 시크릿에 쓸 것으로 예상합니다.

웹훅 상태 확인#

/status 엔드포인트로 GET 요청을 보내 Jira 웹훅이 서비스를 시작했는지 확인합니다. 웹훅이 실행 중이면 문서 본문 없이 200 상태 코드를 반환합니다:

$ curl -v https://example.com:8081/status 2>&1 | grep "^< HTTP/2"
< HTTP/2 200
$ curl -v https://example.com:443/status 2>&1 | grep "^< HTTP/2"
< HTTP/2 200

Access Request 생성#

이전에 생성한 myuser 사용자로 클러스터에 로그인하고 Access Request를 생성합니다:

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"를 클릭하여 액세스를 요청할 수 있습니다:

Web UI를 사용하여 Access Request 생성

요청을 생성하면 Access Requests 보드의 "Pending" 열에 새 작업이 표시됩니다:

새 Access Request

요청 해결#

새 Access Request에 해당하는 카드를 "Denied" 열로 이동한 다음 카드를 클릭하고 Teleport로 이동합니다. Access Request가 거부된 것을 확인할 수 있습니다.

Access Request 감사

Jira 프로젝트 보드에 접근할 수 있는 모든 사람이 보드에 반영된 Access Request의 상태를 수정할 수 있습니다. Teleport 감사 로그를 확인하여 올바른 사용자가 올바른 요청을 검토하고 있는지 확인하세요.

Access Request 검토를 감사할 때, Teleport Web UI에서 Access Request Reviewed 유형의 이벤트를 확인합니다.

8/8단계. systemd 설정#

Tip

이 단계는 Linux 머신에서 Teleport Jira 플러그인을 실행하는 경우에만 적용됩니다.

프로덕션 환경에서는 systemd와 같은 init 시스템을 통해 Teleport 플러그인 데몬을 시작하는 것을 권장합니다. systemd를 위한 권장 Teleport 플러그인 서비스 유닛 파일은 다음과 같습니다:

<div class="admonition note"><div class="admonition-title">Note</div><p>이 섹션의 내용은 원문 문서를 참조하세요. (<code>teleport-jira.service</code>)</p></div>

이를 teleport-jira.service 또는 systemd가 지원하는 다른 유닛 파일 로드 경로에 저장합니다.

$ sudo systemctl enable teleport-jira
$ sudo systemctl start teleport-jira

문제 해결#

Note

이 섹션의 내용은 원문 문서를 참조하세요. (access-plugin-troubleshooting.mdx)

Jira Access Request 플러그인 실행

Teleport v18.9
원문 보기
요약

이 가이드는 Jira용 Teleport Access Request 플러그인을 설정하는 방법을 설명합니다. Teleport Enterprise Cloud에서는 Teleport가 the Jira integration를 대신 관리하며, Teleport 웹 UI에서 the Jira integration를 등록할 수 있습니다.

이 가이드는 Jira용 Teleport Access Request 플러그인을 설정하는 방법을 설명합니다. Teleport의 Jira 통합을 사용하면 Jira 이슈로 Access Request를 관리할 수 있습니다.

이 통합은 Teleport Cloud에서 호스팅됩니다

Teleport Enterprise Cloud에서는 Teleport가 the Jira integration를 대신 관리하며, Teleport 웹 UI에서 the Jira integration를 등록할 수 있습니다.

Teleport 웹 UI로 이동하여 왼쪽 사이드바에서 Add New를 클릭한 다음 Integration을 클릭하십시오:

Enroll an Access Request plugin

"Select Integration Type" 메뉴에서 사용할 통합의 타일을 클릭하십시오. 통합을 설정하는 방법에 대한 지침과 함께 통합을 구성하는 데 사용할 수 있는 양식이 있는 페이지가 표시됩니다.

작동 방식#

Teleport Jira 플러그인은 Jira 프로젝트 보드를 Teleport 클러스터에서 처리된 Access Request와 동기화합니다. Teleport 내에서 Access Request 상태를 변경하면 플러그인이 보드를 업데이트합니다. 보드에서 Access Request 상태를 업데이트하면, 플러그인이 실행하는 Jira 웹훅에 알림이 전송되어 Teleport의 Access Request를 수정합니다.

사전 요구사항#

  • 실행 중인 Teleport Enterprise 클러스터. Teleport를 시작하려면 무료 체험판에 가입하거나 데모 환경을 구성하세요.

  • tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Teleport 클러스터의 버전을 확인합니다. tctl and tsh clients는 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')"
      
    2. 사용 중인 플랫폼에 대한 지침에 따라 tctl and tsh clients를 설치합니다:

Mac

     `tctl` and `tsh` clients가 포함된, 서명된 Teleport macOS .pkg 설치 프로그램을 다운로드합니다:
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-${TELEPORT_VERSION?}.pkg
     ```

     Finder에서 `pkg` 파일을 더블 클릭하여 설치를 시작합니다.
 
     
Warning
       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
     ```
   

 

권장: Machine & Workload Identity를 구성하여 플러그인에 수명이 짧은 Teleport 자격 증명을 제공하십시오. 이 가이드를 따르기 전에, 인프라에서 tbot 바이너리를 실행하도록 Machine & Workload Identity 배포 가이드를 먼저 따르십시오.

  • 애플리케이션 및 웹훅을 생성할 권한이 있는 Jira 계정.

  • Jira 웹훅용 등록된 도메인 이름. Jira는 프로젝트 보드의 변경 사항을 웹훅에 알립니다.

  • Jira 플러그인을 실행할 환경. 다음 중 하나입니다:

    • 포트 808081이 열려 있고 호스트에 접근할 수 있는 수단(예: 워크스테이션에 SSH 포트가 노출된 OpenSSH)이 있는 Linux 가상 머신.
    • 클라우드 공급자를 통해 배포된 Kubernetes 클러스터. 이 가이드는 LoadBalancer 서비스를 통해 Jira 플러그인으로 트래픽을 허용하는 방법을 보여주므로, 환경이 이 유형의 서비스를 지원해야 합니다.
  • 플러그인이 실행하는 Jira 웹훅에 TLS 자격 증명을 제공하는 수단. TLS 인증서는 자체 서명이어서는 안 됩니다. 예를 들어, ACME 클라이언트를 사용하여 Let's Encrypt에서 웹훅의 TLS 자격 증명을 얻을 수 있습니다.

    • Linux 서버에서 플러그인을 실행하는 경우, 플러그인이 접근할 수 있는 디렉터리에 TLS 자격 증명을 제공해야 합니다.
    • Kubernetes에서 플러그인을 실행하는 경우, 플러그인이 읽을 수 있는 시크릿에 이 자격 증명을 써야 합니다. 이 가이드에서는 시크릿 이름이 teleport-plugin-jira-tls라고 가정합니다.

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/8단계. RBAC 리소스 정의#

Jira 플러그인을 설정하기 전에, Teleport 클러스터에서 Role Access Request를 활성화해야 합니다.

이 가이드에서는 내장 editor 역할을 요청할 수 있는 editor-requester 역할과, editor 역할에 대한 요청을 검토할 수 있는 editor-reviewer 역할을 정의합니다.

다음 내용으로 editor-request-rbac.yaml라는 파일을 생성합니다:

kind: role
version: v7
metadata:
  name: editor-reviewer
spec:
  allow:
    review_requests:
      roles: ['editor']
---
kind: role
version: v7
metadata:
  name: editor-requester
spec:
  allow:
    request:
      roles: ['editor']
      thresholds:
        - approve: 1
          deny: 1

정의한 역할을 생성합니다:

$ tctl create -f editor-request-rbac.yaml
role 'editor-reviewer' has been created
role 'editor-requester' has been created
Tip

Web UI를 사용하여 역할을 생성하고 편집할 수도 있습니다. Access -> Roles로 이동하여 Create New Role을 클릭하거나 편집할 기존 역할을 선택하십시오.

본인에게 editor-reviewer 역할을 할당하여, editor-requester 역할을 가진 사용자의 요청을 검토할 수 있도록 허용합니다.

인증 공급자에 맞는 적절한 명령을 실행하여 editor-reviewer 역할을 your Teleport user에게 할당하십시오:

Local User

  1. 로컬 사용자의 역할을 쉼표로 구분된 목록으로 가져옵니다:

    $ ROLES=$(tsh status -f json | jq -r '.active.roles | join(",")')
    
  2. 로컬 사용자를 편집하여 새 역할을 추가합니다:

    $ tctl users update $(tsh status -f json | jq -r '.active.username') \
      --set-roles "${ROLES?},editor-reviewer"
    
  3. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

GitHub

  1. 텍스트 편집기에서 github 인증 커넥터를 엽니다:

    $ tctl edit github/github
    
  2. github 커넥터를 편집하여 teams_to_roles 섹션에 editor-reviewer을 추가합니다.

    이 역할에 매핑해야 할 팀은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 팀은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 팀이어야 합니다.

    다음은 예시입니다:

      teams_to_roles:
        - organization: octocats
          team: admins
          roles:
            - access
    +       - editor-reviewer
    
  3. 편집기에서 파일을 저장하고 닫아 변경 사항을 적용합니다.

  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

SAML

  1. saml 구성 리소스를 가져옵니다:

    $ tctl get --with-secrets saml/mysaml > saml.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 saml.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 saml.yaml 파일을 삭제해야 합니다.

  2. saml.yaml을 편집하여 attributes_to_roles 섹션에 editor-reviewer을 추가합니다.

    이 역할에 매핑해야 할 속성은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      attributes_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - editor-reviewer
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f saml.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

OIDC

  1. oidc 구성 리소스를 가져옵니다:

    $ tctl get oidc/myoidc --with-secrets > oidc.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 oidc.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 oidc.yaml 파일을 삭제해야 합니다.

  2. oidc.yaml을 편집하여 claims_to_roles 섹션에 editor-reviewer을 추가합니다.

    이 역할에 매핑해야 할 클레임은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      claims_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - editor-reviewer
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f oidc.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

editor-requester 역할을 가진 myuser라는 사용자를 생성합니다. 이 사용자는 editor 역할을 요청하지 않으면 클러스터 구성을 편집할 수 없습니다:

$ tctl users add myuser --roles=editor-requester 

tctl은 초대 URL을 터미널에 출력합니다. 해당 URL을 방문하여 myuser로 처음 로그인하고, Teleport 클러스터에 구성된 대로 자격 증명을 등록합니다.

이 가이드의 뒷부분에서는 myusereditor 역할을 요청하도록 하여, Teleport 플러그인을 사용해 요청을 검토할 수 있습니다.

2/8단계. Teleport Jira 플러그인 사용자 정의#

플러그인에 필요한 권한은 사전 설정된 access-plugin 역할에 구성되어 있습니다. 플러그인에 대한 자격 증명을 생성하려면, Machine ID 봇 사용자 또는 일반 Teleport 사용자를 정의합니다.

아직 Machine ID 봇을 설정하지 않았다면, 인프라에서 tbot 바이너리를 실행하려면 배포 가이드를 참고하십시오.

다음으로, Machine ID 봇이 access-plugin 역할에 대한 자격 증명을 생성할 수 있도록 허용합니다. tctl을 사용하여 이 작업을 수행할 수 있으며, my-bot을 사용자의 봇 이름으로 바꾸십시오:

$ tctl bots update my-bot --add-roles access-plugin

모든 Teleport 사용자와 마찬가지로, Teleport Auth Service는 수명이 짧은 TLS 자격 증명을 발급하여 access-plugin 사용자를 인증합니다. 이 경우에는 access-plugin 역할과 사용자를 가장(impersonate) 하여 자격 증명을 수동으로 요청해야 합니다.

자체 호스팅 Teleport Enterprise 배포를 실행 중이고 Auth Service 호스트에서 tctl을 사용하는 경우, 이미 가장(impersonation) 권한을 보유하고 있습니다.

사용자에게 access-plugin에 대한 가장 권한을 부여하려면, 다음 YAML 문서를 access-plugin-impersonator.yaml라는 파일에 추가하여 access-plugin이라는 사용자와 access-plugin-impersonator라는 역할을 정의합니다:

kind: user
metadata:
  name: access-plugin
spec:
  roles: ['access-plugin']
version: v2
---
kind: role
version: v7
metadata:
  name: access-plugin-impersonator
spec:
  allow:
    impersonate:
      roles:
      - access-plugin
      users:
      - access-plugin

사용자와 역할을 생성합니다:

$ tctl create -f access-plugin-impersonator.yaml
user "access-plugin" has been created
role "access-plugin-impersonator" has been created
Tip

Web UI를 사용하여 역할을 생성하고 편집할 수도 있습니다. Access -> Roles로 이동하여 Create New Role을 클릭하거나 편집할 기존 역할을 선택하십시오.

access-plugin 역할과 사용자에 대한 자격 증명을 생성하는 데 사용할 사용자에게 이 역할을 할당합니다:

인증 공급자에 맞는 적절한 명령을 실행하여 access-plugin-impersonator 역할을 your Teleport user에게 할당하십시오:

Local User

  1. 로컬 사용자의 역할을 쉼표로 구분된 목록으로 가져옵니다:

    $ ROLES=$(tsh status -f json | jq -r '.active.roles | join(",")')
    
  2. 로컬 사용자를 편집하여 새 역할을 추가합니다:

    $ tctl users update $(tsh status -f json | jq -r '.active.username') \
      --set-roles "${ROLES?},access-plugin-impersonator"
    
  3. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

GitHub

  1. 텍스트 편집기에서 github 인증 커넥터를 엽니다:

    $ tctl edit github/github
    
  2. github 커넥터를 편집하여 teams_to_roles 섹션에 access-plugin-impersonator을 추가합니다.

    이 역할에 매핑해야 할 팀은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 팀은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 팀이어야 합니다.

    다음은 예시입니다:

      teams_to_roles:
        - organization: octocats
          team: admins
          roles:
            - access
    +       - access-plugin-impersonator
    
  3. 편집기에서 파일을 저장하고 닫아 변경 사항을 적용합니다.

  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

SAML

  1. saml 구성 리소스를 가져옵니다:

    $ tctl get --with-secrets saml/mysaml > saml.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 saml.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 saml.yaml 파일을 삭제해야 합니다.

  2. saml.yaml을 편집하여 attributes_to_roles 섹션에 access-plugin-impersonator을 추가합니다.

    이 역할에 매핑해야 할 속성은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      attributes_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - access-plugin-impersonator
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f saml.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

OIDC

  1. oidc 구성 리소스를 가져옵니다:

    $ tctl get oidc/myoidc --with-secrets > oidc.yaml
    

    --with-secrets 플래그는 spec.signing_key_pair.private_key 값을 oidc.yaml 파일에 추가한다는 점에 유의하십시오. 이 키에는 민감한 값이 포함되어 있으므로, 리소스를 업데이트한 직후 oidc.yaml 파일을 삭제해야 합니다.

  2. oidc.yaml을 편집하여 claims_to_roles 섹션에 access-plugin-impersonator을 추가합니다.

    이 역할에 매핑해야 할 클레임은 조직의 역할 기반 액세스 제어(RBAC)를 어떻게 설계했는지에 따라 달라집니다. 다만, 해당 그룹은 여러분의 사용자 계정을 포함해야 하며 조직 내에서 가능한 한 가장 작은 그룹이어야 합니다.

    다음은 예시입니다:

      claims_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - access-plugin-impersonator
    
  3. 변경 사항을 적용합니다:

    $ tctl create -f oidc.yaml
    
  4. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

이제 access-plugin 역할과 사용자에 대한 서명된 인증서를 생성할 수 있게 됩니다.

3/8단계. 액세스 플러그인 ID 내보내기#

플러그인에 Teleport ID 파일 접근 권한을 부여합니다. 유출 시 위험도가 낮은 단기 ID 파일을 생성하기 위해 Machine ID를 사용하는 것을 권장하지만, 데모 배포에서는 tctl로 장기 ID 파일을 생성할 수 있습니다:

the plugin에서 필요로 하는 자격 증명을 생성하는 output으로 tbot을 구성하세요. the plugin가 Teleport API에 접근하므로, 사용해야 할 올바른 output 유형은 identity입니다.

이 가이드에서는 directory destination을 사용합니다. 이는 이러한 자격 증명을 디스크의 지정된 디렉터리에 기록합니다. 이 디렉터리가 tbot이 실행되는 Linux 사용자에 의해 쓰기 가능하고, the plugin가 실행되는 Linux 사용자에 의해 읽기 가능한지 확인하세요.

identity output을 추가하도록 tbot 구성을 수정하세요.

Linux 서버에서 tbot을 실행하는 경우, directory output을 사용하여 identity 파일을 /opt/machine-id 디렉터리에 기록하세요:

services:
- type: identity
  destination:
    type: directory
    # For this guide, /opt/machine-id is used as the destination directory.
    # You may wish to customize this. Multiple outputs cannot share the same
    # destination.
    path: /opt/machine-id

Kubernetes에서 tbot을 실행하는 경우, identity 파일을 대신 Kubernetes secret에 기록하세요:

services:
  - type: identity
    destination:
      type: kubernetes_secret
      name: teleport-plugin-jira-identity

tbot을 백그라운드 서비스로 운영하는 경우, 재시작하세요. tbot을 one-shot 모드로 실행하는 경우, 지금 실행하세요.

이제 /opt/machine-id 아래에 identity 파일 또는 teleport-plugin-jira-identity이라는 이름의 Kubernetes secret이 보일 것입니다. 여기에는 the plugin가 Teleport Auth Service에 인증하는 데 필요한 개인 키와 서명된 인증서가 담겨 있습니다.

모든 Teleport 사용자와 마찬가지로, access-plugin가 Teleport 클러스터에 연결하려면 서명된 자격 증명이 필요합니다. tctl auth sign 명령을 사용하여 이러한 자격 증명을 요청합니다.

다음 tctl auth sign 명령은 access-plugin 사용자를 impersonate하여 서명된 자격 증명을 생성하고, 로컬 디렉터리에 identity 파일을 작성합니다:

$ tctl auth sign --user=access-plugin --out=identity

plugin는 TLS를 통해 Teleport Auth Service의 gRPC 엔드포인트에 연결합니다.

identity 파일 identity에는 TLS 자격 증명과 SSH 자격 증명이 모두 포함됩니다. plugin는 SSH 자격 증명을 사용하여 Proxy Service에 연결하며, Proxy Service는 Auth Service로의 리버스 터널 연결을 설정합니다. plugin는 이 리버스 터널과 TLS 자격 증명을 함께 사용하여 Auth Service의 gRPC 엔드포인트에 연결합니다.

Certificate Lifetime

기본적으로 tctl auth sign은 비교적 짧은 수명을 가진 인증서를 생성합니다. 프로덕션 배포의 경우, 플러그인의 인증서를 프로그래밍 방식으로 발급하고 갱신하기 위해 Machine & Workload Identity를 사용하는 것을 권장합니다. 자세히 알아보려면 Machine & Workload Identity 시작 가이드를 참조하세요.

기존 자격 증명보다 더 오래 유효한 인증서는 발급할 수 없다는 점에 유의하세요. 예를 들어, 1000시간 TTL을 가진 인증서를 발급하려면 최소 1000시간 동안 유효한 세션으로 로그인되어 있어야 합니다. 즉, 사용자는 최소 1000시간(60000분)의 max_session_ttl을 허용하는 역할을 가지고 있어야 하며, 로그인 시 --ttl을 지정해야 합니다:

$ tsh login --proxy=teleport.example.com --ttl=60060

Linux 서버에서 plugin를 실행하는 경우, plugin의 인증서 파일을 저장할 데이터 디렉터리를 생성합니다:

$ sudo mkdir -p /var/lib/teleport/plugins/api-credentials
$ sudo mv identity /var/lib/teleport/plugins/api-credentials

Kubernetes에서 plugin를 실행하는 경우, Teleport identity 파일이 포함된 Kubernetes secret을 생성합니다:

$ kubectl -n teleport create secret generic --from-file=identity teleport-plugin-jira-identity

Teleport 자격 증명이 만료되면 tctl auth sign 명령을 다시 실행하여 갱신해야 합니다.

4/8단계. Teleport Jira 플러그인 설치#

아래 지침에 따라 Teleport Jira 플러그인을 설치합니다. 플러그인을 호스트(예: EC2 인스턴스)에 배포하는지 Kubernetes 클러스터에 배포하는지에 따라 다릅니다.

Teleport Jira 플러그인은 Jira와 Teleport Proxy Service(또는 Teleport Enterprise Cloud 테넌트) 모두에 접근할 수 있는 호스트 또는 Kubernetes 클러스터에서 실행해야 합니다.

Download

Access Request Plugin은 amd64arm64 Linux 바이너리로 다운로드할 수 있습니다. ARCH를 필요한 버전으로 교체하세요.

$ curl -L -O https://cdn.teleport.dev/teleport-access-jira-v(=teleport.plugin.version=)-linux-ARCH-bin.tar.gz
$ tar -xzf teleport-access-jira-v(=teleport.plugin.version=)-linux-ARCH-bin.tar.gz
$ cd teleport-access-jira
$ sudo ./install

바이너리가 설치되었는지 확인합니다:

$ teleport-jira version
teleport-jira v(=teleport.plugin.version=) git:teleport-jira-v(=teleport.plugin.version=)-fffffffff go(=teleport.golang=)

Docker Image

$ docker pull public.ecr.aws/gravitational/teleport-plugin-jira:(=teleport.plugin.version=)

다음 명령을 실행하여 플러그인이 설치되었는지 확인합니다:

$ docker run public.ecr.aws/gravitational/teleport-plugin-jira:(=teleport.plugin.version=) version
teleport-jira v(=teleport.plugin.version=) (=teleport.golang=)

사용 가능한 태그 목록은 Amazon ECR Public Gallery를 참조하세요.

From Source

소스에서 설치하려면 gitgo가 설치되어 있어야 합니다. Go가 설치되어 있지 않다면 Go downloads page를 방문하세요.

$ git clone https://github.com/gravitational/teleport -b branch/v(=teleport.major_version=)
$ cd teleport/integrations/access/jira
$ git checkout v(=teleport.plugin.version=)
$ make build/teleport-jira

teleport-jira 바이너리를 PATH로 이동합니다.

바이너리가 설치되었는지 확인합니다:

$ teleport-jira version
teleport-jira v(=teleport.plugin.version=) git:teleport-jira-v(=teleport.plugin.version=)-fffffffff go(=teleport.golang=)

Helm Chart

Helm이 Teleport Helm 리포지토리에 호스팅된 차트를 설치할 수 있도록 허용합니다:

$ helm repo add teleport (=teleport.helm_repo_url=)

원격 리포지토리에서 차트 캐시를 업데이트합니다:

$ helm repo update

5/8단계. Jira 프로젝트 설정#

이 섹션에서는 Teleport 사용자가 Access Request를 생성하거나 업데이트할 때 Teleport 플러그인이 수정할 수 있는 Jira 프로젝트를 생성합니다. 그런 다음 플러그인은 Jira 웹훅을 사용하여 보드 상태를 모니터링하고 생성한 티켓의 변경 사항에 응답합니다.

Access Request 관리를 위한 프로젝트 생성#

Jira의 상단 탐색 바에서 프로젝트 -> 프로젝트 생성을 클릭합니다. 템플릿으로 Kanban을 선택한 다음 템플릿 사용을 클릭합니다. 회사 관리형 프로젝트 선택을 클릭합니다.

프로젝트 이름을 입력할 수 있는 화면이 표시됩니다. 이 가이드에서는 프로젝트가 "Teleport Access Requests"라고 가정하며, 기본적으로 키 TAR이 할당됩니다.

"저장소, 문서 등 연결"이 해제되어 있는지 확인한 다음 프로젝트 생성을 클릭합니다.

새 보드의 오른쪽 상단에 있는 세 점 메뉴에서 보드 설정을 클릭한 다음 을 클릭합니다. 다음 네 가지 상태가 포함되도록 보드의 상태를 편집합니다:

  1. Pending
  2. Approved
  3. Denied
  4. Expired

각 상태와 동일한 이름의 열을 생성합니다. 결과는 다음과 같아야 합니다:

Jira 보드 설정

Warning

프로젝트 보드에 이 열들이 (그리고 이 열들만) 없고 각각 동일한 이름의 상태가 없으면, Jira Access Request 플러그인이 예상치 못한 방식으로 동작합니다. 다른 모든 열과 상태를 제거하세요.

보드로 돌아가기를 클릭하여 변경 사항을 검토합니다.

Jira API 토큰 가져오기#

Access Request 플러그인이 Jira 프로젝트를 변경하는 데 사용할 API 토큰을 얻습니다. 화면 오른쪽 상단의 톱니바퀴 메뉴를 클릭한 다음 Atlassian 계정 설정을 클릭합니다. 보안 > API 토큰 생성 및 관리 > API 토큰 생성을 클릭합니다.

레이블을 선택하고 복사를 클릭합니다. 나중에 이 가이드에서 Jira 플러그인을 설정할 때 사용할 수 있도록 API 토큰을 편리한 위치(예: 비밀번호 관리자 또는 로컬 텍스트 문서)에 붙여넣습니다.

Jira 웹훅 설정#

Teleport Jira 플러그인이 프로젝트를 관리하는 데 사용할 API 키를 생성했으므로, 웹훅을 생성하여 프로젝트가 업데이트될 때 Jira가 Teleport Jira 플러그인에 알릴 수 있도록 활성화합니다.

Jira로 돌아갑니다. 화면 오른쪽 상단의 톱니바퀴 메뉴를 클릭합니다. 시스템 > WebHooks > WebHook 생성을 클릭합니다.

"Name" 필드에 "Teleport Access Request Plugin"을 입력합니다. "URL" 필드에 이전에 플러그인을 위해 생성한 도메인 이름과 포트 8081을 입력합니다.

"Name" 필드에 "Teleport Access Request Plugin"을 입력합니다. "URL" 필드에 이전에 플러그인을 위해 생성한 도메인 이름과 포트 443을 입력합니다.

웹훅은 이슈가 생성, 업데이트 또는 삭제될 때만 알림을 받아야 합니다. 다른 모든 박스는 비워 둘 수 있습니다.

생성을 클릭합니다.

6/8단계. Jira Access Request 플러그인 설정#

이전에 Jira 플러그인이 Teleport와 Jira API에 연결하는 데 사용하는 자격 증명을 가져왔습니다. 이제 이 자격 증명을 사용하고 이전에 설정한 주소에서 Jira 웹훅을 실행하도록 플러그인을 설정합니다.

설정 파일 생성#

Teleport Jira 플러그인은 TOML 형식의 설정 파일을 사용합니다. 다음 명령을 실행하여 기본 설정을 생성합니다 (플러그인은 설정 파일이 /etc/teleport-jira.toml에 없으면 실행되지 않습니다):

$ teleport-jira configure | sudo tee /etc/teleport-jira.toml > /dev/null

결과는 아래와 같은 설정 파일이어야 합니다:

<div class="admonition note"><div class="admonition-title">Note</div><p>이 섹션의 내용은 원문 문서를 참조하세요. (<code>teleport-jira-cloud.toml</code>)</p></div>

Jira 플러그인의 Helm 차트는 YAML 값 파일을 사용하여 플러그인을 설정합니다. 로컬 워크스테이션에서 다음 예시를 기반으로 teleport-jira-helm.yaml 파일을 생성합니다:

<div class="admonition note"><div class="admonition-title">Note</div><p>이 섹션의 내용은 원문 문서를 참조하세요. (<code>teleport-jira-helm-cloud.yaml</code>)</p></div>

설정 파일 편집#

Teleport Jira 플러그인을 위해 생성된 설정 파일을 열고 다음 필드를 업데이트합니다:

[teleport]

Jira 플러그인은 이 섹션을 사용하여 Teleport 클러스터에 연결합니다:

Executable or Docker

addr: Teleport Proxy Service 또는 Teleport Enterprise Cloud 계정의 호스트명과 HTTPS 포트를 입력합니다(예: teleport.example.com:443 또는 mytenant.teleport.sh:443).

identity: 앞서 내보낸 identity 파일의 경로를 입력합니다.

client_key, client_crt, root_cas: 이 구성에서는 사용하지 않으므로 주석 처리합니다.

Helm Chart

address: Teleport Proxy Service 또는 Teleport Enterprise Cloud 테넌트의 호스트명과 HTTPS 포트를 입력합니다(예: teleport.example.com:443 또는 mytenant.teleport.sh:443).

identitySecretName: identitySecretName 필드에 앞서 생성한 Kubernetes secret의 이름을 입력합니다.

identitySecretPath: identitySecretPath 필드에 Kubernetes secret 내 identity 파일의 경로를 입력합니다. 위 지침을 따랐다면 identity가 됩니다.

Linux 서버에서 실행되는 tbot 바이너리를 사용하여 플러그인에 자격 증명을 제공하는 경우, identity 값이 tbot이 생성하도록 구성한 신원 파일의 경로인 /opt/machine-id/identity와 동일한지 확인하십시오.

플러그인이 만료된 자격 증명으로 Teleport Auth Service에 연결을 시도하지 않도록 신원 파일을 주기적으로 다시 로드하도록 플러그인을 구성하십시오.

구성의 teleport 섹션에 다음을 추가하십시오:

refresh_identity = true

jira#

url: Jira 테넌트의 URL, 예: https://[your-jira].atlassian.net.

username: API 토큰을 생성할 때 로그인한 사용자 이름.

api_token: 이전에 가져온 Jira API 토큰.

project: 프로젝트 키(이 경우 TAR).

issue_typeTask로 유지하거나 필드를 제거할 수 있습니다. Task가 기본값입니다.

http#

[http] 설정 블록은 플러그인의 웹훅 작동 방식을 설명합니다.

listen_addr는 플러그인이 수신 대기하는 주소를 나타내며 기본값은 :8081입니다. 가이드에서 권장한 대로 플러그인 호스트에서 포트 8081을 열었다면 이 옵션을 설정하지 않아도 됩니다.

public_addr는 웹훅의 공개 주소입니다. 이전에 생성한 DNS A 레코드에 추가한 도메인 이름입니다.

https_key_filehttps_cert_file은 이 가이드를 따르기 전에 얻은 개인 키 및 인증서에 해당합니다. example.com을 이전에 플러그인을 위해 생성한 도메인 이름으로 지정하여 다음 값을 사용합니다:

  • https_key_file:

    $ /var/teleport-jira/tls/certificates/acme-v02.api.letsencrypt.org-directory/example.com/example.com.key
    
  • https_cert_file:

    $ /var/teleport-jira/tls/certificates/acme-v02.api.letsencrypt.org-directory/example.com/example.com.crt
    

jira#

url: Jira 테넌트의 URL, 예: https://[your-jira].atlassian.net.

username: API 토큰을 생성할 때 로그인한 사용자 이름.

apiToken: 이전에 가져온 API 토큰.

project: 프로젝트 키(이 경우 TAR).

issueTypeTask로 유지하거나 필드를 제거할 수 있습니다. Task가 기본값입니다.

http#

http 설정 블록은 플러그인의 웹훅 작동 방식을 설명합니다.

publicAddress: 웹훅의 공개 주소. 웹훅을 위해 생성한 도메인 이름입니다. (나중에 이 도메인 이름의 DNS 레코드를 생성합니다.)

tlsFromSecret: 웹훅에 대한 TLS 자격 증명을 포함하는 Kubernetes 시크릿의 이름. teleport-plugin-jira-tls를 사용합니다.

7/8단계. Jira 플러그인 실행#

설정을 완료한 후, 이제 플러그인을 실행하고 Jira 기반 Access Request 흐름을 테스트할 수 있습니다:

Linux 호스트에서 다음을 실행합니다:

$ sudo teleport-jira start
INFO   Starting Teleport Jira Plugin 12.1.1: jira/app.go:112
INFO   Plugin is ready jira/app.go:142

Teleport Jira 플러그인의 Helm 차트를 설치합니다:

$ helm install teleport-plugin-jira teleport/teleport-plugin-jira \
  --namespace teleport \
  --values values.yaml \
  --version (=teleport.plugin.version=)

웹훅의 도메인 이름을 Jira 플러그인 Helm 차트가 생성한 로드 밸런서의 주소와 연결하는 DNS 레코드를 생성합니다.

로드 밸런서에 도메인 이름이 있는지 IP 주소가 있는지 확인합니다:

$ kubectl -n teleport get services/teleport-plugin-jira
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP                          PORT(S)                      AGE
teleport-plugin-jira   LoadBalancer   10.100.135.75   abc123.us-west-2.elb.amazonaws.com   80:30625/TCP,443:31672/TCP   134m

EXTERNAL-IP 필드에 도메인 이름이 있으면, 웹훅의 도메인 이름이 로드 밸런서의 도메인 이름을 가리키는 CNAME 레코드를 생성합니다.

EXTERNAL-IP 필드의 값이 IP 주소인 경우, DNS A 레코드를 대신 생성합니다.

그런 다음 Jira 플러그인에 대한 서명된 TLS 자격 증명을 생성할 수 있으며, 플러그인은 이를 Kubernetes 시크릿에 쓸 것으로 예상합니다.

웹훅 상태 확인#

/status 엔드포인트로 GET 요청을 보내 Jira 웹훅이 서비스를 시작했는지 확인합니다. 웹훅이 실행 중이면 문서 본문 없이 200 상태 코드를 반환합니다:

$ curl -v https://example.com:8081/status 2>&1 | grep "^< HTTP/2"
< HTTP/2 200
$ curl -v https://example.com:443/status 2>&1 | grep "^< HTTP/2"
< HTTP/2 200

Access Request 생성#

이전에 생성한 myuser 사용자로 클러스터에 로그인하고 Access Request를 생성합니다:

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"를 클릭하여 액세스를 요청할 수 있습니다:

Web UI를 사용하여 Access Request 생성

요청을 생성하면 Access Requests 보드의 "Pending" 열에 새 작업이 표시됩니다:

새 Access Request

요청 해결#

새 Access Request에 해당하는 카드를 "Denied" 열로 이동한 다음 카드를 클릭하고 Teleport로 이동합니다. Access Request가 거부된 것을 확인할 수 있습니다.

Access Request 감사

Jira 프로젝트 보드에 접근할 수 있는 모든 사람이 보드에 반영된 Access Request의 상태를 수정할 수 있습니다. Teleport 감사 로그를 확인하여 올바른 사용자가 올바른 요청을 검토하고 있는지 확인하세요.

Access Request 검토를 감사할 때, Teleport Web UI에서 Access Request Reviewed 유형의 이벤트를 확인합니다.

8/8단계. systemd 설정#

Tip

이 단계는 Linux 머신에서 Teleport Jira 플러그인을 실행하는 경우에만 적용됩니다.

프로덕션 환경에서는 systemd와 같은 init 시스템을 통해 Teleport 플러그인 데몬을 시작하는 것을 권장합니다. systemd를 위한 권장 Teleport 플러그인 서비스 유닛 파일은 다음과 같습니다:

<div class="admonition note"><div class="admonition-title">Note</div><p>이 섹션의 내용은 원문 문서를 참조하세요. (<code>teleport-jira.service</code>)</p></div>

이를 teleport-jira.service 또는 systemd가 지원하는 다른 유닛 파일 로드 경로에 저장합니다.

$ sudo systemctl enable teleport-jira
$ sudo systemctl start teleport-jira

문제 해결#

Note

이 섹션의 내용은 원문 문서를 참조하세요. (access-plugin-troubleshooting.mdx)