Funciones y permisos

Google Cloud ofrece la función de administración de identidades y accesos (IAM), que te permite brindar acceso más detallado a recursos específicos de Google Cloud y evita el acceso no deseado a otros recursos. En esta página, se describen las funciones de la API de Cloud DNS. Para obtener una descripción detallada de IAM, consulta la documentación de administración de identidades y accesos.

La IAM te permite adoptar el principio de seguridad de privilegio mínimo, de manera que solo otorgues el acceso necesario a tus recursos.

IAM te permite controlar quién tiene qué permisos para cuáles recursos mediante la configuración de políticas de IAM. Las políticas de IAM otorgan funciones específicas a un usuario, lo que le otorga ciertos permisos. Por ejemplo, es posible que un usuario en particular necesite crear y modificar recursos de registro del sistema de nombres de dominio (DNS). Luego, le darías a ese usuario (quién) la función /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áles). Por el contrario, es posible que un departamento de asistencia solo necesite ver los conjuntos de registros de recursos existentes, por lo que obtendrán una función /roles/dns.reader.

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

Permisos y roles

Cada método de API de Cloud DNS requiere que el emisor tenga los permisos de IAM necesarios. Los permisos se asignan mediante el otorgamiento de funciones a un usuario, grupo o cuenta de servicio. Además de las funciones básicas de propietario, editor y visualizador, puedes otorgar funciones de la API de Cloud DNS a los usuarios de tu proyecto.

Permisos

En la siguiente tabla, se enumeran los permisos que debe tener el emisor 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 necesitas dns.gkeClusters.bindPrivateDNSZone para configurar un permiso de 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 necesitas dns.gkeClusters.bindPrivateDNSZone para configurar un permiso de 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 vinculada 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 vinculada 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

Roles

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

También puedes usar funciones básicas 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.create

dns.policies.delete

dns.policies.get

dns.policies.getIamPolicy

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

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 de proyecto, sigue estos pasos.

Console

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

    Ve 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 un principal nuevo.

  5. Selecciona un rol de la lista.

  6. Haz clic en Guardar.

  7. Verifica que la principalaparezca en la lista con la función que le otorgaste.

¿Qué sigue?