Crear y gestionar vistas autorizadas

En este documento se describe cómo definir, crear y realizar otras operaciones administrativas en una vista autorizada mediante la CLI de Google Cloud o laGoogle Cloud consola. Antes de leer este documento, debes familiarizarte con la descripción general de las vistas autorizadas.

Roles obligatorios

Para obtener los permisos que necesitas para realizar operaciones administrativas en una vista autorizada, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de Bigtable (roles/bigtable.admin) en la tabla subyacente. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para realizar operaciones administrativas en una vista autorizada. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para realizar operaciones administrativas en una vista autorizada , se necesitan los siguientes permisos:

  • bigtable.authorizedViews.get
  • bigtable.authorizedViews.list
  • bigtable.authorizedViews.create
  • bigtable.authorizedViews.update
  • bigtable.authorizedViews.delete
  • bigtable.authorizedViews.getIamPolicy
  • bigtable.authorizedViews.setIamPolicy
  • bigtable.authorizedViews.readRows
  • bigtable.authorizedViews.sampleRowKeys
  • bigtable.authorizedViews.mutateRows

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Para obtener información sobre cómo gestionar los roles de gestión de identidades y accesos de Bigtable a nivel de vista autorizada, consulta el artículo sobre la gestión de IAM a nivel de vista autorizada.

Google Cloud

Crear una vista autorizada

Cuando crees una vista autorizada, ten en cuenta las consultas que se ejecutarán en ella. Las solicitudes de lectura, escritura y eliminación que se envían a una vista autorizada solo deben hacer referencia a los datos que se encuentran en esa vista. Por ejemplo, si intentas leer, escribir o eliminar una fila que tiene columnas en la tabla que no están en tu vista autorizada, la solicitud fallará.

Para evitar que las solicitudes de datos a una vista autorizada fallen porque se han añadido columnas a la tabla que no están en la vista autorizada, puede especificar un prefijo de calificador de columna vacío ("") para una familia de columnas.

Puede especificar hasta 100 parámetros de definición por vista autorizada.

Consola

  1. Abre la lista de instancias de Bigtable en la Google Cloud consola.

    Abrir la lista de instancias

  2. Haga clic en la instancia que contiene la tabla de la que quiere obtener una vista autorizada.

  3. En el panel de navegación, haga clic en Bigtable Studio.

  4. Haga clic en Creador para abrir el creador de consultas.

  5. Elige la tabla de la que quieras obtener una vista autorizada.

  6. Añade cláusulas para crear una consulta que devuelva solo los datos a los que quieres que tengan acceso los usuarios de la vista autorizada.

    • Las cláusulas aceptables para una vista autorizada son prefijo de clave de fila y columnas (calificadores de columna).
    • Para especificar un prefijo de calificador de columna, añade un asterisco después del prefijo. Por ejemplo, para incluir todas las columnas que empiecen por "data", introduzca data* en el campo Columnas después del nombre de la familia de columnas.
    • La cláusula Limit se ignora cuando se guarda la vista autorizada.
    • Para obtener más información sobre cómo usar el creador de consultas, consulta Crear consultas en la consola.
  7. Haz clic en Ejecutar.

  8. Después de verificar que en el panel de resultados se muestran los datos que deben incluirse en la vista autorizada, haga clic en Guardar como vista.

  9. Introduce un identificador permanente de la vista autorizada que aún no se esté usando en la tabla.

  10. Opcional: Para guardar sin conceder acceso, haz clic en Guardar.

  11. Opcional: Para guardar la vista autorizada y, a continuación, configurar el acceso a ella, haga clic en Guardar y dar acceso. Para obtener más información sobre el control de acceso, consulta Control de acceso a Bigtable con gestión de identidades y accesos.

    1. Añade al menos un principal y selecciona el rol que se le debe asignar a ese principal o grupo de principales.
    2. Opcional: Para conceder acceso a otros roles, haz clic en Añadir otro rol y, a continuación, introduce el principal y el rol de cada rol adicional.
    3. Haz clic en Guardar.

gcloud

Ejecuta el comando bigtable authorized-views create. Para obtener más información, consulta la documentación de referencia de gcloud bigtable authorized-views create.

gcloud bigtable authorized-views create AUTHORIZED_VIEW_ID \
  --instance=INSTANCE_ID \
  --table=TABLE_ID \
  --definition-file=DEFINITION_FILE_PATH

Haz los cambios siguientes:

  • AUTHORIZED_VIEW_ID: un identificador permanente de la vista autorizada que aún no se esté usando en la tabla.
  • INSTANCE_ID: identificador permanente de la instancia que contiene la tabla.
  • TABLE_ID: el identificador permanente de la tabla de la que quieres crear una vista autorizada
  • DEFINITION_FILE_PATH: la ruta a una representación con formato JSON válida de una vista autorizada. Para ver ejemplos de archivos de definición con el formato correcto, consulta Ejemplos de archivos de definición.

También puedes ejecutar el comando sin proporcionar el archivo de definición. En este caso, la CLI de gcloud abre un editor y te pide valores.

Para confirmar que se ha creado la vista autorizada, obtén una lista de vistas autorizadas de la tabla.

Java

Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

try {
  CreateAuthorizedViewRequest request =
      CreateAuthorizedViewRequest.of(tableId, authorizedViewId)
          .setAuthorizedViewType(
              SubsetView.create()
                  .addRowPrefix("")
                  .setFamilySubsets(
                      COLUMN_FAMILY,
                      FamilySubsets.create().addQualifierPrefix(COLUMN_QUALIFIER_NAME)));
  AuthorizedView authorizedView = adminClient.createAuthorizedView(request);
  System.out.printf("AuthorizedView: %s created successfully%n", authorizedView.getId());
} catch (NotFoundException e) {
  System.err.println(
      "Failed to create an authorized view from a non-existent table: " + e.getMessage());
}

Modificar una vista autorizada

Consola

  1. Abre la lista de instancias de Bigtable en la Google Cloud consola.

    Abrir la lista de instancias

  2. Haga clic en la instancia que contenga la vista autorizada.

  3. En el panel de navegación, haga clic en Bigtable Studio.

  4. En el explorador, despliega la tabla y Vistas autorizadas.

  5. Junto a la vista autorizada que quieras modificar, haz clic en el menú de acciones more_vert y, a continuación, en Abrir.

  6. Modifica o añade cláusulas para crear una consulta que devuelva solo los datos a los que quieres que tengan acceso los usuarios de la vista autorizada.

    • Las cláusulas aceptables para una vista autorizada son prefijo de clave de fila y columnas (calificadores de columna).
    • Para especificar un prefijo de calificador de columna, añade un asterisco después del prefijo. Por ejemplo, para incluir todas las columnas que empiecen por "data", introduzca data* en el campo Columnas después del nombre de la familia de columnas.
    • La cláusula Limit se ignora cuando se guarda la vista autorizada.
    • Para obtener más información sobre cómo usar el creador de consultas, consulta Crear consultas en la consola.
  7. Haz clic en Ejecutar.

  8. Después de verificar que en el panel de resultados se muestran los datos que deben incluirse en la vista autorizada, haga clic en Guardar como vista.

  9. En el cuadro de diálogo, introduce el ID de la vista autorizada que has modificado.

    En el cuadro de diálogo se muestra un mensaje de advertencia que indica que vas a sobrescribir la vista autorizada.

  10. Opcional: Para guardar sin conceder acceso, haz clic en Guardar.

  11. Opcional: Para guardar la vista autorizada y, a continuación, configurar el acceso a ella, haga clic en Guardar y dar acceso. Para obtener más información sobre el control de acceso, consulta Control de acceso a Bigtable con gestión de identidades y accesos.

    1. Añade al menos un principal y selecciona el rol que se le debe asignar a ese principal o grupo de principales.
    2. Opcional: Para conceder acceso a otros roles, haz clic en Añadir otro rol y, a continuación, introduce el principal y el rol de cada rol adicional.
    3. Haz clic en Guardar.

gcloud

Modifica una vista autorizada con el comando bigtable authorized-views update. Para obtener más información, consulta la documentación de referencia de gcloud bigtable authorized-views update.

gcloud bigtable authorized-views update AUTHORIZED_VIEW_ID \
  --instance=INSTANCE_ID \
  --table=TABLE_ID \
  --definition-file=DEFINITION_FILE_PATH

Haz los cambios siguientes:

  • AUTHORIZED_VIEW_ID: identificador permanente de la vista autorizada
  • INSTANCE_ID: identificador permanente de la instancia
  • TABLE_ID: identificador permanente de la tabla de origen
  • DEFINITION_FILE_PATH: la ruta a una representación con formato JSON válida de una vista autorizada. Para ver ejemplos de archivos de definición con el formato correcto, consulta Ejemplos de archivos de definición.

También puedes ejecutar el comando sin proporcionar el archivo de definición. En este caso, la CLI de gcloud abre un editor y te pide valores.

Opcional: Para evitar que la CLI de gcloud muestre una confirmación que muestre la diferencia entre la estructura de la vista autorizada actual y después de que se confirme la actualización, añade la marca --no-interactive al comando.

Java

Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

try {
  // Update to an authorized view permitting everything.
  UpdateAuthorizedViewRequest request =
      UpdateAuthorizedViewRequest.of(tableId, authorizedViewId)
          .setAuthorizedViewType(
              SubsetView.create()
                  .addRowPrefix("")
                  .setFamilySubsets(
                      COLUMN_FAMILY, FamilySubsets.create().addQualifierPrefix("")));
  AuthorizedView authorizedView = adminClient.updateAuthorizedView(request);
  System.out.printf("AuthorizedView: %s updated successfully%n", authorizedView.getId());
} catch (NotFoundException e) {
  System.err.println("Failed to modify a non-existent authorized view: " + e.getMessage());
}

Habilitar o inhabilitar la protección frente a la eliminación

Para habilitar la protección contra eliminación en una vista autorizada, modifica el archivo JSON que define tu vista autorizada asignando el valor true a la marca deletionProtection.

Para inhabilitar la protección contra eliminación, modifica el archivo JSON que define tu vista autorizada y asigna el valor false a la marca deletionProtection.

Para finalizar los cambios en la vista autorizada, ejecuta el comando bigtable authorized-views update con el nombre del archivo JSON actualizado. Para obtener más información, consulta la documentación de referencia de gcloud bigtable authorized-views update.

Eliminar una vista autorizada

Si eliminas una tabla, también se eliminarán todas las vistas autorizadas de la tabla.

Si elimina una vista autorizada, no podrá deshacer la eliminación. Sin embargo, si elimina una tabla y, a continuación, la restaura, todas las vistas autorizadas de la tabla se restaurarán junto con la tabla. Después, debes volver a configurar la gestión de identidades y accesos para las vistas autorizadas y para las tablas. Para obtener más información, consulta el artículo sobre cómo restaurar una tabla.

Consola

  1. Abre la lista de instancias de Bigtable en la Google Cloud consola.

    Abrir la lista de instancias

  2. Haga clic en la instancia que contenga la vista autorizada.

  3. En el panel de navegación, haga clic en Bigtable Studio.

  4. En el explorador, despliega la tabla y Vistas autorizadas.

  5. Junto a la vista autorizada que quieras eliminar, haz clic en el menú de acciones more_vert y, a continuación, en Eliminar.

gcloud

Elimina una vista autorizada con el comando bigtable instances tables authorized-views delete. Para obtener más información, consulta la documentación de referencia de gcloud bigtable authorized-views delete.

gcloud bigtable authorized-views delete AUTHORIZED_VIEW_ID \
  --instance=INSTANCE_ID \
  --table=TABLE_ID

Haz los cambios siguientes:

  • AUTHORIZED_VIEW_ID: identificador permanente de la vista autorizada
  • INSTANCE_ID: identificador permanente de la instancia
  • TABLE_ID: identificador permanente de la tabla de origen

Opcional: Para evitar que la CLI de gcloud muestre una solicitud de confirmación que te pida que confirmes o canceles la eliminación, añade la marca --nointeractive al comando.

Java

Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

try {
  adminClient.deleteAuthorizedView(tableId, authorizedViewId);
  System.out.printf("AuthorizedView: %s deleted successfully%n", authorizedViewId);
} catch (NotFoundException e) {
  System.err.println("Failed to delete a non-existent authorized view: " + e.getMessage());
}

Obtener una lista de vistas autorizadas de una tabla

Consola

  1. Abre la lista de instancias de Bigtable en la Google Cloud consola.

    Abrir la lista de instancias

  2. Haga clic en la instancia que contenga la vista autorizada.

  3. En el panel de navegación, haga clic en Bigtable Studio.

  4. En el explorador, despliega la tabla y Vistas autorizadas.

gcloud

Ejecuta el comando bigtable authorized-views list. Para obtener más información, consulta la documentación de referencia de gcloud bigtable authorized-views list.

gcloud bigtable authorized-views list \
  --instance=INSTANCE_ID \
  --table=TABLE_ID

Haz los cambios siguientes:

  • INSTANCE_ID: identificador permanente de la instancia
  • TABLE_ID: identificador permanente de la tabla

Java

Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

List<String> authorizedViewIds = new ArrayList<>();
try {
  authorizedViewIds = adminClient.listAuthorizedViews(tableId);
  for (String authorizedViewId : authorizedViewIds) {
    System.out.println(authorizedViewId);
  }
} catch (NotFoundException e) {
  System.err.println(
      "Failed to list authorized views from a non-existent table: " + e.getMessage());
}

Ver los detalles de una vista autorizada

Consola

  1. Abre la lista de instancias de Bigtable en la Google Cloud consola.

    Abrir la lista de instancias

  2. Haga clic en la instancia que contenga la vista autorizada.

  3. En el panel de navegación, haga clic en Bigtable Studio.

  4. En el explorador, despliega la tabla y Vistas autorizadas.

  5. Junto a la vista autorizada que quieras ver, haz clic en el menú de acciones more_vert y, a continuación, en Abrir.

gcloud

Para obtener información sobre una vista autorizada, ejecuta el comando bigtable instances tables authorized-views describe. Para obtener más información, consulta la documentación de referencia de gcloud bigtable authorized-views describe.

gcloud bigtable authorized-views describe \
–-instance=INSTANCE_ID \
–-table=TABLE_ID \
AUTHORIZED_VIEW_ID

Haz los cambios siguientes:

  • INSTANCE_ID: identificador permanente de la instancia
  • TABLE_ID: identificador permanente de la tabla
  • AUTHORIZED_VIEW_ID: identificador permanente de la vista autorizada

Java

Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

AuthorizedView authorizedView = null;
try {
  authorizedView = adminClient.getAuthorizedView(tableId, authorizedViewId);
  SubsetView subsetView = (SubsetView) authorizedView.getAuthorizedViewType();

  for (ByteString rowPrefix : subsetView.getRowPrefixes()) {
    System.out.printf("Row Prefix: %s%n", rowPrefix.toStringUtf8());
  }
  for (Map.Entry<String, FamilySubsets> entry : subsetView.getFamilySubsets().entrySet()) {
    for (ByteString qualifierPrefix : entry.getValue().getQualifierPrefixes()) {
      System.out.printf(
          "Column Family: %s, Qualifier Prefix: %s%n",
          entry.getKey(), qualifierPrefix.toStringUtf8());
    }
    for (ByteString qualifier : entry.getValue().getQualifiers()) {
      System.out.printf(
          "Column Family: %s, Qualifier: %s%n", entry.getKey(), qualifier.toStringUtf8());
    }
  }
} catch (NotFoundException e) {
  System.err.println(
      "Failed to retrieve metadata from a non-existent authorized view: " + e.getMessage());
}

Dar acceso a una vista autorizada

Para obtener más información sobre el control de acceso, consulta Control de acceso a Bigtable con gestión de identidades y accesos.

Consola

  1. Abre la lista de instancias de Bigtable en la Google Cloud consola.

    Abrir la lista de instancias

  2. Haga clic en la instancia que contenga la vista autorizada.

  3. En el panel de navegación, haga clic en Bigtable Studio.

  4. En el panel del explorador, expande la tabla y Vistas autorizadas.

  5. Junto al nombre de la vista autorizada, haz clic en el menú de acciones more_vert y, a continuación, en Conceder acceso.

  6. Añade al menos un principal y selecciona el rol que se le debe asignar a ese principal o grupo de principales.

  7. Opcional: Para conceder acceso a otros roles, haz clic en Añadir otro rol y, a continuación, introduce el principal y el rol de cada rol adicional.

  8. Haz clic en Guardar.

gcloud

Para conceder acceso a una vista autorizada, usa el comando bigtable authorized-views add-iam-policy-binding. Para obtener más información, consulta la documentación de referencia de gcloud bigtable authorized-views add-iam-policy-binding.

gcloud bigtable authorized-views add-iam-policy-binding AUTH_VIEW_ID \
--instance=INSTANCE_ID --table=TABLE_ID \
--member=PRINCIPAL --role=ROLE

Haz los cambios siguientes:

  • AUTH_VIEW_ID: ID de la vista autorizada
  • TABLE_ID: el ID de la tabla de la que se trata la vista autorizada.
  • INSTANCE_ID: la instancia que contiene la tabla
  • PRINCIPAL: la entidad principal (usuario) a la que quieres dar acceso, como user:222larabrown@gmail.com
  • ROLE: el rol que vas a conceder, como roles/bigtable.reader.

Siguientes pasos