Fazer alterações em massa a perímetros de serviço

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.

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

Aceda a uma lista de perímetros de serviço

Uma vez que as operações em massa afetam todos os perímetros de serviço da sua organização, pode obter uma lista completa dos seus perímetros. Além disso, pode formatar esta lista como YAML e usá-la para fazer alterações em massa aos seus perímetros.

Para obter uma lista formatada de perímetros de serviço, consulte o artigo Indicar perímetros de serviço (formatado).

Quando substitui todas as configurações do perímetro de serviço com o comando replace-all, não deve definir os campos etag nos perímetros. É provável que as etags mudem entre a obtenção e a atualização dos perímetros, o que faz com que o comando replace-all devolva um erro de incompatibilidade de etags. No entanto, pode definir um etag para todo o pedido replace-all com o parâmetro --etag de nível superior se quiser aplicar a verificação de etag.

Em vez de remover manualmente cada uma das propriedades etag nos perímetros, pode obter os perímetros sem propriedades etag especificando um --format com todos os campos, exceto etag.

gcloud access-context-manager perimeters list \
  --policy=POLICY_NAME \
  --format="json(name,title,description,perimeterType,status,spec,useExplicitDryRunSpec)"

Substitua em massa os perímetros de serviço

A secção seguinte detalha como substituir em massa os perímetros de serviço.

gcloud

Para substituir em massa todos os perímetros de serviço, use o comando replace-all.

gcloud access-context-manager perimeters replace-all POLICY_NAME \
  --source-file=FILE \
  --etag=ETAG \

Onde:

  • 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.

  • FILE é o nome de um ficheiro .yaml que define as novas definições para os seus perímetros de serviço existentes.

    Por exemplo:

    - name: accessPolicies/11271009391/servicePerimeters/storage_perimeter
      title: Storage Perimeter
      description: Perimeter to protect Storage resources.
      perimeterType: PERIMETER_TYPE_REGULAR
      status:
        restrictedServices:
        - storage.googleapis.com
    - name: accessPolicies/11271009391/servicePerimeters/bigquery_perimeter
      title: BigQuery Perimeter
      description: Perimeter to protect BigQuery resources.
      perimeterType: PERIMETER_TYPE_REGULAR
      status:
        restrictedServices:
        - bigquery.googleapis.com
    

    Para mais informações sobre a formatação do ficheiro YAML, consulte a estrutura JSON do objeto ServicePerimeterConfig do Gestor de Contexto de Acesso.

  • 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.

API

Para substituir em massa todos os perímetros de serviço, ligue para servicePerimeters.replaceAll.

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/servicePerimeters.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 ServicePerimeterConfig 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:

{
  "servicePerimeters": [
    object (ServicePerimeterConfig),
    object (ServicePerimeterConfig),
    ...
  ]
  "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/replacePerimeters/1583523447707087",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceServicePerimetersResponse",
    "servicePerimeters": [
      {
        "name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
        "title": "Storage Perimeter",
        "description": "Perimeter to protect Storage resources.",
        "status": {
          "accessLevels": [
            "accessPolicies/11271009391/accessLevels/corpnet_access"
          ],
          "restrictedServices": [
            "bigtable.googleapis.com"
          ]
        }
      },
      {
        "name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
        "title": "BigQuery Perimeter",
        "description": "Perimeter to protect BigQuery resources.",
        "status": {
          "accessLevels": [
            "accessPolicies/11271009391/accessLevels/prodnet_access"
          ],
          "restrictedServices": [
            "bigtable.googleapis.com"
          ]
        }
      }
    ]
  }
}