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

이 페이지에서는 Secret Manager에서 보안 비밀 및 보안 비밀 버전을 필터링하는 프로세스에 대해 설명합니다. 보안 비밀이 많은 환경에서 필터링 기능을 이용하면 전체 목록을 수동으로 스크롤하지 않아도 특정 보안 비밀 또는 버전을 빠르게 찾을 수 있습니다. 라벨, 생성 날짜 또는 보안 비밀 이름 내의 특정 패턴과 같은 기준에 따라 필터링하여 특정 보안 비밀 그룹을 집중적으로 관리할 수 있습니다.

Secret Manager에서는 Google Cloud 콘솔에서 필터 옵션을 사용하거나 API 호출 내에서 필터 기준을 지정하여 보안 비밀 및 보안 비밀 버전을 필터링할 수 있습니다. Google Cloud CLI에서 보안 비밀을 나열할 때 filter 문자열을 포함하여 보안 비밀 및 보안 비밀 버전을 필터링할 수 있습니다.

보안 비밀 필터링

보안 비밀을 필터링하려면 다음 방법 중 하나를 사용합니다.

콘솔

  1. Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.

    Secret Manager로 이동

  2. 보안 비밀 테이블에서 필터 필드를 클릭합니다.

  3. 필터 속성과 해당 값(예: Location:asia-east1)을 선택합니다.

    테이블이 입력된 값을 기준으로 자동으로 필터링됩니다. 결과가 이름에 따라 오름차순으로 정렬됩니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • FILTER: 필터 문자열입니다(예: name:asecret OR name:bsecret). 또한 gcloud CLI는 정규 표현식(예: name ~ "secret_ab.*")을 지원합니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud secrets list --filter="FILTER"

Windows(PowerShell)

gcloud secrets list --filter="FILTER"

Windows(cmd.exe)

gcloud secrets list --filter="FILTER"

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • 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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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\""
    }
  ]
}

보안 비밀 버전 필터링

보안 비밀 버전을 필터링하려면 다음을 수행합니다.

  • 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-01T01: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).

하위 필드에 액세스하는 경우 점 구문을 사용합니다. 예를 들어 보안 비밀 리소스에는 해당 값이 키-값 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)가 표시되지 않습니다.

다음 단계