Como fazer alterações em massa em perímetros de serviço

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 dos seus recursos só serã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 ver mais informações sobre a substituição em massa de níveis de acesso, consulte a documentação do Access Context Manager.

Conferir uma lista de perímetros de serviço

Como as operações em massa afetam todos os perímetros de serviço da sua organização, é possível ter uma lista completa dos perímetros. Além disso, você pode formatar essa lista como YAML e usá-la para fazer mudanças em massa nos perímetros.

Para conferir uma lista formatada de perímetros de serviço, consulte Listar perímetros de serviço (formatados).

Ao substituir todas as configurações do perímetro de serviço com o comando replace-all, não defina os campos etag nos perímetros. É provável que os Etags mudem entre a busca e a atualização dos perímetros, fazendo com que o comando replace-all retorne um erro de incompatibilidade de Etag. No entanto, é possível definir um etag para toda a solicitação replace-all com o parâmetro --etag de nível superior se você quiser aplicar a verificação de ETag.

Em vez de remover manualmente cada uma das propriedades etag nos perímetros, é possível buscar 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)"

Substituir em massa os perímetros de serviço

A seção a seguir detalha como substituir os perímetros de serviço em massa.

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 \

Em que:

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

  • FILE é o nome de um arquivo .yaml que define as novas configurações para os perímetros de serviço atuais.

    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 arquivo YAML, consulte a estrutura JSON do objeto ServicePerimeterConfig do Access Context Manager.

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

API

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

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

{
  "servicePerimeters": [
    object (ServicePerimeterConfig),
    object (ServicePerimeterConfig),
    ...
  ]
  "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/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"
          ]
        }
      }
    ]
  }
}