애셋을 검색할 때 애셋 메타데이터 필드, 연산자, 값으로 구성된 쿼리를 지정하여 검색 결과를 필터링할 수 있습니다.
검색 가능한 필드 및 리소스
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"