Apporter des modifications groupées aux niveaux d'accès

Access Context Manager vous permet d'effectuer des mises à jour groupées des ressources appartenant à la stratégie d'accès de votre organisation, telles que niveaux d'accès et périmètres de service.

Les modifications apportées à vos ressources ne sont appliquées que si toutes les parties de l'opération groupée réussissent. Par exemple, si votre opération groupée tente de supprimer un niveau d'accès utilisé par un périmètre de service, une erreur est générée. Puisqu'une erreur se produit, l'opération entière échoue et aucune ressource n'est mise à jour.

Cette rubrique ne décrit que le remplacement groupé des niveaux d'accès. Pour plus d'informations sur le remplacement groupé des périmètres de service, reportez-vous à la documentation de VPC Service Controls.

Avant de commencer

Étant donné que les opérations groupées ont une incidence sur tous les niveaux d'accès de votre organisation, vous pouvez obtenir une liste complète de vos niveaux d'accès. La liste peut être formatée en YAML, ce qui peut également faciliter la modification groupée de vos niveaux d'accès.

Pour obtenir une liste formatée des niveaux d'accès, reportez-vous à la section Niveaux d'accès à la liste (formatée).

Effectuer un remplacement groupé des niveaux d'accès

La section suivante détaille comment effectuer un remplacement groupé de vos niveaux d'accès.

gcloud

Pour effectuer un remplacement groupé de tous les niveaux d'accès, utilisez la commande replace-all.

gcloud access-context-manager levels replace-all \
  --source-file=FILE \
  --etag=ETAG \
  [--policy=POLICY_NAME]

Où :

  • FILE est le nom d'un fichier .yaml qui définit les nouvelles conditions pour vos niveaux d'accès existants.

    Exemple :

    - name: accessPolicies/11271009391/accessLevels/corpnet_access
      title: Corpnet Access
      description: Permit access to corpnet.
      basic:
        combiningFunction: AND
        conditions:
          - ipSubnetworks:
            - 252.0.2.0/24
            - 2001:db8::/32
    - name: accessPolicies/11271009391/accessLevels/prodnet_access
      title: Prodnet Access
      description: Permit access to prodnet.
      basic:
        combiningFunction: OR
        conditions:
          - members:
            - user:exampleuser@example.com
            - serviceAccount:exampleaccount@example.iam.gserviceaccount.com
          - ipSubnetworks:
            - 176.0.2.0/24
    

    Pour d'autres exemples de la structure de conditions YAML, reportez-vous à l'exemple de fichier YAML.

  • ETAG (facultatif) est une chaîne qui représente la version cible de la règle d'accès de votre organisation. Si vous n'incluez pas d'ETag, l'opération groupée cible la dernière version de la stratégie d'accès de votre organisation.

    Pour obtenir le dernier ETag de votre règle d'accès, list vos règles d'accès.

  • POLICY_NAME est le nom de la règle d'accès de votre organisation. Cette valeur n'est requise que si vous n'avez pas défini de règle d'accès par défaut.

API

Pour effectuer un remplacement groupé de tous les niveaux d'accès, appelez accessLevels.replaceAll.

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels.replaceAll?alt=json

Où :

  • POLICY_NAME est le nom de la règle d'accès de votre organisation.

Corps de la requête

Le corps de la requête doit inclure une liste d'objets AccessLevel qui spécifient les modifications que vous souhaitez apporter.

Pour cibler une version spécifique de la stratégie d'accès de votre organisation, vous pouvez éventuellement inclure un ETag. Si vous n'en incluez pas, l'opération groupée cible la dernière version de la stratégie d'accès de votre organisation.

Exemple :

{
  "accessLevels": [
    object (AccessLevel),
    object (AccessLevel),
    ...
  ]
  "etag": string
}

Corps de la réponse

Si la requête aboutit, le corps de la réponse à l'appel contient une ressource Operation qui fournit des détails sur l'opération post.

Exemple de réponse :

{
  "name": "operations/accessPolicies/11271009391/replaceLevels/1583523446234255",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceAccessLevelsResponse",
    "accessLevels": [
      {
        "name": "accessPolicies/11271009391/accessLevels/corpnet_access",
        "title": "Corpnet access",
        "description": "Permit access to corpnet.",
        "basic": {
          "conditions": [
            {
              "ipSubnetworks": [
                "252.0.2.0/24"
              ]
            }
          ]
        }
      },
      {
        "name": "accessPolicies/11271009391/accessLevels/prodnet_access",
        "title": "Prodnet access",
        "description": "Permit access to prodnet.",
        "basic": {
          "conditions": [
            {
              "ipSubnetworks": [
                "176.0.2.0/24"
              ]
            }
          ]
        }
      }
    ]
  }
}