Filtrar listas de secrets e versões de secrets

Esta página explica o processo de filtragem de secrets e versões de secrets no Secret Manager. Em ambientes com vários secrets, a filtragem ajuda a identificar rapidamente secrets ou versões específicos sem rolar manualmente a lista inteira. É possível filtrar com base em critérios como rótulos, datas de criação ou padrões específicos em nomes de segredos, permitindo o gerenciamento focado de grupos específicos de segredos.

No Secret Manager, é possível filtrar segredos e versões de segredos usando a opção Filtrar no console do Google Cloud ou especificando critérios de filtro em uma chamada de API. Na CLI do Google Cloud, é possível filtrar segredos e versões de segredos incluindo uma string filter ao listar segredos.

Filtrar secrets

Para filtrar um secret, use um dos seguintes métodos:

Console

  1. No console do Google Cloud, acesse a página Secret Manager.

    Acessar o Secret Manager

  2. Na tabela Chaves secretas, clique no campo Filtro.

  3. Escolha uma propriedade de filtro e o valor correspondente, por exemplo, Location:asia-east1.

    A tabela é filtrada automaticamente com base nos valores inseridos. Os resultados são classificados por nome em ordem crescente.

gcloud

Antes de usar os dados do comando abaixo, faça estas substituições:

  • FILTER: a string de filtro, por exemplo, name:asecret OR name:bsecret. A CLI gcloud também oferece suporte a expressões regulares, por exemplo, name ~ "secret_ab.*".

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud secrets list --filter="FILTER"

Windows (PowerShell)

gcloud secrets list --filter="FILTER"

Windows (cmd.exe)

gcloud secrets list --filter="FILTER"

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do Google Cloud projeto
  • FILTER: a string de filtro. Os filtros são especificados como o parâmetro de querystring filter e precisam ser codificados para URL. Por exemplo, o filtro name:asecret OR name:bsecret seria codificado como URL como name%3Aasecret+OR+name%3Absecret. As expressões regulares não são compatíveis com a API.

Método HTTP e URL:

GET https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER

Corpo JSON da solicitação:

{}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a esta:

{
  "secrets": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
      "createTime": "2024-09-02T07:14:00.281541Z",
      "etag": "\"16211dd90b37e7\""
    }
  ]
}

Filtrar uma versão do secret

Para filtrar uma versão secreta, faça o seguinte:

  • No console do Google Cloud, selecione um segredo para acessar as versões dele e use a opção Filter na tabela Versions.

  • Se você estiver usando a CLI do Google Cloud ou a API Secret Manager, inclua uma string filter ao listar versões de segredos.

Exemplos de filtros

Caso de uso Filtro
Os secrets com nome que contém a substring mysecret name:mysecret
Secrets com um rótulo específico labels.environment=production
Secrets criados dentro do intervalo de data/hora create_time<2021-01-01T06:00:00Z AND create_time>2021-01-01T12:00:00Z
Secrets com replicação automática replication.automatic:*
Secrets com replicação gerenciada pelo usuário, mas não armazenados em nenhuma das regiões informadas replication.user_managed.replicas.location:* AND NOT replication.user_managed.replicas.location:(us-central1 OR us-east1)
Secrets criptografados com chaves CMEK replication.user_managed.replicas.customerManagedEncryption:*
Secrets criptografados com uma chave CMEK específica replication.user_managed.replicas.customerManagedEncryption.kmsKeyName=projects/p/locations/us-central1/keyRings/kr/cryptoKeys/my-cmek-key
Chaves secretas sem um período de rotação NOT rotation.next_rotation_time:*
Secrets com período de rotação > 30d rotation.rotation_period>259200s
Secrets com expiração definida expire_time:*
Os secrets expiram antes de uma data. expire_time<2021-07-31
Versões ativadas ou desativadas state:(ENABLED OR DISABLED)
Versões destruídas, destruídas após a data state:DESTROYED AND destroy_time>2021-01-01

Sintaxe do filtro

A sintaxe do filtro consiste em uma expressão em um ou mais campos dos objetos que estão sendo filtrados.

Você pode usar os seguintes operadores de expressão.

Operador Descrição
= Igual a
> Maior que
< Menor que
>= Maior que ou igual a
<= Menor que ou igual a
!=
-
NOT
Diferente de Os seguintes são equivalentes:
name!="topsecret"
-name="topsecret"
NOT name="topsecret"
:

Contenção. Essa é uma correspondência de substring que não diferencia maiúsculas de minúsculas.

Por exemplo, name:"myapp" filtra recursos que contêm myapp (não diferencia maiúsculas de minúsculas) no nome do recurso.

AND

Lógico AND

Um espaço é equivalente a AND, portanto, o seguinte é equivalente:
name:"myapp" AND name:"secret1"
name:"myapp" name:"secret1"

OR "OU" lógico.
*

Curinga.

Pode ser usada como autônoma, em que field:* indica que field está definido.

De acordo com a API Cloud Search, as operações OR são avaliadas antes das operações AND, a menos que parênteses sejam usados para definir explicitamente uma ordem diferente.

Ao filtrar valores time, codifique a hora como uma string no formato RFC 3399, como 2020-10-15T01:30:15Z.

Ao acessar um subcampo, use a sintaxe de ponto. Por exemplo, o recurso Secret pode incluir o campo labels, cujo valor é uma chave-valor map. Se um rótulo color for usado, será possível filtrar os resultados de Secret no subcampo labels.color da seguinte maneira:

labels.color=red

Para listar apenas secrets com o rótulo color definido, use um caractere curinga:

labels.color:*

Uma string entre aspas é interpretada como um valor único, e não como uma sequência de valores.

Filtrar campos

É possível filtrar por qualquer campo de objeto Secret ou SecretVersion.

Método de lista Link para campos que aceitam filtros
projects.secrets.list Campos secretos
projects.secrets.versions.list Campos SecretVersion

Contagem total de resultados

Se filter estiver definido em uma solicitação de lista, a resposta não indicará a contagem total de resultados (total_size=0 na resposta).

A seguir