Controla el acceso a tablas individuales con IAM

En este documento, se muestra cómo otorgar y revocar roles de Identity and Access Management (IAM) de BigQuery para tablas y vistas individuales de Dataform.

Dataform y BigQuery usan IAM para el control de acceso. Para obtener más información sobre los roles y permisos de Dataform en IAM, consulta Controla el acceso con IAM.

Cuando Dataform ejecuta una tabla o vista, crea el recurso en BigQuery. Durante el desarrollo en Dataform, puedes otorgar roles de BigQuery a tablas y vistas individuales para controlar su acceso en BigQuery después de la ejecución.

Para obtener más información sobre cómo otorgar y revocar el acceso a los recursos, consulta Otorga acceso a un recurso.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and Dataform APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Enable the APIs

Otorga roles de BigQuery a una tabla o vista

Para otorgar roles de BigQuery a una tabla o vista en Dataform, agrega un bloque post_operations con la declaración DCL GRANT al archivo de definición .sqlx de la tabla o vista seleccionada.

Para otorgar roles de BigQuery a una tabla o vista seleccionada, sigue estos pasos:

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

    Ve a la página Dataform

  2. Selecciona un repositorio y, luego, un lugar de trabajo.

  3. En el panel Archivos, expande el directorio definitions/.

  4. Selecciona el archivo de definición .sqlx de la tabla o vista a la que deseas otorgar acceso.

  5. En el archivo, ingresa el siguiente fragmento de código:

    post_operations {
        GRANT "ROLE_LIST"
        ON "RESOURCE_TYPE" ${self()}
        TO "USER_LIST"
    }
    

    Reemplaza lo siguiente:

    • ROLE_LIST: Es el rol de BigQuery o la lista de roles de BigQuery separados por comas que deseas otorgar.

    • RESOURCE_TYPE: TABLE o VIEW.

    • USER_LIST: Es la lista separada por comas de los usuarios a los que se otorga el rol.

      Para obtener una lista de los formatos válidos, consulta user_list.

  6. Opcional: Haz clic en Formato.

  7. Ejecuta la tabla o vista.

  8. Si otorgaste acceso a una tabla incremental, quita la sentencia GRANT del archivo de definición de tablas después de la primera ejecución.

En el siguiente ejemplo de código, se muestra el rol de Visualizador de BigQuery que se otorgó a un usuario en una tabla:

config { type: "table" }

SELECT ...

post_operations {
  GRANT `roles/bigquery.dataViewer`
  ON TABLE ${self()}
  TO "user:222larabrown@gmail.com"
}

Cómo revocar roles de BigQuery de una tabla o vista

Para revocar los roles de BigQuery de una tabla o vista, agrega un bloque post_operations con la declaración DCL REVOKE al archivo de definición .sqlx de la tabla o vista seleccionada.

Para revocar los roles de BigQuery de una tabla o vista seleccionada, sigue estos pasos:

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

    Ve a la página Dataform

  2. Selecciona un repositorio y, luego, un lugar de trabajo.

  3. En el panel Archivos, expande el directorio definitions/.

  4. Selecciona el archivo de definición .sqlx de la tabla o vista en la que deseas revocar el acceso.

  5. En el bloque post_operations, ingresa la siguiente sentencia REVOKE:

        REVOKE "ROLE_LIST"
        ON "RESOURCE_TYPE" ${self()}
        FROM "USER_LIST"
    

    Reemplaza lo siguiente:

    • ROLE_LIST: Es el rol de BigQuery o la lista de roles de BigQuery separados por comas que deseas revocar.
    • RESOURCE_TYPE: TABLE o VIEW.
    • USER_LIST: Es la lista separada por comas de los usuarios a los que se les revocó el rol. Para obtener una lista de los formatos válidos, consulta user_list.
  6. Para revocar el acceso otorgado en una sentencia GRANT en el archivo, reemplaza la sentencia GRANT por una sentencia REVOKE.

  7. Opcional: Haz clic en Formato.

  8. Ejecuta la tabla o vista.

  9. Si revocaste el acceso a una tabla incremental, quita la sentencia REVOKE del archivo de definición de tablas después de la primera ejecución.

En el siguiente ejemplo de código, se muestra el rol de Visualizador de BigQuery revocado de un usuario en una tabla:

config { type: "table" }

SELECT ...

post_operations {
  REVOKE `roles/bigquery.dataViewer`
  ON TABLE ${self()}
  FROM "user:222larabrown@gmail.com"
}

Administra de forma colectiva los roles de BigQuery para tablas y vistas

Para controlar el acceso de BigQuery a tablas y vistas individuales en una sola ubicación, puedes crear un archivo type: "operations" dedicado con sentencias DCL GRANT y REVOKE.

Para administrar el acceso a las tablas de BigQuery en un solo archivo type: "operations", sigue estos pasos:

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

    Ve a la página Dataform

  2. Selecciona un repositorio y, luego, un lugar de trabajo.

  3. En el panel Archivos, junto a definitions/, haz clic en el menú Más.

  4. Haz clic en Crear archivo.

  5. En el campo Agregar una ruta de archivo, ingresa el nombre del archivo seguido de .sqlx después de definitions/. Por ejemplo, definitions/table-access.sqlx.

    Los nombres de archivo solo pueden incluir números, letras, guiones y guiones bajos.

  6. Haz clic en Crear archivo.

  7. En el panel Archivos, expande el directorio definitions/ y selecciona el archivo que acabas de crear.

  8. En el archivo, ingresa el siguiente fragmento de código:

      config { type: "operations" }
    
      GRANT "ROLE_LIST"
      ON RESOURCE_TYPE RESOURCE_NAME
      TO "USER_LIST"
    
      REVOKE "ROLE_LIST"
      ON { "<var>" }}RESOURCE_TYPE RESOURCE_NAME
      TO "USER_LIST"
    

    Reemplaza lo siguiente:

    • ROLE_LIST: Es el rol de BigQuery o la lista de roles de BigQuery separados por comas que deseas otorgar o revocar.
    • RESOURCE_TYPE: TABLE o VIEW.
    • RESOURCE_NAME: Es el nombre de la tabla o vista.
    • USER_LIST: Es la lista separada por comas de los usuarios a los que se otorga o se les revoca el rol. Para obtener una lista de los formatos válidos, consulta user_list.
  9. Agrega las sentencias GRANT y REVOKE según sea necesario.

    1. Para revocar el acceso otorgado en una sentencia GRANT en el archivo, reemplaza la sentencia GRANT por una sentencia REVOKE.

      Quitar la sentencia GRANT sin agregar la sentencia REVOKE no revoca el acceso.

  10. Opcional: Haz clic en Formato.

  11. Ejecuta el archivo después de cada actualización.

    1. Si otorgaste o revocaste el acceso a una tabla incremental, quita la sentencia GRANT o REVOKE del archivo después de la primera ejecución de la sentencia.

¿Qué sigue?