Como restringir locais dos recursos

Visão geral

Este guia descreve como definir uma política da organização que inclua a restrição de locais de recurso.

Você pode limitar a localização física de um novo recurso com a restrição de locais de recursos do Serviço de Políticas da Organização. Use a propriedade de localização de um recurso para identificar onde ele é implantado e mantido pelo serviço. Para recursos contendo dados de alguns serviços do Google Cloud, essa propriedade também reflete o local onde os dados são armazenados. Essa restrição permite que você defina os locais do Google Cloud em que os recursos para serviços de suporte na sua hierarquia podem ser criados.

Depois de definir os locais dos recursos, essa limitação será aplicada somente aos recursos recém-criados. Os recursos que você criou antes de definir a restrição de locais do recurso continuarão a existir e a executar a função deles.

Uma política que inclua essa restrição não será aplicada na criação de sub-recursos para determinados serviços, como Cloud Storage e Dataproc.

Limitações

A restrição do Serviço das Políticas da Organização de locais do recursos controla a capacidade de criar recursos regionais. Isso não afetará onde os recursos globais são criados. Para evitar a quebra da infraestrutura de veiculação existente, você deve testar todas as novas políticas em projetos e pastas que não sejam de produção e aplicá-las gradualmente em sua organização.

Para confirmação do armazenamento de dados, consulte os Termos de serviço do Google Cloud e os Termos específicos do serviço. As políticas da organização que contêm a restrição de locais do recurso não são compromissos de armazenamento de dados.

Essa restrição se aplica a um subconjunto específico de produtos e tipos de recursos. Para obter uma lista dos serviços de suporte atuais e detalhes sobre o comportamento de cada serviço, consulte a página Serviços de suporte dos locais de recursos.

Tipos de local

Você pode implantar recursos do Google Cloud em tipos de locais que representem categorias de tamanhos diferentes. O maior tipo de local é o multi-region, que inclui mais de uma region. Cada region é subdividido em zones. Para mais informações sobre regiões e zonas, consulte a Visão geral de regiões e zonas.

  • Locais Multi-region são respaldados por recursos físicos em mais de uma region e normalmente são usados apenas por recursos baseados em armazenamento. Alguns exemplos incluem us, asia, europe e global.

  • Locais de tipo Region estão geograficamente isolados uns dos outros. Alguns exemplos incluem us-west1 (Oregon), asia-northeast1 (Tóquio) e europe-west1 (Bélgica).

  • Locais de tipo Zone são o tipo de local mais granular e isolado usados para implantar recursos. Uma zone é um domínio de falha independente dentro de uma region. Alguns exemplos são us-east1-a, us-west1-b e asia-northeast1-a.

Ao configurar locais, você deve usar o prefixo in: e um Grupo de Valores. Usar um Grupo de Valores gerenciado pelo Google Cloud permite que você escolha uma ou mais localizações geográficas, sem precisar especificar locais atuais ou futuros do Cloud.

O prefixo in: para um Grupo de Valores especifica que todos os valores existentes no grupo de valores são considerados parte da política. Se você inserir um valor de grupo ou uma região do Google Cloud sem o prefixo, o prefixo in: será adicionado automaticamente, de acordo com as regras abaixo:

  • Se você inserir um local que use o prefixo in: e ele contiver qualquer grupo inválido, a alteração da política falhará.
  • Se você digitar um local que é uma região, como us-east1, ele terá o prefixo in: anexado, para, no caso, in:us-east1-locations.
  • Se você inserir uma região ou um grupo de valores de várias regiões como us-locations, ele terá o prefixo in: anexado, para, no caso, in:us-locations.
  • Se você inserir uma zona ou multirregião como us-east1-a ou us, os valores não serão alterados.

Como definir a política da organização

A restrição de locais de recursos é um tipo de restrição de lista. É possível adicionar e remover locais das listas allowed_values ou denied_values de uma restrição de locais do recurso. Para impedir que as políticas da organização restrinjam o comportamento do serviço inesperadamente, à medida que novos locais são adicionados à lista disponível, use um grupo de valor ou uma lista de allowed_values que representa todo o limite geográfico que você quer definir.

Para definir uma política organizacional incluindo uma restrição de locais de recursos:

Console

  1. Acesse a página de políticas da organização no Console do Google Cloud. Acessar a página "Políticas da organização"

  2. Selecione a organização que você quer editar:

    1. Clique na lista suspensa do projeto localizada no topo da página.

    2. Na caixa de diálogo Selecionar de, clique na lista suspensa da organização e selecione a organização que terá sua política definida.

  3. Clique em Google Cloud Platform - Restrição de local de recursos.

  4. Clique em Edit.

  5. Em É aplicável a, selecione Personalizar.

  6. Em Valores da política, selecione Personalizado.

  7. Na caixa Valor da política, insira o prefixo in e um grupo de valores e pressione Enter. Por exemplo, in:us-locations ou in:us-west1-locations. É possível inserir várias strings de local.

    1. Também é possível inserir locais específicos de zona, região ou multirregião como strings de local. Para obter uma lista de locais disponíveis, consulte a página Serviços de suporte dos locais de recursos.
  8. Clique em Salvar. Uma notificação será exibida para confirmar a atualização da política.

gcloud

Você pode definir políticas com a ferramenta de linha de comando gcloud. Para criar uma política que inclua a restrição de locais do recurso, primeiro crie um arquivo de política:

cat POLICY.YAML
etag: BwVUSr8Q7Ng=
constraint: constraints/gcp.resourceLocations
listPolicy:
  deniedValues:

  • in:us-east1-locations
  • in:northamerica-northeast1-locations

Em seguida, execute o comando set-policy:

gcloud beta resource-manager org-policies set-policy \
    --organization 'ORGANIZATION_ID' \
    POLICY.YAML

Em que:

  • ORGANIZATION_ID é o ID do nó da organização em que essa política será definida;
  • POLICY.YAML é o arquivo .yaml que contém a política da organização que você quer.

Uma resposta será retornada com os resultados da nova política da organização:

constraint: constraints/gcp.resourceLocations
etag: BwVUSr8Q7Ng=
listPolicy:
  deniedValues:
  - in:us-east1-locations
  - in:northamerica-northeast1-locations
updateTime: '2018-01-01T00:00:00.000Z'

Também é possível inserir locais específicos de zona, região ou multirregião como strings de local. Para obter uma lista de locais disponíveis, consulte a página Serviços de suporte dos locais de recursos.

API

É possível usar a API do Resource Manager para definir uma política da organização em um recurso. Você precisará de um token do portador OAuth 2.0 para autenticação e autorização.

Para definir uma política da organização usando a restrição de locais do recurso:

curl -X POST -H "Content-Type: application/json" -H "Authorization: \
Bearer ${bearer_token}" -d '{policy: {etag: "BwVtXec438Y=", constraint: \
"constraints/gcp.resourceLocations", list_policy: {denied_values: \
["in:europe-locations", "in:southamerica-locations"] }}}' \
https://cloudresourcemanager.googleapis.com/v1/organizations/123456789:setOrgPolicy

Uma resposta será retornada com os resultados da nova política da organização:

{
  "constraint": "constraints/gcp.resourceLocations",
  "etag": "BwVtXec438Y=",
  "updateTime": "2018-01-01T00:00:00.000Z",
  "listPolicy": {
    "deniedValues": [
      "europe-locations",
      "southamerica-locations",
    ]
  }
}

Também é possível inserir locais específicos de zona, região ou multirregião como strings de local. Para obter uma lista de locais disponíveis, consulte a página Serviços de suporte dos locais de recursos.

Para saber mais sobre o uso de restrições nas políticas da organização, consulte Usando restrições.

Como usar a herança na política da organização

É possível refinar a política da organização para herdar a política da organização dos nós pai do recurso. A herança fornece controle granular sobre as políticas da organização usadas em toda a hierarquia de recursos.

Para ativar a herança em um nó de recurso, defina inheritFromParent = true no arquivo .yaml da política da organização. Exemplo:

etag: BwVtXec438Y=
constraint: constraints/gcp.resourceLocations
listPolicy:
  deniedValues:
    "us-west1"
  inheritFromParent: true

Exemplo de mensagem de erro

Os serviços que oferecem suporte à restrição de local do recurso são impedidos de criar novos recursos em locais que violem a restrição. Se um serviço tentar criar um recurso em um local que viole a restrição, a tentativa falhará e uma mensagem de erro será gerada.

Esta mensagem de erro terá este formato: LOCATION_IN_REQUEST violates constraint constraints/gcp.resourceLocations on the resource RESOURCE_TESTED. .

No exemplo a seguir, um recurso do Compute Engine falha ao criar uma instância nova por causa da aplicação da política:

Location ZONE:us-east1-b violates constraint constraints/gcp.resourceLocations
on the resource
projects/policy-violation-test/zones/us-east1-b/instances/instance-3.

Pacote de operações do Google Cloud e entrada de registro do Registros de Auditoria do Cloud:

{
 insertId: "5u759gdngec"
 logName: "projects/policy-violation-test/logs/cloudaudit.googleapis.com%2Factivity"
 protoPayload: {
  @type: "type.googleapis.com/google.cloud.audit.AuditLog"
  authenticationInfo: {…}
  authorizationInfo: [6]
  methodName: "beta.compute.instances.insert"
  request: {…}
  requestMetadata: {…}
  resourceLocation: {…}
  resourceName: "projects/policy-violation-test/zones/us-east1-b/instances/instance-3"
  response: {
   @type: "type.googleapis.com/error"
   error: {
    code: 412
    errors: [
     0: {
      domain: "global"
      location: "If-Match"
      locationType: "header"
      message: "Location ZONE:us-east1-b violates constraint constraints/gcp.resourceLocations on the resource projects/policy-violation-test/zones/us-east1-b/instances/instance-3."
      reason: "conditionNotMet"
     }
    ]
    message: "Location ZONE:us-east1-b violates constraint constraints/gcp.resourceLocations on the resource projects/policy-violation-test/zones/us-east1-b/instances/instance-3."
   }
  }
  serviceName: "compute.googleapis.com"
  status: {
   code: 3
   message: "INVALID_ARGUMENT"
  }
 }
 receiveTimestamp: "2019-06-14T03:04:23.660988360Z"
 resource: {
  labels: {…}
  type: "gce_instance"
 }
 severity: "ERROR"
 timestamp: "2019-06-14T03:04:22.783Z"
}

Grupos de valores

Grupos de valores são conjuntos de grupos e locais selecionados pelo Google para fornecer uma maneira simples de definir os locais dos recursos. Os grupos de valores incluem muitos locais relacionados e são expandidos ao longo do tempo pelo Google sem a necessidade de alterar a política da sua organização para acomodar os novos locais.

Para usar grupos de valores na sua política da organização, insira a string in: no prefixo das entradas. Para mais informações sobre o uso de valores prefixo, consulte Usando restrições. Os nomes dos grupos não são validados na chamada para definir a política da organização. Se o nome do grupo fornecido não existir, nenhum novo valor será adicionado à política da organização, a menos que esse nome de grupo seja criado pelo Google posteriormente.

A tabela a seguir contém a lista atual de grupos disponíveis:

Grupo Detalhes Membros diretos
Ásia Todos os locais na Ásia:
in:asia-locations
Grupos:
  • asia-east1-locations
  • asia-east2-locations
  • asia-northeast1-locations
  • asia-northeast2-locations
  • asia-northeast3-locations
  • asia-south1-locations
  • asia-southeast1-locations
  • asia-southeast2-locations

Valores:
  • asia
  • asia1
Taiwan Todos os locais em Taiwan:
in:asia-east1-locations
Valores:
  • asia-east1
  • asia-east1-a
  • asia-east1-b
  • asia-east1-c
Hong Kong Todos os locais em Hong Kong:
in:asia-east2-locations
Valores:
  • asia-east2
  • asia-east2-a
  • asia-east2-b
  • asia-east2-c
Tóquio Todos os locais em Tóquio:
in:asia-northeast1-locations
Valores:
  • asia-northeast1
  • asia-northeast1-a
  • asia-northeast1-b
  • asia-northeast1-c
Osaka Todos os locais em Osaka:
in:asia-northeast2-locations
Valores:
  • asia-northeast2
  • asia-northeast2-a
  • asia-northeast2-b
  • asia-northeast2-c
Seul Todos os locais em Seul:
in:asia-northeast3-locations
Valores:
  • asia-northeast3
  • asia-northeast3-a
  • asia-northeast3-b
  • asia-northeast3-c
Mumbai Todos os locais em Mumbai:
in:asia-south1-locations
Valores:
  • asia-south1
  • asia-south1-a
  • asia-south1-b
  • asia-south1-c
Singapura Todos os locais em Singapura:
in:asia-southeast1-locations
Valores:
  • asia-southeast1
  • asia-southeast1-a
  • asia-southeast1-b
  • asia-southeast1-c
Jacarta Todos os locais em Jacarta:
in:asia-southeast2-locations
Valores:
  • asia-southeast2
  • asia-southeast2-a
  • asia-southeast2-b
  • asia-southeast2-c
Austrália Todos os locais na Austrália:
in:australia-locations
Grupos:
  • australia-southeast1-locations
Sydney Todos os locais em Sydney:
in:australia-southeast1-locations
Valores:
  • australia-southeast1
  • australia-southeast1-a
  • australia-southeast1-b
  • australia-southeast1-c
União Europeia Todos os locais na União Europeia:
in:eu-locations
Grupos:
  • europe-north1-locations
  • europe-west1-locations
  • europe-west3-locations
  • europe-west4-locations

Valores:
  • EU
  • eu
Finlândia Todos os locais na Finlândia:
in:europe-north1-locations
Valores:
  • europe-north1
  • europe-north1-a
  • europe-north1-b
  • europe-north1-c
Bélgica Todos os locais na Bélgica:
in:europe-west1-locations
Valores:
  • europe-west1
  • europe-west1-b
  • europe-west1-c
  • europe-west1-d
Frankfurt Todos os locais em Frankfurt:
in:europe-west3-locations
Valores:
  • europe-west3
  • europe-west3-a
  • europe-west3-b
  • europe-west3-c
Holanda Todos os locais na Holanda:
in:europe-west4-locations
Valores:
  • europe-west4
  • europe-west4-a
  • europe-west4-b
  • europe-west4-c
Europa Todos os locais na Europa:
in:europe-locations
Grupos:
  • europe-north1-locations
  • europe-west1-locations
  • europe-west2-locations
  • europe-west3-locations
  • europe-west4-locations
  • europe-west6-locations

Valores:
  • EU
  • eu
  • eur3
  • eur4
  • eur5
  • europe
  • europe-west
Londres Todos os locais em Londres:
in:europe-west2-locations
Valores:
  • europe-west2
  • europe-west2-a
  • europe-west2-b
  • europe-west2-c
Zurique Todos os locais em Zurique:
in:europe-west6-locations
Valores:
  • europe-west6
  • europe-west6-a
  • europe-west6-b
  • europe-west6-c
América do Norte Todos os locais na América do Norte:
in:northamerica-locations
Grupos:
  • northamerica-northeast1-locations
  • us-locations
Montreal Todos os locais em Montreal:
in:northamerica-northeast1-locations
Valores:
  • northamerica-northeast1
  • northamerica-northeast1-a
  • northamerica-northeast1-b
  • northamerica-northeast1-c
Estados Unidos Todos os locais nos Estados Unidos:
in:us-locations
Grupos:
  • us-central1-locations
  • us-central2-locations
  • us-east1-locations
  • us-east4-locations
  • us-west1-locations
  • us-west2-locations
  • us-west3-locations
  • us-west4-locations

Valores:
  • US
  • nam10
  • nam3
  • nam4
  • nam5
  • nam6
  • us
  • us-central
Iowa Todos os locais em Iowa:
in:us-central1-locations
Valores:
  • us-central1
  • us-central1-a
  • us-central1-b
  • us-central1-c
  • us-central1-f
Oklahoma Todos os locais em Oklahoma:
in:us-central2-locations
Valores:
  • us-central2
  • us-central2-a
  • us-central2-b
  • us-central2-c
  • us-central2-d
Carolina do Sul Todas as zonas na Carolina do Sul:
in:us-east1-locations
Valores:
  • us-east1
  • us-east1-a
  • us-east1-b
  • us-east1-c
  • us-east1-d
Norte da Virgínia Todos os locais na Virgínia do Norte:
in:us-east4-locations
Valores:
  • us-east4
  • us-east4-a
  • us-east4-b
  • us-east4-c
Oregon Todos os locais no Oregon:
in:us-west1-locations
Valores:
  • us-west1
  • us-west1-a
  • us-west1-b
  • us-west1-c
Los Angeles Todos os locais em Los Angeles:
in:us-west2-locations
Valores:
  • us-west2
  • us-west2-a
  • us-west2-b
  • us-west2-c
Salt Lake City Todos os locais em Salt Lake City:
in:us-west3-locations
Valores:
  • us-west3
  • us-west3-a
  • us-west3-b
  • us-west3-c
Las Vegas Todos os locais em Las Vegas:
in:us-west4-locations
Valores:
  • us-west4
  • us-west4-a
  • us-west4-b
  • us-west4-c
América do Sul Todos os locais na América do Sul:
in:southamerica-locations
Grupos:
  • southamerica-east1-locations
São Paulo Todos os locais em São Paulo:
in:southamerica-east1-locations
Valores:
  • southamerica-east1
  • southamerica-east1-a
  • southamerica-east1-b
  • southamerica-east1-c

Autenticação

O serviço de Política da Organização usa o OAuth 2.0 para autenticação e autorização da API. Para acessar um token do portador OAuth 2.0:

  1. Acesse a página do OAuth 2.0 Playground.

  2. Na lista de escopos da Etapa 1, selecione a API v2 do Cloud Resource Manager > https://www.googleapis.com/auth/cloud-platform e clique em Autorizar APIs.

  3. Na página Fazer login com o Google, selecione sua conta e faça o login.

  4. Para fornecer acesso ao Google OAuth 2.0 Playground, clique em Permitir no prompt exibido.

  5. Na Etapa 2, clique em Trocar código de autorização por tokens.

  6. A string do seu token de acesso será exibida na parte inferior do painel Solicitação/Resposta à direita.

     {
       "access_token": "ACCESS_TOKEN",
       "token_type": "Bearer",
       "expires_in": 3600
     }
    

    Em que ACCESS_TOKEN é a string do token do portador OAuth 2.0 que pode ser usada na autorização da API.