Fazer alterações em massa aos níveis de acesso

Com o Gestor de acesso sensível ao contexto, pode fazer atualizações em massa aos recursos que pertencem à política de acesso da sua organização, como níveis de acesso e perímetros de serviço.

As alterações aos seus recursos só são aplicadas se todas as partes da operação em massa forem bem-sucedidas. Por exemplo, se a sua operação em massa tentar remover um nível de acesso que está a ser usado por um perímetro de serviço, é gerado um erro. Uma vez que é encontrado um erro, toda a operação falha e nenhum recurso é atualizado.

Este tópico descreve apenas a substituição em massa de níveis de acesso. Para mais informações sobre a substituição em massa de perímetros de serviço, consulte a documentação do VPC Service Controls.

Antes de começar

Uma vez que as operações em massa afetam todos os níveis de acesso da sua organização, é recomendável obter uma lista completa dos seus níveis de acesso. A lista pode ser formatada como YAML, o que também pode facilitar as alterações em massa aos seus níveis de acesso.

Para obter uma lista formatada dos níveis de acesso, consulte o artigo Indicar nível de acesso (formatado).

Substitua em massa os níveis de acesso

A secção seguinte detalha como substituir em massa os seus níveis de acesso.

gcloud

Para substituir em massa todos os níveis de acesso, use o comando replace-all.

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

Onde:

  • FILE é o nome de um ficheiro .yaml que define as novas condições para os seus níveis de acesso existentes.

    Por exemplo:

    - 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
    

    Para ver mais exemplos da estrutura YAML das condições, consulte o ficheiro YAML de exemplo.

  • ETAG (opcional) é uma string que representa a versão de destino da política de acesso da sua organização. Se não incluir um etag, a operação em massa destina-se à versão mais recente da política de acesso da sua organização.

    Para obter a etag mais recente da sua política de acesso, list as suas políticas de acesso.

  • POLICY_NAME é o nome da política de acesso da sua organização. Este valor só é obrigatório se não tiver definido uma política de acesso predefinida.

API

Para substituir em massa todos os níveis de acesso, chame accessLevels.replaceAll.

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

Onde:

  • POLICY_NAME é o nome da política de acesso da sua organização.

Corpo do pedido

O corpo do pedido tem de incluir uma lista de objetos AccessLevel que especifiquem as alterações que quer fazer.

Opcionalmente, para segmentar uma versão específica da política de acesso da sua organização, pode incluir uma etag. Se não incluir uma etag, a operação em massa tem como destino a versão mais recente da política de acesso da sua organização.

Por exemplo:

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

Corpo da resposta

Se for bem-sucedido, o corpo da resposta da chamada contém um recurso Operation que fornece detalhes sobre a operação de publicação.

Exemplo de resposta:

{
  "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"
              ]
            }
          ]
        }
      }
    ]
  }
}