이 주제에서는 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"
|
: |
방지. 대소문자를 구분하지 않는 하위 문자열 대조입니다.
예를 들어 |
AND |
논리곱
공백은 |
OR |
논리합(OR) |
* |
와일드 카드
독립형으로 사용할 수 있습니다. 여기서 |
Cloud Search API와 일관되게 OR
는 기본적으로 AND
보다 우선 적용됩니다.
원하는 작업 우선순위를 나타내는 데 괄호를 사용할 수 있습니다.
time
값을 필터링할 때 시간을 RFC 3399 형식시간으로 문자열로 인코딩합니다(예: 2020-10-15T01:30:15Z
).
하위 필드에 액세스하는 경우 점 문법을 사용합니다. 예를 들어 Secret
리소스에는 값이 키-값 map
인 labels
필드가 포함될 수 있습니다.
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
)가 표시되지 않습니다.
다음 단계
- 보안 비밀 수정 방법 알아보기
- 보안 비밀의 만료일 설정 방법 알아보기