Melakukan de-identifikasi data BigQuery pada waktu kueri


Tutorial ini menunjukkan cara melakukan de-identifikasi data saat membuat kueri tabel dari BigQuery menggunakan fungsi jarak jauh dan Perlindungan Data Sensitif. Pendekatan ini berguna untuk membersihkan hasil kueri real-time guna meminimalkan akses ke data yang tidak diperlukan untuk analisis.

Tutorial ini menunjukkan enkripsi dan dekripsi data dalam pengiriman. Untuk mengetahui informasi cara menggunakan Perlindungan Data Sensitif guna mengenkripsi data dalam penyimpanan, lihat De-identifikasi data sensitif di penyimpanan.

Tutorial ini ditujukan untuk audiens yang tanggung jawabnya mencakup keamanan data, pemrosesan data, atau analisis data. Panduan ini mengasumsikan bahwa Anda telah terbiasa dengan pemrosesan data dan privasi data, tanpa perlu menjadi ahli. Panduan ini juga mengasumsikan bahwa Anda dapat menjalankan skrip Cloud Shell dan SQL dasar.

Tutorial ini menggunakan fungsi berbasis SQL, BigQuery, fungsi jarak jauh, Cloud Run, dan Perlindungan Data Sensitif.

Teknik de-identifikasi, seperti enkripsi, meng-obfuscate ID sensitif mentah di data Anda. Teknik ini memungkinkan Anda mempertahankan utilitas data untuk bergabung atau menganalisis, sekaligus mengurangi risiko penanganan data.

Perusahaan mungkin memiliki kebijakan atau persyaratan peraturan untuk hanya menyimpan data yang dide-identifikasi di cloud data warehouse (CDW) mereka. Selain itu, mereka mungkin perlu mengidentifikasi ulang data yang dide-identifikasi secara efisien untuk pembuatan laporan.

Untuk meminimalkan risiko penanganan data sensitif dalam jumlah besar, Anda dapat menggunakan pipeline transformasi data otomatis untuk membuat set data yang telah dide-identifikasi. Anda dapat menggunakan tutorial ini untuk mengganti pipeline tersebut dengan kueri SQL hanya untuk identifikasi ulang atau de-identifikasi dan identifikasi ulang. Tutorial ini membantu Anda melakukan de-identifikasi dan mengidentifikasi ulang menggunakan layanan pusat yang dihosting di Cloud Run. Anda dapat menggunakan layanan pusat ini di seluruh organisasi tanpa perlu menyiapkan atau memelihara cluster Dataflow.

Perlindungan Data Sensitif dapat mengklasifikasikan set data dengan memeriksa informasi sensitif pada data. Perlindungan Data Sensitif memiliki lebih dari 150 pengklasifikasi bawaan, yang disebut infoTypes. Penggunaan Cloud Data Loss Prevention API guna melakukan de-identifikasi data memerlukan pipeline data dan aplikasi. Tutorial ini bertujuan untuk membantu analis data, engineer, atau ilmuwan Anda mencapai hasil yang sama melalui fungsi SQL.

Di akhir tutorial ini, Anda akan dapat menulis kueri yang mirip dengan berikut ini; data sensitif akan dide-identifikasi dan diidentifikasi ulang dalam hasil kueri.

SELECT
    pii_column,
    fns.dlp_freetext_encrypt(pii_column) AS dlp_encrypted,
    fns.dlp_freetext_decrypt(fns.dlp_freetext_encrypt(pii_column)) AS dlp_decrypted
FROM
    UNNEST(
    [
        'My name is John Doe. My email is john.doe@example.com']) AS pii_column

Outputnya mirip dengan hal berikut ini:

Baris pii_column dlp_encrypted dlp_decrypted
1 My name is John Doe. My email is john.doe@example.com My name is John Doe. My email is BQ_TRF_EMAIL(40):AQy6lGvwKR+AiiRqJpEr+nBzZUzOcjXkXamUugU= My name is John Doe. My email is john.doe@example.com

Arsitektur

Diagram berikut menunjukkan cara tutorial ini menggunakan BigQuery sebagai data warehouse, Perlindungan Data Sensitif untuk melakukan de-identifikasi dan mengidentifikasi ulang data, serta Cloud Run untuk menghosting fungsi jarak jauh.

Diagram arsitektur tingkat tinggi dari tutorial ini

Tujuan

  • Deploy layanan Cloud Run yang menyediakan fungsi de-identifikasi dari Perlindungan Data Sensitif.
  • Membuat fungsi jarak jauh BigQuery yang menggunakan template de-identifikasi Perlindungan Data Sensitif.
  • Verifikasi enkripsi data di BigQuery dengan menggunakan kueri SQL.

Biaya

In this document, you use the following billable components of Google Cloud:

To generate a cost estimate based on your projected usage, use the pricing calculator. New Google Cloud users might be eligible for a free trial.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Menginstal Google Cloud CLI.
  3. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  4. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. Aktifkan API Artifact Registry, BigQuery, BigQuery Connection API, Cloud Build, Cloud Data Loss Prevention API, Cloud Key Management Service, Cloud Run, Container Registry, Identity and Access Management, Resource Manager, Secret Manager, dan Penggunaan Layanan:

    gcloud services enable artifactregistry.googleapis.com bigquery.googleapis.com bigqueryconnection.googleapis.com cloudbuild.googleapis.com cloudkms.googleapis.com cloudresourcemanager.googleapis.com containerregistry.googleapis.com dlp.googleapis.com iam.googleapis.com run.googleapis.com secretmanager.googleapis.com serviceusage.googleapis.com
  7. Menginstal Google Cloud CLI.
  8. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  9. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  10. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  11. Aktifkan API Artifact Registry, BigQuery, BigQuery Connection API, Cloud Build, Cloud Data Loss Prevention API, Cloud Key Management Service, Cloud Run, Container Registry, Identity and Access Management, Resource Manager, Secret Manager, dan Penggunaan Layanan:

    gcloud services enable artifactregistry.googleapis.com bigquery.googleapis.com bigqueryconnection.googleapis.com cloudbuild.googleapis.com cloudkms.googleapis.com cloudresourcemanager.googleapis.com containerregistry.googleapis.com dlp.googleapis.com iam.googleapis.com run.googleapis.com secretmanager.googleapis.com serviceusage.googleapis.com

Menyiapkan lingkungan

  1. Pada Cloud Shell, clone repositori sumber:

    git clone https://github.com/GoogleCloudPlatform/bigquery-dlp-remote-function.git
    
  2. Buka direktori untuk tutorial ini:

    cd bigquery-dlp-remote-function/
    

Men-deploy resource menggunakan skrip

Jika Anda ingin menggunakan skrip deployment tanpa membuat penyesuaian, ikuti langkah-langkah berikut. Jika Anda ingin menyesuaikan deployment, lewati bagian ini dan lihat Men-deploy solusi kustom secara manual.

  1. Tetapkan nilai untuk kolom PROJECT_ID dan REGION:

    # Project ID of the Google Cloud project
    PROJECT_ID="PROJECT_ID"
    
    # Google Cloud region to use for deployment of resources
    # Refer to https://cloud.google.com/about/locations
    REGION="REGION"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project untuk tutorial ini.
    • REGION: region tempat Anda ingin menyimpan dan memproses data, misalnya us-west1. Sediakan region, bukan zona.
  2. Opsional: Jika Anda memiliki template pemeriksaan yang ingin digunakan, tetapkan kolom DLP_INSPECT_TEMPLATE ke nama resource lengkap dari template pemeriksaan tersebut. Template inspeksi harus berada di region yang sama dengan yang Anda tetapkan di kolom REGION.

    Pastikan template pemeriksaan menyertakan semua infoTypes yang digunakan di template de-identifikasi.

    Jika Anda melewati langkah ini, Perlindungan Data Sensitif akan memeriksa data dengan kumpulan detektor infoType default sistem.

    DLP_INSPECT_TEMPLATE="DLP_INSPECT_TEMPLATE"
    

    Ganti DLP_INSPECT_TEMPLATE dengan nama resource lengkap template pemeriksaan Anda—misalnya, projects/PROJECT_ID/locations/REGION/inspectTemplates/TEMPLATE_ID.

  3. Lakukan autentikasi menggunakan Kredensial Default Aplikasi:

    gcloud auth application-default login && \
    gcloud auth application-default set-quota-project "${PROJECT_ID}"
    
  4. Lakukan inisialisasi dan jalankan skrip Terraform untuk membuat semua resource:

    terraform init && \
    terraform apply \
    -var "project_id=${PROJECT_ID}" \
    -var "region=${REGION}" \
    -var "dlp_inspect_template_full_path=${DLP_INSPECT_TEMPLATE}"
    

    Sistem menampilkan semua tindakan yang akan dilakukan Terraform. Tinjau tindakan. Untuk melanjutkan, masukkan yes.

  5. Memverifikasi bahwa data dapat dienkripsi dan didekripsi.

Men-deploy solusi kustom secara manual

Jika Anda ingin menyesuaikan deployment, ikuti langkah-langkah berikut. Jika Anda ingin menggunakan skrip deployment yang disediakan tanpa penyesuaian atau langkah-langkah manual, lihat Men-deploy resource dengan menggunakan skrip.

Menetapkan variabel lingkungan

Di Cloud Shell, tetapkan variabel lingkungan berikut:

PROJECT_ID="PROJECT_ID"
REGION="REGION"
CLOUD_RUN_SERVICE_NAME="CLOUD_RUN_SERVICE_NAME"
ARTIFACT_REGISTRY_NAME="ARTIFACT_DOCKER_REGISTRY_NAME"

Ganti kode berikut:

  • PROJECT_ID: ID project untuk tutorial ini.
  • REGION: region tempat Anda ingin menyimpan dan memproses data, misalnya us-west1. Sediakan region, bukan zona.
  • CLOUD_RUN_SERVICE_NAME: nama untuk layanan Cloud Run baru. Masukkan maksimum 15 karakter.
  • ARTIFACT_REGISTRY_NAME: nama bagi Artifact Registry baru untuk menyimpan image container.

Membuat akun layanan untuk layanan Cloud Run

  1. Buat akun layanan:

    RUNNER_SA_NAME="${CLOUD_RUN_SERVICE_NAME}-runner"
    RUNNER_SA_EMAIL="${RUNNER_SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
    gcloud iam service-accounts create "${RUNNER_SA_NAME}" \
        --project="${PROJECT_ID}" \
        --description "Runner for BigQuery remote function execution" \
        --display-name "${RUNNER_SA_NAME}"
    
  2. Berikan peran yang diperlukan untuk Perlindungan Data Sensitif.

    Berikan peran DLP Reader:

    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
        --member="serviceAccount:${RUNNER_SA_EMAIL}" \
        --role='roles/dlp.reader'
    

    Berikan peran DLP User:

    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
        --member="serviceAccount:${RUNNER_SA_EMAIL}" \
        --role='roles/dlp.user'
    

Men-deploy layanan Cloud Run

Untuk men-deploy aplikasi, ikuti langkah-langkah berikut:

  1. Opsional: Anda dapat mengubah nilai default dengan mengubah variabel lingkungan atau memperbarui file src/main/resources/aes.properties.

  2. Buat repositori Artifact Registry untuk menyimpan image container fungsi:

    gcloud artifacts repositories create "${ARTIFACT_REGISTRY_NAME}" \
    --repository-format=docker \
    --location="${REGION}" \
    --description="Container images repository for BigQuery Functions" \
    --project="${PROJECT_ID}"
    
  3. Kompilasi aplikasi dan deploy di Cloud Run menggunakan Cloud Build:

    gcloud builds submit \
    --project ${PROJECT_ID} \
    --substitutions=_CONTAINER_IMAGE_NAME="${REGION}-docker.pkg.dev/${PROJECT_ID}/${ARTIFACT_REGISTRY_NAME}/${CLOUD_RUN_SERVICE_NAME}:latest" \
    --machine-type=e2-highcpu-8 && \
    gcloud beta run deploy ${CLOUD_RUN_SERVICE_NAME} \
    --image="${REGION}-docker.pkg.dev/${PROJECT_ID}/${ARTIFACT_REGISTRY_NAME}/${CLOUD_RUN_SERVICE_NAME}:latest" \
    --execution-environment=gen2 \
    --platform=managed \
    --region="${REGION}" \
    --service-account="${RUNNER_SA_EMAIL}" \
    --cpu=4 \
    --memory=8Gi \
    --no-allow-unauthenticated \
    --project ${PROJECT_ID} \
    --update-env-vars=PROJECT_ID=${PROJECT_ID}
    

    Akhir output mirip dengan berikut ini:

    ID: 403a276e-b0c6-41f3-aaed-f0ec9f9cedba
    CREATE_TIME: 2023-02-04T01:52:15+00:00
    DURATION: 1M59S
    SOURCE: gs://PROJECT_ID_cloudbuild/source/1675475534.124241-9c43787f64e04cfd9e4a1979d3324fe0.tgz
    IMAGES: gcr.io/PROJECT_ID/CLOUD_RUN_SERVICE_NAME (+1 more)
    STATUS: SUCCESS
    Deploying container to Cloud Run service [CLOUD_RUN_SERVICE_NAME] in project [PROJECT_ID] region [REGION]
    OK Deploying new service... Done.
     OK Creating Revision... Revision deployment finished. Checking container heal
     th.
     OK Routing traffic...
    Done.
    Service [CLOUD_RUN_SERVICE_NAME] revision [CLOUD_RUN_SERVICE_NAME-00001-tat] has been deployed and is serving 100 percent of traffic.
    Service URL: https://CLOUD_RUN_SERVICE_NAME-j2bpjx2xoq-uw.a.run.app
    
  4. Ambil URL Cloud Run dan simpan ke variabel lingkungan Anda:

    RUN_URL="$(gcloud run services describe ${CLOUD_RUN_SERVICE_NAME} --region \
        ${REGION} --project ${PROJECT_ID} --format="get(status.address.url)")"
    

Membuat template de-identifikasi Perlindungan Data Sensitif

Template de-identifikasi Perlindungan Data Sensitif membantu Anda menyimpan setelan de-identifikasi sehingga Anda dapat menggunakannya kembali di beberapa operasi dan sumber data.

Langkah ini menggunakan file sample_dlp_deid_config.json, yang berisi contoh template de-identifikasi.

Di Cloud Shell, buat template:

DEID_TEMPLATE=$(curl -X POST \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: ${PROJECT_ID}" \
--data-binary "@sample_dlp_deid_config.json" \
"https://dlp.googleapis.com/v2/projects/${PROJECT_ID}/locations/${REGION}/deidentifyTemplates")

DEID_TEMPLATE_NAME="$(echo ${DEID_TEMPLATE} | jq -r '.name')"

Google merekomendasikan agar Anda menggunakan kunci gabungan saat melakukan enkripsi Perlindungan Data Sensitif pada workload sensitif yang sebenarnya. Untuk tujuan demonstrasi, tutorial ini menggunakan kunci yang tidak digabungkan. Untuk mengetahui informasi selengkapnya tentang cara membuat kunci yang digabungkan dan menggunakannya dalam permintaan de-identifikasi dan identifikasi ulang, lihat Melakukan de-identifikasi dan mengidentifikasi ulang data sensitif.

Membuat koneksi BigQuery ke Cloud Run

  1. Di Cloud Shell, buat koneksi BigQuery untuk mengakses Cloud Run:

    bq mk --connection \
    --display_name='External transform function connection' \
    --connection_type=CLOUD_RESOURCE \
    --project_id="${PROJECT_ID}" \
    --location="${REGION}" \
    ext-${CLOUD_RUN_SERVICE_NAME}
    
  2. Temukan dan tetapkan akun layanan BigQuery yang digunakan untuk koneksi:

    CONNECTION_SA="$(bq --project_id ${PROJECT_ID} --format json show \
        --connection ${PROJECT_ID}.${REGION}.ext-${CLOUD_RUN_SERVICE_NAME} \
        | jq -r '.cloudResource.serviceAccountId')"
    
  3. Berikan peran Cloud Run Invoker untuk akun layanan:

    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
        --member="serviceAccount:${CONNECTION_SA}" \
        --role='roles/run.invoker'
    

Membuat set data BigQuery untuk fungsi jarak jauh

  1. Tentukan set data BigQuery untuk fungsi jarak jauh:

    BQ_FUNCTION_DATASET="fns"
    
  2. Buat set data jika belum ada:

       bq mk --dataset \
           --project_id ${PROJECT_ID} \
           --location ${REGION} \
           ${BQ_FUNCTION_DATASET}
    

Membuat fungsi jarak jauh Perlindungan Data Sensitif

  1. Opsional: Jika Anda memiliki template pemeriksaan yang ingin digunakan, tetapkan variabel DLP_INSPECT_TEMPLATE ke nama resource lengkap dari template pemeriksaan tersebut. Template inspeksi harus berada di region yang sama dengan yang Anda tetapkan di variabel lingkungan REGION.

    Pastikan template pemeriksaan menyertakan semua infoTypes yang digunakan di template de-identifikasi.

    Jika Anda melewati langkah ini, Perlindungan Data Sensitif akan memeriksa data dengan kumpulan detektor infoType default sistem.

    DLP_INSPECT_TEMPLATE="DLP_INSPECT_TEMPLATE"
    

    Ganti DLP_INSPECT_TEMPLATE dengan nama resource lengkap template pemeriksaan Anda—misalnya, projects/PROJECT_ID/locations/REGION/inspectTemplates/TEMPLATE_ID.

  2. Membuat fungsi de-identifikasi Perlindungan Data Sensitif:

    bq query --project_id ${PROJECT_ID} \
    --use_legacy_sql=false \
    "CREATE OR REPLACE FUNCTION ${BQ_FUNCTION_DATASET}.dlp_freetext_encrypt(v STRING)
    RETURNS STRING
    REMOTE WITH CONNECTION \`${PROJECT_ID}.${REGION}.ext-${CLOUD_RUN_SERVICE_NAME}\`
    OPTIONS (endpoint = '${RUN_URL}', user_defined_context = [('mode', 'deidentify'),('algo','dlp'),('dlp-deid-template','${DEID_TEMPLATE_NAME}'),('dlp-inspect-template', '${DLP_INSPECT_TEMPLATE}')]);"
    
  3. Membuat fungsi identifikasi ulang Perlindungan Data Sensitif:

    bq query --project_id ${PROJECT_ID} \
    --use_legacy_sql=false \
    "CREATE OR REPLACE FUNCTION ${BQ_FUNCTION_DATASET}.dlp_freetext_decrypt(v STRING)
    RETURNS STRING
    REMOTE WITH CONNECTION \`${PROJECT_ID}.${REGION}.ext-${CLOUD_RUN_SERVICE_NAME}\`
    OPTIONS (endpoint = '${RUN_URL}', user_defined_context = [('mode', 'reidentify'),('algo','dlp'),('dlp-deid-template','${DEID_TEMPLATE_NAME}'),('dlp-inspect-template', '${DLP_INSPECT_TEMPLATE}')]);"
    

Memverifikasi de-identifikasi dan identifikasi ulang

Untuk memverifikasi apakah solusi ini melakukan de-identifikasi dan mengidentifikasi ulang data, lakukan hal berikut:

Konsol

  1. Di konsol Google Cloud, buka BigQuery.

    Buka BigQuery

    BigQuery akan terbuka di project yang terakhir Anda akses.

  2. Untuk membuka editor kueri, klik Compose a new query.

  3. Masukkan kueri berikut:

    SELECT
        pii_column,
        fns.dlp_freetext_encrypt(pii_column) AS dlp_encrypted,
        fns.dlp_freetext_decrypt(fns.dlp_freetext_encrypt(pii_column)) AS dlp_decrypted
    FROM
        UNNEST(
        [
            'My name is John Doe. My email is john.doe@example.com',
            'Some non PII data',
            '650-253-0000',
            'some script with simple number 1234']) AS pii_column
    
  4. Klik Run.

bq

  1. Tetapkan variabel lingkungan untuk set data:

    BQ_FUNCTION_DATASET="fns"
    
  2. Jalankan kueri:

    bq query --project_id ${PROJECT_ID} \
    --use_legacy_sql=false \
    "
    SELECT
      pii_column,
      ${BQ_FUNCTION_DATASET}.dlp_freetext_encrypt(pii_column) AS dlp_encrypted,
    ${BQ_FUNCTION_DATASET}.dlp_freetext_decrypt(${BQ_FUNCTION_DATASET}.dlp_freetext_encrypt(pii_column)) AS dlp_decrypted
    FROM
      UNNEST(
        [
          'My name is John Doe. My email is john.doe@example.com',
          'Some non PII data',
          '650-253-0000',
          'some script with simple number 1234']) AS pii_column"
    

Outputnya mirip dengan hal berikut ini:

Baris pii_column dlp_encrypted dlp_decrypted
1 My name is John Doe. My email is john.doe@example.com My name is John Doe. My email is BQ_TRF_EMAIL(40):AQy6lGvwKR+AiiRqJpEr+nBzZUzOcjXkXamUugU= My name is John Doe. My email is john.doe@example.com
2 Some non PII data Some non PII data Some non PII data
3 650-253-0000 BQ_TRF_PH(40):AeKpGU5KBXaTyecCun7dv1hHht5w5Q2PTpvkRC4= 650-253-0000
4 some script with simple number 1234 some script with simple number 1234 some script with simple number 1234

Pertimbangan

Saat menyesuaikan tutorial ini dengan kebutuhan Anda, pertimbangkan hal-hal berikut:

  • De-identifikasi dan identifikasi ulang diproses melalui layanan Cloud Run. Sediakan CPU dan memori Cloud Run sesuai dengan kebutuhan komputasi Anda. Untuk mengetahui detailnya, lihat batas CPU dan batas memori untuk Cloud Run.
  • Saat menggunakan Perlindungan Data Sensitif, pertimbangkan batas penggunaan dan rekomendasi untuk mengontrol biaya.
  • Untuk membantu mengontrol biaya dan total konsumsi kuota Perlindungan Data Sensitif, batasi item yang Anda teruskan melalui fungsi jarak jauh Perlindungan Data Sensitif hingga 10.000 atau kurang. Solusi ini dapat secara otomatis mengelompokkan permintaan untuk menangani dengan baik batas permintaan Perlindungan Data Sensitif berikut:

    • Jumlah nilai tabel maksimum: 50.000
    • Batas ukuran permintaan default: 0,5 MB

    Hasil akhir dan yang difilter dari kueri harus diteruskan ke fungsi Perlindungan Data Sensitif, bukan ke sumber.

    Untuk solusi ini, setiap nilai di kolom pii_column adalah item—misalnya, My name is John Doe. My email is john.doe@example.com adalah satu item.

  • Pastikan set data BigQuery, layanan Cloud Run, dan template Perlindungan Data Sensitif berada di region cloud yang sama.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

    Menghapus project Google Cloud:

    gcloud projects delete PROJECT_ID

Langkah selanjutnya