Para proteger a configuração do Network Connectivity Center (NCC), use o VPC Service Controls.
O VPC Service Controls oferece mais segurança para as APIs e os serviços do Google, incluindo a configuração do NCC. Além do IAM, o VPC Service Controls limita os sistemas de origem que podem fazer mudanças na configuração do NCC.
Nesta página, descrevemos um caso de uso comum e um exemplo de configuração para permitir o acesso entre um hub do NCC e spokes da VPC separados por perímetros de serviço.
Para conferir a documentação completa, consulte a Visão geral do VPC Service Controls.
Exemplo: propostas de spoke de VPC entre projetos em perímetros de serviço
Se a configuração exigir que um hub do NCC e os spokes da VPC residam em projetos diferentes que pertencem a perímetros separados do VPC Service Controls, configure regras de entrada e saída em ambos os perímetros. Isso permite que os administradores de spoke proponham um spoke de VPC que faça referência ao hub e que os administradores de hub aceitem os spokes propostos.
O exemplo nesta página pressupõe que o administrador do hub e os administradores do spoke pertencem a organizações separadas.
A tabela a seguir resume as regras necessárias para este exemplo:
| perímetro | Regra | Finalidade |
|---|---|---|
| Perímetro do spoke (projeto do spoke) |
Regra de entrada 1 | Permitir que o administrador do spoke inicie uma proposta criando um spoke no projeto (se o gerenciamento for feito de fora de SpokePerimeter) |
| Regra de saída 1 | Permita que a proposta de spoke de saída inicie a anexação ao hub no projeto do hub, o que inclui a verificação da rede VPC de suporte. | |
| Perímetro do hub (projeto do hub) |
Regra de entrada 1 | Permitir que o administrador gerencie o hub no projeto dele, incluindo aceitar ou rejeitar propostas de spoke (se o gerenciamento for feito fora de HubPerimeter) |
| Regra de entrada 2 | Permitir que a proposta de spoke de entrada inicie a vinculação ao hub | |
| Regra de saída 1 | Permitir que a proposta de spoke de entrada faça uma nova chamada ao projeto de spoke para concluir a vinculação do spoke ao hub, o que inclui a verificação da rede VPC de suporte. |
Regras de perímetro do spoke
Para ativar a criação e o gerenciamento de spokes, o administrador configura as seguintes regras de entrada e saída:
| Regra | Detalhes |
|---|---|
| Regra de entrada 1:criação de spoke |
Quando um administrador de spoke inicia uma proposta de spoke emitindo
o comando de criação de fora do perímetro (por exemplo, de uma
estação de trabalho de administrador, do Cloud Shell ou do console Google Cloud ),
o VPC Service Controls avalia a chamada como uma solicitação de entrada para o projeto
de spoke. SpokePerimeter precisa permitir a entrada da identidade e da origem de rede do administrador do spoke para a API do NCC.
Essa regra não é necessária se o gerenciamento de spoke for realizado exclusivamente em uma rede VPC protegida por SpokePerimeter.
|
| Regra de saída 1:vinculação do hub e verificação de rede |
Quando um administrador de spoke propõe um spoke, a solicitação inicia
a anexação ao hub no projeto do hub. Como parte da solicitação, a
API NCC também verifica a rede VPC de suporte
usando a API Compute Engine. SpokePerimeter precisa permitir o tráfego de saída do administrador do spoke para as APIs do NCC e do Compute Engine.
|
Definição do perímetro do spoke
Os exemplos de regras de entrada e saída nas seções a seguir se baseiam na definição de perímetro abaixo.
Para mais informações sobre perímetros de serviço, consulte Detalhes e configuração do perímetro de serviço.
# Spoke perimeter definition name: accessPolicies/2345678901/servicePerimeters/SpokePerimeter status: resources: - projects/222222222222 restrictedServices: - networkconnectivity.googleapis.com - compute.googleapis.com title: SpokePerimeter
Regra de entrada do spoke
Esta seção fornece um exemplo que implementa a regra de entrada para o perímetro do spoke, conforme descrito em Regras do perímetro do spoke.
Essa regra só é obrigatória se você gerenciar hubs de fora do SpokePerimeter.
Para detalhes sobre a sintaxe das regras, consulte a referência de regras de entrada. Para aplicar regras, consulte Configurar políticas de entrada e saída.
echo """
# Rule 1: Allow the spoke administrator to initiate a spoke proposal by creating
# a spoke in the spoke project (if managing from outside SpokePerimeter)
- ingressFrom:
identities:
# Specify the principal identifier for the spoke administrator or deployment pipeline:
- serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
# - group:spoke-admins@example.org
# - user:spoke-admin@example.org
sources:
- accessLevel: accessPolicies/2345678901/accessLevels/SpokeAdminAccessLevel
# Alternatively, specify a management project or VPC network if managing
# from a VPC network outside the perimeter:
# - resource: projects/MANAGEMENT_PROJECT_NUMBER
ingressTo:
operations:
- serviceName: networkconnectivity.googleapis.com
methodSelectors:
- method: "*"
resources:
- projects/222222222222
""" > spoke-ingress.yaml
Como prática recomendada, defina regras de entrada o mais específicas possível:
identities: especifique apenas o identificador principal necessário para seu ambiente, em vez de tipos de identidade amplos. Neste exemplo, a regra 1 especifica uma conta de serviço para um pipeline de implantação automatizado. Também é possível especificar um grupo do Google para administração da equipe ou uma conta de usuário individual. Para mais detalhes, consulte Identidades compatíveis com regras de entrada e saída.sources: restringe origens a níveis de acesso conhecidos. Este exemplo especifica um nível de acesso da política de acesso que gerenciaSpokePerimeterpara autorizar fontes externas, como estações de trabalho de administrador, Cloud Shell ou o console Google Cloud . Como alternativa, é possível permitir o acesso de uma rede VPC de gerenciamento fora do perímetro usando o atributo- resource:para especificar o projeto ou a rede VPC. Para mais detalhes, consulte Permitir acesso de fora de um perímetro e Acesso baseado no contexto com regras de entrada.operations: as restrições paranetworkconnectivity.googleapis.comsão aplicadas no nível do serviço, exigindomethod: "*". Métodos mais granulares não estão disponíveis para este serviço.resources: especifique o número exato do projeto do spoke emresources. Evite caracteres curinga (*).
Regra de saída do spoke
Esta seção fornece um exemplo que implementa a regra de saída para o perímetro do spoke, conforme descrito em Regras do perímetro do spoke.
Para detalhes sobre a sintaxe das regras, consulte a referência de regras de saída.
echo """
# Rule 1: Allow the outbound spoke proposal to initiate attachment to the hub in
# the hub project, which includes verifying the backing VPC network
- egressTo:
operations:
- serviceName: networkconnectivity.googleapis.com
methodSelectors:
- method: "*"
- serviceName: compute.googleapis.com
methodSelectors:
- method: NetworksService.Get
resources:
- projects/111111111111
egressFrom:
identities:
# Specify the principal identifier for the spoke administrator or deployment pipeline:
- serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
# - group:spoke-admins@example.org
# - user:spoke-admin@example.org
""" > spoke-egress.yaml
Como prática recomendada, defina regras de saída o mais específicas possível:
identities: especifique apenas o identificador principal necessário para seu ambiente, em vez de tipos de identidade amplos. Neste exemplo, a regra 1 especifica uma conta de serviço para um pipeline de implantação automatizado. Também é possível especificar um grupo do Google para administração da equipe ou uma conta de usuário individual. Para mais detalhes, consulte Identidades compatíveis com regras de entrada e saída.operations: as restrições paranetworkconnectivity.googleapis.comsão aplicadas no nível do serviço, exigindomethod: "*". Paracompute.googleapis.com, especifiquemethod: NetworksService.Getpara conceder permissão para verificar a rede VPC de suporte ao iniciar o anexo ao hub.resources: especifique o número exato do projeto do hub emresources. Evite caracteres curinga (*).
Regras de perímetro do hub
Para ativar a administração do hub e permitir propostas de spoke recebidas, o administrador do hub configura as seguintes regras de entrada e saída:
| Regra | Detalhes |
|---|---|
| Regra de entrada 1:gerenciamento do hub |
Quando um administrador gerencia o hub de fora do perímetro (por exemplo, de uma estação de trabalho de administrador, do Cloud Shell ou do console Google Cloud ), o VPC Service Controls avalia a chamada como uma solicitação de entrada para o projeto do hub. Essa regra permite que o administrador do hub analise e aceite os spokes propostos (fazendo a transição para ACTIVE) ou os rejeite (fazendo a transição para REJECTED). HubPerimeter precisa permitir a entrada da identidade e da origem de rede do administrador do hub.
Essa regra não é necessária se o gerenciamento do hub for realizado exclusivamente em uma rede VPC protegida por HubPerimeter.
|
| Regra de entrada 2:anexo do hub |
Quando um administrador de spoke propõe um spoke, a solicitação inicia
a anexação ao hub no projeto do hub.
HubPerimeter precisa permitir a entrada da identidade e da origem de rede do administrador do spoke para a API NCC em todos os perímetros de serviço.
|
| Regra de saída 1:vinculação de spoke e verificação de rede |
Quando um administrador de spoke propõe um spoke, a solicitação faz uma chamada de volta ao projeto do spoke para concluir a vinculação do spoke ao hub e colocar o spoke em um estado PENDING_REVIEW. Como parte da solicitação, a API NCC também verifica a rede VPC de suporte usando a API Compute Engine.
HubPerimeter precisa permitir a saída do administrador do spoke
para as APIs do NCC e do Compute Engine.
|
Definição do perímetro do hub
Os exemplos de regras de entrada e saída nas seções a seguir se baseiam na definição de perímetro abaixo.
Para mais informações sobre perímetros de serviço, consulte Detalhes e configuração do perímetro de serviço.
# Hub perimeter definition name: accessPolicies/1234567890/servicePerimeters/HubPerimeter status: resources: - projects/111111111111 restrictedServices: - networkconnectivity.googleapis.com - compute.googleapis.com title: HubPerimeter
Regras de entrada do hub
Esta seção fornece um exemplo que implementa as regras de entrada para o perímetro do hub, conforme descrito em Regras do perímetro do hub.
Para detalhes sobre a sintaxe das regras, consulte a referência de regras de entrada. Para aplicar regras, consulte Configurar políticas de entrada e saída.
echo """
# Rule 1: Allow the hub administrator to manage the hub in the hub project
# (if managing from outside HubPerimeter)
- ingressFrom:
identities:
# Specify the principal identifier for the hub administrator:
- group:hub-admins@example.com
# - user:hub-admin@example.com
# - serviceAccount:hub-admin-sa@hub-project.iam.gserviceaccount.com
sources:
- accessLevel: accessPolicies/1234567890/accessLevels/HubAdminAccessLevel
# Alternatively, specify a management project or VPC network if managing
# from a VPC network outside the perimeter:
# - resource: projects/MANAGEMENT_PROJECT_NUMBER
ingressTo:
operations:
- serviceName: networkconnectivity.googleapis.com
methodSelectors:
- method: "*"
resources:
- projects/111111111111
# Rule 2: Allow the inbound spoke proposal to initiate attachment to the hub
- ingressFrom:
identities:
# Specify the principal identifier for the spoke administrator or deployment pipeline:
- serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
# - group:spoke-admins@example.org
# - user:spoke-admin@example.org
sources:
# Specify an access level defined in the hub organization's access policy if
# the spoke administrator manages spokes from the Google Cloud console or
# external networks:
- accessLevel: accessPolicies/1234567890/accessLevels/SpokeAdminAccessLevel
# Alternatively, specify the spoke project if the spoke administrator
# manages from a VPC network in the spoke project:
# - resource: projects/222222222222
ingressTo:
operations:
- serviceName: networkconnectivity.googleapis.com
methodSelectors:
- method: "*"
resources:
- projects/111111111111
""" > hub-ingress.yaml
Como prática recomendada, defina regras de entrada o mais específicas possível:
identities: especifique apenas o identificador principal necessário para seu ambiente, em vez de tipos de identidade amplos:- Na regra 1, este exemplo especifica um grupo do Google de administrador do hub para administração da equipe. Como alternativa, especifique uma conta de usuário ou de serviço individual. Essa regra só é necessária se você gerenciar o
hub de fora do
HubPerimeter. - Na regra 2, este exemplo especifica uma conta de serviço de administrador do spoke para um pipeline de implantação automatizado. Também é possível especificar um grupo do Google para administração da equipe ou uma conta de usuário individual.
Para mais informações, consulte Identidades compatíveis com regras de entrada e saída.
- Na regra 1, este exemplo especifica um grupo do Google de administrador do hub para administração da equipe. Como alternativa, especifique uma conta de usuário ou de serviço individual. Essa regra só é necessária se você gerenciar o
hub de fora do
sources: restrinja origens a níveis de acesso ou projetos conhecidos.- Na regra 1, este exemplo especifica um nível de acesso para administradores do hub
da política de acesso que gerencia
HubPerimeterpara autorizar fontes externas, como estações de trabalho de administrador, Cloud Shell ou o consoleGoogle Cloud . Como alternativa, é possível permitir o acesso de uma rede VPC de gerenciamento fora do perímetro usando o atributo- resource:para especificar o projeto ou a rede VPC. Para mais detalhes, consulte Permitir acesso de fora de um perímetro e Acesso baseado no contexto com regras de entrada. - Na regra 2, este exemplo especifica um nível de acesso para administradores de spoke da política de acesso que gerencia
HubPerimeterpara autorizar fontes externas, como estações de trabalho de administrador, Cloud Shell ou o console Google Cloud . Como alternativa, é possível permitir o acesso de uma rede VPC no projeto de spoke usando o atributo- resource:para especificar o número do projeto de spoke (como em um pipeline de implantação automatizado).
- Na regra 1, este exemplo especifica um nível de acesso para administradores do hub
da política de acesso que gerencia
operations: as restrições paranetworkconnectivity.googleapis.comsão aplicadas no nível do serviço, exigindomethod: "*". Métodos mais granulares não estão disponíveis para este serviço.resources: especifique o número exato do projeto do hub emresources. Evite caracteres curinga (*).
Regra de saída do hub
Esta seção fornece um exemplo que implementa a regra de saída para o perímetro do hub, conforme descrito em Regras do perímetro do hub.
Para detalhes sobre a sintaxe das regras, consulte a referência de regras de saída.
echo """
# Rule 1: Allow the inbound spoke proposal to call back to the spoke project to
# complete linking the spoke to the hub, which includes verifying the backing
# VPC network
- egressTo:
operations:
- serviceName: networkconnectivity.googleapis.com
methodSelectors:
- method: "*"
- serviceName: compute.googleapis.com
methodSelectors:
- method: NetworksService.Get
resources:
- projects/222222222222
egressFrom:
identities:
# Specify the principal identifier for the spoke administrator or deployment pipeline:
- serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
# - group:spoke-admins@example.org
# - user:spoke-admin@example.org
""" > hub-egress.yaml
Como prática recomendada, defina regras de saída o mais específicas possível:
identities: especifique o identificador principal do administrador do spoke, como uma conta de serviço, um grupo ou uma conta de usuário do pipeline de implantação. Quando um administrador de spoke propõe um spoke, oHubPerimeteravalia o tráfego de saída na identidade do administrador para concluir a vinculação do spoke ao hub no projeto do spoke, o que inclui a verificação da rede VPC de suporte.Para mais detalhes, consulte Identidades compatíveis com regras de entrada e saída.
operations: as restrições paranetworkconnectivity.googleapis.comsão aplicadas no nível do serviço, exigindomethod: "*". Paracompute.googleapis.com, especifiquemethod: NetworksService.Getpara conceder permissão para verificar a rede VPC de suporte ao concluir o link para o projeto de spoke.resources: especifique o número exato do projeto do spoke emresources. Evite caracteres curinga (*).