쿼리 구문

애셋을 검색할 때 FIELD, 연산자, QUERY를 지정하여 검색 결과를 필터링할 수 있습니다.

텍스트 일치 검색: equals(=) 연산자

FIELD=QUERY

쿼리 예시: policy=amy.2020@gmail.com

equals(=) 연산자는 QUERY가 애셋 메타데이터 FIELD 값과 정확하게 일치하는지 확인합니다. 대소문자를 구분합니다. 반복 필드의 경우 QUERY가 필드 값 중 하나와 일치하면 애셋이 일치로 간주됩니다. 지원되는 FIELD 이름은 쿼리가 리소스 검색인지, Identity and Access Management(IAM) 정책 검색인지에 따라 다릅니다. QUERY구문이지만 와일드 카드를 포함할 수 없습니다.

텍스트 부분 일치 검색: 콜론(:) 연산자

FIELD:QUERY

쿼리 예시: policy:amy.2020@gmail

검색을 수행할 때 QUERY는 지정된 애셋 메타데이터 FIELD의 값과 비교됩니다. 쿼리와 애셋 메타데이터 필드가 비교를 위해 일련의 단어 (예: 토큰)로 변환됩니다. 이 작업은 다음과 같이 수행됩니다.

  • 선행/순환 특수문자를 삭제하고 특수 문자를 구분자로 취급하여 검색 값을 토큰화합니다. 토큰화 특수문자는 영숫자 [a-zA-Z0-9], 밑줄 [_] 또는 앰퍼샌드 [&] 중 하나가 아닌 문자입니다.

  • 문자의 대소문자가 무시되도록 유니코드 대소문자 변환을 수행합니다.

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

  • "amy-2020@GMAIL.com"[amy,2020,gmail,com]로 토큰화됩니다.

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

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

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

  • ""[]로 토큰화됩니다.

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

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

  • "BOB_test@gmail.com"[bob_test,gmail,com]로 토큰화됩니다.

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

has(:) 연산자는 QUERY의 각 단어가 애셋 메타데이터 필드 값에 있는지 확인합니다. 또한 단어의 순서와 연속성도 확인합니다. 리소스 검색 또는 IAM 정책 검색 여부에 따라 지원되는 FIELD가 다를 수 있습니다. QUERY구문 또는 구문의 조합일 수 있습니다.

예시

예를 들어 policy 필드 값이 amy.2020@gmail.com인 애셋은 다음과 같은 쿼리와 일치합니다.

  • 다음 구문은 필드 값과 정확히 일치하므로 일치합니다.
policy=amy.2020@gmail.com
  • 구두점 문자가 구분 기호로 처리되고 쿼리가 대소문자를 구분하지 않기 때문에 일치합니다.
policy:amy-2020@GMAIL.com
  • 구문의 단어가 순서대로 일치하기 때문에 일치합니다. "amy 2020 gmail"구문입니다. 단어가 순서대로 연속적으로 일치해야 합니다.
policy:"amy 2020 gmail"
  • 단어 조합은 어떤 순서로든 나타날 수 있기 때문에 일치합니다. (gmail 2020 amy)조합입니다. 단어가 일치하고 반드시 순서대로 일치하는 것은 아닙니다.
policy:(gmail 2020 amy)
  • 구문의 단어가 순서대로 일치하고 조합의 단어가 어떤 순서로든 나타나기 때문에 일치합니다. "amy 2020"구문이며 단어가 순서대로 연속적으로 일치해야 합니다. (gmail "amy 2020")조합입니다. gmail"amy 2020"가 일치하고 반드시 순서대로 일치하는 것은 아닙니다.
policy:(gmail "amy 2020")
  • 구문에서는 *을 사용하여 프리픽스 일치를 나타낼 수 있기 때문에 일치합니다.
policy:amy-20*

policy 필드 값이 "amy.2020@gmail.com"인 애셋은 다음 쿼리와 일치하지 않습니다.

  • 구문은 대소문자를 구분하므로 일치하지 않습니다. 대소문자를 구분하지 않는 일치에는 has(:) 연산자를 대신 사용하세요.
policy=amy.2020@GMAIL.com
  • 구문이 필드의 값과 부분적으로 일치하므로 일치하지 않습니다. 부분 일치에는 has(:) 연산자를 대신 사용하세요.
policy=amy.2020@gmail

숫자 일치 검색: 비교(=, >, >=, <, <=) 연산자

FIELD=QUERY

FIELD>QUERY

FIELD>=QUERY

FIELD<QUERY

FIELD<=QUERY

비교 연산자는 QUERY와 애셋 메타데이터 FIELD의 값 사이의 비교 결과가 true인지 확인합니다.

지원되는 FIELD 이름에는 createTimeupdateTime이 포함됩니다.

타임스탬프 필드(createTimeupdateTime)의 경우 QUERY는 에포크 타임스탬프를 초 단위로 나타내는 64비트의 부호 있는 정수이거나 아래 형식 중 하나인 날짜-시간 문자열(시간대는 UTC)입니다.

  • YYYY-MM-DD: 2021-01-01(따옴표는 선택사항)

  • 'YYYY-MM-DDThh:mm:ss': '2021-01-01T00:00:00'(따옴표 필요)

예시

예를 들어 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"

구문

문구는 큰따옴표 (") 로 묶인 한 개 이상의 단어입니다 . 구문에서는 단어의 순서가 중요합니다. 구문의 단어는 순서대로 연속적으로 일치해야 합니다. 순서를 고려하지 않고 여러 단어 일치를 검색하려면 조합을 사용해야 합니다(예: field:(word1 word2 word3)).

다음 표현식은 동일합니다.

policy:amy
policy:"amy"

policy:amy.2020@gmail.com
policy:"amy.2020@gmail.com"

name://cloudresourcemanager.googleapis.com/projects/projects/foo-bar
name:"//cloudresourcemanager.googleapis.com/projects/projects/foo-bar"

다음 문구는 따옴표로 묶어야 합니다.

name:"my instance"

policy:"amy%2020@gmail.com"

description:"domain:gmail.com"

description:"hello \"world\""

description:"hello\\world"

예: 구문

  • policy 필드에 단어 amy2020이 순서대로 연속적으로 포함된 애셋을 반환합니다.

    policy:"amy 2020"
    
  • policy 필드 값이 "amy.2020@gmail.com"인 애셋이 있는 경우 위 쿼리가 일치합니다.

  • policy 필드 값이 "2020.amy@gmail.com"인 애셋이 있는 경우 해당 단어가 순서대로 일치하지 않으므로 위 쿼리가 일치하지 않습니다.

  • policy 필드 값이 "amy.us.2020@gmail.com"인 애셋이 있는 경우 단어가 연속적으로 일치하지 않으므로 위 쿼리는 일치하지 않습니다.

조합

AND 또는 OR을 사용하여 검색 구문을 조합할 수 있습니다. 조합을 하나로 묶기 위해 괄호가 사용됩니다.

예: 조합

  • 순서에 관계없이 policy 필드에 단어 amyjohn이 모두 포함된 애셋을 반환합니다. AND는 조합에서 선택사항입니다. 순서대로 여러 단어 일치를 검색하려면 구문을 사용해야 합니다(예: field:"word1 word2 word3").

    owner:(amy john)
    
  • policy 필드에 단어 amy 또는 john이 있는 애셋을 반환합니다.

    policy:(amy OR john)
    
  • policy 필드에 단어 amyjohn이 모두 포함되어 있거나 단어 bob이 있는 애셋을 반환합니다.

    policy:((amy john) OR bob)
    
  • policy 필드에 단어 amyjohn이 포함되어 있거나 name 필드에 단어 bob이 있는 애셋을 반환합니다.

    policy:(amy john) OR name:bob
    

검색 필터 무효화

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

예: 검색 필터 무효화

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

    NOT state:ACTIVE
    
  • policy 필드에 amy 또는 john이라는 단어가 포함되지 않은 애셋을 반환합니다.

    NOT policy:(amy OR john)
    
  • networkTags 필드에 internal 또는 private이라는 단어가 포함되지 않은 애셋을 반환합니다.

    NOT (networkTags:internal OR networkTags:private)
    

와일드 카드

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

  • 구문 끝에 있으면(예: "am 20*") 토큰 접두사 일치 표시기입니다. 이 쿼리는 (am* 20*)와 동일합니다. 'am'으로 시작하는 토큰(예: 'amy') 및 '20'으로 시작하는 토큰(예: '2021')이 포함된 필드 일치 항목을 검색합니다. 접두사의 순서는 중요하지 않습니다.

  • 전체 구문에 *가 하만 포함된 경우(예: "labels.env:*") 존재 여부 확인 검사를 수행합니다. 지정된 라벨 키 'env'가 있는지 확인합니다. 다른 필드는 지원되지 않습니다.

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

  • 구문의 시작 및 끝 부분에 모두 있으면(예: "*compute storage*") 토큰화 구분 기호로 처리됩니다. 쿼리는 'compute storage'와 같습니다.

예: 토큰 프리픽스 일치

  • policy 필드에 am로 시작하는 단어가 포함된 애셋을 반환합니다.

    policy:am*
    
  • policy 필드가 "amy""20"를 접두사로 가지고 있는 애셋을 반환홥니다.

    policy:"amy 20*"
    
    policy:"20 amy*"
    
  • policy 필드 값이 "amy.2020@gmail.com"인 애셋이 있는 경우 위 쿼리가 둘 다 일치합니다. 토큰화 후 "amy""20" 모두 프리픽스입니다. 쿼리 문자열 "amy 20*""amy 20"과 다릅니다. 후자의 경우 20이 접두사가 아닌 전체 단어여야 합니다.

예: 라벨 키 존재 여부

labels 중 하나에 'env' 키가 있고 임의의 값을 가진 애셋을 반환합니다(빈 값 또는 값 없음 포함).

labels.env:*