Controla el acceso a tablas individuales con la IAM

En este documento, se muestra cómo otorgar y revocar BigQuery Roles de Identity and Access Management (IAM) 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 de Dataform y permisos en IAM, consulta Controla el acceso con la IAM.

Cuando Dataform ejecuta una tabla o vista, crea el recurso en 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

Puedes otorgar roles de BigQuery a una tabla o vista en Dataform de las siguientes maneras: agregar 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 funciones 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 de Dataform

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

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

  4. Selecciona el archivo de definición .sqlx de la tabla o vista. al que quieres 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 la función de BigQuery o la lista de elementos separados por comas. roles de BigQuery que quieras otorgar.

    • RESOURCE_TYPE: TABLE o VIEW.

    • USER_LIST: Es la lista de usuarios separados por comas a los que a la que se le 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 la siguiente muestra de código, aparece el Visualizador de BigQuery. Rol otorgado en una tabla a un usuario:

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 roles de BigQuery desde una tabla o vista, agrega un post_operations bloque 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 de Dataform

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

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

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

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

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

    Reemplaza lo siguiente:

    • ROLE_LIST: Es la función de BigQuery o la lista de elementos separados por comas. roles de BigQuery que quieres revocar.
    • RESOURCE_TYPE: TABLE o VIEW.
    • USER_LIST: Es la lista de usuarios separados por comas a los que se le revoca 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 el Declaración GRANT con una sentencia 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 sentencia REVOKE. del archivo de definición de tablas después de la primera ejecución.

En la siguiente muestra de código, aparece el Visualizador de BigQuery. Se revocó el rol 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 un solo ubicación, puedes crear un archivo type: "operations" dedicado con GRANT y REVOKE Declaraciones de DCL.

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 de 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 acceso al archivo, ingresa el nombre del archivo seguido del .sqlx después del 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 elementos separados por comas. roles de BigQuery que quieras otorgar o revocar.
    • RESOURCE_TYPE: 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 le otorga o 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 el Declaración GRANT con una sentencia REVOKE.

      Quita la declaración GRANT sin agregar la declaración 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 las GRANT. o REVOKE del archivo después de la primera ejecución de la instrucción.

¿Qué sigue?