Cette rubrique traite de la prise en charge du filtrage dans les appels de liste de ressources suivants dans Secret Manager :
Utilisation
Le filtrage d'intent dans une opération list
est indiqué par la présence du champ de chaîne filter
dans le corps de la requête de liste. L'API utilise un langage simple pour faire référence aux champs de l'objet filtré.
Dans les exemples suivants, supposons qu'un sous-ensemble de secrets contienne une sous-chaîne "asecret" ou "bsecret". Spécifiez un filtre correspondant à ces secrets. Les résultats sont triés par nom dans l'ordre croissant.
gcloud
Les filtres sont spécifiés à l'aide de l'indicateur --filter
. Si votre filtre contient un espace ou un autre caractère spécial, vous devez le placer entre guillemets.
gcloud secrets list --filter="name:asecret OR name:bsecret"
La Google Cloud CLI est également compatible avec les expressions régulières, par exemple:
gcloud secrets list --filter='name ~ "secret_ab.*"'
API
Ces exemples utilisent curl pour illustrer l'utilisation de l'API. Vous pouvez générer des jetons d'accès avec gcloud auth print-access-token. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
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
.
curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER" \
--request "GET" \
--header "Authorization: Bearer ACCESS_TOKEN"
Les expressions régulières ne sont pas compatibles avec l'API.
Examples
Scénario | 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, |
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, OR
est prioritaire par défaut sur AND
.
Les parenthèses peuvent être utilisées pour indiquer la priorité d'opération souhaitée.
Lorsque vous filtrez sur des valeurs time
, encodez l'heure sous forme de chaîne dans
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
- Découvrez comment modifier des secrets.
- Découvrez comment définir une date d'expiration pour un secret.