Roles y permisos

Google Cloud ofrece Gestión de Identidades y Accesos (IAM), que te permite dar un acceso más granular a recursos específicos Google Cloud e impide el acceso no deseado a otros recursos. En esta página se describen los roles de la API Cloud DNS. Para obtener una descripción detallada de IAM, consulta la documentación sobre la gestión de identidades y accesos.

IAM te permite adoptar el principio de seguridad de mínimos accesos para que solo concedas el acceso necesario a tus recursos.

La gestión de identidades y accesos te permite controlar quién tiene qué permisos para qué recursos mediante la configuración de políticas de gestión de identidades y accesos. Las políticas de gestión de identidades y accesos asignan roles específicos a un usuario, lo que le otorga determinados permisos. Por ejemplo, un usuario concreto puede necesitar crear y modificar recursos de registros del sistema de nombres de dominio (DNS). A continuación, le asignarías a ese usuario (quién) el rol /roles/dns.admin, que tiene los permisos dns.changes.create y dns.resourceRecordSets.create (qué) para que pueda crear y actualizar conjuntos de registros de recursos (cuál). Por el contrario, un departamento de asistencia solo podría necesitar ver los conjuntos de registros de recursos, por lo que se le asignaría el rol /roles/dns.reader.

Cloud DNS admite permisos de IAM a nivel de proyecto y a nivel de zona DNS individual. El permiso predeterminado es a nivel de proyecto. Para configurar permisos a nivel de zona DNS (o recurso), consulta Crear una zona con permisos de gestión de identidades y accesos específicos.

Permisos y roles

Todos los métodos de la API Cloud DNS requieren que el llamador cuente con los permisos de IAM necesarios. Los permisos se asignan concediendo roles a un usuario, un grupo o una cuenta de servicio. Además de los roles básicos de propietario, editor y lector, puedes asignar roles de la API Cloud DNS a los usuarios de tu proyecto.

Permisos

En la siguiente tabla se indican los permisos que debe tener el llamante para invocar cada método.

Método Permisos necesarios
dns.changes.create para crear un conjunto de registros de recursos. dns.changes.create y dns.resourceRecordSets.create en el proyecto que contiene el conjunto de registros.
dns.changes.create para actualizar un conjunto de registros de recursos. dns.changes.create y dns.resourceRecordSets.update en el proyecto que contiene el conjunto de registros.
dns.changes.create para eliminar un conjunto de registros de recursos. dns.changes.create y dns.resourceRecordSets.delete en el proyecto que contiene el conjunto de registros.
dns.changes.get dns.changes.get en el proyecto que contiene la zona gestionada.
dns.changes.list dns.changes.list en el proyecto que contiene la zona gestionada.
dns.dnsKeys.get dns.dnsKeys.get en el proyecto que contiene la zona gestionada.
dns.dnsKeys.list dns.dnsKeys.list en el proyecto que contiene la zona gestionada.
dns.managedZoneOperations.get dns.managedZoneOperations.get en el proyecto que contiene la zona gestionada.
dns.managedZoneOperations.list dns.managedZoneOperations.list en el proyecto que contiene la zona gestionada.
dns.managedZones.create dns.managedZones.create en el proyecto que contiene la zona gestionada.

Si creas una zona privada, también necesitas dns.networks.bindPrivateDNSZone y dns.networks.targetWithPeeringZone en cada proyecto con una red de VPC autorizada para acceder a la zona.

Si vas a crear una zona privada con integración de GKE, también debes configurar un permiso de clúster de GKE en dns.gkeClusters.bindPrivateDNSZone.

dns.managedZones.delete dns.managedZones.delete en el proyecto que contiene la zona gestionada.
dns.managedZones.get dns.managedZones.get en el proyecto que contiene la zona gestionada.
dns.managedZones.list dns.managedZones.list en el proyecto que contiene la zona gestionada.
dns.managedZones.update dns.managedZones.update en el proyecto que contiene la zona gestionada.

Si creas una zona privada, también necesitas dns.networks.bindPrivateDNSZone y dns.networks.targetWithPeeringZone en cada proyecto con una red de VPC autorizada para acceder a la zona.

Si vas a crear una zona privada con integración de GKE, también debes configurar un permiso de clúster de GKE en dns.gkeClusters.bindPrivateDNSZone.

dns.policies.create dns.policies.create en el proyecto que contiene la política.

Si la política se crea en una red de VPC, también necesitas dns.networks.bindPrivateDNSPolicy para cada proyecto que contenga cada red de VPC.

dns.policies.delete dns.policies.delete en el proyecto que contiene la política.
dns.policies.get dns.policies.get en el proyecto que contiene la política.
dns.policies.list dns.policies.list en el proyecto que contiene la política.
dns.policies.update dns.policies.update en el proyecto que contiene la política.

Si la política se actualiza para que esté en una red de VPC, también necesitará dns.networks.bindPrivateDNSPolicy para cada proyecto que contenga cada red de VPC.

dns.projects.get dns.projects.get en el proyecto.
dns.resourceRecordSets.create dns.resourceRecordSets.create en el proyecto que contiene el conjunto de registros.
dns.resourceRecordSets.delete dns.resourceRecordSets.delete en el proyecto que contiene el conjunto de registros.
dns.resourceRecordSets.get dns.resourceRecordSets.get en el proyecto que contiene el conjunto de registros.
dns.resourceRecordSets.list dns.resourceRecordSets.list en el proyecto que contiene la zona gestionada.
dns.resourceRecordSets.update dns.resourceRecordSets.update y dns.changes.create en el proyecto que contiene el conjunto de registros.
dns.responsePolicies.create dns.responsePolicies.create en el proyecto que contiene la política de respuesta.

También debes dns.networks.bindDNSResponsePolicy para validar la solicitud.

Si quieres crear una política de respuesta asociada a un clúster de GKE, necesitas lo siguiente: dns.gkeClusters.bindDNSResponsePolicy

dns.responsePolicies.delete dns.responsePolicies.delete en el proyecto que contiene la política de respuesta.
dns.responsePolicies.get dns.responsePolicies.get en el proyecto que contiene la política de respuesta.
dns.responsePolicies.list dns.responsePolicies.list en el proyecto.
dns.responsePolicies.update dns.responsePolicies.update en el proyecto que contiene la política de respuesta.

También debes dns.networks.bindDNSResponsePolicy para validar la solicitud.

Si quieres crear una política de respuesta asociada a un clúster de GKE, necesitas lo siguiente: dns.gkeClusters.bindDNSResponsePolicy

dns.responsePolicyRules.create dns.responsePolicyRules.create en el proyecto que contiene la regla de política de respuesta.
dns.responsePolicyRules.delete dns.responsePolicyRules.delete en el proyecto que contiene la regla de política de respuesta.
dns.responsePolicyRules.get dns.responsePolicyRules.get en el proyecto que contiene la regla de política de respuesta.
dns.responsePolicyRules.list dns.responsePolicyRules.list en el proyecto que contiene la política de respuesta.
dns.responsePolicyRules.update dns.responsePolicyRules.update en el proyecto que contiene la regla de política de respuesta.

Roles

En la siguiente tabla se indican los roles de gestión de identidades y accesos de la API Cloud DNS, así como una lista de todos los permisos que incluye cada rol. Cada permiso se aplica a un tipo de recurso concreto.

También puedes usar roles básicos para hacer cambios en el DNS.

Role Permissions

(roles/dns.admin)

Provides read-write access to all Cloud DNS resources.

Lowest-level resources where you can grant this role:

  • Managed zone

compute.networks.get

compute.networks.list

dns.changes.*

  • dns.changes.create
  • dns.changes.get
  • dns.changes.list

dns.dnsKeys.*

  • dns.dnsKeys.get
  • dns.dnsKeys.list

dns.gkeClusters.*

  • dns.gkeClusters.bindDNSResponsePolicy
  • dns.gkeClusters.bindPrivateDNSZone

dns.managedZoneOperations.*

  • dns.managedZoneOperations.get
  • dns.managedZoneOperations.list

dns.managedZones.create

dns.managedZones.delete

dns.managedZones.get

dns.managedZones.getIamPolicy

dns.managedZones.list

dns.managedZones.update

dns.networks.*

  • dns.networks.bindDNSResponsePolicy
  • dns.networks.bindPrivateDNSPolicy
  • dns.networks.bindPrivateDNSZone
  • dns.networks.targetWithPeeringZone
  • dns.networks.useHealthSignals

dns.policies.*

  • dns.policies.create
  • dns.policies.delete
  • dns.policies.get
  • dns.policies.list
  • dns.policies.update

dns.projects.get

dns.resourceRecordSets.*

  • dns.resourceRecordSets.create
  • dns.resourceRecordSets.delete
  • dns.resourceRecordSets.get
  • dns.resourceRecordSets.list
  • dns.resourceRecordSets.update

dns.responsePolicies.*

  • dns.responsePolicies.create
  • dns.responsePolicies.delete
  • dns.responsePolicies.get
  • dns.responsePolicies.list
  • dns.responsePolicies.update

dns.responsePolicyRules.*

  • dns.responsePolicyRules.create
  • dns.responsePolicyRules.delete
  • dns.responsePolicyRules.get
  • dns.responsePolicyRules.list
  • dns.responsePolicyRules.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dns.peer)

Access to target networks with DNS peering zones

dns.networks.targetWithPeeringZone

(roles/dns.reader)

Provides read-only access to all Cloud DNS resources.

Lowest-level resources where you can grant this role:

  • Managed zone

compute.networks.get

dns.changes.get

dns.changes.list

dns.dnsKeys.*

  • dns.dnsKeys.get
  • dns.dnsKeys.list

dns.managedZoneOperations.*

  • dns.managedZoneOperations.get
  • dns.managedZoneOperations.list

dns.managedZones.get

dns.managedZones.list

dns.policies.get

dns.policies.list

dns.projects.get

dns.resourceRecordSets.get

dns.resourceRecordSets.list

dns.responsePolicies.get

dns.responsePolicies.list

dns.responsePolicyRules.get

dns.responsePolicyRules.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dns.serviceAgent)

Gives Cloud DNS Service Agent access to Cloud Platform resources.

compute.globalNetworkEndpointGroups.attachNetworkEndpoints

compute.globalNetworkEndpointGroups.create

compute.globalNetworkEndpointGroups.delete

compute.globalNetworkEndpointGroups.detachNetworkEndpoints

compute.globalNetworkEndpointGroups.get

compute.globalOperations.get

compute.healthChecks.get

Gestionar control de acceso

Puedes usar la consola Google Cloud para gestionar el control de acceso de tus temas y proyectos.

Para definir controles de acceso a nivel de proyecto, sigue estos pasos.

Consola

  1. En la consola, ve a la página IAM. Google Cloud

    Ir a la página de gestión de identidades y accesos

  2. Selecciona tu proyecto en el menú desplegable de la parte superior.

  3. Haz clic en Añadir.

  4. En Principales nuevas, introduce la dirección de correo de un nuevo principal.

  5. Selecciona un rol de la lista.

  6. Haz clic en Guardar.

  7. Comprueba que el principal aparece con el rol que le has concedido.

Siguientes pasos