Controla el acceso a tablas individuales con la 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 las funciones y los permisos de Dataform en IAM, consulta Controla el acceso con la IAM.

Cuando Dataform ejecuta una tabla o vista, crea el recurso en BigQuery. Durante el desarrollo en Dataform, puedes otorgar funciones 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. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Habilita las API de BigQuery and Dataform.

    Habilita las API

  5. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  7. Habilita las API de BigQuery and Dataform.

    Habilita las API

Otorga roles de BigQuery a una tabla o vista

Puedes otorgar funciones de BigQuery a una tabla o vista en Dataform si agregas un bloque post_operations con la declaración de 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.

    Ir a la página Dataform

  2. Elige un repositorio y, luego, selecciona un lugar de trabajo.

  3. En el panel Files, 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 ${self()}
        TO "USER_LIST"
    }
    

    Reemplaza lo siguiente:

    • ROLE_LIST: Es la función de BigQuery o la lista de funciones de BigQuery separadas por comas que deseas otorgar.
    • USER_LIST: Es la lista separada por comas de usuarios a los que se otorga la función.

      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 en una tabla incremental, quita la declaración GRANT del archivo de definición de tablas después de la primera ejecución.

En la siguiente muestra de código, se indica la función Visualizador de BigQuery que se le otorgó a un usuario en una tabla:

config { type: "table" }

SELECT ...

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

Revoca roles de BigQuery de una tabla o vista

Puedes revocar las funciones de BigQuery desde una tabla o vista si agregas un bloque post_operations con la declaración de 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.

    Ir a la página Dataform

  2. Elige un repositorio y, luego, selecciona un lugar de trabajo.

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

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

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

        REVOKE "ROLE_LIST"
        ON ${self()}
        TO "USER_LIST"
    

    Reemplaza lo siguiente:

    • ROLE_LIST: Es la función o la lista de funciones de BigQuery separadas por comas que deseas revocar.
    • USER_LIST: Es la lista de usuarios separados por comas a partir de los cuales se revocó la función. Para obtener una lista de los formatos válidos, consulta user_list.
  6. Para revocar el acceso otorgado en una declaración GRANT en el archivo, reemplaza la declaración GRANT por una REVOKE.

    Removing the `GRANT` statement without adding the `REVOKE` statement
    does not revoke access.
    
  7. Opcional: Haz clic en Formato.

  8. Ejecuta la tabla o vista.

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

En la siguiente muestra de código, se ve la función de visualizador de BigQuery revocada de un usuario en una tabla:

config { type: "table" }

SELECT ...

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

Administra los roles de BigQuery de forma colectiva 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 instrucciones de 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.

    Ir a la página Dataform

  2. Elige un repositorio y, luego, selecciona un lugar de trabajo.

  3. En el panel Files, junto a definitions/, haz clic en el menú More de .

  4. Haz clic en Crear archivo.

  5. En el campo Agregar una ruta de acceso al 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 Files, expande el directorio definitions/ y selecciona el archivo recién creado.

  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 la función de BigQuery o la lista de funciones de BigQuery separadas por comas que deseas otorgar o revocar.
    • RESOURCE_TYPE: Es el tipo de recurso: TABLE o VIEW.
    • RESOURCE_NAME: Es el nombre de la tabla o vista.
    • USER_LIST: Es la lista de usuarios separados por comas a los que se les otorga o revoca la función. 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 declaración GRANT en el archivo, reemplaza la declaración GRANT por una REVOKE.

      Si quitas la declaración GRANT sin agregar la declaración REVOKE, no se revocará 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 instrucción GRANT o REVOKE del archivo después de la primera ejecución de la instrucción.

¿Qué sigue?