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 ti lea este documento, debe estar familiarizado con la Descripción general de las vistas autorizadas.

Roles obligatorios

Para obtener los permisos que necesitas realizar operaciones administrativas en una vista autorizada , solicita a tu administrador que te otorgue el Rol de IAM Administrador de Bigtable (roles/bigtable.admin) en la tabla subyacente de Google Cloud. 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 de Google Cloud. 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

Aprende a administrar los roles de IAM de Bigtable en la vista autorizada consulta IAM a nivel de vista autorizado administración de configuraciones.

Crear una vista autorizada

Cuando crees una vista autorizada, considera las consultas que se ejecutarán 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 o borrar una fila que tenga columnas en la tabla que no se encuentren en tu en una vista autorizada, la solicitud falla.

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 del vista autorizada que aún no está en uso 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 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 los valores.

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

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 {
  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());
}

Cómo modificar 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 a un formato JSON válido. 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 los 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

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 {
  // 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 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 borran todas sus vistas autorizadas.

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 gcloud CLI muestre una confirmación mensaje en el que se te solicite confirmar o cancelar la eliminación, adjunta el 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());
}

Obtener una lista de las vistas autorizadas de 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

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.

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 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?