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
-
Accédez à la page Secret Manager dans la console Google Cloud.
-
Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux.
-
Dans le tableau Secrets régionaux, cliquez dans le champ Filtrer.
-
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 :
- LOCATION: emplacement Google Cloud du secret
- FILTER: chaîne de filtre, par exemple
name:asecret OR name:bsecret
. Gcloud CLI accepte également les expressions régulières, par exemplename ~ "secret_ab.*"
.
Exécutez la commande suivante :
Linux, macOS ou 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
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION: emplacement Google Cloud du secret
- PROJECT_ID : ID de projet Google Cloud
- 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 filtrename:asecret OR name:bsecret
est encodé au format URL sous la formename%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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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\"" } ] }
Go
Pour exécuter ce code, commencez par configurer un environnement de développement Go et installez le SDK Secret Manager pour Go. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Secret Manager pour Java. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
Python
Pour exécuter ce code, commencez par configurer un environnement de développement Python et installez le SDK Secret Manager pour Python. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
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 | Filter |
---|---|
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, |
AND |
Logical AND (Opérateur logique ET)
Un espace équivaut à |
OR |
Opérateur logique OU |
* |
Caractère générique
Peut être utilisé en tant qu'élément autonome, où |
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
Sifilter
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).