Configura roles de IAM en las reglas de entrada y salida

En esta página, se describe cómo usar roles de Identity and Access Management (IAM) en las reglas de entrada y salida para permitir el acceso a los recursos protegidos por perímetros de servicio.

Los Controles del servicio de VPC usan reglas de entrada y salida para permitir el acceso desde y hacia los recursos y los clientes protegidos por los perímetros de servicio. De manera opcional, puedes restringir tus reglas de entrada y salida con los roles de IAM. Cuando especificas un rol de IAM en una regla, esta solo permite acciones asociadas con los permisos que forman parte del rol de IAM.

Antes de comenzar

Configura roles de IAM en las reglas de entrada

Console

Cuando actualizas una política de entrada de un perímetro de servicio o estableces una política de entrada durante la creación del perímetro con la consola de Google Cloud, puedes configurar la regla de entrada para usar roles de IAM:

  1. Cuando crees o edites un perímetro en la consola de Google Cloud, selecciona Política de entrada.

  2. En el panel Reglas de entrada, selecciona una regla de entrada existente o haz clic en Agregar una regla de entrada.

  3. En la sección Para de tu política de entrada, selecciona Seleccionar roles de IAM (versión preliminar) en la lista Operaciones o roles de IAM.

  4. Haz clic en Agregar roles de IAM.

  5. En el panel Agregar roles de IAM, selecciona los roles de IAM que deseas permitir.

    Para obtener información sobre los servicios y roles compatibles, consulta Productos compatibles.

  6. Haz clic en Agregar los roles de IAM seleccionados.

  7. Haz clic en Listo.

Para obtener información sobre los otros atributos de reglas de entrada, consulta la Referencia de reglas de entrada.

gcloud

Puedes configurar una regla de entrada para usar roles de IAM con un archivo JSON o un archivo YAML. En el siguiente ejemplo, se usa el 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

Reemplaza ROLE_NAME por los roles de IAM que definen el permiso de acceso para los servicios especificados en la regla. Especifica un solo rol o una combinación de roles que incluyan todos los permisos necesarios para acceder a los servicios. Para especificar un rol, usa los formatos de nombre de rol que se mencionan en Componentes de roles, excepto el siguiente formato: projects/PROJECT_ID/roles/IDENTIFIER.

Para obtener información sobre los servicios y roles compatibles, consulta Productos compatibles.

Para obtener información sobre los otros atributos de reglas de entrada, consulta la Referencia de reglas de entrada.

Después de actualizar una regla de entrada existente para configurar roles de IAM, debes actualizar las políticas de reglas del perímetro de servicio:

gcloud access-context-manager perimeters update PERIMETER_ID --set-ingress-policies=RULE_POLICY.yaml

Reemplaza lo siguiente:

  • PERIMETER_ID: El ID del perímetro de servicio que deseas actualizar.
  • RULE_POLICY: Es la ruta de acceso al archivo de la regla de entrada modificada.

Para obtener más información, consulta Actualiza las políticas de entrada y salida para un perímetro de servicio.

Configura roles de IAM en las reglas de salida

Console

Cuando actualizas una política de salida de un perímetro de servicio o estableces una política de salida durante la creación del perímetro con la consola de Google Cloud, puedes configurar la regla de salida para usar roles de IAM:

  1. Cuando crees o edites un perímetro en la consola de Google Cloud, selecciona Política de salida.

  2. En el panel Reglas de salida, selecciona una regla de salida existente o haz clic en Agregar una regla de salida.

  3. En la sección A de tu política de salida, selecciona Seleccionar roles de IAM (versión preliminar) en la lista Operaciones o roles de IAM.

  4. Haz clic en Agregar roles de IAM.

  5. En el panel Agregar roles de IAM, selecciona los roles de IAM que deseas permitir.

    Para obtener información sobre los servicios y roles compatibles, consulta Productos compatibles.

  6. Haz clic en Agregar los roles de IAM seleccionados.

  7. Haz clic en Listo.

Para obtener información sobre los otros atributos de las reglas de salida, consulta Referencia de reglas de salida.

gcloud

Puedes configurar una regla de salida para usar roles de IAM con un archivo JSON o un archivo YAML. En el siguiente ejemplo, se usa el 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

Reemplaza ROLE_NAME por los roles de IAM que definen el permiso de acceso para los servicios especificados en la regla. Especifica un solo rol o una combinación de roles que incluyan todos los permisos necesarios para acceder a los servicios. Para especificar un rol, usa los formatos de nombre de rol que se mencionan en Componentes de roles, excepto el siguiente formato: projects/PROJECT_ID/roles/IDENTIFIER.

Para obtener información sobre los servicios y roles compatibles, consulta Productos compatibles.

Para obtener información sobre los otros atributos de reglas de salida, consulta Referencia de reglas de salida.

Después de actualizar una regla de salida existente para configurar roles de IAM, debes actualizar las políticas de reglas del perímetro de servicio:

gcloud access-context-manager perimeters update PERIMETER_ID --set-egress-policies=RULE_POLICY.yaml

Reemplaza lo siguiente:

  • PERIMETER_ID: El ID del perímetro de servicio que deseas actualizar.
  • RULE_POLICY: Es la ruta de acceso del archivo de la regla de salida modificado.

Para obtener más información, consulta Actualiza las políticas de entrada y salida para un perímetro de servicio.

Productos compatibles

Puedes usar los roles de IAM de los siguientes Google Cloud servicios en las reglas de entrada y salida:

Producto Limitaciones
Artifact Registry
artifactregistry.googleapis.com
  • No hay limitaciones conocidas.
BigQuery
bigquery.googleapis.com
  • No hay limitaciones conocidas.
Servicio de transferencia de datos de BigQuery
bigquerydatatransfer.googleapis.com
  • No hay limitaciones conocidas.
Bigtable
bigtable.googleapis.com
  • No hay limitaciones conocidas.
Autorización binaria
binaryauthorization.googleapis.com
  • No hay limitaciones conocidas.
Cloud Composer
composer.googleapis.com
  • No hay limitaciones conocidas.
Cloud Key Management Service
cloudkms.googleapis.com
Cloud Logging
logging.googleapis.com
  • No hay limitaciones conocidas.
Cloud Monitoring
monitoring.googleapis.com
  • No hay limitaciones conocidas.
Cloud Run
run.googleapis.com
  • No hay limitaciones conocidas.
Funciones de Cloud Run
cloudfunctions.googleapis.com
  • No hay limitaciones conocidas.
Cloud SQL
sqladmin.googleapis.com
  • No hay limitaciones conocidas.
Cloud Storage
storage.googleapis.com
  • Los Controles del servicio de VPC admiten roles personalizados para Cloud Storage en las reglas de entrada y salida, pero no los roles predefinidos de Cloud Storage. Cuando intentas usar un rol predefinido de Cloud Storage en una regla de entrada o salida, los Controles del servicio de VPC muestran un error INVALID_ARGUMENT.
  • Cuando realizas una solicitud de API de inserción de objetos o de escritura en proyectos protegidos por Controles del servicio de VPC, debes configurar reglas de entrada y salida que permitan los permisos storage.objects.delete y storage.objects.create.
  • Cuando habilitas la función El solicitante paga en Cloud Storage, los Controles del servicio de VPC no admiten el uso de roles de Cloud Storage en las reglas de entrada y salida.
Compute Engine
compute.googleapis.com
  • No hay limitaciones conocidas.
Dataflow
dataflow.googleapis.com
  • No hay limitaciones conocidas.
Dataproc
dataproc.googleapis.com
  • No hay limitaciones conocidas.
Google Kubernetes Engine
container.googleapis.com
  • No hay limitaciones conocidas.
Administración de identidades y accesos
iam.googleapis.com
  • No hay limitaciones conocidas.
Pub/Sub
pubsub.googleapis.com
  • No hay limitaciones conocidas.
Administrador de recursos
cloudresourcemanager.googleapis.com
  • No hay limitaciones conocidas.
Secret Manager
secretmanager.googleapis.com
  • No hay limitaciones conocidas.
Spanner
spanner.googleapis.com
  • No hay limitaciones conocidas.

Para obtener la lista de roles de IAM predefinidos de estos servicios que puedes usar en las reglas de entrada y salida, consulta Roles predefinidos.

Sin embargo, hay algunos roles de IAM en estos servicios que son parcialmente compatibles o no para su uso en las reglas de entrada y salida, porque no se admiten algunos o todos los permisos subyacentes:

  • El uso de un rol de IAM parcialmente compatible en una regla de entrada o salida hace que la regla no sea eficaz para las solicitudes o acciones específicas de los permisos subyacentes no compatibles.

    Para obtener la lista de roles parcialmente compatibles y los permisos no compatibles asociados, consulta Roles de IAM parcialmente compatibles.

  • El uso de un rol de IAM no compatible en una regla de entrada o salida hace que la regla sea ineficaz.

    Para obtener la lista de roles no compatibles, consulta Roles de IAM no compatibles.

Si deseas usar un rol personalizado en las reglas de entrada y salida, asegúrate de que el rol personalizado contenga solo los permisos admitidos que forman parte de los servicios admitidos. Para obtener la lista de permisos que no son compatibles con los servicios compatibles, consulta Roles de IAM parcialmente compatibles y Roles de IAM no compatibles.

No puedes usar los roles personalizados que creaste a nivel del proyecto. En otras palabras, no puedes usar un rol personalizado que tenga el siguiente formato: projects/PROJECT_ID/roles/IDENTIFIER.

Funciones de IAM parcialmente admitidas

En la siguiente tabla, se enumeran los roles de IAM parcialmente admitidos de servicios específicos:

Producto Roles parcialmente admitidos Permisos no admitidos
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
Otros roles parcialmente admitidos
  • alloydb.*
  • backupdr.*
  • bigquerymigration.*
  • certificatemanager.*
  • cloudaicompanion.*
  • cloudasset.*
  • cloudbuild.*
  • clouddeploy.*
  • dataform.*
  • dataplex.*
  • dns.*
  • eventarc.*
  • networkconnectivity.*
  • networkmanagement.*
  • networksecurity.*
  • networkservices.*

Roles de IAM no admitidos

En la siguiente tabla, se enumeran los roles de IAM no compatibles de servicios específicos:

Producto Roles no admitidos
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

Limitaciones

  • No puedes usar una regla de entrada o salida basada en roles para permitir que las solicitudes establezcan la política de permisos de IAM de un proyecto en todo el límite del perímetro.

  • Si tienes problemas para cargar la página de edición de los servicios en la consola de Google Cloud debido a las restricciones de los Controles del servicio de VPC, es posible que el uso de roles de IAM en las reglas de entrada no resuelva el problema. Esta limitación no afecta la página de solo lectura de estos servicios.

  • Cuando una solicitud involucra varios tipos de recursos de diferentes proyectos, es posible que la regla de entrada o salida que usa roles de IAM no funcione. Por ejemplo, cuando inicias una plantilla de Dataflow que lee texto de Cloud Storage en un proyecto diferente.

  • Si borras un rol personalizado después de hacer referencia a él en la regla de entrada o salida de un perímetro, este se vuelve no editable.

¿Qué sigue?