Mengonfigurasi beberapa komponen, seperti penerima atau eksportir, mungkin mengharuskan Anda memberikan secret, seperti sandi. Anda dapat menyertakan secret ini sebagai teks biasa dalam file konfigurasi Collector. Namun, secret ini disertakan dalam log sistem yang ditulis oleh Collector dan dikirimkan ke Cloud Logging, sehingga secret tersebut terekspos di luar node atau virtual machine (VM) tempat Collector berjalan.
Mulai dari Collector versi 0.126.0 yang dibuat Google, Anda dapat menggunakan penyedia OpenTelemetry yang terintegrasi dengan Secret Manager untuk menghilangkan secret teks biasa dalam file konfigurasi.
Penyedia adalah komponen konfigurasi OpenTelemetry, yang analog dengan komponen penerima dan pemroses. Setiap penyedia memiliki jenis, dan setiap jenis penyedia memetakan ID tertentu dalam konfigurasi ke 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 menawarkan 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 Google-Built OpenTelemetry Collector, 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:
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu .
Tetapkan project default untuk Google Cloud CLI:
gcloud config set project PROJECT_ID
Sebelum menjalankan perintah sebelumnya, ganti variabel PROJECT_ID dengan ID Google Cloud project Anda.
-
Aktifkan Secret Manager API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable secretmanager.googleapis.com
- 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.
- Berikan izin yang diperlukan kepada pengguna yang mengelola konfigurasi Google-Built OpenTelemetry Collector
untuk membuat dan mengelola secret. Peran Identity and Access Management
roles/secretManager.secretAdminmencakup 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 project Anda . Google Cloud
- USER_EMAIL: alamat pengguna yang diberi peran.
- Berikan izin yang diperlukan kepada akun layanan yang terkait dengan VM untuk mengakses secret. Peran Identity and Access Management
roles/secretManager.secretAccessormencakup 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 project Anda. Google Cloud
- SERVICE_ACCT_EMAIL: alamat akun layanan yang terkait dengan VM.
Mengganti secret teks biasa dengan secret terkelola
Untuk menghilangkan penggunaan secret teks biasa dalam file konfigurasi Anda dengan menggunakan Secret Manager dan penyedia googlesecretmanager, lakukan hal berikut:
- Buat secret di Secret Manager untuk setiap secret teks biasa dalam file konfigurasi Anda.
- 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 mungkin 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 biasaplaintext-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 dari 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 cara menggunakan penyediagooglesecretmanager,
buka
opentelemetry-collector-contrib repositori.