보안 비밀 및 보안 비밀 버전 목록 필터링

이 주제에서는 Secret Manager의 다음 리소스 나열 호출에서의 필터링 지원을 설명합니다.

사용

list 작업의 필터링 인텐트는 목록 요청 본문에서 filter 문자열 필드의 유무를 통해 표시됩니다. API는 필터링할 객체의 필드를 참조하는 데 단순한 언어를 사용합니다.

다음 예시에서는 보안 비밀의 하위 집합에 'asecret' 또는 'bsecret' 하위 문자열이 있다고 가정합니다. 이러한 보안 비밀과 일치하는 필터를 지정합니다. 결과가 이름에 따라 오름차순으로 정렬됩니다.

gcloud

필터는 --filter 플래그를 사용하여 지정됩니다. 필터에 공백 또는 특수문자가 있는 경우 따옴표로 묶어야 합니다.

gcloud secrets list --filter="name:asecret OR name:bsecret"

Google Cloud CLI는 다음과 같은 정규 표현식(정규식)을 지원합니다.

gcloud secrets list --filter='name ~ "secret_ab.*"'

API

이 예시에서는 curl을 사용하여 API를 사용하는 방법을 보여줍니다. gcloud auth print-access-token을 사용하여 액세스 토큰을 생성할 수 있습니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.

필터는 filter querystring 매개변수로 지정되며 URL로 인코딩되어야 합니다. 예를 들어 name:asecret OR name:bsecret 필터는 name%3Aasecret+OR+name%3Absecret으로 URL 인코딩됩니다.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER" \
    --request "GET" \
    --header "Authorization: Bearer ACCESS_TOKEN"

API에서 정규식이 지원되지 않습니다.

예시

시나리오 필터
이름에 "mysecret" 하위 문자열이 포함된 보안 비밀 name:mysecret
특정 라벨이 있는 보안 비밀 labels.environment=production
날짜/시간 범위 내에 생성된 보안 비밀 create_time<2021-01-01T06:00:00Z AND create_time>2021-01-01T12:00:00Z
자동 복제를 사용하는 보안 비밀 replication.automatic:*
사용자 관리 복제가 있지만 지정된 리전에 저장되지 않은 보안 비밀 replication.user_managed.replicas.location:* AND NOT replication.user_managed.replicas.location:(us-central1 OR us-east1)
CMEK 키로 암호화된 보안 비밀 replication.user_managed.replicas.customerManagedEncryption:*
특정 CMEK 키로 암호화된 보안 비밀 replication.user_managed.replicas.customerManagedEncryption.kmsKeyName=projects/p/locations/us-central1/keyRings/kr/cryptoKeys/my-cmek-key
순환 기간이 없는 보안 비밀 NOT rotation.next_rotation_time:*
순환 기간이 30일보다 긴 보안 비밀 rotation.rotation_period>259200s
만료 시간이 설정된 보안 비밀 expire_time:*
특정 날짜 이전에 만료되는 보안 비밀 expire_time<2021-07-31
사용 설정 또는 중지된 버전 state:(ENABLED OR DISABLED)
폐기된 버전(날짜 후 폐기) state:DESTROYED AND destroy_time>2021-01-01

필터 구문

필터 문법은 필터링되는 객체의 하나 이상의 필드에 대한 표현식으로 구성됩니다.

다음 표현식 연산자를 사용할 수 있습니다.

연산자 설명
= 같음
> 보다 큼
< 보다 작음
>= 크거나 같음
<= 작거나 같음
!=
-
NOT
같지 않음 다음은 동일합니다.
name!="topsecret"
-name="topsecret"
NOT name="topsecret"
:

방지. 대소문자를 구분하지 않는 하위 문자열 대조입니다.

예를 들어 name:"myapp"은 리소스 이름에 myapp(대소문자를 구분하지 않음)이 포함된 리소스를 필터링합니다.

AND

논리곱

공백은 AND와 동일하므로 다음은 동일합니다.
name:"myapp" AND name:"secret1"
name:"myapp" name:"secret1"

OR 논리합(OR)
*

와일드 카드

독립형으로 사용할 수 있습니다. 여기서 field:*field가 설정되었음을 나타냅니다.

Cloud Search API와 일관되게 OR는 기본적으로 AND보다 우선 적용됩니다. 원하는 작업 우선순위를 나타내는 데 괄호를 사용할 수 있습니다.

time 값을 필터링할 때 시간을 RFC 3399 형식시간으로 문자열로 인코딩합니다(예: 2020-10-15T01:30:15Z).

하위 필드에 액세스하는 경우 점 문법을 사용합니다. 예를 들어 Secret 리소스에는 값이 키-값 maplabels 필드가 포함될 수 있습니다. color 라벨을 사용하는 경우 다음과 같이 하위 필드 labels.color에서 Secret 결과를 필터링할 수 있습니다.

labels.color=red

color 라벨이 설정된 보안 비밀만 나열하려면 와일드 카드를 사용합니다.

labels.color:*

따옴표 안의 문자열은 값 시퀀스가 아닌 단일 값으로 해석됩니다.

필터 필드

Secret 또는 SecretVersion 객체의 모든 필드를 필터링할 수 있습니다.

list 메서드 필터링 가능한 필드 링크
projects.secrets.list 보안 비밀 필드
projects.secrets.versions.list SecretVersion 필드

총 결과 수

목록 요청에 filter가 설정되면 응답에 총 결과 수(응답의 total_size=0)가 표시되지 않습니다.

다음 단계