Esta página descreve como usar papéis de gerenciamento de identidade e acesso (IAM) em regras de entrada e saída para permitir o acesso a recursos protegidos por perímetros de serviço.
O VPC Service Controls usa regras de entrada e saída para permitir o acesso de e para os recursos e clientes protegidos por perímetros de serviço. Também é possível restringir as regras de entrada e saída usando papéis do IAM. Quando você especifica um papel do IAM em uma regra, ela só permite ações associadas às permissões que fazem parte do papel.
Antes de começar
Leia sobre as regras de entrada e saída.
Se você quiser usar um papel personalizado nas regras de entrada e saída, verifique se tem as permissões necessárias.
Configurar papéis do IAM nas regras de entrada
Console
Ao atualizar uma política de entrada de um perímetro de serviço ou definir uma política de entrada durante a criação do perímetro usando o console do Google Cloud, é possível configurar a regra de entrada para usar papéis do IAM:
Ao criar ou editar um perímetro no console do Google Cloud, selecione Ingress policy.
No painel Regras de entrada, selecione uma regra de entrada ou clique em Adicionar uma regra de entrada.
Na seção Para da política de entrada, selecione Selecionar papéis do IAM (pré-lançamento) na lista Operações ou papéis do IAM.
Clique em Adicionar funções do IAM.
No painel Adicionar funções do IAM, selecione as funções do IAM que você quer permitir.
Para informações sobre os serviços e papéis compatíveis, consulte Produtos compatíveis.
Clique em Adicionar funções do IAM selecionadas.
Clique em Concluído.
Para informações sobre os outros atributos de regra de entrada, consulte Referência de regras de entrada.
gcloud
É possível configurar uma regra de entrada para usar papéis do IAM usando um arquivo JSON ou YAML. O exemplo a seguir usa o formato YAML:
- ingressFrom:
identityType: ANY_IDENTITY | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT
*OR*
identities:
- PRINCIPAL_IDENTIFIER
sources:
- resource: RESOURCE
*OR*
- accessLevel: ACCESS_LEVEL
ingressTo:
operations:
- serviceName: SERVICE_NAME
methodSelectors:
- method: METHOD_NAME
*OR*
roles:
- ROLE_NAME
resources:
- projects/PROJECT_NUMBER
Substitua ROLE_NAME
pelos papéis do IAM que definem o escopo de acesso aos serviços especificados na regra.
Especifique um único papel ou uma combinação de papéis que inclua todas as
permissões necessárias para acessar os serviços. Para especificar um papel, use os formatos de nome de
papel mencionados em Componentes de papel,
exceto o seguinte formato: projects/PROJECT_ID/roles/IDENTIFIER
.
Para informações sobre os serviços e papéis compatíveis, consulte Produtos compatíveis.
Para informações sobre os outros atributos de regra de entrada, consulte Referência de regras de entrada.
Depois de atualizar uma regra de entrada para configurar papéis do IAM, você precisa atualizar as políticas de regra do perímetro de serviço:
gcloud access-context-manager perimeters update PERIMETER_ID --set-ingress-policies=RULE_POLICY.yaml
Substitua:
PERIMETER_ID
: o ID do perímetro de serviço que você quer atualizar.RULE_POLICY
: o caminho do arquivo de regra de entrada modificado.
Para mais informações, consulte Como atualizar políticas de entrada e saída de um perímetro de serviço.
Configurar papéis do IAM em regras de saída
Console
Ao atualizar uma política de saída de um perímetro de serviço ou definir uma política de saída durante a criação do perímetro usando o console do Google Cloud, é possível configurar a regra de saída para usar funções do IAM:
Ao criar ou editar um perímetro no Console do Google Cloud, selecione Política de saída.
No painel Regras de saída, selecione uma regra de saída existente ou clique em Adicionar uma regra de saída.
Na seção Para da sua política de saída, selecione Selecionar papéis do IAM (pré-lançamento) na lista Operações ou papéis do IAM.
Clique em Adicionar funções do IAM.
No painel Adicionar funções do IAM, selecione as funções do IAM que você quer permitir.
Para informações sobre os serviços e papéis compatíveis, consulte Produtos compatíveis.
Clique em Adicionar funções do IAM selecionadas.
Clique em Concluído.
Para informações sobre os outros atributos de regra de saída, consulte Referência de regras de saída.
gcloud
É possível configurar uma regra de saída para usar funções do IAM usando um arquivo JSON ou YAML. O exemplo a seguir usa o formato YAML:
- egressTo:
operations:
- serviceName: SERVICE_NAME
methodSelectors:
- method: METHOD_NAME
*OR*
roles:
- ROLE_NAME
resources:
- projects/PROJECT_NUMBER
egressFrom:
identityType: ANY_IDENTITY | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT
*OR*
identities:
- PRINCIPAL_IDENTIFIER
sources:
- resource: RESOURCE
*OR*
- accessLevel: ACCESS_LEVEL
sourceRestriction: RESTRICTION_STATUS
Substitua ROLE_NAME
pelos papéis do IAM que definem o escopo de acesso aos serviços especificados na regra.
Especifique um único papel ou uma combinação de papéis que inclua todas as
permissões necessárias para acessar os serviços. Para especificar um papel, use os formatos de nome de
papel mencionados em Componentes de papel,
exceto o seguinte formato: projects/PROJECT_ID/roles/IDENTIFIER
.
Para informações sobre os serviços e papéis compatíveis, consulte Produtos compatíveis.
Para informações sobre os outros atributos de regra de saída, consulte Referência de regras de saída.
Depois de atualizar uma regra de saída para configurar papéis do IAM, você precisa atualizar as políticas de regra do perímetro de serviço:
gcloud access-context-manager perimeters update PERIMETER_ID --set-egress-policies=RULE_POLICY.yaml
Substitua:
PERIMETER_ID
: o ID do perímetro de serviço que você quer atualizar.RULE_POLICY
: o caminho do arquivo de regra de saída modificado.
Para mais informações, consulte Como atualizar políticas de entrada e saída de um perímetro de serviço.
Produtos compatíveis
É possível usar os papéis do IAM dos seguintes serviços Google Cloud nas regras de entrada e saída:
Produto | Limitações |
---|---|
Artifact Registryartifactregistry.googleapis.com |
|
BigQuerybigquery.googleapis.com |
|
Serviço de transferência de dados do BigQuerybigquerydatatransfer.googleapis.com |
|
Bigtablebigtable.googleapis.com |
|
Autorização bináriabinaryauthorization.googleapis.com |
|
Cloud Composercomposer.googleapis.com |
|
Cloud Key Management Servicecloudkms.googleapis.com |
|
Cloud Logginglogging.googleapis.com |
|
Cloud Monitoringmonitoring.googleapis.com |
|
Cloud Runrun.googleapis.com |
|
Funções do Cloud Runcloudfunctions.googleapis.com |
|
Cloud SQLsqladmin.googleapis.com |
|
Cloud Storagestorage.googleapis.com |
|
Compute Enginecompute.googleapis.com |
|
Dataflowdataflow.googleapis.com |
|
Dataprocdataproc.googleapis.com |
|
Google Kubernetes Enginecontainer.googleapis.com |
|
Gerenciamento de identidade e acessoiam.googleapis.com |
|
Pub/Subpubsub.googleapis.com |
|
Resource Managercloudresourcemanager.googleapis.com |
|
Secret Managersecretmanager.googleapis.com |
|
Spannerspanner.googleapis.com |
|
Para conferir a lista de papéis predefinidos do IAM desses serviços que podem ser usados nas regras de entrada e saída, consulte Papéis predefinidos.
No entanto, há alguns papéis do IAM nesses serviços que têm suporte parcial ou não têm suporte para uso nas regras de entrada e saída, porque algumas ou todas as permissões subjacentes não são compatíveis:
O uso de uma função do IAM com suporte parcial em uma regra de entrada ou saída tornará a regra ineficaz para solicitações ou ações específicas das permissões sem suporte.
Para conferir a lista de papéis com suporte parcial e as permissões associadas sem suporte, consulte Papéis do IAM com suporte parcial.
O uso de uma função do IAM não compatível em uma regra de entrada ou saída tornará a regra ineficaz.
Para conferir a lista de papéis sem suporte, consulte Papéis do IAM sem suporte.
Se você quiser usar um papel personalizado nas regras de entrada e saída, verifique se ele contém apenas as permissões compatíveis que fazem parte dos serviços compatíveis. Para conferir a lista de permissões sem suporte para os serviços compatíveis, consulte Papéis do IAM com suporte parcial e Papéis do IAM sem suporte.
Não é possível usar papéis personalizados criados no nível do projeto. Em outras
palavras, não é possível usar um papel personalizado com o seguinte formato: projects/PROJECT_ID/roles/IDENTIFIER
.
Papéis do IAM com suporte parcial
A tabela a seguir lista os papéis do IAM com suporte parcial de serviços específicos:
Produto | Papéis com suporte parcial | Permissões incompatíveis |
---|---|---|
Cloud SQL |
|
|
|
|
|
Cloud Storage |
|
|
Identity and Access Management |
|
|
Resource Manager |
|
|
|
|
|
|
|
|
Spanner |
|
|
Outros papéis com suporte parcial |
|
|
Papéis do IAM sem suporte
A tabela a seguir lista os papéis do IAM não compatíveis com serviços específicos:
Produto | Papéis sem suporte |
---|---|
Identity and Access Management |
|
Limitações
Não é possível usar uma regra de entrada ou saída baseada em função para permitir que solicitações definam a política de permissão do IAM de um projeto no limite do perímetro.
Se você tiver problemas para carregar a página de edição de serviços no console do Google Cloud devido a restrições do VPC Service Controls, o uso de papéis do IAM nas regras de entrada pode não resolver o problema. Essa limitação não afeta a página de visualização desses serviços.
Quando uma solicitação envolve vários tipos de recursos de projetos diferentes, a regra de entrada ou saída que usa papéis do IAM pode não funcionar. Por exemplo, quando você inicia um modelo do Dataflow que lê texto do Cloud Storage em um projeto diferente.
Se você excluir uma função personalizada depois de fazer referência a ela na regra de entrada ou saída de um perímetro, o perímetro não poderá ser editado.