REST Resource: projects.locations.authzPolicies

Ressource: AuthzPolicy

AuthzPolicy est une ressource qui permet de transférer le trafic vers un backend de rappel conçu pour analyser le trafic à des fins de sécurité.

Représentation JSON
{
  "name": string,
  "createTime": string,
  "updateTime": string,
  "description": string,
  "labels": {
    string: string,
    ...
  },
  "target": {
    object (Target)
  },
  "httpRules": [
    {
      object (AuthzRule)
    }
  ],
  "action": enum (AuthzAction),
  "customProvider": {
    object (CustomProvider)
  }
}
Champs
name

string

Obligatoire. Identifiant. Nom de la ressource AuthzPolicy au format suivant: projects/{project}/locations/{location}/authzPolicies/{authzPolicy}.

createTime

string (Timestamp format)

Uniquement en sortie. Code temporel de la création de la ressource.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Uniquement en sortie. Code temporel de la mise à jour de la ressource.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

description

string

Facultatif. Description lisible de la ressource.

labels

map (key: string, value: string)

Facultatif. Ensemble d'étiquettes associées à la ressource AuthzPolicy.

Le format doit respecter les exigences suivantes.

Objet contenant une liste de paires "key": value. Exemple : { "name": "wrench", "mass": "1.3kg", "count": "3" }.

target

object (Target)

Obligatoire. Indique l'ensemble de ressources auquel cette règle doit s'appliquer.

httpRules[]

object (AuthzRule)

Facultatif. Liste des règles HTTP d'autorisation à faire correspondre à la requête entrante. Une correspondance de règle se produit lorsqu'au moins une règle HTTP correspond à la requête ou lorsqu'aucune règle HTTP n'est spécifiée dans la règle. Vous devez ajouter au moins une règle HTTP pour l'action "Allow" (Autoriser) ou "Deny" (Refuser). Limité à cinq règles.

action

enum (AuthzAction)

Obligatoire. Peut être l'un des éléments suivants : ALLOW, DENY ou CUSTOM.

Lorsque l'action est CUSTOM, customProvider doit être spécifié.

Lorsque l'action est ALLOW, seules les requêtes correspondant à la stratégie sont autorisées.

Lorsque l'action est DENY, seules les requêtes correspondant à la règle sont refusées.

Lorsqu'une requête arrive, les règles sont évaluées dans l'ordre suivant:

  1. Si une règle CUSTOM correspond à la requête, elle est évaluée à l'aide des fournisseurs d'autorisation personnalisés, et la requête est refusée si le fournisseur la rejette.CUSTOM

  2. Si des règles DENY correspondent à la requête, celle-ci est refusée.

  3. Si aucune stratégie ALLOW n'est définie pour la ressource ou si l'une des stratégies ALLOW correspond à la requête, la requête est autorisée.

  4. Sinon, la requête est refusée par défaut si aucune des AuthzPolicies configurées avec l'action ALLOW ne correspond à la requête.

customProvider

object (CustomProvider)

Facultatif. Obligatoire si l'action est CUSTOM. Permet de déléguer les décisions d'autorisation à Cloud IAP ou à Service Extensions. Vous devez spécifier cloudIap ou authzExtension.

Cible

Indique l'ensemble de cibles auquel cette règle doit s'appliquer.

Représentation JSON
{
  "loadBalancingScheme": enum (LoadBalancingScheme),
  "resources": [
    string
  ]
}
Champs
loadBalancingScheme

enum (LoadBalancingScheme)

Obligatoire. Toutes les passerelles et règles de transfert référencées par cette stratégie et ses extensions doivent partager le même schéma d'équilibrage de charge. Valeurs acceptées : INTERNAL_MANAGED et EXTERNAL_MANAGED. Pour en savoir plus, consultez la section Présentation des services de backend.

resources[]

string

Obligatoire. Liste des références aux règles de transfert auxquelles cette règle s'appliquera.

LoadBalancingScheme

Schémas d'équilibrage de charge compatibles avec la ressource AuthzPolicy. Les valeurs valides sont INTERNAL_MANAGED et EXTERNAL_MANAGED. Pour en savoir plus, consultez la section Présentation des services de backend.

Enums
LOAD_BALANCING_SCHEME_UNSPECIFIED Valeur par défaut. Ne l'utilisez pas.
INTERNAL_MANAGED Indique qu'il s'agit d'un équilibreur de charge d'application interne régional ou interrégional.
EXTERNAL_MANAGED Indique qu'il s'agit d'un équilibreur de charge d'application externe global ou régional.
INTERNAL_SELF_MANAGED Indique qu'il s'agit d'un élément utilisé pour Cloud Service Mesh. Destiné uniquement au contrôleur GKE CSM.

AuthzRule

Conditions à mettre en correspondance avec la requête entrante.

Représentation JSON
{
  "from": {
    object (From)
  },
  "to": {
    object (To)
  },
  "when": string
}
Champs
from

object (From)

Facultatif. Décrit les propriétés d'une ou de plusieurs sources d'une requête.

to

object (To)

Facultatif. Décrit les propriétés d'une ou de plusieurs cibles d'une requête.

when

string

Facultatif. Expression CEL décrivant les conditions à remplir pour l'action. Le résultat de l'expression CEL est associé à la valeur "de" et à la valeur "à". Pour obtenir la liste des attributs disponibles, consultez la documentation de référence sur le langage CEL.

De

Décrit les propriétés d'une ou de plusieurs sources d'une requête.

Représentation JSON
{
  "sources": [
    {
      object (RequestSource)
    }
  ],
  "notSources": [
    {
      object (RequestSource)
    }
  ]
}
Champs
sources[]

object (RequestSource)

Facultatif. Décrit les propriétés des sources d'une requête. Vous devez spécifier au moins l'un des éléments sources ou notSources. Limité à cinq sources. Une correspondance se produit lorsqu'UNE source (dans "sources" ou "notSources") correspond à la requête. Dans une même source, la correspondance suit la sémantique AND entre les champs et la sémantique OU dans un même champ. Autrement dit, une correspondance se produit lorsque TOUT principal correspond ET que TOUTS les ipBlocks correspondent.

notSources[]

object (RequestSource)

Facultatif. Décrit les propriétés négatives des sources de requêtes. Correspond aux requêtes provenant de sources qui ne répondent pas aux critères spécifiés dans ce champ. Vous devez spécifier au moins l'un des éléments sources ou notSources.

RequestSource

Décrit les propriétés d'une seule source.

Représentation JSON
{
  "principals": [
    {
      object (StringMatch)
    }
  ],
  "resources": [
    {
      object (RequestResource)
    }
  ]
}
Champs
principals[]

object (StringMatch)

Facultatif. Liste des identités dérivées du certificat du client. Ce champ ne correspond pas à une requête, sauf si le protocole TLS mutuel est activé pour la règle de transfert ou la passerelle. Chaque identité est une chaîne dont la valeur est mise en correspondance avec l'URI SAN, le DNS SAN ou le champ d'objet du certificat du client. La correspondance peut être exacte, avec un préfixe, un suffixe ou une sous-chaîne. Vous devez spécifier l'une des valeurs "exact", "préfixe", "suffixe" ou "contient". Limité à cinq principals.

resources[]

object (RequestResource)

Facultatif. Liste des ressources à mettre en correspondance avec la ressource de la VM source d'une requête. Limité à cinq ressources.

StringMatch

Détermine la façon dont une valeur de chaîne doit être mise en correspondance.

Représentation JSON
{
  "ignoreCase": boolean,

  // Union field match_pattern can be only one of the following:
  "exact": string,
  "prefix": string,
  "suffix": string,
  "contains": string
  // End of list of possible types for union field match_pattern.
}
Champs
ignoreCase

boolean

Si la valeur est définie sur "true", la correspondance exacte/avec préfixe/avec suffixe/contenant doit être non sensible à la casse. Par exemple, le Matcher data correspond à la fois à la chaîne d'entrée Data et à data si la valeur est définie sur "true".

Champ d'union match_pattern.

match_pattern ne peut être qu'un des éléments suivants :

exact

string

La chaîne d'entrée doit correspondre exactement à la chaîne spécifiée ici.

Exemples :

  • abc ne correspond qu'à la valeur abc.
prefix

string

La chaîne d'entrée doit comporter le préfixe spécifié ici. Remarque: Les préfixes vides ne sont pas autorisés. Veuillez utiliser une expression régulière à la place.

Exemples :

  • abc correspond à la valeur abc.xyz
suffix

string

La chaîne d'entrée doit comporter le suffixe spécifié ici. Remarque: Les préfixes vides ne sont pas autorisés. Veuillez utiliser une expression régulière à la place.

Exemples :

  • abc correspond à la valeur xyz.abc
contains

string

La sous-chaîne doit être spécifiée ici dans la chaîne d'entrée. Remarque: La correspondance "contient" vide n'est pas autorisée. Veuillez utiliser une expression régulière à la place.

Exemples :

  • abc correspond à la valeur xyz.abc.def

RequestResource

Décrit les propriétés d'une ressource de VM cliente accédant aux équilibreurs de charge d'application internes.

Représentation JSON
{
  "tagValueIdSet": {
    object (TagValueIdSet)
  },
  "iamServiceAccount": {
    object (StringMatch)
  }
}
Champs
tagValueIdSet

object (TagValueIdSet)

Facultatif. Liste des ID permanents de la valeur de tag de ressource à faire correspondre à la valeur des tags Resource Manager associés à la VM source d'une requête.

iamServiceAccount

object (StringMatch)

Facultatif. Un compte de service IAM à faire correspondre au compte de service source de la VM qui envoie la requête.

TagValueIdSet

Décrit un ensemble d'ID permanents de valeur de tag de ressource à faire correspondre à la valeur des tags Resource Manager associée à la VM source d'une requête.

Représentation JSON
{
  "ids": [
    string
  ]
}
Champs
ids[]

string (int64 format)

Obligatoire. Liste des ID permanents de la valeur de tag de ressource à faire correspondre à la valeur des tags Resource Manager associés à la VM source d'une requête. La correspondance suit la sémantique AND, ce qui signifie que tous les ID doivent correspondre. Limité à cinq correspondances.

À

Décrit les propriétés d'une ou de plusieurs cibles d'une requête.

Représentation JSON
{
  "operations": [
    {
      object (RequestOperation)
    }
  ],
  "notOperations": [
    {
      object (RequestOperation)
    }
  ]
}
Champs
operations[]

object (RequestOperation)

Facultatif. Décrit les propriétés d'une ou de plusieurs cibles d'une requête. Vous devez spécifier au moins l'un des éléments "operations" ou "notOperations". Limité à cinq opérations. Une correspondance se produit lorsqu'UNE opération (dans "operations" ou "notOperations") correspond. Dans une opération, la correspondance suit la sémantique AND entre les champs et la sémantique OR dans un champ, c'est-à-dire qu'une correspondance se produit lorsqu'UN chemin d'accès correspond ET qu'UN en-tête correspond ET qu'UNE méthode correspond.

notOperations[]

object (RequestOperation)

Facultatif. Décrit les propriétés négatives des cibles d'une requête. Correspond aux requêtes d'opérations qui ne correspondent pas aux critères spécifiés dans ce champ. Vous devez spécifier au moins l'un des éléments "operations" ou "notOperations".

RequestOperation

Décrit les propriétés d'une ou de plusieurs cibles d'une requête.

Représentation JSON
{
  "headerSet": {
    object (HeaderSet)
  },
  "hosts": [
    {
      object (StringMatch)
    }
  ],
  "paths": [
    {
      object (StringMatch)
    }
  ],
  "methods": [
    string
  ]
}
Champs
headerSet

object (HeaderSet)

Facultatif. Liste des en-têtes à faire correspondre dans l'en-tête HTTP.

hosts[]

object (StringMatch)

Facultatif. Liste des hôtes HTTP à faire correspondre. La correspondance peut être exacte, avec un préfixe, un suffixe ou une sous-chaîne. Les correspondances sont toujours sensibles à la casse, sauf si ignoreCase est défini. Limité à cinq correspondances.

paths[]

object (StringMatch)

Facultatif. Liste des chemins d'accès à faire correspondre. La correspondance peut être exacte, avec un préfixe, un suffixe ou une sous-chaîne. Les correspondances sont toujours sensibles à la casse, sauf si ignoreCase est défini. Limité à cinq correspondances. Notez que cette correspondance de chemin d'accès inclut les paramètres de requête. Pour les services gRPC, il doit s'agir d'un nom complet au format /package.service/method.

methods[]

string

Facultatif. Liste des méthodes HTTP à mettre en correspondance. Chaque entrée doit être un nom de méthode HTTP valide (GET, PUT, POST, HEAD, PATCH, DELETE, OPTIONS). Elle n'autorise que les correspondances exactes et est toujours sensible à la casse.

HeaderSet

Décrit un ensemble d'en-têtes HTTP à mettre en correspondance.

Représentation JSON
{
  "headers": [
    {
      object (HeaderMatch)
    }
  ]
}
Champs
headers[]

object (HeaderMatch)

Obligatoire. Liste des en-têtes à faire correspondre dans l'en-tête HTTP. La correspondance peut être exacte, avec un préfixe, un suffixe ou une sous-chaîne. La correspondance suit la sémantique AND, ce qui signifie que tous les en-têtes doivent correspondre. Les correspondances sont toujours sensibles à la casse, sauf si ignoreCase est défini. Limité à cinq correspondances.

HeaderMatch

Détermine comment un en-tête HTTP doit être mis en correspondance.

Représentation JSON
{
  "name": string,
  "value": {
    object (StringMatch)
  }
}
Champs
name

string

Facultatif. Spécifie le nom de l'en-tête dans la requête.

value

object (StringMatch)

Facultatif. Indique comment la correspondance d'en-tête sera effectuée.

AuthzAction

Action à appliquer à cette règle. Les valeurs possibles sont ALLOW, DENY et CUSTOM.

Enums
AUTHZ_ACTION_UNSPECIFIED Action non spécifiée.
ALLOW Autorisez la requête à être transmise au backend.
DENY Refuser la requête et renvoyer un code HTTP 404 au client.
CUSTOM Délégation de la décision d'autorisation à un moteur d'autorisation externe.

CustomProvider

Permet de déléguer les décisions d'autorisation à Cloud IAP ou à Service Extensions.

Représentation JSON
{
  "cloudIap": {
    object (CloudIap)
  },
  "authzExtension": {
    object (AuthzExtension)
  }
}
Champs
cloudIap

object (CloudIap)

Facultatif. Délègue les décisions d'autorisation à Cloud IAP. Applicable uniquement aux équilibreurs de charge gérés. L'activation de Cloud IAP au niveau d'AuthzPolicy n'est pas compatible avec les paramètres Cloud IAP dans BackendService. Si vous activez l'IAP dans les deux emplacements, la requête échouera. Assurez-vous que l'IAP est activé dans AuthzPolicy ou BackendService, mais pas dans les deux.

authzExtension

object (AuthzExtension)

Facultatif. Délégation de la décision d'autorisation à une extension de service créée par l'utilisateur. Vous ne pouvez spécifier qu'un seul des éléments cloudIap ou authzExtension.

CloudIap

Ce type ne comporte aucun champ.

Facultatif. Délègue les décisions d'autorisation à Cloud IAP. Applicable uniquement aux équilibreurs de charge gérés. L'activation de Cloud IAP au niveau d'AuthzPolicy n'est pas compatible avec les paramètres Cloud IAP dans BackendService. Si vous activez l'IAP dans les deux emplacements, la requête échouera. Assurez-vous que l'IAP est activé dans AuthzPolicy ou BackendService, mais pas dans les deux.

AuthzExtension

Facultatif. Délégation de la décision d'autorisation à une extension créée par l'utilisateur. Vous ne pouvez spécifier qu'un seul des éléments cloudIap ou authzExtension.

Représentation JSON
{
  "resources": [
    string
  ]
}
Champs
resources[]

string

Obligatoire. Liste des références aux extensions d'autorisation qui seront appelées pour les requêtes correspondant à cette stratégie. Limité à un fournisseur personnalisé.

Méthodes

create

Créer une ressource AuthzPolicy dans un projet et un emplacement donnés.

delete

Supprime un seul objet AuthzPolicy.

get

Récupère les détails d'un seul objet AuthzPolicy.

list

Répertorie les AuthzPolicies d'un projet et d'un emplacement donnés.

patch

Mettre à jour les paramètres d'un seul objet AuthzPolicy.