Membuat dan mengelola tabel virtual yang diotorisasi

Dokumen ini menjelaskan cara menentukan, membuat, dan melakukan operasi administratif lainnya pada tampilan yang diberi otorisasi menggunakan Google Cloud CLI atau konsolGoogle Cloud . Sebelum membaca dokumen ini, Anda harus memahami Ringkasan tampilan yang diizinkan.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk melakukan operasi administratif pada tampilan resmi, minta administrator untuk memberi Anda peran IAM Bigtable Admin (roles/bigtable.admin) pada tabel pokok. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk melakukan operasi administratif pada tampilan yang sah . Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk melakukan operasi administratif pada tampilan yang sah :

  • 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

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Untuk mempelajari cara mengelola peran IAM Bigtable di tingkat tampilan yang diizinkan, lihat pengelolaan IAM tingkat tampilan yang diizinkan.

Membuat tampilan yang diotorisasi

Saat membuat tampilan yang diotorisasi, pertimbangkan kueri yang akan dijalankan terhadapnya. Permintaan baca, tulis, dan hapus yang dikirim ke tampilan yang diotorisasi hanya boleh merujuk data yang ada di tampilan yang diotorisasi. Artinya, misalnya, jika Anda mencoba membaca, menulis ke, atau menghapus baris yang memiliki kolom dalam tabel yang tidak ada dalam tampilan yang diizinkan, permintaan akan gagal.

Untuk menghindari situasi saat permintaan data ke tampilan yang diberi otorisasi gagal karena kolom telah ditambahkan ke tabel yang tidak ada di tampilan yang diberi otorisasi, Anda dapat menentukan awalan kualifikasi kolom kosong "" untuk grup kolom.

Anda dapat menentukan hingga 100 parameter definisi per tampilan yang diizinkan.

Konsol

  1. Buka daftar instance Bigtable di konsol Google Cloud .

    Buka daftar instance

  2. Klik instance yang berisi tabel yang ingin Anda lihat dengan hak akses.

  3. Di panel navigasi, klik Bigtable Studio.

  4. Klik Builder untuk membuka pembuat kueri.

  5. Pilih tabel yang ingin Anda lihat dengan tampilan yang diizinkan.

  6. Tambahkan klausa untuk membuat kueri yang hanya menampilkan data yang Anda inginkan agar dapat diakses oleh pengguna tampilan yang diberi otorisasi.

    • Klausa yang dapat diterima untuk tampilan yang diotorisasi adalah awalan kunci baris dan kolom (penentu kolom).
    • Untuk menentukan awalan kualifikasi kolom, tambahkan tanda bintang setelah awalan. Misalnya, untuk menyertakan semua kolom yang dimulai dengan "data", masukkan data* di kolom Kolom setelah nama grup kolom.
    • Klausul Batas diabaikan saat tampilan yang diotorisasi disimpan.
    • Untuk mengetahui informasi selengkapnya tentang penggunaan pembuat kueri, lihat Membangun kueri di konsol.
  7. Klik Run.

  8. Setelah Anda memverifikasi bahwa panel hasil menampilkan data yang harus disertakan dalam tampilan yang diizinkan, klik Simpan sebagai tampilan.

  9. Masukkan ID permanen untuk tampilan resmi yang belum digunakan untuk tabel.

  10. Opsional: Untuk menyimpan tanpa memberikan akses, klik Simpan.

  11. Opsional: Untuk menyimpan tampilan yang diberi otorisasi, lalu mengonfigurasi akses untuknya, klik Simpan & berikan akses. Untuk mengetahui informasi selengkapnya tentang kontrol akses, lihat Kontrol akses Bigtable dengan IAM.

    1. Tambahkan setidaknya satu akun utama dan pilih peran yang harus ditetapkan ke akun utama atau grup akun utama tersebut.
    2. Opsional: Untuk memberikan akses bagi peran tambahan, klik Tambahkan peran lain, lalu masukkan akun utama dan peran untuk setiap peran tambahan.
    3. Klik Simpan.

gcloud

Jalankan perintah bigtable authorized-views create. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi di gcloud bigtable authorized-views create.

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

Ganti kode berikut:

  • AUTHORIZED_VIEW_ID: ID permanen untuk tampilan yang diberi otorisasi yang belum digunakan untuk tabel
  • INSTANCE_ID: ID permanen untuk instance yang berisi tabel
  • TABLE_ID: ID permanen tabel yang Anda buat tampilan resminya
  • DEFINITION_FILE_PATH: jalur ke representasi tampilan resmi yang diformat JSON valid. Untuk contoh file definisi yang diformat dengan benar, lihat Contoh file definisi.

Anda juga dapat menjalankan perintah tanpa memberikan file definisi. Dalam kasus ini, gcloud CLI akan membuka editor dan meminta Anda memasukkan nilai.

Untuk mengonfirmasi bahwa tampilan yang diotorisasi telah dibuat, dapatkan daftar tampilan yang diotorisasi untuk tabel.

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat library klien Bigtable.

Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Mengubah tampilan yang diotorisasi

Konsol

  1. Buka daftar instance Bigtable di konsol Google Cloud .

    Buka daftar instance

  2. Klik instance yang berisi tampilan yang diizinkan.

  3. Di panel navigasi, klik Bigtable Studio.

  4. Di penjelajah, luaskan tabel dan Authorized views.

  5. Di samping tampilan resmi yang ingin Anda ubah, klik menu tindakan more_vert, lalu klik Buka.

  6. Ubah atau tambahkan klausa untuk membuat kueri yang hanya menampilkan data yang Anda inginkan agar dapat diakses oleh pengguna tampilan yang diotorisasi.

    • Klausa yang dapat diterima untuk tampilan yang diotorisasi adalah awalan kunci baris dan kolom (penentu kolom).
    • Untuk menentukan awalan kualifikasi kolom, tambahkan tanda bintang setelah awalan. Misalnya, untuk menyertakan semua kolom yang dimulai dengan "data", masukkan data* di kolom Kolom setelah nama grup kolom.
    • Klausul Batas diabaikan saat tampilan yang diotorisasi disimpan.
    • Untuk mengetahui informasi selengkapnya tentang penggunaan pembuat kueri, lihat Membangun kueri di konsol.
  7. Klik Run.

  8. Setelah Anda memverifikasi bahwa panel hasil menampilkan data yang harus disertakan dalam tampilan yang diizinkan, klik Simpan sebagai tampilan.

  9. Dalam dialog, masukkan ID tampilan yang diizinkan yang Anda ubah.

    Dialog akan menampilkan pesan yang memperingatkan Anda bahwa Anda akan mengganti tampilan resmi yang ada.

  10. Opsional: Untuk menyimpan tanpa memberikan akses, klik Simpan.

  11. Opsional: Untuk menyimpan tampilan yang diberi otorisasi, lalu mengonfigurasi akses untuknya, klik Simpan & berikan akses. Untuk mengetahui informasi selengkapnya tentang kontrol akses, lihat Kontrol akses Bigtable dengan IAM.

    1. Tambahkan setidaknya satu akun utama dan pilih peran yang harus ditetapkan ke akun utama atau grup akun utama tersebut.
    2. Opsional: Untuk memberikan akses bagi peran tambahan, klik Tambahkan peran lain, lalu masukkan akun utama dan peran untuk setiap peran tambahan.
    3. Klik Simpan.

gcloud

Ubah tampilan yang diotorisasi menggunakan perintah bigtable authorized-views update. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi di gcloud bigtable authorized-views update.

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

Ganti kode berikut:

  • AUTHORIZED_VIEW_ID: ID permanen untuk tampilan yang diizinkan
  • INSTANCE_ID: ID permanen untuk instance
  • TABLE_ID: ID permanen tabel sumber
  • DEFINITION_FILE_PATH: jalur ke representasi tampilan resmi yang diformat JSON valid. Untuk contoh file definisi yang diformat dengan benar, lihat Contoh file definisi.

Anda juga dapat menjalankan perintah tanpa memberikan file definisi. Dalam kasus ini, gcloud CLI akan membuka editor dan meminta Anda memasukkan nilai.

Opsional: Untuk mencegah gcloud CLI menampilkan perintah konfirmasi yang menunjukkan perbedaan antara struktur tampilan yang saat ini diberi otorisasi dan setelah pembaruan dilakukan, tambahkan tanda --no-interactive ke perintah.

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat library klien Bigtable.

Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Mengaktifkan atau menonaktifkan perlindungan penghapusan

Untuk mengaktifkan perlindungan penghapusan untuk tampilan yang diizinkan, ubah file JSON yang menentukan tampilan yang diizinkan dengan menyetel tanda deletionProtection ke true.

Untuk menonaktifkan perlindungan penghapusan, ubah file JSON yang menentukan tampilan resmi Anda dengan menyetel flag deletionProtection ke false.

Selesaikan perubahan pada tampilan yang diizinkan dengan menjalankan perintah bigtable authorized-views update dengan nama file JSON yang diperbarui. Untuk informasi selengkapnya, lihat dokumentasi referensi di gcloud bigtable authorized-views update.

Menghapus tampilan yang diotorisasi

Jika Anda menghapus tabel, semua tampilan yang diotorisasi dari tabel tersebut juga akan dihapus.

Jika Anda menghapus tampilan yang diotorisasi, Anda tidak dapat membatalkan penghapusannya. Namun, jika Anda menghapus tabel, lalu mengurungkan penghapusan tabel, semua tampilan tabel yang diotorisasi akan dipulihkan bersama dengan tabel tersebut. Kemudian, Anda harus mengonfigurasi ulang IAM untuk tampilan yang diizinkan serta untuk tabel. Untuk mengetahui detailnya, lihat Membatalkan penghapusan tabel.

Konsol

  1. Buka daftar instance Bigtable di konsol Google Cloud .

    Buka daftar instance

  2. Klik instance yang berisi tampilan yang diizinkan.

  3. Di panel navigasi, klik Bigtable Studio.

  4. Di penjelajah, luaskan tabel dan Authorized views.

  5. Di samping tampilan yang diberi otorisasi yang ingin Anda hapus, klik menu tindakan more_vert, lalu klik Hapus.

gcloud

Hapus tampilan resmi menggunakan perintah bigtable instances tables authorized-views delete. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi di gcloud bigtable authorized-views delete.

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

Ganti kode berikut:

  • AUTHORIZED_VIEW_ID: ID permanen untuk tampilan yang diizinkan
  • INSTANCE_ID: ID permanen untuk instance
  • TABLE_ID: ID permanen tabel sumber

Opsional: Untuk mencegah gcloud CLI menampilkan perintah konfirmasi yang mengharuskan Anda mengonfirmasi atau membatalkan penghapusan, tambahkan flag --nointeractive ke perintah.

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat library klien Bigtable.

Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Mendapatkan daftar tampilan yang diizinkan untuk tabel

Konsol

  1. Buka daftar instance Bigtable di konsol Google Cloud .

    Buka daftar instance

  2. Klik instance yang berisi tampilan yang diizinkan.

  3. Di panel navigasi, klik Bigtable Studio.

  4. Di penjelajah, luaskan tabel dan Authorized views.

gcloud

Jalankan perintah bigtable authorized-views list. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi di gcloud bigtable authorized-views list.

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

Ganti kode berikut:

  • INSTANCE_ID: ID permanen untuk instance
  • TABLE_ID: ID permanen untuk tabel

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat library klien Bigtable.

Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Melihat detail tentang tampilan yang diotorisasi

Konsol

  1. Buka daftar instance Bigtable di konsol Google Cloud .

    Buka daftar instance

  2. Klik instance yang berisi tampilan yang diizinkan.

  3. Di panel navigasi, klik Bigtable Studio.

  4. Di penjelajah, luaskan tabel dan Authorized views.

  5. Di samping tampilan resmi yang ingin Anda lihat, klik menu tindakan more_vert, lalu klik Buka.

gcloud

Untuk mendapatkan detail tentang tampilan yang diotorisasi, jalankan perintah bigtable instances tables authorized-views describe. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi di gcloud bigtable authorized-views describe.

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

Ganti kode berikut:

  • INSTANCE_ID: ID permanen untuk instance
  • TABLE_ID: ID permanen untuk tabel
  • AUTHORIZED_VIEW_ID: ID permanen untuk tampilan yang diizinkan

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat library klien Bigtable.

Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Memberikan akses ke tampilan yang diotorisasi

Untuk mengetahui informasi selengkapnya tentang kontrol akses, lihat Kontrol akses Bigtable dengan IAM.

Konsol

  1. Buka daftar instance Bigtable di konsol Google Cloud .

    Buka daftar instance

  2. Klik instance yang berisi tampilan yang diizinkan.

  3. Di panel navigasi, klik Bigtable Studio.

  4. Di panel penjelajah, luaskan tabel dan Authorized views.

  5. Di samping nama tampilan yang diizinkan, klik menu tindakan more_vert, lalu klik Berikan akses.

  6. Tambahkan setidaknya satu akun utama dan pilih peran yang harus ditetapkan ke akun utama atau grup akun utama tersebut.

  7. Opsional: Untuk memberikan akses untuk peran tambahan, klik Tambahkan peran lain, lalu masukkan akun utama dan peran untuk setiap peran tambahan.

  8. Klik Simpan.

gcloud

Untuk memberikan akses ke tampilan yang diotorisasi, gunakan perintah bigtable authorized-views add-iam-policy-binding. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi di 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

Ganti kode berikut:

  • AUTH_VIEW_ID: ID untuk tampilan yang diizinkan
  • TABLE_ID: ID untuk tabel yang tampilan yang diizinkan adalah tabel tersebut
  • INSTANCE_ID: instance yang berisi tabel
  • PRINCIPAL: akun utama (pengguna) yang ingin Anda beri akses, seperti user:222larabrown@gmail.com
  • ROLE: peran yang Anda berikan, seperti roles/bigtable.reader.

Langkah berikutnya