Menggunakan penyedia kredensial Secret Manager

Secret Manager dapat melindungi data sensitif Anda, seperti kunci API, sandi, dan sertifikat. Anda dapat menggunakannya untuk mengelola, mengakses, dan mengaudit secret di seluruh Google Cloud.

Anda dapat mengonfigurasi cluster atau tugas Managed Service untuk Apache Spark agar menggunakan secret Secret Manager menggunakan penyedia kredensial Secret Manager.

Ketersediaan

Fitur ini tersedia untuk digunakan dengan cluster Managed Service untuk Apache Spark yang dibuat dengan versi image 2.0.97+, 2.1.41+, 2.2.6+, atau versi image Managed Service untuk Apache Spark utama yang lebih baru .

Terminologi

Tabel berikut menjelaskan istilah yang digunakan dalam dokumen ini.

Istilah Deskripsi
Secret Secret Secret Manager adalah objek project global yang berisi kumpulan metadata dan versi secret. Anda dapat menyimpan, mengelola, dan mengakses secret sebagai blob biner atau string teks.
Credential Di Hadoop dan aplikasi lain yang dihosting Managed Service untuk Apache Spark, kredensial terdiri dari nama kredensial (ID) dan nilai kredensial (sandi). ID dan nilai kredensial dipetakan ke Secret Manager ID secret dan nilai secret (versi secret).

Penggunaan

Anda dapat mengonfigurasi Hadoop dan komponen OSS lainnya untuk bekerja dengan Secret Manager dengan menetapkan properti berikut saat Anda membuat cluster Managed Service untuk Apache Spark atau mengirimkan tugas.

  • Provider path : 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 di jalur penyedia menunjukkan jenis penyedia kredensial. Skema Hadoop mencakup jceks://, user://,localjceks://. Gunakan skema gsm:// untuk menelusuri kredensial di Secret Manager.
  • Substitute dot operator : Layanan Secret Manager tidak mengizinkan titik (.) dalam nama secret. Namun, beberapa komponen software open source (OSS) menggunakan titik dalam kunci kredensialnya. Untuk memperbaiki batasan ini, aktifkan properti ini untuk mengganti titik (.) dengan tanda hubung (-) dalam nama kredensial. Hal ini memastikan bahwa kredensial OSS dengan titik dalam namanya dapat disimpan dan diambil dengan benar dari Secret Manager.

    Misalnya, Jika kunci kredensial OSS adalah a.b.c, Anda harus mengubahnya menjadi a-b-c saat menyimpannya di Secret Manager.

    --properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
    

    Ini adalah properti opsional. Secara default, nilainya adalah false. Untuk kunci kredensial yang tidak memiliki operator titik (.) dalam nama kredensialnya, properti ini dapat diabaikan dengan aman.

  • Secret version : Secret di Secret Manager dapat memiliki beberapa versi (nilai). Gunakan properti ini untuk mengakses versi secret tertentu untuk akses stabil di lingkungan produksi.

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

    Ini adalah properti opsional. Secara default, Secret Manager mengakses versi LATEST, yang di-resolve ke nilai secret terbaru saat runtime. Jika kasus penggunaan Anda adalah selalu mengakses versi LATEST secret, properti ini dapat diabaikan dengan aman.

Membuat cluster Managed Service untuk Apache Spark dengan penyedia kredensial Secret Manager

  1. Jalankan perintah berikut secara lokal atau di Cloud Shell untuk membuat cluster Managed Service untuk Apache Spark dengan properti yang diperlukan.
    gcloud dataproc clusters create CLUSTER_NAME \
        --region=REGION \
        --properties="hadoop:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \
        ...other flags as needed...
    

Catatan:

Mengirimkan Managed Service untuk Apache Spark dengan penyedia kredensial Secret Manager

  1. Jalankan perintah berikut secara lokal atau di Cloud Shell untuk mengirimkan tugas Managed Service untuk Apache Spark dengan properti yang diperlukan.

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

Catatan:

Menggunakan Secret Manager dengan Hive Metastore

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

Contoh berikut menunjukkan cara menggunakan Secret Manager dalam berbagai skenario Hive Metastore.

Membuat cluster dengan metastore lokal

  1. Jalankan perintah berikut secara lokal atau di Cloud Shell untuk membuat cluster Managed Service untuk Apache Spark.
    gcloud dataproc clusters create CLUSTER_NAME \
        --region=REGION \
        ...other flags as needed... \
    

Catatan:

  1. Buat secret menggunakan Secret Manager atau perintah hadoop credential.

    • Alternatif 1: Gunakan Secret Manager untuk membuat secret.

      • Nama secret: /projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
      • Nilai secret: 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(.) apa pun dalam sandi dengan tanda hubung(-).
  2. Pastikan secret ada.

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

  3. Gunakan editor teks untuk menghapus properti javax.jdo.option.ConnectionPassword dari file hive-site.xml, lalu tambahkan properti hadoop.security.credential.provider.path &hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator ke file.

    Contoh properti:

    hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
    hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
    

  4. Mulai ulang Hive Metastore.

    sudo systemctl restart hive-metastore
    

Membuat cluster dengan Hive Metastore eksternal

  1. Jalankan perintah berikut secara lokal atau di Cloud Shell untuk membuat cluster Managed Service untuk Apache Spark dengan properti cluster berikut. Gunakan cluster ini sebagai metastore Hive eksternal untuk tugas Hive yang berjalan dari cluster Managed Service untuk Apache Spark lainnya untuk beban kerja Spark Hive.

    gcloud dataproc clusters create METASTORE_CLUSTER_NAME \
        --region=REGION \
        --properties=core:fs.defaultFS=gs://METASTORE_CLUSTER_PROXY_BUCKET,dataproc:dataproc.components.deactivate="hdfs hive-server2 hive-metastore" \
        ...other flags as needed...
    
  2. Buat secret menggunakan Secret Manager atau perintah hadoop credential.

    • Alternatif 1: Gunakan Secret Manager untuk membuat secret.
      • Nama secret: /projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
      • Nilai secret: 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. Pastikan secret ada.

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

Membuat cluster untuk menjalankan tugas Hive yang terhubung ke metastore eksternal

  1. Jalankan perintah berikut secara lokal atau di Cloud Shell untuk membuat cluster Managed Service untuk Apache Spark dengan properti cluster berikut. Gunakan cluster ini untuk menjalankan tugas Hive yang terhubung ke metastore eksternal di cluster Managed Service untuk Apache Spark lainnya.
    gcloud dataproc clusters create CLUSTER_NAME \
        --region=REGION \
        --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" \
        ...other flags as needed...
    

Perintah kredensial Hadoop

Anda dapat menggunakan SSH untuk terhubung ke node master Managed Service untuk Apache Spark guna menggunakan perintah hadoop credential untuk membuat, mencantumkan, dan mengelola secret.

hadoop credential perintah menggunakan format berikut: hadoop credential SUBCOMMAND OPTIONS. Dalam contoh berikut, flag -provider ditambahkan untuk menentukan jenis dan lokasi penyedia (penyimpanan penyedia). Skema gsm:// menentukan Secret Manager.

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

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

  • Mencantumkan secret yang disimpan dalam project.

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

  • Memeriksa apakah secret ada dalam project dengan nilai yang ditentukan.

    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 project.

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

Lihat Panduan Perintah Hadoop untuk mengetahui informasi selengkapnya.

Langkah berikutnya