이 페이지에서는 Secret Manager에서 보안 비밀 및 보안 비밀 버전을 필터링하는 프로세스에 대해 설명합니다. 보안 비밀이 많은 환경에서 필터링 기능을 이용하면 전체 목록을 수동으로 스크롤하지 않아도 특정 보안 비밀 또는 버전을 빠르게 찾을 수 있습니다. 라벨, 생성 날짜 또는 보안 비밀 이름 내의 특정 패턴과 같은 기준에 따라 필터링하여 특정 보안 비밀 그룹을 집중적으로 관리할 수 있습니다.
Secret Manager에서는 Google Cloud 콘솔에서 필터 옵션을 사용하거나 API 호출 내에서 필터 기준을 지정하여 보안 비밀 및 보안 비밀 버전을 필터링할 수 있습니다. Google Cloud CLI에서 보안 비밀을 나열할 때 filter
문자열을 포함하여 보안 비밀 및 보안 비밀 버전을 필터링할 수 있습니다.
보안 비밀 필터링
보안 비밀을 필터링하려면 다음 방법 중 하나를 사용합니다.
콘솔
-
Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.
-
Secret Manager 페이지에서 리전 보안 비밀 탭을 클릭합니다.
-
리전 보안 비밀 테이블에서 필터 필드를 클릭합니다.
-
필터 속성과 해당 값(예:
Location:asia-east1
)을 선택합니다.테이블이 입력된 값을 기준으로 자동으로 필터링됩니다. 결과가 이름에 따라 오름차순으로 정렬됩니다.
gcloud
아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 보안 비밀의 Google Cloud 위치입니다.
- FILTER: 필터 문자열입니다(예:
name:asecret OR name:bsecret
). 또한 gcloud CLI는 정규 표현식(예:name ~ "secret_ab.*"
)을 지원합니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud secrets list --location=LOCATION --filter="FILTER"
Windows(PowerShell)
gcloud secrets list --location=LOCATION --filter="FILTER"
Windows(cmd.exe)
gcloud secrets list --location=LOCATION --filter="FILTER"
REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 보안 비밀의 Google Cloud 위치
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- FILTER: 필터 문자열입니다. 필터는
filter
querystring 매개변수로 지정되며 URL로 인코딩되어야 합니다. 예를 들어name:asecret OR name:bsecret
필터는name%3Aasecret+OR+name%3Absecret
으로 URL 인코딩됩니다. API에서는 정규 표현식이 지원되지 않습니다.
HTTP 메서드 및 URL:
GET https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?filter=FILTER
JSON 요청 본문:
{}
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?filter=FILTER"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?filter=FILTER" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 표시됩니다.
{ "secrets": [ { "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-02T07:14:00.281541Z", "etag": "\"16211dd90b37e7\"" } ] }
Go
이 코드를 실행하려면 먼저 Go 개발 환경을 설정하고 Secret Manager Go SDK를 설치합니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.
Java
이 코드를 실행하려면 먼저 자바 개발 환경을 설정하고 Secret Manager 자바 SDK를 설치합니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.
Python
이 코드를 실행하려면 먼저 Python 개발 환경을 설정하고 Secret Manager Python SDK를 설치합니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.
보안 비밀 버전 필터링
보안 비밀 버전을 필터링하려면 다음을 수행합니다.
-
Google Cloud 콘솔에서 버전에 액세스할 보안 비밀을 선택한 후 버전 테이블에서 필터 옵션을 사용합니다.
-
Google Cloud CLI 또는 Secret Manager API를 사용하는 경우 보안 비밀 버전을 나열할 때
filter
문자열을 포함합니다.
필터 예시
사용 사례 | 필터 |
---|---|
이름에 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
).
하위 필드에 액세스하는 경우 점 구문을 사용합니다. 예를 들어 보안 비밀 리소스에는 해당 값이 키-값 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
)가 표시되지 않습니다.