Configurar papéis do IAM em regras de entrada e saída

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

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:

  1. Ao criar ou editar um perímetro no console do Google Cloud, selecione Ingress policy.

  2. No painel Regras de entrada, selecione uma regra de entrada ou clique em Adicionar uma regra de entrada.

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

  4. Clique em Adicionar funções do IAM.

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

  6. Clique em Adicionar funções do IAM selecionadas.

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

  1. Ao criar ou editar um perímetro no Console do Google Cloud, selecione Política de saída.

  2. No painel Regras de saída, selecione uma regra de saída existente ou clique em Adicionar uma regra de saída.

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

  4. Clique em Adicionar funções do IAM.

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

  6. Clique em Adicionar funções do IAM selecionadas.

  7. 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 Registry
artifactregistry.googleapis.com
  • Nenhuma limitação conhecida.
BigQuery
bigquery.googleapis.com
  • Nenhuma limitação conhecida.
Serviço de transferência de dados do BigQuery
bigquerydatatransfer.googleapis.com
  • Sem limitações conhecidas.
Bigtable
bigtable.googleapis.com
  • Sem limitações conhecidas.
Autorização binária
binaryauthorization.googleapis.com
  • Nenhuma limitação conhecida.
Cloud Composer
composer.googleapis.com
  • Sem limitações conhecidas.
Cloud Key Management Service
cloudkms.googleapis.com
Cloud Logging
logging.googleapis.com
  • Sem limitações conhecidas.
Cloud Monitoring
monitoring.googleapis.com
  • Nenhuma limitação conhecida.
Cloud Run
run.googleapis.com
  • Nenhuma limitação conhecida.
Funções do Cloud Run
cloudfunctions.googleapis.com
  • Nenhuma limitação conhecida.
Cloud SQL
sqladmin.googleapis.com
  • Sem limitações conhecidas.
Cloud Storage
storage.googleapis.com
  • O VPC Service Controls oferece suporte a funções personalizadas do Cloud Storage nas regras de entrada e saída, mas não nas funções predefinidas do Cloud Storage. Quando você tenta usar um papel predefinido do Cloud Storage em uma regra de entrada ou saída, o VPC Service Controls retorna um erro INVALID_ARGUMENT.
  • Ao realizar uma solicitação de API de inserção de objeto ou gravação em projetos protegidos pelo VPC Service Controls, você precisa configurar regras de entrada e saída que permitam as permissões storage.objects.delete e storage.objects.create.
  • Quando você ativa o recurso O solicitante paga no Cloud Storage, o VPC Service Controls não oferece suporte ao uso de funções do Cloud Storage nas regras de entrada e saída.
Compute Engine
compute.googleapis.com
  • Sem limitações conhecidas.
Dataflow
dataflow.googleapis.com
  • Nenhuma limitação conhecida.
Dataproc
dataproc.googleapis.com
  • Sem limitações conhecidas.
Google Kubernetes Engine
container.googleapis.com
  • Sem limitações conhecidas.
Gerenciamento de identidade e acesso
iam.googleapis.com
  • Sem limitações conhecidas.
Pub/Sub
pubsub.googleapis.com
  • Sem limitações conhecidas.
Resource Manager
cloudresourcemanager.googleapis.com
  • Sem limitações conhecidas.
Secret Manager
secretmanager.googleapis.com
  • Nenhuma limitação conhecida.
Spanner
spanner.googleapis.com
  • Sem limitações conhecidas.

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
  • roles/cloudsql.viewer
  • cloudsql.backupRuns.list
  • cloudaicompanion.*
  • roles/cloudsql.editor
  • cloudsql.backupRuns.list
  • cloudaicompanion.*
Cloud Storage
  • roles/storage.objectUser
  • storage.objects.move
Identity and Access Management
  • roles/iam.serviceAccountTokenCreator
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt
Resource Manager
  • roles/resourcemanager.tagAdmin
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • roles/resourcemanager.tagUser
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • alloydb.*
  • certificatemanager.*
  • clouddeploy.*
  • roles/resourcemanager.tagViewer
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • alloydb.*
  • certificatemanager.*
  • clouddeploy.*
Spanner
  • roles/spanner.databaseReaderWithDataBoost
  • spanner.databases.useDataBoost
Outros papéis com suporte parcial
  • alloydb.*
  • backupdr.*
  • bigquerymigration.*
  • certificatemanager.*
  • cloudaicompanion.*
  • cloudasset.*
  • cloudbuild.*
  • clouddeploy.*
  • dataform.*
  • dataplex.*
  • dns.*
  • eventarc.*
  • networkconnectivity.*
  • networkmanagement.*
  • networksecurity.*
  • networkservices.*

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
  • roles/iam.denyReviewer
  • roles/iam.oauthClientViewer
  • roles/iam.operationViewer
  • roles/iam.workforcePoolEditor
  • roles/iam.workforcePoolViewer
  • roles/iam.workloadIdentityPoolViewer
  • roles/iam.workforcePoolEditor
  • roles/iam.workforcePoolViewer

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.

A seguir