Mengelola secret dalam konfigurasi OpenTelemetry Collector Buatan Google

Mengonfigurasi beberapa komponen, seperti penerima atau eksportir, mungkin mengharuskan Anda memberikan rahasia, seperti sandi. Anda dapat menyertakan secret ini sebagai teks biasa dalam file konfigurasi Pengumpul. Namun, secret ini disertakan dalam log sistem yang ditulis oleh Pengumpul dan dikirim ke Cloud Logging, sehingga mengekspos secret di luar node atau virtual machine (VM) tempat Pengumpul berjalan.

Mulai dari versi Pengumpul yang dibuat Google 0.126.0, Anda dapat menggunakan penyedia OpenTelemetry yang terintegrasi dengan Secret Manager untuk menghilangkan secret teks biasa dalam file konfigurasi Anda.

Penyedia adalah komponen konfigurasi OpenTelemetry, yang serupa dengan komponen penerima dan pemroses. Setiap penyedia memiliki jenis, dan setiap jenis penyedia memetakan ID tertentu dalam konfigurasi ke suatu nilai.

Penyedia googlesecretmanager memetakan ID Secret Manager ke secret, seperti sandi, token, dan kunci API, yang telah Anda simpan di Secret Manager. Menggunakan penyedia googlesecretmanager memberikan manfaat berikut:

  • Keamanan yang ditingkatkan: File konfigurasi Anda tidak berisi informasi sensitif seperti sandi. Secret sebenarnya disimpan di Secret Manager, layanan yang dirancang khusus untuk menyimpan, mengakses, dan mengelola data sensitif secara aman.
  • Mengurangi risiko eksposur: Secret Manager mengambil secret selama inisialisasi Pengumpul OpenTelemetry Buatan Google, yang mencegah secret teks biasa direkam secara tidak sengaja dalam log.

Sebelum memulai

Untuk menggunakan penyedia googlesecretmanager, Anda harus mengaktifkan Secret Manager API dan mengizinkan akses ke API, seperti yang dijelaskan dalam langkah-langkah berikut:

  1. After installing the Google Cloud CLI, initialize it by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  2. Tetapkan project default untuk Google Cloud CLI:

    gcloud config set project PROJECT_ID
    

    Sebelum menjalankan perintah sebelumnya, ganti variabel PROJECT_ID dengan ID project Google Cloud Anda.

  3. Enable the Secret Manager API:

    gcloud services enable secretmanager.googleapis.com
  4. Perbarui cakupan akses OAuth untuk instance Anda agar menyertakan cakupan yang diperlukan untuk Secret Manager, https://www.googleapis.com/auth/cloud-platform:
    gcloud compute instances set-service-account "INSTANCE_ID" \
      --service-account "SERVICE_ACCT_EMAIL" \
      --scopes "https://www.googleapis.com/auth/cloud-platform"
    

    Sebelum menjalankan perintah sebelumnya, ganti variabel berikut:

    • INSTANCE_ID: ID VM Anda.
    • SERVICE_ACCT_EMAIL: alamat akun layanan yang terkait dengan VM.

    Untuk mengetahui informasi selengkapnya, lihat Mengakses Secret Manager API.

  5. Beri pengguna yang mengelola konfigurasi OpenTelemetry Collector Buatan Google izin yang diperlukan untuk membuat dan mengelola rahasia. Peran Identity and Access Management roles/secretManager.secretAdmin mencakup izin yang diperlukan:
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:USER_EMAIL" \
      --role=roles/secretManager.secretAdmin
    

    Sebelum menjalankan perintah sebelumnya, ganti variabel berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • USER_EMAIL: alamat pengguna yang diberi peran.
  6. Beri akun layanan yang terkait dengan VM izin yang diperlukan untuk mengakses secret. Peran Identity and Access Management roles/secretManager.secretAccessor mencakup izin yang diperlukan:
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCT_EMAIL" \
      --role=roles/secretManager.secretAccessor
    

    Sebelum menjalankan perintah sebelumnya, ganti variabel berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • SERVICE_ACCT_EMAIL: alamat akun layanan yang terkait dengan VM.
  7. Mengganti secret teks biasa dengan secret terkelola

    Untuk menghilangkan penggunaan secret teks biasa dalam file konfigurasi dengan menggunakan Secret Manager dan penyedia googlesecretmanager, lakukan langkah berikut:

    1. Buat secret di Secret Manager untuk setiap secret teks biasa dalam file konfigurasi Anda.
    2. Ganti setiap secret teks biasa dalam file konfigurasi Anda dengan referensi ke secret yang sesuai di Secret Manager.

    Misalnya, jika Anda menggunakan eksportir http, file konfigurasi Anda dapat menyertakan entri seperti berikut:

    exporters:
      logging:
        loglevel: debug
      http:
        endpoint: "https://example.com/api/metrics"
        headers:
          X-API-Key: plaintext-secret
    

    Dalam contoh ini, Anda ingin menempatkan string plaintext-secret ke Secret Manager, lalu mengganti secret teks biasa dengan referensi ke secret terkelola.

    Membuat secret Secret Manager untuk secret teks biasa

    Untuk membuat secret Secret Manager yang berisi secret teks biasa plaintext-secret, jalankan perintah berikut:
    echo -n "plaintext-secret" | gcloud secrets create SECRET_NAME \
        --replication-policy="automatic" \
        --data-file=-
    

    Sebelum menjalankan perintah sebelumnya, ganti variabel berikut:

    • plaintext-secret: Ganti dengan secret teks biasa Anda.
    • SECRET_NAME: Ganti dengan nama yang bermakna untuk secret Anda.

    Nama resource yang sepenuhnya memenuhi syarat untuk secret baru Anda memiliki format berikut, dengan VERSION 1:

    projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION

    Untuk mengetahui informasi selengkapnya tentang cara menyimpan, membuat versi, dan mengakses secret di Secret Manager, lihat Membuat secret.

    Mengganti secret teks biasa

    Untuk memperbarui file konfigurasi, ganti setiap secret teks biasa dengan referensi ke penyedia googlesecretmanager dan nama resource secret terkelola, seperti yang ditunjukkan dalam contoh berikut:

    exporters:
      logging:
        loglevel: debug
      http:
        endpoint: "https://example.com/api/metrics"
        headers:
          X-API-Key: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}
    

    Pelajari lebih lanjut

    Untuk mengetahui informasi selengkapnya tentang penggunaan penyedia googlesecretmanager, buka repositori opentelemetry-collector-contrib.