애셋을 검색할 때 애셋 메타데이터 필드, 연산자, 값으로 구성된 쿼리를 지정하여 검색 결과를 필터링할 수 있습니다.
검색 가능한 필드 및 리소스
searchAllResources 쿼리에서 사용할 수 있는 필드에 대한 자세한 내용은 ResourceSearchResult 필드를 참조하세요.
searchAllIamPolicies 쿼리에서 사용할 수 있는 필드에 대한 자세한 내용은 IamPolicySearchResult 필드를 참조하세요.
검색할 수 있는 리소스는 리소스 유형을 참조하세요.
텍스트 일치
텍스트 일치 항목을 검색할 때 애셋 메타데이터 필드를 정확하게 또는 부분적으로 일치시킬 수 있습니다.
정확한 텍스트 일치
정확한 텍스트 일치의 경우 다음 구문과 함께 =(equals) 연산자를 사용합니다.
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"인 애셋은 쿼리와 일치합니다. alex 및 2020 단어가 연속적이기 때문입니다. 구두점은 구분 기호로 처리되므로 .는 무시됩니다.
policy 필드 값이 "2020.alex@example.com" 또는 "alex.us.2020@example.com"인 애셋은 일치하지 않습니다. alex 및 2020 단어가 연속적이지 않기 때문입니다.
구문 구성
문구를 구성할 때는 다음 규칙에 유의하세요.
- 구문에 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"]인 경우 policy:(alex charlie)로 검색하면 일치합니다. alex@example.com에는 alex이, charlie@example.com에는 charlie가 포함되어 있기 때문입니다.
괄호를 사용하여 조합 유형을 그룹화할 수 있습니다. 다음 예시에서는 alex 및 charlie가 순서에 관계없이 포함된 정책 필드가 있는 애셋이나 bola가 포함된 정책 필드가 있는 애셋을 반환합니다.
policy:((alex charlie) OR bola)
조합 내에서 구문을 사용하여 연속적으로 단어 여러 개를 일치시킬 수 있습니다. 다음 예시에서는 alex 및 2020가 연속적으로 포함된 정책 필드 또는 bola가 있는 애셋을 반환합니다.
policy:(("alex 2020") OR bola)
조합 예시
다음 쿼리에서는 다양한 조합을 보여줍니다. AND 및 OR 연산자를 구분하는 괄호의 위치에 주의하세요. 단일 괄호 세트 내에서는 연산자를 결합할 수 없습니다(예: policy:(alex charlie OR bola)).
| 쿼리 | 설명 | 
|---|---|
| policy:(alex charlie) | policy필드에alex및charlie모두 포함된 애셋을 반환합니다. | 
| policy:(alex OR charlie) | policy필드에alex또는charlie가 포함된 애셋을 반환합니다. | 
| policy:((alex charlie) OR bola) | policy필드에alex및charlie모두 포함되어 있거나bola단어가 포함된 애셋을 반환합니다. | 
| policy:(alex charlie) OR name:bola | policy필드에alex및charlie가 포함되어 있거나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
사용 가능한 비교 연산자는 다음과 같습니다.
- =: 같음
- >: 보다 큼
- >=: 크거나 같음
- <: 보다 작음
- <=: 작거나 같음
createTime 및 updateTime 애셋 메타데이터 필드에 저장된 타임스탬프와 비교하려면 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"