Como fazer alterações em massa nos níveis de acesso

Usando o Access Context Manager, é possível fazer atualizações em massa de 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 nos seus recursos serão aplicadas apenas se todas as partes da operação em massa forem bem-sucedidas. Por exemplo, se sua operação em massa tentar remover um nível de acesso que está sendo usado por um perímetro de serviço, será gerado um erro. Como um erro é encontrado, toda a operação falha e nenhum recurso é atualizado.

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

Antes de começar

Como as operações em massa afetam todos os níveis de acesso da sua organização, talvez você queira ver uma lista completa dos níveis de acesso. A lista pode ser formatada como YAML, o que também pode fazer alterações em massa nos níveis de acesso com mais facilidade.

Para ver uma lista formatada de níveis de acesso, consulte Listar níveis de acesso (formatados).

Níveis de acesso de substituição em massa

A seção a seguir detalha como substituir em massa 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]

Em que:

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

    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 mais exemplos da estrutura de condições YAML, consulte o arquivo YAML de exemplo.

  • ETAG (opcional) é uma string que representa a versão de destino da política de acesso da sua organização. Se você não incluir uma ETag, a operação em massa terá como alvo a versão mais recente da política de acesso da sua organização.

    Para receber a última ETag da sua política de acesso, list suas políticas de acesso.

  • POLICY_NAME é o nome da política de acesso da organização. Esse valor é necessário somente se você não tiver definido uma política de acesso padrão.

API

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

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

Em que:

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

Corpo da solicitação

O corpo da solicitação precisa incluir uma lista de objetos AccessLevel que especifiquem as alterações que você quer fazer.

Opcionalmente, para direcionar uma versão específica da política de acesso da sua organização, é possível incluir um etag. Se você não incluir uma ETag, a operação em massa terá como alvo a versão mais recente da política de acesso da sua organização.

Exemplo:

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

Corpo da resposta

Caso a chamada seja bem-sucedida, o corpo da resposta incluirá 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"
              ]
            }
          ]
        }
      }
    ]
  }
}