Halaman ini menjelaskan cara merutekan log dengan membuat sink yang dikonfigurasi dengan akun layanan yang dikelola pengguna. Secara default, Logging menggunakan akun layanan Logging untuk semua sink dalam resource. Namun, jika sink log Anda berada di project yang berbeda, Anda dapat membuat dan mengelola akun layanan yang dikelola pengguna Anda sendiri, yang memungkinkan Anda mengelola izin Identity and Access Management secara terpusat dari project yang berisi akun layanan yang dikelola pengguna Anda.
Anda hanya dapat membuat sink yang menggunakan akun layanan yang dikelola pengguna jika tujuan sink adalah bucket log atau project Google Cloud. Contoh dalam dokumen ini menggambarkan cara menyiapkan sink yang menggunakan akun layanan yang dikelola pengguna dengan tujuan bucket log.
Sebelum memulai
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Pastikan Anda memiliki akun layanan yang dikelola pengguna, lalu tetapkan variabel berikut ke nilai yang sesuai untuk akun layanan yang dikelola pengguna:
CUSTOM_SA_PROJECT_ID: Project ID project yang berisi akun layanan yang dikelola pengguna.
CUSTOM_SA: Alamat email akun layanan yang dikelola pengguna Anda.
Untuk mengetahui informasi tentang cara membuat akun layanan, lihat Membuat akun layanan.
Pastikan Anda memiliki bucket log yang dapat berfungsi sebagai tujuan log sink, lalu tetapkan variabel berikut ke nilai yang sesuai untuk bucket log Anda. Jika perlu, buat bucket log:
LOG_BUCKET_PROJECT_ID: Project ID project yang berisi bucket log Anda.
LOCATION: Lokasi log bucket Anda.
BUCKET_NAME: Nama bucket log Anda.
Identifikasi nama akun layanan Logging yang ada di project tempat Anda berencana membuat sink log, lalu tetapkan variabel berikut ke nilai yang sesuai:
SINK_PROJECT_ID: Project ID project tempat Anda berencana membuat sink log.
LOGGING_SA: Alamat email akun layanan Logging default. Untuk mendapatkan alamat ini, jalankan perintah berikut:
gcloud logging settings describe --project=SINK_PROJECT_ID
Dalam respons, baris yang diawali dengan
loggingServiceAccountId
mencantumkan alamat email akun layanan Anda.
Dalam project yang berisi akun layanan yang dikelola pengguna, pastikan batasan boolean kebijakan organisasi
iam.disableCrossProjectServiceAccountUsage
tidak diterapkan. Secara default, batasan ini diterapkan. Untuk menonaktifkan batasan ini sehingga Anda dapat melampirkan akun layanan ke resource dalam project lain, jalankan perintah berikut:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=CUSTOM_SA_PROJECT_ID
Untuk informasi selengkapnya tentang cara mengaktifkan akun layanan di seluruh project, lihat Mengaktifkan akun layanan untuk dilampirkan di seluruh project.
Memberikan peran IAM
Bagian ini menjelaskan prasyarat untuk membuat sink yang menggunakan akun layanan yang dikelola pengguna.
Mengizinkan akun layanan yang dikelola pengguna menulis entri log ke tujuan sink
Berikan izin yang diperlukan akun layanan yang dikelola pengguna untuk menulis entri log ke tujuan sink yang akan Anda buat di langkah berikutnya. Tujuan sink akan berupa bucket log yang disimpan di project bernama LOG_BUCKET_PROJECT_ID.
Untuk memberikan izin yang diperlukan ke akun layanan yang dikelola pengguna, berikan
peran Penulis Bucket Log (roles/logging.bucketWriter
) pada project
yang berisi bucket log:
gcloud projects add-iam-policy-binding LOG_BUCKET_PROJECT_ID \
--member='serviceAccount:CUSTOM_SA' \
--role='roles/logging.bucketWriter'
Untuk informasi selengkapnya tentang perintah sebelumnya, lihat
gcloud projects add-iam-policy-binding
.
Mengonfigurasi peniruan akun layanan
Konfigurasikan akun layanan Cloud Logging default, LOGGING_SA, sehingga dapat meniru identitas akun layanan yang dikelola pengguna, CUSTOM_SA. Akun layanan Cloud Logging default ada di project Google Cloud yang ingin Anda buat sink log yang menggunakan akun layanan yang dikelola pengguna.
Untuk mengonfigurasi peniruan identitas akun layanan, berikan
peran Service Account Token Creator
(roles/iam.serviceAccountTokenCreator
) ke akun layanan Cloud Logging
di akun layanan yang dikelola pengguna:
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='serviceAccount:LOGGING_SA' \
--role='roles/iam.serviceAccountTokenCreator'
Peniruan identitas akun layanan melibatkan dua akun utama: akun layanan yang tidak memiliki izin untuk mengakses resource, dan akun layanan yang memiliki hak istimewa yang memiliki izin untuk mengakses resource. Dalam hal ini, akun layanan yang dikelola pengguna adalah akun yang memiliki hak istimewa karena memiliki kemampuan untuk menulis entri log ke tujuan sink, yang merupakan bucket log dalam project bernama LOG_BUCKET_PROJECT_ID. Akun layanan Logging memiliki hak istimewa untuk merutekan log.
Untuk mengetahui informasi selengkapnya tentang peran Service Account Token Creator, lihat Peran untuk mengelola dan meniru akun layanan: Peran Service Account Token Creator.
Untuk informasi selengkapnya tentang peniruan akun layanan, lihat Tentang peniruan akun layanan.
Mengizinkan akun utama menjalankan operasi sebagai akun layanan yang dikelola pengguna
Berikan akun utama yang akan membuat sink izin yang diperlukan untuk menjalankan operasi sebagai akun layanan yang dikelola pengguna.
Untuk memberikan izin yang diperlukan, berikan akun utama
peran Pengguna Akun Layanan (roles/iam.serviceAccountUser
)
di project Google Cloud yang menyimpan akun layanan yang dikelola pengguna, CUSTOM_SA_PROJECT_ID.
Sebelum menjalankan perintah berikut, buat penggantian berikut:
- PRINCIPAL: ID untuk akun utama yang ingin Anda berikan peran. ID utama biasanya memiliki bentuk berikut:
PRINCIPAL-TYPE:ID
. Misalnya,user:my-user@example.com
. Untuk mengetahui daftar lengkap format yang dapat dimilikiPRINCIPAL
, lihat ID utama.
Jalankan perintah
gcloud iam service-accounts add-iam-policy-binding
:
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/iam.serviceAccountUser'
Jika Anda menggunakan peran kustom, akun utama memerlukan
izin iam.serviceAccounts.actAs
.
Untuk mengetahui informasi selengkapnya tentang peran Service Account User, lihat Peran untuk mengelola dan meniru identitas akun layanan: Peran Service Account User.
Membuat sink log yang menggunakan akun layanan yang dikelola pengguna
Untuk membuat sink dengan akun layanan yang dikelola pengguna, jalankan perintah gcloud logging sinks create
dan sertakan opsi --custom-writer-identity
.
Sebelum menjalankan perintah berikut, buat penggantian berikut:
- SINK_NAME: Nama sink log.
Jalankan perintah
gcloud logging sinks create
:
gcloud logging sinks create SINK_NAME \
logging.googleapis.com/projects/LOG_BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME \
--custom-writer-identity=serviceAccount:CUSTOM_SA \
--project=SINK_PROJECT_ID
Memverifikasi bahwa sink merutekan log
Di bagian ini, Anda menggunakan gcloud CLI untuk menulis dan membaca entri log untuk memverifikasi bahwa sink merutekan log dengan benar.
Untuk memverifikasi bahwa sink merutekan log dengan benar, lakukan hal berikut:
Jalankan perintah
gcloud logging write
:Sebelum menjalankan perintah berikut, buat penggantian berikut:
- LOG_NAME: Nama log. Misalnya, Anda dapat
menetapkan kolom ini ke
mylog
.
Jalankan perintah
gcloud logging write
:gcloud logging write LOG_NAME "Test log entry" --project=SINK_PROJECT_ID
Perintah sebelumnya menampilkan pesan berikut:
Created log entry.
- LOG_NAME: Nama log. Misalnya, Anda dapat
menetapkan kolom ini ke
Untuk membaca entri log yang baru saja Anda tulis, jalankan perintah berikut:
gcloud logging read 'textPayload="Test log entry"' \ --bucket=BUCKET_NAME --location=LOCATION \ --view=_AllLogs --project=SINK_PROJECT_ID
Langkah selanjutnya
Untuk mempelajari cara merutekan log ke tujuan yang didukung, lihat Merutekan log ke tujuan yang didukung.
Untuk ringkasan tentang cara Logging merutekan dan menyimpan log Anda, lihat Ringkasan pemilihan rute dan penyimpanan.
Jika Anda mengalami masalah saat menggunakan sink untuk merutekan log, lihat Memecahkan masalah log pemilihan rute.
Untuk mempelajari cara melihat log yang dirutekan di tujuannya, serta cara log diformat dan diatur, lihat Melihat log di tujuan sink.