Roles y permisos

Google Cloud ofrece Identity and Access Management (IAM), que te permite brindar acceso más detallado a recursos de Google Cloud específicos y evita el acceso no deseado a otros recursos. En esta página, se describen los roles de la API de Cloud DNS. Para obtener una descripción detallada de IAM, consulta la documentación de Identity and Access Management.

Con IAM, puedes adoptar el principio de privilegio mínimo de seguridad, de manera que solo otorgas el acceso necesario a tus recursos.

Con IAM, puedes controlar quién tiene qué permisos para qué recursos configurando las políticas de IAM. Las políticas de IAM asignan roles específicos a un usuario, lo que le otorga ciertos permisos. Por ejemplo, quizás un usuario en particular necesite crear y modificar recursos de registros del sistema de nombres de dominio (DNS). Luego, debes otorgar a ese usuario (quién) el rol /roles/dns.admin, que incluye los permisos dns.changes.create y dns.resourceRecordSets.create (qué) para que pueda crear y actualizar los conjuntos de registros de recursos (qué). Por otro lado, es posible que las personas de un departamento de asistencia solo necesiten ver los conjuntos de registros de recursos existentes, por lo que obtendrán un rol /roles/dns.reader.

Cloud DNS admite permisos de IAM a nivel del proyecto y a nivel de la zona del DNS individual. El permiso predeterminado se encuentra a nivel del proyecto. Para configurar permisos a nivel de la zona (o recurso) de DNS individual, consulta Crea una zona con permisos de IAM específicos.

Permisos y roles

Cada método de la API de Cloud DNS requiere que la persona que llama tenga los permisos de IAM necesarios. Los permisos se asignan con el otorgamiento de roles a un usuario, grupo o cuenta de servicio. Además de los roles básicos de propietario, editor y visualizador, puedes asignar roles de la API de Cloud DNS a los usuarios de tu proyecto.

Permisos

En la siguiente tabla, se enumeran los permisos necesarios para llamar a 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 borrar 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 administrada.
dns.changes.list dns.changes.list en el proyecto que contiene la zona administrada.
dns.dnsKeys.get dns.dnsKeys.get en el proyecto que contiene la zona administrada.
dns.dnsKeys.list dns.dnsKeys.list en el proyecto que contiene la zona administrada.
dns.managedZoneOperations.get dns.managedZoneOperations.get en el proyecto que contiene la zona administrada.
dns.managedZoneOperations.list dns.managedZoneOperations.list en el proyecto que contiene la zona administrada.
dns.managedZones.create dns.managedZones.create en el proyecto que contiene la zona administrada.

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 creas una zona privada con integración en GKE, también necesitarás dns.gkeClusters.bindPrivateDNSZone para configurar un permiso del clúster de GKE.

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

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 creas una zona privada con integración en GKE, también necesitarás dns.gkeClusters.bindPrivateDNSZone para configurar un permiso del clúster de GKE.

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 estar en una red de VPC, también necesitas 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 administrada.
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 necesitas dns.networks.bindDNSResponsePolicy para validar la solicitud.

Si quieres crear una política de respuesta adjunta a un clúster de GKE, necesitas 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 necesitas dns.networks.bindDNSResponsePolicy para validar la solicitud.

Si quieres crear una política de respuesta adjunta a un clúster de GKE, necesitas 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.
networksecurity.dnsThreatDetectors.list (Vista previa) networksecurity.dnsThreatDetectors.list en el proyecto en el que se supervisan las redes de VPC en busca de amenazas.
networksecurity.dnsThreatDetectors.get(Vista previa) networksecurity.dnsThreatDetectors.get en el proyecto en el que se supervisan las redes de VPC en busca de amenazas.
networksecurity.dnsThreatDetectors.create(Vista previa) networksecurity.dnsThreatDetectors.create en el proyecto que contiene las redes de VPC que deseas supervisar en busca de amenazas.
networksecurity.dnsThreatDetectors.update(Vista previa) networksecurity.dnsThreatDetectors.update en el proyecto en el que se supervisan las redes de VPC en busca de amenazas.
networksecurity.dnsThreatDetectors.delete(Vista previa) networksecurity.dnsThreatDetectors.delete en el proyecto en el que se supervisan las redes de VPC en busca de amenazas.

Roles

En la siguiente tabla, se enumeran los roles de IAM de la API de Cloud DNS con la lista correspondiente de todos los permisos que se incluyen en cada rol. Cada permiso se puede aplicar a un tipo de recurso específico.

También puedes usar roles básicos para hacer cambios de 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.createTagBinding
  • dns.policies.delete
  • dns.policies.deleteTagBinding
  • dns.policies.get
  • dns.policies.list
  • dns.policies.listEffectiveTags
  • dns.policies.listTagBindings
  • 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.policies.listEffectiveTags

dns.policies.listTagBindings

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

En la siguiente tabla, se enumeran los roles de IAM de DNS Armor con una lista correspondiente de todos los permisos que se incluyen en cada rol.

Rol Permisos

(roles/networksecurity.dnsThreatDetectorAdmin)

Habilita el acceso completo a los recursos del detector de amenazas del DNS.

networksecurity.dnsThreatDetectors.*

  • networksecurity.dnsThreatDetectors.create
  • networksecurity.dnsThreatDetectors.delete
  • networksecurity.dnsThreatDetectors.get
  • networksecurity.dnsThreatDetectors.list
  • networksecurity.dnsThreatDetectors.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/networksecurity.dnsThreatDetectorViewer)

Habilita el acceso de lectura a los recursos del detector de amenazas del DNS.

networksecurity.dnsThreatDetectors.get

networksecurity.dnsThreatDetectors.list

resourcemanager.projects.get

resourcemanager.projects.list

Administra el control de acceso

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

Para configurar los controles de acceso a nivel del proyecto, sigue estos pasos.

Consola

  1. En la consola de Google Cloud , dirígete a la página IAM.

    Ir a la página IAM

  2. Selecciona tu proyecto en el menú desplegable superior.

  3. Haz clic en Agregar.

  4. En Principales nuevas, ingresa la dirección de correo electrónico de una principal nueva.

  5. Selecciona un rol de la lista.

  6. Haz clic en Guardar.

  7. Verifica que la principal aparezca en la lista con el rol que le otorgaste.

¿Qué sigue?