Halaman ini menjelaskan cara merutekan entri 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 sendiri, yang memungkinkan Anda mengelola izin Identity and Access Management secara terpusat dari project yang berisi akun layanan yang dikelola pengguna.
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 mengilustrasikan cara menyiapkan sink yang menggunakan akun layanan yang dikelola pengguna dengan tujuan bucket log.
Sebaiknya tinjau konfigurasi sink log Anda saat membuat perubahan pada penyimpanan log. Misalnya, jika Anda menghapus tujuan sink log, hapus sink log yang sesuai.
Sebelum memulai
-
Di konsol, aktifkan Cloud Shell. Google Cloud
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan prompt command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
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.
Untuk mengetahui informasi tentang cara membuat akun layanan, lihat Membuat akun layanan.
Pastikan Anda memiliki bucket log yang dapat berfungsi sebagai tujuan sink log, 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 bucket log 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_IDDalam respons, baris yang dimulai dengan
loggingServiceAccountIdmencantumkan alamat email akun layanan Anda.
Di project yang berisi akun layanan yang dikelola pengguna, pastikan batasan boolean kebijakan organisasi
iam.disableCrossProjectServiceAccountUsagetidak diterapkan. Secara default, batasan ini diterapkan. Untuk menonaktifkan batasan ini sehingga Anda dapat melampirkan akun layanan ke resource di project lain, jalankan perintah berikut:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=CUSTOM_SA_PROJECT_IDUntuk mengetahui 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 pada 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 Logs Bucket Writer (roles/logging.bucketWriter) di project yang berisi bucket log:
gcloud projects add-iam-policy-binding LOG_BUCKET_PROJECT_ID \
--member='serviceAccount:CUSTOM_SA' \
--role='roles/logging.bucketWriter'
Untuk mengetahui informasi selengkapnya tentang perintah sebelumnya, lihat
gcloud projects add-iam-policy-binding.
Mengonfigurasi peniruan akun layanan
Konfigurasi akun layanan Cloud Logging default, LOGGING_SA, sehingga dapat meniru akun layanan yang dikelola pengguna, CUSTOM_SA. Akun layanan Cloud Logging default ada di Google Cloud project tempat Anda ingin membuat sink log yang menggunakan akun layanan yang dikelola pengguna.
Untuk mengonfigurasi peniruan 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 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 di project bernama LOG_BUCKET_PROJECT_ID. Akun layanan Logging memiliki hak istimewa untuk merutekan entri log.
Untuk mengetahui informasi selengkapnya tentang peran Service Account Token Creator, lihat Peran Service Account Token Creator.
Untuk mengetahui informasi selengkapnya tentang peniruan akun layanan, lihat Tentang akun layanan peniruan.
Mengizinkan akun utama menjalankan operasi sebagai akun layanan yang dikelola pengguna
Berikan izin yang diperlukan akun utama yang akan membuat sink untuk menjalankan operasi sebagai akun layanan yang dikelola pengguna.
Untuk memberikan izin yang diperlukan, berikan peran
Service Account User (roles/iam.serviceAccountUser)
kepada akun utama di Google Cloud project yang menyimpan
akun layanan yang dikelola pengguna, CUSTOM_SA_PROJECT_ID.
Sebelum menjalankan perintah berikut, lakukan 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 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 khusus, akun utama memerlukan izin iam.serviceAccounts.actAs.
Untuk mengetahui informasi selengkapnya tentang peran Service Account User, lihat 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, lakukan 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 Anda merutekan entri log
Di bagian ini, Anda menggunakan gcloud CLI untuk menulis dan membaca entri log guna memverifikasi bahwa sink Anda merutekan entri log dengan benar.
Untuk memverifikasi bahwa sink Anda merutekan entri log dengan benar, lakukan hal berikut:
Jalankan perintah
gcloud logging write:Sebelum menjalankan perintah berikut, lakukan 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_IDPerintah 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 berikutnya
Untuk mempelajari cara merutekan entri log ke tujuan yang didukung, lihat Merutekan log ke tujuan yang didukung.
Untuk mengetahui ringkasan tentang cara Logging merutekan dan menyimpan entri log Anda, lihat Ringkasan perutean dan penyimpanan.
Jika Anda mengalami masalah saat menggunakan sink untuk merutekan entri log, lihat Memecahkan masalah perutean log.
Untuk mempelajari cara melihat entri log di tujuannya, serta cara entri log diformat dan diatur, lihat Melihat log di tujuan sink.