Esta página explica o processo de filtragem de segredos e versões de segredos no Secret Manager. Em ambientes com vários segredos, a filtragem ajuda a identificar rapidamente segredos ou versões específicos sem ter de percorrer manualmente toda a lista. Pode filtrar com base em critérios como etiquetas, datas de criação ou padrões específicos nos nomes dos segredos, o que permite uma gestão focada de grupos específicos de segredos.
No Secret Manager, pode filtrar segredos e versões de segredos através da opção Filtrar na consola Google Cloud ou especificando critérios de filtro numa chamada API. Na Google Cloud CLI, pode filtrar segredos e versões de segredos incluindo uma string filter
ao listar segredos.
Filtre segredos
Para filtrar um segredo, use um dos seguintes métodos:
Consola
-
Na Google Cloud consola, aceda à página Secret Manager.
-
Na tabela Segredos, clique no campo Filtro.
-
Escolha uma propriedade de filtro e o respetivo valor, por exemplo,
Location:asia-east1
.A tabela é filtrada automaticamente com base nos valores introduzidos. Os resultados são ordenados por nome por ordem ascendente.
gcloud
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- FILTER: a string de filtro, por exemplo,
name:asecret OR name:bsecret
. A CLI gcloud também suporta 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 qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o Google Cloud ID do projeto
- FILTER: a string de filtro. Os filtros são especificados como o
filter
parâmetro de string de consulta e têm de ser codificados por URL. Por exemplo, o filtroname:asecret OR name:bsecret
seria codificado por URL comoname%3Aasecret+OR+name%3Absecret
. As expressões regulares não são suportadas na API.
Método HTTP e URL:
GET https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER
Corpo JSON do pedido:
{}
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
Deve receber uma resposta JSON semelhante à seguinte:
{ "secrets": [ { "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-02T07:14:00.281541Z", "etag": "\"16211dd90b37e7\"" } ] }
Filtre uma versão do Secret
Para filtrar uma versão do Secret, faça o seguinte:
-
Na Google Cloud consola, selecione um segredo para aceder às respetivas versões e, de seguida, use a opção Filtrar na tabela Versões.
-
Se estiver a usar a CLI Google Cloud ou a API Secret Manager, inclua uma string
filter
quando listar versões secretas.
Exemplos de filtros
Exemplo de utilização | Filtro |
---|---|
Secrets cujo nome contém a substring mysecret |
name:mysecret |
Segredos com uma etiqueta específica | labels.environment=production |
Segredos criados no intervalo de data/hora | create_time<2021-01-01T06:00:00Z AND create_time>2021-01-01T12:00:00Z |
Segredos com replicação automática | replication.automatic:* |
Secrets com replicação gerida pelo utilizador, mas não armazenados em nenhuma das regiões indicadas | replication.user_managed.replicas.location:* AND NOT replication.user_managed.replicas.location:(us-central1 OR us-east1) |
Secrets encriptados com chaves CMEK | replication.user_managed.replicas.customerManagedEncryption:* |
Segredos encriptados com uma chave CMEK específica | replication.user_managed.replicas.customerManagedEncryption.kmsKeyName=projects/p/locations/us-central1/keyRings/kr/cryptoKeys/my-cmek-key |
Segredos sem um período de rotação | NOT rotation.next_rotation_time:* |
Segredos com um período de rotação superior a 30 dias | rotation.rotation_period>259200s |
Secrets com validade definida | expire_time:* |
Segredos que 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 numa expressão num ou mais campos dos objetos que estão a ser filtrados.
Pode usar os seguintes operadores de expressão.
Operador | Descrição |
---|---|
= |
Igualdade. |
> |
Maior que. |
< |
Inferior a. |
>= |
Maior ou igual a. |
<= |
Menor ou igual a. |
!= - NOT |
Desigualdade. As seguintes opções são equivalentes:name!="topsecret" -name="topsecret" NOT name="topsecret"
|
: |
Contenção. Esta é uma correspondência de substring não sensível a maiúsculas e minúsculas.
Por exemplo, |
AND |
E lógico.
Um espaço é equivalente a |
OR |
OU lógico. |
* |
Caráter universal.
Pode ser usado como um elemento autónomo onde |
De acordo com a Cloud Search API, as operações OR
são avaliadas antes das operações AND
, a menos que sejam usados parênteses para definir explicitamente uma ordem diferente.
Quando filtrar por valores time
, codifique a hora como uma string no formato RFC 3399, como 2020-10-15T01:30:15Z
.
Ao aceder a um subcampo, use a sintaxe de ponto. Por exemplo, o recurso Secret pode incluir o campo labels
cujo valor é um par chave-valor map
.
Se for usada uma etiqueta color
, pode filtrar os resultados Secret
no subcampo labels.color
da seguinte forma:
labels.color=red
Se quiser listar apenas segredos com a etiqueta color
definida, use um caráter universal:
labels.color:*
Uma string entre aspas é interpretada como um único valor e não como uma sequência de valores.
Campos de filtro
Pode filtrar qualquer campo do objeto Secret
ou SecretVersion
.
Método de lista | Link para campos filtráveis |
---|---|
projects.secrets.list
|
Campos secretos |
projects.secrets.versions.list
|
Campos SecretVersion |
Contagem total de resultados
Sefilter
estiver definido num pedido de lista, a resposta não indica a contagem total de resultados (total_size=0
na resposta).
O que se segue?
- Saiba como editar segredos.
- Saiba como definir uma data de validade para um Secret.