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 confirmações 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.

O Google recomenda que você use Grupos de valores em vez de valores individuais ao configurar locais. Diferentes tipos de recursos suportam diferentes tipos de locais, e novos locais na sua localização geográfica desejada podem ser adicionados. Usar um grupo de valores gerenciado pelo Google Cloud permite que você escolha um ou mais local geográfico, sem precisar especificar locais atuais ou futuros do Cloud.

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. Clique em Selecionar.

  3. Selecione a organização para a qual você quer definir a política.

  4. Clique em Google Cloud Platform - Definir restrição de recursos.

  5. Clique em Editar.

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

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

  8. 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.
  9. 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 deve ser definida.
  • POLICY.YAML é o arquivo .yaml em que está 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.

Entrada de registro dos registros de auditoria (Cloud Audit Logs, em inglês) do Cloud e do Stackdriver:

{
 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-south1-locations
  • asia-southeast1-locations

Valores:
  • asia
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
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
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
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
  • europe-west
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
Londres Todos os locais em Londres:
in:europe-west2-locations
Valores:
  • europe-west2
  • europe-west2-a
  • europe-west2-b
  • europe-west2-c
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
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

Valores:
  • nam3
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

Valores:
  • US
  • nam3
  • 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
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
     }
    

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