검색어 문법

애셋을 검색할 때 애셋 메타데이터 필드, 연산자, 값으로 구성된 쿼리를 지정하여 검색 결과를 필터링할 수 있습니다.

검색 가능한 필드 및 리소스

searchAllResources 쿼리에서 사용할 수 있는 필드에 대한 자세한 내용은 ResourceSearchResult 필드를 참고하세요.

searchAllIamPolicies 쿼리에서 사용할 수 있는 필드에 대한 자세한 내용은 IamPolicySearchResult 필드를 참고하세요.

검색할 수 있는 리소스는 리소스 유형을 참고하세요.

텍스트 일치

텍스트 일치 항목을 검색할 때 애셋 메타데이터 필드를 정확하게 또는 부분적으로 일치시킬 수 있습니다.

텍스트 일치검색

텍스트 일치검색의 경우 다음 문법과 함께 =(같음) 연산자를 사용합니다.

ASSET_METADATA_FIELD=QUERY

예를 들면 다음과 같습니다.

location=us-central1-a

텍스트 일치검색을 실행할 때는 다음 규칙을 유의하세요.

  • 쿼리가 true가 되려면 쿼리 값이 애셋 메타데이터 필드의 값과 정확하게 일치해야 합니다.

  • 목록 값이 있는 필드의 경우 쿼리 값이 목록의 요소 중 하나와 일치하면 일치하는 것으로 간주됩니다.

  • 쿼리 값은 대소문자를 구분합니다.

  • 일치검색 쿼리 값은 구문처럼 처리되지만 와일드 카드는 포함할 수 없습니다.

부분 텍스트 일치

부분 텍스트 일치의 경우 다음 문법과 함께 :(has) 연산자를 사용합니다.

ASSET_METADATA_FIELD:QUERY

예를 들면 다음과 같습니다.

location:us-central1

: 연산자로 검색을 실행하면 쿼리 값과 애셋 메타데이터 필드 값은 비교를 위해 토큰으로 변환됩니다. 쿼리 값의 각 단어가 애셋 메타데이터 필드 값에 연속적으로 존재하는지 확인합니다. 부분 일치를 사용하는 경우 쿼리 값은 대소문자를 구분하지 않습니다.

부분 일치 쿼리 값은 구문 또는 구문의 조합일 수 있으며 와일드 카드를 포함할 수 있습니다. 쿼리에는 최대 2048자까지 최대 10개의 비교를 수행할 수 있습니다. 더 긴 쿼리에 대한 사용 사례가 있다면 gcp-asset-inventory-and-search-feedback@googlegroups.com으로 문의하세요.

토큰화 규칙

부분 텍스트 일치에 대한 토큰화 규칙은 다음과 같습니다.

  • 선행 및 후행 특수문자는 삭제됩니다.

  • 영숫자([a-zA-Z0-9]), 밑줄(_) 또는 앰퍼샌드(&)가 아닌 문자는 구분 기호로 취급됩니다.

다음은 몇 가지 토큰화 예시입니다.

  • us-central1[us,central1]으로 토큰화됩니다.

  • alex-2020@EXAMPLE.com[alex,2020,example,com]으로 토큰화됩니다.

  • google.com/cloud[google,com,cloud]로 토큰화됩니다.

  • Compute %Instance%[compute,instance]로 토큰화됩니다.

  • $%^*-![]으로 토큰화됩니다.

  • compute*storage[compute,storage]로 토큰화됩니다.

  • compute&storage[compute&storage]로 토큰화됩니다.

  • ALEX_test@example.com[alex_test,example,com]으로 토큰화됩니다.

  • instance/_my_vm_[instance,_my_vm_]으로 토큰화됩니다.

정확한 텍스트 일치 및 부분 텍스트 일치 예시

location 필드 값이 us-central1-a인 애셋은 다음 쿼리와 일치합니다.

쿼리 일치 사유
location=us-central1-a
us-central1-a라는 구문은 필드 값과 정확히 일치하므로 일치합니다.
location:US-Central1-A
구두점 문자가 구분 기호로 처리되고 쿼리 값이 대소문자를 구분하지 않기 때문에 일치합니다.
location:"us central1 a"
"us central1 a" 구문의 단어가 필드 값과 연속적으로 일치하므로 일치합니다.
location:(central1 us a)
조합 (central1 us a)의 단어가 필드 값의 단어와 어떤 순서로든 일치하기 때문에 일치합니다.
location:(a "us central1")
조합 내의 구문인 a"us central1"이 필드 값의 단어와 어떤 순서로든 일치하므로 일치합니다. "us central1"은 구문이므로 이러한 단어는 연속된 순서로 일치해야 합니다.
location:us-central*
와일드 카드 *가 접두사 일치를 만드는 데 사용되므로 일치합니다.

location 필드 값이 us-central1-a인 애셋은 다음 쿼리와 일치하지 않습니다.

쿼리 일치하지 않는 이유
location=US-central1-a
구문은 대소문자를 구분하므로 일치하지 않습니다. 대소문자를 구분하지 않는 일치에는 : 연산자를 대신 사용하세요.
location=us-central1
구문이 필드의 값과 부분적으로 일치하므로 일치하지 않습니다. 부분 일치에는 : 연산자를 대신 사용하세요.

텍스트 일치 쿼리 구성

쿼리 값은 구문, 조합, 부정, 와일드 카드로 구성될 수 있습니다.

구문

구문은 순서대로 일치하는 하나 이상의 단어입니다. 순서를 고려하지 않고 단어를 일치시키려면 조합을 대신 사용하세요.

다음 쿼리는 policy 필드에 단어 alex와 단어 2020이 연속적으로 포함된 애셋과 일치합니다.

policy:"alex 2020"

policy 필드 값이 "alex.2020@example.com"인 애셋은 alex2020 단어가 연속 순서이므로 쿼리와 일치합니다. 구두점은 구분 기호로 처리되므로 .는 무시됩니다.

policy 필드 값이 "2020.alex@example.com" 또는 "alex.us.2020@example.com"인 애셋은 alex2020 단어가 연속 순서가 아니기 때문에 일치하지 않습니다.

구문 구성

구문을 구성할 때는 다음 규칙을 유의하세요.

  • 구문에 ISO 기본 라틴 알파벳 문자 [a-zA-Z], 숫자 [0-9], 기본 이메일 또는 URL 커넥터 [_-+.@/&], 와일드 카드 [*]만 포함된 경우에는 큰따옴표로 묶을 필요가 없습니다.

    policy:alex.2020@example.com
    

    하지만 큰따옴표로 묶어도 여전히 작동하며 동일한 방식으로 작동합니다.

    policy:"alex.2020@example.com"
    
  • 구문 내에 공백이나 기타 특수문자가 있는 경우 큰따옴표로 묶어야 합니다.

    location:"us central1"
    
  • 구문이 큰따옴표로 묶여 있고 큰따옴표(") 또는 백슬래시(\)가 포함된 경우 이를 \" 또는 \\로 이스케이프해야 합니다. 또는 영숫자가 아닌 문자는 검색을 수행할 때 구분 기호로 처리되므로 단일 공백으로 바꿀 수도 있습니다. 다음 쿼리는 동일하게 처리됩니다.

    description:"One of \"those\" descriptions."
    description:"One of those descriptions."
    
  • gcloud CLI 또는 REST API를 사용하는 경우 구문을 나타내는 큰따옴표를 이스케이프 처리해야 합니다.

    --query="location:(a \"us central1\")"
    
    "query": "location:(a \"us central1\")"
    

조합

검색 구문은 대문자 논리 연산자 AND 또는 OR을 사용하여 조합할 수 있습니다. 괄호를 사용할 때 AND를 포함하는 것은 선택사항입니다. 예를 들어 다음 쿼리는 동일하게 처리됩니다.

policy:(alex charlie)
policy:(alex AND charlie)

애셋에 값 목록이 포함된 메타데이터 필드가 있는 경우 AND 조합으로 모든 단어가 단일 요소에 있어야 하는 것은 아닙니다. 예를 들어 메타데이터 필드가 policy=["alex@example.com", "bola@example.com", "charlie@example.com"]인 경우 alex@example.com에는 alex가 포함되어 있고 charlie@example.com에는 charlie가 포함되어 있으므로 policy:(alex charlie)로 검색하면 일치합니다.

괄호를 사용하여 조합 유형을 그룹화할 수 있습니다. 다음 예시는 순서에 관계없이 alexcharlie가 포함된 정책 필드가 있거나 bola가 포함된 정책 필드가 있는 애셋을 반환합니다.

policy:((alex charlie) OR bola)

조합 내에서 구문을 사용하여 여러 단어를 연속으로 일치시킬 수 있습니다. 다음 예시는 alex2020가 순서대로 나오는 정책 필드 또는 bola가 있는 애셋을 반환합니다.

policy:(("alex 2020") OR bola)

조합 예시

다음 쿼리는 다양한 조합을 보여줍니다. ANDOR 연산자를 구분하는 괄호의 위치에 주의하세요. 단일 괄호 세트 내에서 연산자를 결합하는 것은 유효하지 않습니다(예: policy:(alex charlie OR bola)).

쿼리 설명
policy:(alex charlie)
policy 필드에 alexcharlie가 모두 포함된 애셋을 반환합니다.
policy:(alex OR charlie)
policy 필드에 alex 또는 charlie가 포함된 애셋을 반환합니다.
policy:((alex charlie) OR bola)
policy 필드에 alexcharlie이 모두 포함되어 있거나 bola라는 단어가 포함된 애셋을 반환합니다.
policy:(alex charlie) OR name:bola
policy 필드에 alexcharlie가 포함되어 있거나 name 필드에 bola가 포함된 애셋을 반환합니다.

부정

대문자 NOT 연산자를 사용하여 검색어를 무효화할 수 있습니다. 괄호는 지원되지만 필수는 아닙니다.

부정 예시

  • state 필드에 running라는 단어가 포함되지 않은 애셋을 반환합니다.

    NOT state:running
    
  • policy 필드에 alex 또는 charlie가 모두 포함되지 않은 애셋을 반환합니다.

    NOT policy:(alex OR charlie)
    
  • networkTags 필드에 internal 또는 private이 포함되지 않은 애셋을 반환합니다.

    NOT (networkTags:internal OR networkTags:private)
    

와일드 카드

별표 (*)는 구문에서 와일드 카드 문자로 사용할 수 있습니다. 별표는 위치에 따라 다른 의미를 가질 수 있습니다.

  • *가 구문 끝에 있으면 토큰 프리픽스 일치로 취급됩니다. 예를 들어 "al 20*"(al* 20*)와 동일합니다. 프리픽스의 순서는 중요하지 않습니다.

    "al 20*" 구문은 필드 값과 al로 시작하는 토큰(예: alex) 및 20으로 시작하는 토큰(예: 2020)을 일치시킵니다.

  • labels의 경우 전체 쿼리 값에 단일 *(예: "labels.env:*")만 포함된 경우 존재 여부 확인을 나타냅니다. 즉, Cloud 애셋 인벤토리는 라벨 키 env가 있는지 확인합니다. labels 필드만 존재 여부 확인을 지원합니다.

  • 구문 중간에 *가 있는 경우(예: "compute*storage") 토큰화 구분 기호로 처리됩니다. 이 쿼리 값은 "compute storage"와 같습니다.

  • 구문의 시작 및 끝 부분에 *가 모두 있으면(예: "*compute storage*") 토큰화 구분 기호로 처리됩니다. 이 쿼리 값은 "compute storage"와 동일합니다.

숫자 및 타임스탬프 비교

숫자 및 타임스탬프 비교의 경우 다음 구문과 함께 비교 연산자를 사용합니다.

ASSET_METADATA_FIELD>=QUERY

사용 가능한 비교 연산자는 다음과 같습니다.

  • =: 다음과 같음

  • >: 보다 큼

  • >=: 크거나 같음

  • <: 미만

  • <=: 작거나 같음

createTimeupdateTime 애셋 메타데이터 필드에 저장된 타임스탬프와 비교하려면 64비트 부호 있는 정수(초 단위 에포크 타임스탬프) 또는 다음 형식 중 하나인 UTC+0 날짜-시간 문자열을 사용하세요.

  • 2021-01-01(YYYY-MM-DD)

  • "2021-01-01T00:00:00"("YYYY-MM-DDThh:mm:ss")

날짜/시간 예시

createTime 필드의 값이 1609459200(에포크 타임스탬프인 2021-01-01T00:00:00)인 애셋은 다음 쿼리와 일치합니다.

createTime=1609459200
createTime=2021-01-01
createTime="2021-01-01T00:00:00"

createTime>1500000000
createTime>2020-01-01
createTime>"2020-01-01T00:00:00"

createTime>=1609459200
createTime>=2021-01-01
createTime>="2021-01-01T00:00:00"

createTime<1700000000
createTime<2022-01-01
createTime<"2022-01-01T00:00:00"

createTime<=1609459200
createTime<=2021-01-01
createTime<="2021-01-01T00:00:00"