Crea y administra vistas autorizadas

En este documento, se describe cómo definir, crear y realizar otras operaciones administrativas en una vista autorizada con Google Cloud CLI o la consola de Google Cloud. 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, pídele a tu administrador que te otorgue el rol de IAM de Administrador de Bigtable (roles/bigtable.admin) en la tabla subyacente. Para obtener más información sobre cómo otorgar roles, consulta Administra 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 son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para realizar operaciones administrativas en una vista autorizada:

  • 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 o con otros roles predefinidos.

Para aprender a administrar roles de IAM de Bigtable a nivel de la vista autorizada, consulta Administración de IAM a nivel de la vista autorizada.

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 la vista autorizada. Esto significa, por ejemplo, que si intentas leer, escribir en o borrar una fila que tiene columnas en la tabla que no están en tu vista autorizada, la solicitud fallará.

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

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

Console

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

    Abrir la lista de instancias

  2. Haz clic en la instancia que contiene la tabla de la que deseas obtener una vista autorizada.

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

  4. Haz clic en Creador para abrir el compilador de consultas.

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

  6. Agrega cláusulas para crear una consulta que muestre solo los datos a los que deseas que los usuarios de la vista autorizada tengan acceso.

    • 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, agrega un asterisco después del prefijo. Por ejemplo, para incluir todas las columnas que comienzan con “data”, ingresa 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 el uso del compilador de consultas, consulta Cómo compilar consultas en la consola.
  7. Haz clic en Ejecutar.

  8. Después de verificar que el panel de resultados muestre los datos que se deben incluir en la vista autorizada, haz clic en Guardar como vista.

  9. Ingresa un identificador permanente para la vista autorizada que aún no esté en uso para la tabla.

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

  11. Opcional: Para guardar la vista autorizada y, luego, configurar el acceso a ella, haz clic en Guardar y otorgar acceso. Para obtener más información sobre el control de acceso, consulta Control de acceso de Bigtable con IAM.

    1. Agrega al menos una principal y selecciona el rol al que se debe asignar esa principal o grupo de principales.
    2. Opcional: Para otorgar acceso a roles adicionales, haz clic en Agregar otro rol y, luego, ingresa la 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 en gcloud bigtable authorized-views create.

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

Reemplaza lo siguiente:

  • AUTHORIZED_VIEW_ID: Es un identificador permanente para la vista autorizada que aún no se usa en la tabla.
  • INSTANCE_ID: el identificador permanente de la instancia que contiene la tabla
  • TABLE_ID: El identificador permanente de la tabla de la que estás creando una vista autorizada
  • DEFINITION_FILE_PATH: Es la ruta de acceso a una representación válida en formato JSON 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, gcloud CLI abre un editor y te solicita valores.

Para confirmar que se creó la vista autorizada, obtén una lista de vistas autorizadas para la tabla.

Java

Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas 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());
}

Modifica una vista autorizada

Console

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

    Abrir la lista de instancias

  2. Haz clic en la instancia que contiene la vista autorizada.

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

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

  5. Junto a la vista autorizada que deseas modificar, haz clic en el menú de acciones more_vert y, luego, en Abrir.

  6. Modifica o agrega cláusulas para crear una consulta que muestre solo los datos a los que deseas que los usuarios de la vista autorizada tengan acceso.

    • 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, agrega un asterisco después del prefijo. Por ejemplo, para incluir todas las columnas que comienzan con “data”, ingresa 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 el uso del compilador de consultas, consulta Cómo compilar consultas en la consola.
  7. Haz clic en Ejecutar.

  8. Después de verificar que el panel de resultados muestre los datos que se deben incluir en la vista autorizada, haz clic en Guardar como vista.

  9. En el cuadro de diálogo, ingresa el ID de la vista autorizada que modificaste.

    El diálogo muestra un mensaje que te advierte que estás reemplazando la vista autorizada existente.

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

  11. Opcional: Para guardar la vista autorizada y, luego, configurar el acceso a ella, haz clic en Guardar y otorgar acceso. Para obtener más información sobre el control de acceso, consulta Control de acceso de Bigtable con IAM.

    1. Agrega al menos una principal y selecciona el rol al que se debe asignar esa principal o grupo de principales.
    2. Opcional: Para otorgar acceso a roles adicionales, haz clic en Agregar otro rol y, luego, ingresa la 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 en gcloud bigtable authorized-views update.

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

Reemplaza lo siguiente:

  • AUTHORIZED_VIEW_ID: El identificador permanente de la vista autorizada
  • INSTANCE_ID: el identificador permanente de la instancia.
  • TABLE_ID: El identificador permanente de la tabla de origen
  • DEFINITION_FILE_PATH: Es la ruta de acceso a una representación válida en formato JSON 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, gcloud CLI abre un editor y te solicita valores.

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

Java

Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas 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());
}

Habilita o inhabilita la protección contra la eliminación

Para habilitar la protección contra la eliminación para una vista autorizada, agrega --deletion-protection al comando de actualización.

Para inhabilitar la protección contra la eliminación, agrega no-deletion-protection al comando de actualización.

Cómo borrar una vista autorizada

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

Si borras una vista autorizada, no podrás recuperarla. Sin embargo, si borras una tabla y, luego, la restableces, se restablecen todas las vistas autorizadas de la tabla junto con ella. Luego, debes volver a configurar IAM para las vistas autorizadas y las tablas. Para obtener más información, consulta Cómo deshacer la eliminación de una tabla.

Console

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

    Abrir la lista de instancias

  2. Haz clic en la instancia que contiene la vista autorizada.

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

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

  5. Junto a la vista autorizada que deseas borrar, haz clic en el menú de acciones more_vert y, luego, en Borrar.

gcloud

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

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

Reemplaza lo siguiente:

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

Opcional: Para evitar que la CLI de gcloud muestre un mensaje de confirmación que te solicite confirmar o cancelar la eliminación, agrega la marca --nointeractive al comando.

Java

Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas 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());
}

Obtén una lista de vistas autorizadas para una tabla

Console

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

    Abrir la lista de instancias

  2. Haz clic en la instancia que contiene la vista autorizada.

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

  4. En el explorador, expande 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 en gcloud bigtable authorized-views list.

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

Reemplaza lo siguiente:

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

Java

Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas 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());
}

Consulta detalles sobre una vista autorizada

Console

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

    Abrir la lista de instancias

  2. Haz clic en la instancia que contiene la vista autorizada.

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

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

  5. Junto a la vista autorizada que deseas ver, haz clic en el menú de acciones more_vert y, luego, en Abrir.

gcloud

Para obtener detalles 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 en gcloud bigtable authorized-views describe.

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

Reemplaza lo siguiente:

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

Java

Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas 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());
}

Otorga acceso a una vista autorizada

Para obtener más información sobre el control de acceso, consulta Control de acceso de Bigtable con IAM.

Console

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

    Abrir la lista de instancias

  2. Haz clic en la instancia que contiene la vista autorizada.

  3. En el panel de navegación, haz 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, luego, en Otorgar acceso.

  6. Agrega al menos una principal y selecciona el rol al que se debe asignar esa principal o grupo de principales.

  7. Opcional: Para otorgar acceso a roles adicionales, haz clic en Agregar otro rol y, luego, ingresa el principal y el rol de cada rol adicional.

  8. Haz clic en Guardar.

gcloud

Para otorgar 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 en 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

Reemplaza lo siguiente:

  • AUTH_VIEW_ID: El ID de la vista autorizada
  • TABLE_ID: Es el ID de la tabla de la que es la vista autorizada.
  • INSTANCE_ID: La instancia que contiene la tabla
  • PRINCIPAL: Es el principal (usuario) al que deseas otorgar acceso, como user:222larabrown@gmail.com.
  • ROLE: Es el rol que otorgas, como roles/bigtable.viewer.

¿Qué sigue?