Crea y administra vistas autorizadas

En este documento, se describe cómo definir, crear y realizar otras tareas administrativas las operaciones en una vista autorizada con Google Cloud CLI. 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 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, considera las consultas que se ejecutarán que te enfrentas a él. Las solicitudes de lectura, escritura y eliminación que se envían a un vista autorizada debe hacer referencia solo a los datos que se encuentran en el 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 fallan las solicitudes de datos a una vista autorizada porque se agregaron columnas a la tabla que no están en el 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.

gcloud

Ejecuta el comando 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 para la tabla.
  • INSTANCE_ID: el identificador permanente de la instancia que contiene la tabla
  • TABLE_ID: Es el identificador permanente de esa tabla que deseas. crear una vista autorizada de
  • DEFINITION_FILE_PATH: Es la ruta a un formato JSON válido. 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 los 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

gcloud

Modifica una vista autorizada con el comando 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: Es 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 errores archivos de definición con formato, consulte Archivo de definición ejemplos comunes.

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 una confirmación mensaje que muestra la diferencia entre la 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 en una vista autorizada, agrega --deletion-protection al comando update

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

Borra 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 puedes recuperarla. Sin embargo, si borrar una tabla y recuperar la tabla, todas las vistas autorizadas del la tabla se restablecen junto con la tabla. Luego, debes volver a configurar IAM para para las vistas autorizadas y para las tablas. Para obtener más información, consulta Recuperar una tabla.

gcloud

Borra una vista autorizada con el comando bigtable instances tables 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: Es 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

Para aprender a instalar y usar la biblioteca cliente de Bigtable, consulta 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

gcloud

Ejecuta el comando 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

gcloud

Para obtener detalles sobre una vista autorizada, ejecuta el comando bigtable instances tables authorized-views describe:

gcloud bigtable authorized-views describe \
–-instance=INSTANCE_ID \
–-table=TABLE_ID \
–-view=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

Para aprender a instalar y usar la biblioteca cliente de Bigtable, consulta 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());
}

¿Qué sigue?