InfoGrab DocsInfoGrab Docs

자동 검토 구성

요약

Teleport는 접근 요청의 자동 검토를 지원합니다. 이 가이드에서는 Teleport RBAC를 구성하고 자동 검토의 사용 사례 예시를 보여줄 것입니다: 자동 검토는 접근 자동화 규칙에 의해 트리거됩니다. 예를 들어, 접근 자동화 규칙은 Teleport 트레잇 또는 IdP 속성 team: demo를 가진 사용자가 access 역할에 대한 접근을 요청할 때 자동 접근 요청 승인을 수행할 수 있습니다.

Teleport는 접근 요청의 자동 검토를 지원합니다. 이 기능을 통해 팀은 제로 상시 권한 정책을 적용하면서도 사용자가 수동 승인 없이 임시 접근을 받을 수 있습니다.

이 가이드에서는 Teleport RBAC를 구성하고 자동 검토의 사용 사례 예시를 보여줄 것입니다:

  • 특정 팀의 사용자로부터의 역할 요청을 자동으로 승인합니다.
  • 특정 팀의 사용자로부터의 리소스 요청을 자동으로 승인합니다.

작동 방식#

자동 검토는 접근 자동화 규칙에 의해 트리거됩니다. 이 규칙은 Teleport에 접근 요청을 모니터링하고 특정 조건(요청된 역할, 사용자 트레잇 또는 리소스 레이블 등)이 충족되면 자동으로 검토를 제출하도록 지시합니다.

예를 들어, 접근 자동화 규칙은 Teleport 트레잇 또는 IdP 속성 team: demo를 가진 사용자가 access 역할에 대한 접근을 요청할 때 자동 접근 요청 승인을 수행할 수 있습니다.

전제 조건#

  • 실행 중인 Teleport Enterprise (v18.2.8 or higher) 클러스터. 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
     ```
   

 
  • access_monitoring_rule 리소스에 대한 목록 조회, 생성, 읽기, 업데이트, 삭제 권한. 이 권한은 사전 설정된 editor 역할에 포함되어 있습니다.
  • 이 가이드를 위해 레이블이 지정된 Teleport로 보호된 SSH 서버가 최소 하나 필요합니다. 시작하기에서 SSH 서버 등록 방법을 확인하세요.

Terraform 단계를 따르는 경우, 먼저 Teleport Terraform Provider를 설정하세요.

1/3단계. 요청자 역할 및 사용자 만들기#

이 예시에서 먼저 다음을 만들 것입니다:

  • access 역할과 access 역할이 접근할 수 있는 모든 리소스에 대한 접근을 요청할 수 있도록 하는 demo-access-request 역할.
  • 위 역할이 할당된 demo-access-requester 사용자.

역할 만들기#

demo-role.yaml이라는 role 구성 파일을 만듭니다:

# demo-role.yaml
kind: role
version: v7
metadata:
  name: demo-access-request
spec:
  allow:
    request:
      roles:
        - access
      search_as_roles:
        - access

다음으로 역할을 만듭니다:

$ tctl create demo-role.yaml

사용자 만들기#

다음 명령을 사용하여 사용자를 만들고 역할을 할당합니다:

$ tctl users add --roles=demo-access-request demo-access-requester

또는 사용자를 만든 후 역할을 할당할 수 있습니다:

인증 공급자에 맞는 적절한 명령을 실행하여 demo-access-request 역할을 `demo-access-requester`에게 할당하십시오:

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?},demo-access-request"
    
  3. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

GitHub

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

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

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

    다음은 예시입니다:

      teams_to_roles:
        - organization: octocats
          team: admins
          roles:
            - access
    +       - demo-access-request
    
  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 섹션에 demo-access-request을 추가합니다.

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

    다음은 예시입니다:

      attributes_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - demo-access-request
    
  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 섹션에 demo-access-request을 추가합니다.

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

    다음은 예시입니다:

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

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

2/3단계. 사용자 트레잇 할당#

자동 검토 규칙이 요청하는 사용자를 평가할 수 있도록 Teleport Web UI를 통해 트레잇을 할당합니다:

  1. Zero Trust Access -> Users로 이동합니다.
  2. demo-access-requester 옆에서 Options -> **Edit...**를 클릭합니다.
  3. Add user trait을 클릭하고 다음을 설정합니다:
    • Key: team
    • Value: demo
  4. Save를 클릭합니다.
  5. 사용자가 원하는 트레잇으로 업데이트되었는지 확인합니다.

Edit User Traits

사용자 트레잇을 추가할 때 어떤 키와 값이든 입력할 수 있습니다. 사용자 트레잇 양식은 와일드카드나 정규 표현식을 지원하지 않습니다.

SSO 사용자

자동 검토는 SSO 사용자와 IdP에서 제공하는 속성과 호환됩니다.

3/3단계. 자동 검토 구성#

사용자를 만들고 트레잇을 할당했으므로 이제 자동 검토 규칙을 구성할 준비가 되었습니다.

접근 자동화 규칙은 사용자 트레잇, 리소스 레이블, 일정을 활용하여 요청을 자동으로 승인할 수 있는지 결정합니다. 이 단계에서는 Teleport가 접근을 자동으로 승인하는 방법을 보여주기 위해 하나 이상의 자동 검토 규칙을 구성합니다.

역할 기반 자동 검토#

특정 팀의 역할 요청을 자동으로 승인하는 방법을 보여주기 위해 다음 접근 자동화 규칙을 만듭니다:

  1. Identity Governance -> Access Requests -> Set Up Access Automation Rules로 이동합니다.
  2. Create New Access Automation Rule -> Automatic Review Rule을 클릭합니다.
  3. 규칙을 구성하고 다음을 설정합니다:
    • Name of requested roles to match: access
    • User Traits to match: team: demo
    • Review decision: APPROVED
  4. Create Rule을 클릭합니다.

demo-rule.yaml이라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.yaml
kind: access_monitoring_rule
version: v1
metadata:
  name: demo-rule
spec:
  automatic_review:
    decision: APPROVED
    integration: builtin
  condition: |-
    contains_all(set("access"), access_request.spec.roles) &&
    contains_any(user.traits["team"], set("demo"))
  desired_state: reviewed
  subjects:
    - access_request

다음으로 access_monitoring_rule을 만듭니다:

$ tctl create -f demo-rule.yaml

demo-rule.tf라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.tf
resource "teleport_access_monitoring_rule" "demo-rule" {
  version = "v1"
  metadata = {
    name = "demo-rule"
  }
  spec = {
    automatic_review = {
      decision    = "APPROVED"
      integration = "builtin"
    }
    condition     = <<-EOT
      contains_all(set("access"), access_request.spec.roles) &&
      contains_any(user.traits["team"], set("demo"))
    EOT
    desired_state = "reviewed"
    subjects      = ["access_request"]
  }
}

구성을 적용합니다:

$ terraform apply

이 규칙은 사용자에게 team: demo 트레잇이 있는 경우 access 역할에 대한 접근 요청을 자동으로 승인합니다.

새 자동 검토 규칙을 확인하려면 Teleport Web UI를 통해 접근 요청을 만드세요:

  1. demo-access-requester로 로그인합니다.
  2. Identity Governance -> Access Requests로 이동하고 New Access Request를 클릭합니다.
  3. 요청 유형을 Resources에서 Roles로 변경합니다.
  4. 접근 요청에 access 역할을 추가합니다.
  5. Proceed to Request, 그런 다음 Submit Request를 클릭합니다.

이 시점에서 새 접근 요청이 만들어지고 자동으로 검토되어 APPROVED 상태로 전환됩니다. Back to Listings로 이동하여 접근 요청 상태를 확인합니다. 검토가 처리되는 데 잠시 시간이 걸릴 수 있으므로 페이지를 새로 고쳐야 할 수 있습니다.

리소스 기반 자동 검토#

접근 자동화 규칙을 만들기 전에 Teleport 클러스터에 연결된 레이블이 지정된 SSH 서버가 최소 하나 있는지 확인합니다:

# List your SSH servers to identify available labels:
$ tsh ls
Node Name   Address    Labels
----------- ---------- -------------------------------
teleport-00 ⟵ Tunnel  env=demo

특정 팀의 리소스 요청을 자동으로 승인하는 방법을 보여주기 위해 다음 접근 자동화 규칙을 만듭니다:

  1. Identity Governance -> Access Requests -> Set Up Access Automation Rules로 이동합니다.
  2. Create New Access Automation Rule -> Automatic Review Rule을 클릭합니다.
  3. 규칙을 구성하고 다음을 설정합니다:
    • Name of requested roles to match: access
    • Resource labels to match: env: demo
    • User Traits to match: team: demo
    • Review decision: APPROVED
  4. Create Rule을 클릭합니다.

demo-rule.yaml이라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.yaml
kind: access_monitoring_rule
version: v1
metadata:
  name: demo-rule
spec:
  automatic_review:
    decision: APPROVED
    integration: builtin
  condition: |-
    contains_all(set("access"), access_request.spec.roles) &&
    contains_any(user.traits["team"], set("demo")) &&
    access_request.spec.resource_labels_intersection["env"].contains("demo")
  desired_state: reviewed
  subjects:
    - access_request

다음으로 access_monitoring_rule을 만듭니다:

$ tctl create -f demo-rule.yaml

demo-rule.tf라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.tf
resource "teleport_access_monitoring_rule" "demo-rule" {
  version = "v1"
  metadata = {
    name = "demo-rule"
  }
  spec = {
    automatic_review = {
      decision    = "APPROVED"
      integration = "builtin"
    }
    condition     = <<-EOT
      contains_all(set("access"), access_request.spec.roles) &&
      contains_any(user.traits["team"], set("demo")) &&
      access_request.spec.resource_labels_intersection["env"].contains("demo")
    EOT
    desired_state = "reviewed"
    subjects      = ["access_request"]
  }
}

구성을 적용합니다:

$ terraform apply

이 규칙은 사용자에게 team: demo 트레잇이 있는 경우 access 역할 및 env: demo 레이블의 리소스에 대한 접근 요청을 자동으로 승인합니다.

새 자동 검토 규칙을 확인하려면 Teleport Web UI를 통해 접근 요청을 만드세요:

  1. demo-access-requester로 로그인합니다.
  2. Identity Governance -> Access Requests로 이동하고 New Access Request를 클릭합니다.
  3. 접근을 요청하고 싶은 SSH 서버를 추가합니다.
  4. Proceed to Request, 그런 다음 Submit Request를 클릭합니다.

이 시점에서 새 접근 요청이 만들어지고 자동으로 검토되어 APPROVED 상태로 전환됩니다. Back to Listings로 이동하여 접근 요청 상태를 확인합니다. 검토가 처리되는 데 잠시 시간이 걸릴 수 있으므로 페이지를 새로 고쳐야 할 수 있습니다.

일정 기반 자동 검토#

지정된 일정 동안 역할 요청을 자동으로 승인하는 방법을 보여주기 위해 다음 접근 자동화 규칙을 만듭니다:

  1. Identity Governance -> Access Requests -> Set Up Access Automation Rules로 이동합니다.
  2. Create New Access Automation Rule -> Automatic Review Rule을 클릭합니다.
  3. 규칙을 구성하고 다음을 설정합니다:
    • Name of requested roles to match: access
    • User Traits to match: team: demo
    • Review decision: APPROVED
  4. 일정을 구성합니다:
    • For specified times only를 활성화합니다.
    • 원하는 Time Zone을 선택합니다.
    • 원하는 요일을 선택합니다.
    • 선택한 각 요일의 일정을 설정합니다.
  5. Create Rule을 클릭합니다.

예를 들어, 월요일 언제든지 자동 검토를 활성화하려면 일정 편집기가 다음과 같이 나타납니다:

Schedule Editor

demo-rule.yaml이라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.yaml
kind: access_monitoring_rule
version: v1
metadata:
  name: demo-rule
spec:
  automatic_review:
    decision: APPROVED
    integration: builtin
  condition: |-
    contains_all(set("access"), access_request.spec.roles) &&
    contains_any(user.traits["team"], set("demo"))
  desired_state: reviewed
  subjects:
    - access_request
  schedules:
    default:
      time:
        timezone: America/Los_Angeles
        shifts:
          - weekday: Monday
            start: "00:00"
            end: "23:59"

다음으로 access_monitoring_rule을 만듭니다:

$ tctl create -f demo-rule.yaml

demo-rule.tf라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.tf
resource "teleport_access_monitoring_rule" "demo-rule" {
  version = "v1"
  metadata = {
    name = "demo-rule"
  }
  spec = {
    automatic_review = {
      decision    = "APPROVED"
      integration = "builtin"
    }
    condition     = <<-EOT
      contains_all(set("access"), access_request.spec.roles) &&
      contains_any(user.traits["team"], set("demo"))
    EOT
    desired_state = "reviewed"
    subjects      = ["access_request"]
    schedules = {
      default = {
        time = {
          timezone = "America/Los_Angeles"
          shifts = [
            {
              weekday : "Monday"
              start : "00:00"
              end : "23:59"
            }
          ]
        }
      }
    }
  }
}

구성을 적용합니다:

$ terraform apply

문제 해결#

충돌하는 자동 검토 규칙#

자동 검토 규칙은 선택된 검토 결정에 따라 접근 요청을 자동으로 승인하거나 거부할 수 있습니다. 접근 요청이 승인 규칙과 거부 규칙 모두의 조건을 충족하면 거부 규칙이 우선합니다.

다음 단계#

자동 검토 구성

Teleport v18.9
원문 보기
요약

Teleport는 접근 요청의 자동 검토를 지원합니다. 이 가이드에서는 Teleport RBAC를 구성하고 자동 검토의 사용 사례 예시를 보여줄 것입니다: 자동 검토는 접근 자동화 규칙에 의해 트리거됩니다. 예를 들어, 접근 자동화 규칙은 Teleport 트레잇 또는 IdP 속성 team: demo를 가진 사용자가 access 역할에 대한 접근을 요청할 때 자동 접근 요청 승인을 수행할 수 있습니다.

Teleport는 접근 요청의 자동 검토를 지원합니다. 이 기능을 통해 팀은 제로 상시 권한 정책을 적용하면서도 사용자가 수동 승인 없이 임시 접근을 받을 수 있습니다.

이 가이드에서는 Teleport RBAC를 구성하고 자동 검토의 사용 사례 예시를 보여줄 것입니다:

  • 특정 팀의 사용자로부터의 역할 요청을 자동으로 승인합니다.
  • 특정 팀의 사용자로부터의 리소스 요청을 자동으로 승인합니다.

작동 방식#

자동 검토는 접근 자동화 규칙에 의해 트리거됩니다. 이 규칙은 Teleport에 접근 요청을 모니터링하고 특정 조건(요청된 역할, 사용자 트레잇 또는 리소스 레이블 등)이 충족되면 자동으로 검토를 제출하도록 지시합니다.

예를 들어, 접근 자동화 규칙은 Teleport 트레잇 또는 IdP 속성 team: demo를 가진 사용자가 access 역할에 대한 접근을 요청할 때 자동 접근 요청 승인을 수행할 수 있습니다.

전제 조건#

  • 실행 중인 Teleport Enterprise (v18.2.8 or higher) 클러스터. 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
     ```
   

 
  • access_monitoring_rule 리소스에 대한 목록 조회, 생성, 읽기, 업데이트, 삭제 권한. 이 권한은 사전 설정된 editor 역할에 포함되어 있습니다.
  • 이 가이드를 위해 레이블이 지정된 Teleport로 보호된 SSH 서버가 최소 하나 필요합니다. 시작하기에서 SSH 서버 등록 방법을 확인하세요.

Terraform 단계를 따르는 경우, 먼저 Teleport Terraform Provider를 설정하세요.

1/3단계. 요청자 역할 및 사용자 만들기#

이 예시에서 먼저 다음을 만들 것입니다:

  • access 역할과 access 역할이 접근할 수 있는 모든 리소스에 대한 접근을 요청할 수 있도록 하는 demo-access-request 역할.
  • 위 역할이 할당된 demo-access-requester 사용자.

역할 만들기#

demo-role.yaml이라는 role 구성 파일을 만듭니다:

# demo-role.yaml
kind: role
version: v7
metadata:
  name: demo-access-request
spec:
  allow:
    request:
      roles:
        - access
      search_as_roles:
        - access

다음으로 역할을 만듭니다:

$ tctl create demo-role.yaml

사용자 만들기#

다음 명령을 사용하여 사용자를 만들고 역할을 할당합니다:

$ tctl users add --roles=demo-access-request demo-access-requester

또는 사용자를 만든 후 역할을 할당할 수 있습니다:

인증 공급자에 맞는 적절한 명령을 실행하여 demo-access-request 역할을 `demo-access-requester`에게 할당하십시오:

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?},demo-access-request"
    
  3. Teleport 클러스터에서 로그아웃한 다음 다시 로그인하여 새 역할을 적용합니다.

GitHub

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

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

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

    다음은 예시입니다:

      teams_to_roles:
        - organization: octocats
          team: admins
          roles:
            - access
    +       - demo-access-request
    
  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 섹션에 demo-access-request을 추가합니다.

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

    다음은 예시입니다:

      attributes_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - demo-access-request
    
  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 섹션에 demo-access-request을 추가합니다.

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

    다음은 예시입니다:

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

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

2/3단계. 사용자 트레잇 할당#

자동 검토 규칙이 요청하는 사용자를 평가할 수 있도록 Teleport Web UI를 통해 트레잇을 할당합니다:

  1. Zero Trust Access -> Users로 이동합니다.
  2. demo-access-requester 옆에서 Options -> **Edit...**를 클릭합니다.
  3. Add user trait을 클릭하고 다음을 설정합니다:
    • Key: team
    • Value: demo
  4. Save를 클릭합니다.
  5. 사용자가 원하는 트레잇으로 업데이트되었는지 확인합니다.

Edit User Traits

사용자 트레잇을 추가할 때 어떤 키와 값이든 입력할 수 있습니다. 사용자 트레잇 양식은 와일드카드나 정규 표현식을 지원하지 않습니다.

SSO 사용자

자동 검토는 SSO 사용자와 IdP에서 제공하는 속성과 호환됩니다.

3/3단계. 자동 검토 구성#

사용자를 만들고 트레잇을 할당했으므로 이제 자동 검토 규칙을 구성할 준비가 되었습니다.

접근 자동화 규칙은 사용자 트레잇, 리소스 레이블, 일정을 활용하여 요청을 자동으로 승인할 수 있는지 결정합니다. 이 단계에서는 Teleport가 접근을 자동으로 승인하는 방법을 보여주기 위해 하나 이상의 자동 검토 규칙을 구성합니다.

역할 기반 자동 검토#

특정 팀의 역할 요청을 자동으로 승인하는 방법을 보여주기 위해 다음 접근 자동화 규칙을 만듭니다:

  1. Identity Governance -> Access Requests -> Set Up Access Automation Rules로 이동합니다.
  2. Create New Access Automation Rule -> Automatic Review Rule을 클릭합니다.
  3. 규칙을 구성하고 다음을 설정합니다:
    • Name of requested roles to match: access
    • User Traits to match: team: demo
    • Review decision: APPROVED
  4. Create Rule을 클릭합니다.

demo-rule.yaml이라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.yaml
kind: access_monitoring_rule
version: v1
metadata:
  name: demo-rule
spec:
  automatic_review:
    decision: APPROVED
    integration: builtin
  condition: |-
    contains_all(set("access"), access_request.spec.roles) &&
    contains_any(user.traits["team"], set("demo"))
  desired_state: reviewed
  subjects:
    - access_request

다음으로 access_monitoring_rule을 만듭니다:

$ tctl create -f demo-rule.yaml

demo-rule.tf라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.tf
resource "teleport_access_monitoring_rule" "demo-rule" {
  version = "v1"
  metadata = {
    name = "demo-rule"
  }
  spec = {
    automatic_review = {
      decision    = "APPROVED"
      integration = "builtin"
    }
    condition     = <<-EOT
      contains_all(set("access"), access_request.spec.roles) &&
      contains_any(user.traits["team"], set("demo"))
    EOT
    desired_state = "reviewed"
    subjects      = ["access_request"]
  }
}

구성을 적용합니다:

$ terraform apply

이 규칙은 사용자에게 team: demo 트레잇이 있는 경우 access 역할에 대한 접근 요청을 자동으로 승인합니다.

새 자동 검토 규칙을 확인하려면 Teleport Web UI를 통해 접근 요청을 만드세요:

  1. demo-access-requester로 로그인합니다.
  2. Identity Governance -> Access Requests로 이동하고 New Access Request를 클릭합니다.
  3. 요청 유형을 Resources에서 Roles로 변경합니다.
  4. 접근 요청에 access 역할을 추가합니다.
  5. Proceed to Request, 그런 다음 Submit Request를 클릭합니다.

이 시점에서 새 접근 요청이 만들어지고 자동으로 검토되어 APPROVED 상태로 전환됩니다. Back to Listings로 이동하여 접근 요청 상태를 확인합니다. 검토가 처리되는 데 잠시 시간이 걸릴 수 있으므로 페이지를 새로 고쳐야 할 수 있습니다.

리소스 기반 자동 검토#

접근 자동화 규칙을 만들기 전에 Teleport 클러스터에 연결된 레이블이 지정된 SSH 서버가 최소 하나 있는지 확인합니다:

# List your SSH servers to identify available labels:
$ tsh ls
Node Name   Address    Labels
----------- ---------- -------------------------------
teleport-00 ⟵ Tunnel  env=demo

특정 팀의 리소스 요청을 자동으로 승인하는 방법을 보여주기 위해 다음 접근 자동화 규칙을 만듭니다:

  1. Identity Governance -> Access Requests -> Set Up Access Automation Rules로 이동합니다.
  2. Create New Access Automation Rule -> Automatic Review Rule을 클릭합니다.
  3. 규칙을 구성하고 다음을 설정합니다:
    • Name of requested roles to match: access
    • Resource labels to match: env: demo
    • User Traits to match: team: demo
    • Review decision: APPROVED
  4. Create Rule을 클릭합니다.

demo-rule.yaml이라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.yaml
kind: access_monitoring_rule
version: v1
metadata:
  name: demo-rule
spec:
  automatic_review:
    decision: APPROVED
    integration: builtin
  condition: |-
    contains_all(set("access"), access_request.spec.roles) &&
    contains_any(user.traits["team"], set("demo")) &&
    access_request.spec.resource_labels_intersection["env"].contains("demo")
  desired_state: reviewed
  subjects:
    - access_request

다음으로 access_monitoring_rule을 만듭니다:

$ tctl create -f demo-rule.yaml

demo-rule.tf라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.tf
resource "teleport_access_monitoring_rule" "demo-rule" {
  version = "v1"
  metadata = {
    name = "demo-rule"
  }
  spec = {
    automatic_review = {
      decision    = "APPROVED"
      integration = "builtin"
    }
    condition     = <<-EOT
      contains_all(set("access"), access_request.spec.roles) &&
      contains_any(user.traits["team"], set("demo")) &&
      access_request.spec.resource_labels_intersection["env"].contains("demo")
    EOT
    desired_state = "reviewed"
    subjects      = ["access_request"]
  }
}

구성을 적용합니다:

$ terraform apply

이 규칙은 사용자에게 team: demo 트레잇이 있는 경우 access 역할 및 env: demo 레이블의 리소스에 대한 접근 요청을 자동으로 승인합니다.

새 자동 검토 규칙을 확인하려면 Teleport Web UI를 통해 접근 요청을 만드세요:

  1. demo-access-requester로 로그인합니다.
  2. Identity Governance -> Access Requests로 이동하고 New Access Request를 클릭합니다.
  3. 접근을 요청하고 싶은 SSH 서버를 추가합니다.
  4. Proceed to Request, 그런 다음 Submit Request를 클릭합니다.

이 시점에서 새 접근 요청이 만들어지고 자동으로 검토되어 APPROVED 상태로 전환됩니다. Back to Listings로 이동하여 접근 요청 상태를 확인합니다. 검토가 처리되는 데 잠시 시간이 걸릴 수 있으므로 페이지를 새로 고쳐야 할 수 있습니다.

일정 기반 자동 검토#

지정된 일정 동안 역할 요청을 자동으로 승인하는 방법을 보여주기 위해 다음 접근 자동화 규칙을 만듭니다:

  1. Identity Governance -> Access Requests -> Set Up Access Automation Rules로 이동합니다.
  2. Create New Access Automation Rule -> Automatic Review Rule을 클릭합니다.
  3. 규칙을 구성하고 다음을 설정합니다:
    • Name of requested roles to match: access
    • User Traits to match: team: demo
    • Review decision: APPROVED
  4. 일정을 구성합니다:
    • For specified times only를 활성화합니다.
    • 원하는 Time Zone을 선택합니다.
    • 원하는 요일을 선택합니다.
    • 선택한 각 요일의 일정을 설정합니다.
  5. Create Rule을 클릭합니다.

예를 들어, 월요일 언제든지 자동 검토를 활성화하려면 일정 편집기가 다음과 같이 나타납니다:

Schedule Editor

demo-rule.yaml이라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.yaml
kind: access_monitoring_rule
version: v1
metadata:
  name: demo-rule
spec:
  automatic_review:
    decision: APPROVED
    integration: builtin
  condition: |-
    contains_all(set("access"), access_request.spec.roles) &&
    contains_any(user.traits["team"], set("demo"))
  desired_state: reviewed
  subjects:
    - access_request
  schedules:
    default:
      time:
        timezone: America/Los_Angeles
        shifts:
          - weekday: Monday
            start: "00:00"
            end: "23:59"

다음으로 access_monitoring_rule을 만듭니다:

$ tctl create -f demo-rule.yaml

demo-rule.tf라는 access_monitoring_rule 구성 파일을 만듭니다:

# demo-rule.tf
resource "teleport_access_monitoring_rule" "demo-rule" {
  version = "v1"
  metadata = {
    name = "demo-rule"
  }
  spec = {
    automatic_review = {
      decision    = "APPROVED"
      integration = "builtin"
    }
    condition     = <<-EOT
      contains_all(set("access"), access_request.spec.roles) &&
      contains_any(user.traits["team"], set("demo"))
    EOT
    desired_state = "reviewed"
    subjects      = ["access_request"]
    schedules = {
      default = {
        time = {
          timezone = "America/Los_Angeles"
          shifts = [
            {
              weekday : "Monday"
              start : "00:00"
              end : "23:59"
            }
          ]
        }
      }
    }
  }
}

구성을 적용합니다:

$ terraform apply

문제 해결#

충돌하는 자동 검토 규칙#

자동 검토 규칙은 선택된 검토 결정에 따라 접근 요청을 자동으로 승인하거나 거부할 수 있습니다. 접근 요청이 승인 규칙과 거부 규칙 모두의 조건을 충족하면 거부 규칙이 우선합니다.

다음 단계#