Penyedia kredensial Secret Manager

Ringkasan

Secret Manager dapat mengamankan data sensitif Anda, seperti kunci API, sandi, dan sertifikat. Gunakan layanan ini untuk mengelola, mengakses, dan mengaudit secret Anda di seluruh Google Cloud.

GoogleHadoopSecretManagerCredentialProvider API, yang terintegrasi dengan Secret Manager, adalah implementasi dari Hadoop CredentialProvider API, sebuah solusi untuk mengamankan kredensial sensitif dari akses publik.

Anda dapat menggunakan API penyedia kredensial Hadoop dengan cara berikut:

Terminologi

Tabel berikut menjelaskan istilah yang digunakan dalam dokumen ini.

Masa Berlaku Deskripsi
Secret Secret adalah objek global project yang berisi kumpulan metadata dan versi secret. Secret Manager memungkinkan Anda menyimpan, mengelola, dan mengakses secret sebagai blob biner atau string teks.
Credential Di Hadoop dan aplikasi yang dihosting Dataproc lainnya, kredensial terdiri dari nama kredensial (ID) dan nilai kredensial (sandi). ID kredensial dan nilai dipetakan ke ID secret dan nilai secret (versi secret) di Secret Manager.

Perintah kredensial Hadoop

Anda dapat menggunakan perintah hadoop credential untuk membuat, mencantumkan, dan mengelola secret. Perintah hadoop credential menggunakan format umum ini: hadoop credential SUBCOMMAND OPTIONS.

Dalam contoh berikut, flag -provider ditambahkan untuk menentukan jenis dan lokasi penyedia (penyimpanan penyedia). Skema gsm:// menetapkan Secret Manager.

  • Membuat secret dengan ID rahasia yang ditentukan. Perintah ini tidak membuat secret jika ID rahasia yang ditentukan ada. Perilaku ini konsisten dengan Hadoop CredentialProvider API.

    hadoop credential create secret-id -provider gsm://projects/PROJECT_ID -v VALUE
    

  • Membuat daftar secret yang disimpan dalam sebuah project.

    hadoop credential list -provider gsm://projects/PROJECT_ID
    

  • Memeriksa apakah secret ada dalam project dengan nilai tertentu.

    hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
    

  • Memeriksa versi secret tertentu dalam file konfigurasi.

    hadoop credential conf CONFIG_FILE check SECRET_ID -provider gsm://projects/project-id -v VALUE
    
  • CONFIG_FILE: File XML yang menetapkan hadoop.security.credstore.google-secret-manager.secret-version.

  • Menghapus semua versi secret dalam sebuah project.

    hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
    

Lihat Panduan Perintah Hadoop untuk mengetahui informasi selengkapnya.

Mengonfigurasi komponen OSS

Anda dapat mengonfigurasi Hadoop dan komponen OSS lainnya yang didukung agar berfungsi dengan Secret Manager dengan menetapkan properti komponen berikut:

  • Jalur penyedia (wajib): Properti jalur penyedia, hadoop.security.credential.provider.path, adalah daftar yang dipisahkan koma dari satu atau beberapa URI penyedia kredensial yang dilalui untuk me-resolve kredensial.

    --properties=hadoop.security.credential.provider.path=gsm://projects/project-id
    
    • scheme digunakan untuk menunjukkan jenis penyedia kredensial. Skema Hadoop mencakup jceks://, user://,localjceks://. Gunakan skema gsm:// seperti yang ditunjukkan pada contoh sebelumnya untuk menelusuri kredensial di Secret Manager.
  • Operator titik pengganti (opsional): Secret Manager tidak mendukung operator dot(.) dalam nama secret, tetapi kunci kredensial komponen OSS dapat berisi operator ini. Jika properti ini disetel ke true. Anda dapat mengganti titik(.) dengan tanda hubung(-) pada nama kredensial. Misalnya, jika properti ini disetel ke true, Anda dapat menentukan nama kredensial a.b.c sebagai a-b-c saat meneruskannya ke Secret Manager. Properti ini hanya diperlukan untuk menentukan kredensial menggunakan perintah kredensial Hadoop atau saat komponen OSS mencoba me-resolve kredensial. Perintah ini tidak berpengaruh pada perintah pembuatan, daftar, atau penghapusan kredensial Hadoop.

    --properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
    
  • Secret version (opsional): Secret di Secret Manager dapat memiliki beberapa versi (nilai). Gunakan properti ini untuk mengakses versi secret. Secara default, Secret Manager mengakses versi LATEST, yang me-resolve ke nilai secret terbaru saat runtime. Praktik terbaiknya adalah menentukan properti ini untuk akses stabil di lingkungan produksi.

    --properties=hadoop.security.credstore.google-secret-manager.secret-version=1
    

Contoh Metastore Hive

Properti Hive Metastore, javax.jdo.option.ConnectionPassword, berisi sandi yang digunakan untuk mengautentikasi akses ke database metastore. Sandi ini disimpan dalam format teks biasa di hive-site.xml, yang mewakili risiko keamanan. Praktik terbaik produksi adalah menyimpan sandi di Secret Manager, lalu memperbarui file konfigurasi hive-site.xml agar layanan Hive Metastore dapat membaca sandi dari Secret Manager.

Bagian berikut memberikan petunjuk cara menggunakan Secret Manager dalam berbagai skenario Hive Metastore.

Cluster sarang dengan metastore lokal

  1. Jalankan perintah berikut secara lokal atau di Cloud Shell untuk membuat cluster Dataproc dengan properti cluster yang diperlukan.

    gcloud dataproc clusters create CLUSTER_NAME \
        --region=REGION \
        ...other flags as needed... \
        --properties="hive:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hive:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true"
    

  2. Buat secret. Anda dapat membuat secret menggunakan Secret Manager atau perintah hadoop credential.

    • Alternatif 1: Gunakan Secret Manager untuk membuat rahasia

      • Nama rahasia: /projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
      • Nilai rahasia: METASTORE_PASSWORD.
    • Alternatif 2: Gunakan perintah hadoop credential untuk membuat secret.

      sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
      

      • METASTORE_PASSWORD: Karena Secret Manager tidak mendukung operator titik(.), ganti setiap titik(.) dalam sandi dengan tanda hubung(-).
  3. Verifikasi bahwa rahasia itu ada.

    sudo hadoop credential list -provider gsm://projects/PROJECT_ID
    

  4. Hapus javax.jdo.option.ConnectionPassword dari file hive-site.xml. Perintah berikut akan membuka file untuk diedit di vim.

    sudo vim /etc/hive/conf/hive-site.xml
    

  5. Mulai ulang Hive Metastore.

    sudo systemctl restart hive-metastore
    

Cluster Hive dengan metastore eksternal

  1. Jalankan perintah berikut secara lokal atau di Cloud Shell untuk membuat cluster Dataproc dengan properti cluster berikut.

    gcloud dataproc clusters create CLUSTER_NAME \
        --region=REGION \
        ...other flags as needed... \
        --properties=core:fs.defaultFS=gs://METASTORE_CLUSTER_PROXY_BUCKET,dataproc:dataproc.components.deactivate="hdfs hive-server2 hive-metastore"
    

  2. Buat secret. Anda dapat membuat secret menggunakan Secret Manager atau perintah hadoop credential.

    • Alternatif 1: Gunakan Secret Manager untuk membuat secret:
      • Nama rahasia: /projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
      • Nilai rahasia: METASTORE_PASSWORD.
    • Alternatif 2: Gunakan perintah hadoop credential untuk membuat secret.
      sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
      
      • METASTORE_PASSWORD: Karena Secret Manager tidak mendukung operator titik(.), ganti titik(.) dalam sandi dengan tanda hubung(-).
  3. Verifikasi bahwa rahasia itu ada.

    sudo hadoop credential list -provider gsm://projects/PROJECT_ID
      

  4. Jalankan perintah berikut secara lokal atau di Cloud Shell untuk membuat cluster Dataproc dengan properti cluster berikut. Gunakan cluster ini untuk menjalankan tugas Hive dan terhubung ke metastore eksternal.

    gcloud dataproc clusters create CLUSTER_NAME \
        --region=REGION \
        ...other flags as needed...
        --properties="hive:javax.jdo.option.ConnectionURL=jdbc:mysql://metastore-cluster-name-m/metastore,hive:hadoop.security.credential.provider.path=gsm://projects/project-id,hive:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true"
    

Untuk informasi selengkapnya