Filtrer des listes de secrets et de versions de secrets

Cette page explique comment filtrer les secrets et les versions de secrets dans Secret Manager. Dans les environnements comportant de nombreux secrets, le filtrage permet d'identifier rapidement des secrets ou des versions spécifiques sans avoir à faire défiler manuellement la liste entière. Vous pouvez filtrer en fonction de critères tels que des libellés, des dates de création ou des modèles spécifiques dans les noms de secrets, ce qui vous permet de gérer des groupes de secrets spécifiques.

Dans Secret Manager, vous pouvez filtrer les secrets et les versions de secrets à l'aide de l'option Filtrer dans la console Google Cloud ou en spécifiant des critères de filtrage dans un appel d'API. Dans la Google Cloud CLI, vous pouvez filtrer les secrets et les versions de secrets en incluant une chaîne filter lorsque vous listez des secrets.

Filtrer les secrets

Pour filtrer un secret, utilisez l'une des méthodes suivantes:

Console

  1. Dans la console Google Cloud, accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Dans le tableau Secrets, cliquez dans le champ Filtre.

  3. Choisissez une propriété de filtre et sa valeur correspondante, par exemple Location:asia-east1.

    Le tableau est automatiquement filtré en fonction des valeurs saisies. Les résultats sont triés par nom dans l'ordre croissant.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • FILTER: chaîne de filtre, par exemple name:asecret OR name:bsecret. La CLI gcloud accepte également les expressions régulières, par exemple name ~ "secret_ab.*".

Exécutez la commande suivante :

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

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du Google Cloud projet
  • FILTER: chaîne de filtre. Les filtres sont spécifiés en tant que paramètre de chaîne de requête filter et doivent être encodés en URL. Par exemple, le filtre name:asecret OR name:bsecret est encodé au format URL sous la forme name%3Aasecret+OR+name%3Absecret. Les expressions régulières ne sont pas acceptées dans l'API.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON de ce type :

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

Filtrer une version de secret

Pour filtrer une version de secret, procédez comme suit:

  • Dans la console Google Cloud, sélectionnez un secret pour accéder à ses versions, puis utilisez l'option Filtrer dans le tableau Versions.

  • Si vous utilisez la Google Cloud CLI ou l'API Secret Manager, incluez une chaîne filter lorsque vous listez les versions de secret.

Exemples de filtres

Cas d'utilisation Filtre
Les secrets dont le nom contient la sous-chaîne mysecret name:mysecret
Secrets avec un libellé spécifique labels.environment=production
Secrets créés dans la plage de dates/heures create_time<2021-01-01T06:00:00Z AND create_time>2021-01-01T12:00:00Z
Secrets avec réplication automatique replication.automatic:*
Secrets avec réplication gérée par l'utilisateur, mais non stockés dans l'une des régions données replication.user_managed.replicas.location:* AND NOT replication.user_managed.replicas.location:(us-central1 OR us-east1)
Secrets chiffrés avec des clés CMEK replication.user_managed.replicas.customerManagedEncryption:*
Secrets chiffrés avec une clé CMEK spécifique replication.user_managed.replicas.customerManagedEncryption.kmsKeyName=projects/p/locations/us-central1/keyRings/kr/cryptoKeys/my-cmek-key
Secrets sans période de rotation NOT rotation.next_rotation_time:*
Secrets avec une période de rotation supérieure à 30 jours rotation.rotation_period>259200s
Secrets avec délai d'expiration défini expire_time:*
Les secrets expirent avant une date expire_time<2021-07-31
Versions activées ou désactivées state:(ENABLED OR DISABLED)
Versions détruites, détruites après la date state:DESTROYED AND destroy_time>2021-01-01

Syntaxe des filtres

La syntaxe de filtrage consiste en une expression portant sur un ou plusieurs champs des objets filtrés.

Cette expression accepte les opérateurs suivants.

Opérateur Description
= Égal à
> Supérieur à
< Inférieur à
>= Supérieur ou égal à
<= Inférieur ou égal à
!=
-
NOT
Différent de Les expressions suivantes sont équivalentes :
name!="topsecret"
-name="topsecret"
NOT name="topsecret"
:

Inclusion. Il s'agit d'une correspondance de sous-chaîne insensible à la casse.

Par exemple, name:"myapp" filtre les ressources dont le nom contient myapp (non sensible à la casse).

AND

Logical AND (Opérateur logique ET)

Un espace équivaut à AND, ce qui signifie que ce qui est équivalent :
name:"myapp" AND name:"secret1"
name:"myapp" name:"secret1"

OR Opérateur logique OU
*

Caractère générique

Peut être utilisé en tant qu'élément autonome, où field:* indique que field est défini.

Conformément à l'API Cloud Search, les opérations OR sont évaluées avant les opérations AND, sauf si des parenthèses sont utilisées pour définir explicitement un ordre différent.

Lors du filtrage sur les valeurs time, encodez l'heure sous la forme de chaîne au format RFC 3399, par exemple 2020-10-15T01:30:15Z.

Pour accéder à un sous-champ, utilisez la syntaxe à points. Par exemple, la ressource Secret peut inclure le champ labels dont la valeur est une clé-valeur map. Si un libellé color est utilisé, vous pouvez filtrer les résultats de Secret sur le sous-champ labels.color comme suit:

labels.color=red

Si vous souhaitez ne répertorier que les secrets associés à l'ensemble de libellés color, utilisez un caractère générique :

labels.color:*

Une chaîne entre guillemets est interprétée comme une valeur unique plutôt que comme une séquence de valeurs.

Filtrer les champs

Vous pouvez filtrer sur n'importe quel champ de l'objet Secret ou SecretVersion.

Méthode list Lien vers les champs filtrables
projects.secrets.list Champs secrets
projects.secrets.versions.list Champs SecretVersion

Nombre total de résultats

Si filter est défini dans une requête de liste, la réponse n'indique pas le nombre total de résultats (total_size=0 dans la réponse).

Étape suivante