InfoGrab Docs

술어 언어 (Predicate Language)

Teleport의 술어 언어를 사용하여 필터 조건을 정의하는 방법.

Teleport의 술어 언어(predicate language)는 동적 구성 리소스에서 필터링 조건을 정의하는 데 사용됩니다. 또한 선택된 리소스 목록 을 필터링하고 검색하는 쿼리 언어로도 사용됩니다. 술어 언어는 다음 중 어디에서 사용되느냐에 따라 구문이 약간 다릅니다: 역할 리소스 리소스 필터링 레이블 표현식 접근 모니터링 규칙 역할 리소스에서 허용/거부 규칙 범위 지정 # Teleport의 역할 리소스의 일부 필드는 술어 언어를 사용하여 역할 권한의 범위를 정의합니다: 동적 가장(Impersonation) 세션에 대한 RBAC 역할 리소스에서 사용될 때, 술어 언어는 다음 연산자를 지원합니다: 연산자 의미 예시 && AND (모든 조건이 일치해야 함) contains(field1, field2) && equals(field2, "val") || OR (하나의 조건이라도 일치해야 함) contains(field1, field2) || contains(field1, "val2") ! NOT (함수와 함께 사용, 아래 자세한 내용) !equals(field1, field2) 언어는 다음 함수도 지원합니다: 함수 설명 contains(<field>, <field2>) <field2> 의 값이 <field> 의 문자열 목록에 포함되어 있는지 확인합니다 contains(<field>, "<value>") <value> 가 <field> 의 문자열 목록에 포함되어 있는지 확인합니다 equals(<field>, <field2>) <field2> 의 값이 <field> 의 값과 같은지 확인합니다 equals(<field>, "<value>") <value> 가 <field> 의 값과 같은지 확인합니다 리소스 필터링 # tsh 와 tctl CLI 도구 모두 --query 플래그를 사용하여 노드, 애플리케이션, 데이터베이스 및 Kubernetes 리소스를 필터링할 수 있습니다. --query 플래그를 사용하면 술어 언어를 통해 더 정교한 검색을 수행할 수 있습니다. 일반적인 리소스 필드의 경우, 다음과 같이 쉽게 접근할 수 있는 단축 필드 이름을 정의했습니다: 단축 필드 실제 필드 동등값 예시 labels["<key>"] resource.metadata.labels + resource.spec.dynamic_labels labels["env"] == "staging" name resource.spec.hostname (서버 리소스에만 적용) 또는 resource.metadata.name name == "jenkins" 언어는 다음 연산자를 지원합니다: 연산자 의미 예시 == 같음 labels["env"] == "prod" 또는 labels[`env`] == "prod" != 같지 않음 labels["env"] != "prod" && AND (모든 조