Halaman ini menjelaskan cara memverifikasi koneksi yang dibuat oleh personel Google ke bidang kontrol cluster Google Kubernetes Engine (GKE) Anda dengan mengorelasikan log GKE dengan log Transparansi Akses.
Log Transparansi Akses mencatat tindakan yang dilakukan personel Google saat mengakses konten Anda. Panduan ini ditujukan untuk administrator keamanan yang menginginkan verifikasi tambahan terhadap konten log Transparansi Akses dan persetujuan Access Approval terkait dengan mengorelasikannya dengan sumber logging tambahan dari GKE. Verifikasi ini sepenuhnya bersifat opsional dan tidak diperlukan untuk mengamankan bidang kontrol Anda.
Pastikan Anda sudah memahami konsep berikut:
Halaman ini menjelaskan satu bagian dari kumpulan fitur bidang kontrol opsional di GKE yang memungkinkan Anda melakukan tugas seperti memverifikasi postur keamanan bidang kontrol atau mengonfigurasi enkripsi dan penandatanganan kredensial di bidang kontrol menggunakan kunci yang Anda kelola. Untuk mengetahui detailnya, lihat Tentang otoritas bidang kontrol GKE.
Secara default, Google Cloud menerapkan berbagai langkah keamanan ke bidang kontrol terkelola. Halaman ini menjelaskan opsional kemampuan yang memberi Anda lebih banyak visibilitas atau kontrol atas bidang kontrol GKE.
Tentang akses Google ke instance bidang kontrol cluster
Selama sesi pemecahan masalah atau karena alasan bisnis lain yang dapat dibenarkan, personel Google seperti engineer keandalan situs dan karyawan Layanan Pelanggan Cloud mungkin memerlukan akses administratif ke instance Compute Engine yang menghosting bidang kontrol Anda. Bergantung pada paket dukungan dan konfigurasi Layanan Pelanggan Anda, Transparansi Akses menyediakan logging audit mendetail untuk akses administratif ini. Access Approval memungkinkan Anda mewajibkan persetujuan eksplisit sebelum personel Google dapat mengakses resource Anda. Untuk mempelajari lebih lanjut akses administratif dan alat yang dapat Anda gunakan untuk mengotorisasi akses dan mencatat perubahan, lihat Akses administratif untuk karyawan Google.
Log akses bidang kontrol
Saat Anda mengaktifkan otoritas bidang kontrol GKE, GKE akan membuat log akses bidang kontrol yang dapat Anda gunakan secara opsional untuk melakukan referensi silang log audit yang dibuat oleh Transparansi Akses dan Access Approval. GKE menambahkan log akses bidang kontrol
ke bucket
_Default di Logging
untuk mencatat koneksi jaringan masuk dan peristiwa SSH tertentu
di instance bidang kontrol Anda. Anda harus mengaktifkan otoritas bidang kontrol GKE di project Anda untuk membuat log akses bidang kontrol untuk cluster Anda.
GKE membuat log akses berikut untuk bidang kontrol:
Volume log koneksi bidang kontrol bergantung pada faktor-faktor seperti jumlah node dalam cluster, jumlah instance bidang kontrol (cluster regional memiliki lebih banyak instance bidang kontrol daripada cluster zona), dan seberapa sering workload Anda memanggil server API Kubernetes. Volume log SSH kecil dan bergantung pada jumlah restart node.
Untuk memverifikasi koneksi ke bidang kontrol Anda, temukan log akses bidang kontrol untuk cluster Anda dan cocokkan log tersebut dengan log audit dari Transparansi Akses dan Access Approval. Hal ini memungkinkan Anda mengonfirmasi bahwa semua koneksi SSH ke instance bidang kontrol Anda adalah hasil dari akses administratif yang diotorisasi oleh personel Google. Saat Anda mengaktifkan otoritas bidang kontrol GKE untuk cluster Anda, semua akses SSH oleh personel Google ke bidang kontrol Anda bersifat non-interaktif, yang berarti bahwa setiap koneksi SSH menjalankan satu perintah yang Anda otorisasi. Untuk melihat detail tingkat perintah untuk akses administratif, daftarkan diri ke Augmented Access Approval dan Augmented Access Transparency. Untuk mengetahui informasi selengkapnya tentang kelayakan dan pendaftaran, hubungi tim akun Google Cloud Anda.
Harga
Pertimbangan harga berikut berlaku:
- Log akses bidang kontrol tunduk pada harga Logging.
- Transparansi Akses disertakan dalam langganan Layanan Pelanggan tertentu. Untuk mengetahui detailnya, lihat Harga Transparansi Akses.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
Aktifkan Cloud Logging API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.Aktifkan Transparansi Akses untuk organisasi Anda. Untuk mengetahui petunjuknya, lihat Mengaktifkan Transparansi Akses.
Secara opsional, aktifkan Access Approval untuk project Anda dan pilih layanan GKE. Untuk mengetahui petunjuknya, lihat Meninjau dan menyetujui permintaan akses menggunakan kunci penandatanganan yang dikelola Google.
Pastikan lingkungan Anda memenuhi syarat untuk menggunakan fitur otoritas bidang kontrol GKE. Untuk ikut serta dalam fitur ini, hubungi tim penjualan Anda Google Cloud .
Persyaratan
Log akses bidang kontrol memerlukan GKE versi 1.31.1-gke.1846000 atau yang lebih baru.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengaktifkan pembuatan log serta mengakses dan memproses log, minta administrator untuk memberi Anda peran IAM berikut:
-
Mengaktifkan logging koneksi bidang kontrol di cluster Anda:
Admin Cluster Kubernetes Engine (
roles/container.clusterAdmin) di project Anda -
Mengakses log dan menggunakan Logs Explorer dan Observability Analytics:
Logs Viewer (
roles/logging.viewer) di project Anda -
Mengaktifkan Transparansi Akses untuk organisasi:
Access Transparency Admin (
roles/axt.admin) di organisasi Anda
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Mengaktifkan log akses bidang kontrol cluster GKE
Anda dapat mengaktifkan pembuatan log akses bidang kontrol untuk cluster mode Autopilot dan mode Standar dengan mengaktifkan komponen logging yang sesuai. Untuk mengetahui informasi selengkapnya tentang jenis log bidang kontrol, lihat Melihat log GKE.
Nama komponen logging yang didukung untuk log akses bidang kontrol adalah sebagai berikut:
- Log SSH bidang kontrol:
KCP_SSHD - Log koneksi bidang kontrol:
KCP_CONNECTION
Mengaktifkan log akses bidang kontrol di cluster baru
Contoh berikut membuat cluster mode Autopilot dengan kedua jenis log akses bidang kontrol diaktifkan. Untuk hanya mengaktifkan satu jenis log akses bidang kontrol, hapus nama komponen yang sesuai dari perintah.
gcloud container clusters create-auto CLUSTER_NAME \
--location=LOCATION \
--logging=SYSTEM,KCP_SSHD,KCP_CONNECTION
Ganti kode berikut:
CLUSTER_NAME: nama untuk cluster baru.LOCATION: lokasi tempat membuat cluster.
Untuk menentukan komponen logging saat Anda membuat cluster menggunakan
GKE API, di metode
projects.locations.clusters.create, tetapkan nilai yang sesuai dalam objek
LoggingConfig
dari resource Cluster.
Mengaktifkan log akses bidang kontrol di cluster yang ada
Untuk memperbarui konfigurasi logging cluster yang ada guna mengaktifkan log akses bidang kontrol, Anda harus melakukan hal berikut:
- Temukan komponen logging yang ada yang digunakan cluster Anda.
- Identifikasi nilai yang sesuai untuk ditentukan dalam flag
--loggingdi gcloud CLI agar komponen logging tersebut tetap diaktifkan. - Perbarui konfigurasi logging cluster Anda untuk mengaktifkan log akses bidang kontrol bersama konfigurasi logging yang ada.
Nilai yang Anda tentukan untuk flag --logging dalam perintah gcloud container clusters update berbeda dengan nilai yang Anda lihat saat Anda menjelaskan cluster Anda.
Periksa konfigurasi logging cluster yang ada:
gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --flatten=loggingConfig \ --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'Outputnya mirip dengan hal berikut ini:
SYSTEM_COMPONENTS,WORKLOADS,APISERVER,SCHEDULER,CONTROLLER_MANAGERIdentifikasi nilai gcloud CLI untuk flag
--loggingyang sesuai dengan konfigurasi komponen logging dari output langkah sebelumnya. Untuk mengetahui daftar nilai gcloud CLI yang sesuai dengan komponen logging tertentu, lihat tabel Log yang tersedia.Perbarui konfigurasi logging dengan log akses bidang kontrol:
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --logging=SYSTEM,EXISTING_LOGS,KCP_ACCESS_LOGSGanti kode berikut:
EXISTING_LOGS: daftar komponen logging yang dipisahkan koma yang sudah digunakan cluster Anda. Pastikan Anda menentukan nilai gcloud CLI yang sesuai dengan komponen logging ini, yang diambil dari tabel Log yang tersedia.KCP_ACCESS_LOGS: daftar jenis log akses bidang kontrol yang dipisahkan koma untuk diaktifkan bagi cluster, sebagai berikut:- Untuk log SSH bidang kontrol, tentukan
KCP_SSHD. - Untuk log koneksi bidang kontrol, tentukan
KCP_CONNECTION.
- Untuk log SSH bidang kontrol, tentukan
Untuk menentukan komponen logging saat Anda memperbarui cluster menggunakan
GKE API, di
projects.locations.clusters.update
metode, tetapkan nilai komponen logging yang ada dan baru dalam
LoggingConfig objek
dari
ClusterUpdate resource.
Contoh pembaruan cluster untuk mengaktifkan log akses bidang kontrol
Pertimbangkan cluster yang menampilkan konfigurasi logging berikut setelah menjalankan perintah gcloud container clusters describe:
SYSTEM_COMPONENTS,WORKLOADS,APISERVER,SCHEDULER,CONTROLLER_MANAGER
Perintah pembaruan cluster berikut mengaktifkan kedua jenis log akses bidang kontrol sambil mempertahankan konfigurasi log yang ada untuk cluster contoh ini:
gcloud container clusters update example-cluster \
--location=us-central1 \
--logging=SYSTEM,WORKLOAD,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,KCP_SSHD,KCP_CONNECTION
Melakukan referensi silang log akses bidang kontrol dengan log Transparansi Akses
Untuk memverifikasi akses bidang kontrol untuk cluster, dapatkan log koneksi bidang kontrol, log SSH bidang kontrol, dan log Transparansi Akses untuk cluster tersebut:
Di Google Cloud konsol, buka halaman Logs Explorer.
Untuk mendapatkan semua log untuk cluster tertentu, termasuk log akses bidang kontrol dan log Transparansi Akses, jalankan kueri berikut:
(logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-connection" resource.labels.cluster_name="CLUSTER_NAME" jsonPayload.connection.dest_port="22") OR (logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-sshd" resource.labels.cluster_name="CLUSTER_NAME") OR (logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Faccess_transparency" json_payload.accesses.methodName="GoogleInternal.SSH.Master" json_payload.accesses.resourceName="//container.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME")
Output akan menampilkan semua jenis log berikut untuk cluster Anda:
- Log Transparansi Akses
- Log koneksi bidang kontrol
- Log SSH untuk setiap sesi SSH
Melakukan pemeriksaan verifikasi
Pemeriksaan verifikasi utama Anda adalah apakah Anda melihat semua jenis log untuk koneksi SSH saat Anda menjalankan kueri Logging dari bagian sebelumnya. Setiap log Transparansi Akses harus memiliki log koneksi bidang kontrol yang sesuai dan satu atau beberapa log SSH. Log ini adalah untuk tindakan yang dilakukan manusia di instance bidang kontrol Anda, sehingga volume log harus kecil.
Secara opsional, Anda dapat melakukan pemeriksaan tambahan berikut pada konten log:
- Untuk setiap log SSH bidang kontrol, periksa apakah log Transparansi Akses ada dalam jangka waktu 15 menit sebelum stempel waktu log SSH. Jangka waktu ini memperhitungkan penutupan sesi SSH terakhir yang terjadi beberapa menit setelah koneksi awal dicatat oleh Transparansi Akses.
- Untuk setiap log koneksi bidang kontrol, periksa apakah log Transparansi Akses ada dalam jangka waktu 5 menit sebelum stempel waktu log koneksi bidang kontrol.
Jika Anda menggunakan Access Approval untuk cluster Anda, periksa apakah setiap log Transparansi Akses memiliki kolom
accessApprovalsyang sesuai. Lakukan referensi silang kolom ini dengan permintaan Access Approval untuk cluster Anda.Untuk mendapatkan permintaan Access Approval untuk project Anda, lihat Melihat histori permintaan Access Approval. Access Approval mungkin tunduk pada pengecualian.
Secara opsional, validasi tanda tangan Access Approval yang ditandatangani yang terkait dengan log Transparansi Akses.
Detail log akses bidang kontrol
Bagian ini memberikan detail dan contoh log akses bidang kontrol yang dibuat GKE saat personel Google terhubung ke instance bidang kontrol Anda.
Log koneksi bidang kontrol
GKE menambahkan log koneksi bidang kontrol untuk setiap koneksi jaringan masuk baru ke instance bidang kontrol. Log ini mencakup detail tertentu seperti berikut:
- Alamat IP dan port sumber dan tujuan
- Arah dan protokol koneksi
Contoh berikut adalah log koneksi bidang kontrol:
{
insertId: "z1eq8wonio335a5h",
jsonPayload: {
instance: {
vm_name: "gke-dee49f0d6fa34ce3a2ac-f513-d195-vm",
zone: "us-central1-c"
},
cluster: {
cluster_id: "CLUSTER_ID",
cluster_urn: "//container.googleapis.com/projects/PROJECT_NUMBER/locations/us-central1-c/clusters/CLUSTER_NAME"
},
connection: {
state: "NEW",
src_ip: "192.0.2.100",
src_port: 32774,
dest_ip: "203.0.113.12",
dest_port: 22,
direction: "INGRESS"
protocol: "TCP"
},
}
logName: "projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-connection",
receiveTimestamp: "2024-04-11T04:08:01.883070399Z",
resource: {
labels: {
cluster_name: "CLUSTER_NAME",
location: "us-central1-c",
project_id: "PROJECT_ID"
}
type: "gke_cluster",
}
severity: "NOTICE",
timestamp: "2024-04-11T04:07:59.019330Z"
}
Kolom berikut dalam entri log relevan untuk memverifikasi tindakan Google:
cluster.cluster_urn: ID resource cluster yang memenuhi syarat sepenuhnya. ID ini memiliki format//container.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME, dengan variabel berikut:PROJECT_NUMBER: nomor project numerik dari project cluster Anda.LOCATION: lokasi cluster Anda. Google CloudCLUSTER_NAME: nama cluster Anda.
connection: Detail tentang upaya koneksi. Kolom ini memiliki informasi berikut:state: status koneksi. Untuk koneksi baru, nilainya adalahNEW.src_ip: alamat IP sumber koneksi.src_port: nomor port sumber koneksi.dest_ip: alamat IP internal VM bidang kontrol Anda.dest_port: nomor port tujuan.direction: arah koneksi. Nilainya selaluINGRESS.protocol: protokol IP, sepertiTCP.
Log SSH bidang kontrol
GKE menambahkan log SSH bidang kontrol untuk peristiwa yang terkait dengan koneksi SSH ke instance bidang kontrol. GKE mencatat peristiwa berikut:
- Kunci SSH diterima untuk pengguna
- Status sesi diubah dari 0 menjadi 1, yang menunjukkan bahwa pengguna berhasil login
- Sesi SSH dibuka
- Sesi SSH ditutup
- Status sesi diubah dari 1 menjadi 0, yang menunjukkan bahwa pengguna logout
- Sesi SSH gagal
Misalnya, log SSH bidang kontrol berikut adalah untuk sesi SSH yang dibuka:
{
insertId: "8llczemdulwbbwpa",
jsonPayload: {
instance: {
vm_name: "gke-06cb920c609941c0a5ce-6840-40e9-vm",
zone: "us-central1-c"
},
cluster: {
cluster_id: "891e6d12889747748c1ac16ffcc6cb7c0a96450b36864eb680917c119fd801d0",
cluster_urn: "//container.googleapis.com/projects/PROJECT_NUMBER/locations/us-central1/clusters/CLUSTER_NAME",
},
message: "pam_unix(sshd:session): session opened for user REDACTED by (uid=0)",
},
logName: "projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-ssh",
receiveTimestamp: "2024-04-09T13:21:55.231436462Z"
resource: {
type: "gke_cluster",
labels: {
cluster_name: "CLUSTER_NAME",
location: "us-central1",
project_id: "PROJECT_ID"
}
},
severity: "NOTICE",
timestamp: "2024-04-09T13:21:50.742246Z"
}
Kolom berikut dalam entri log relevan untuk memverifikasi tindakan Google:
cluster.cluster_urn: ID resource cluster yang memenuhi syarat sepenuhnya. ID ini memiliki format//container.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME, dengan variabel berikut:PROJECT_NUMBER: nomor project numerik dari project cluster Anda.LOCATION: lokasi cluster Anda. Google CloudCLUSTER_NAME: nama cluster Anda.
message: Detail tentang koneksi SSH.
Menonaktifkan log akses bidang kontrol
Untuk melihat jenis log tertentu yang digunakan cluster Anda, jalankan perintah berikut:
gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --flatten=loggingConfig \ --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'Outputnya mirip dengan hal berikut ini:
SYSTEM_COMPONENTS,WORKLOADS,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,KCP_SSHD,KCP_CONNECTIONUntuk menonaktifkan log akses bidang kontrol untuk cluster, jalankan perintah berikut:
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --logging=SYSTEM,WORKLOAD,API_SERVER,SCHEDULER,CONTROLLER_MANAGER
Di flag --logging, tentukan komponen logging dari output perintah sebelumnya. Perintah contoh ini menonaktifkan log akses bidang kontrol, tetapi tetap mengaktifkan log komponen bidang kontrol lainnya.
Untuk menonaktifkan komponen logging menggunakan GKE API, tetapkan
nilai yang sesuai dalam objek LoggingConfig dari resource ClusterUpdate dalam
metode
projects.locations.clusters.update.
Langkah berikutnya
- Pelajari tentang keamanan bidang kontrol.
- Pelajari tentang akses administratif untuk karyawan Google.
- Pelajari cara mengonfigurasi logging dan pemantauan untuk GKE.
- Pelajari cara mengonfigurasi akses tingkat kolom ke log.
- Pelajari tentang batas penggunaan logging.
- Pelajari Augmented Administrative Access.