Halaman ini menunjukkan cara menerapkan kebijakan firewall jaringan Cloud Next Generation Firewall secara selektif di Google Kubernetes Engine (GKE) menggunakan Tag. Untuk mempelajari cara menggunakan Tag di GKE untuk tujuan lain, seperti pengelolaan penagihan atau kebijakan IAM bersyarat, lihat Mengelola resource GKE menggunakan Tag.
Tentang Tag
Tag adalah key-value pair yang memungkinkan Anda menganotasi dan mengelola resource Google Cloud di tingkat organisasi atau project. Anda dapat menggunakan tag untuk mengatur resource dan menerapkan kebijakan secara bersyarat seperti firewall atau kebijakan IAM. Anda dapat menggunakan kontrol akses IAM untuk menentukan siapa yang dapat melampirkan, membuat, memperbarui, atau menghapus tag.
Untuk mempelajari Tag lebih lanjut, lihat Ringkasan tag di dokumentasi Resource Manager.
Menggunakan Tag untuk menerapkan kebijakan firewall jaringan
Anda dapat menggunakan Tag untuk menerapkan kebijakan firewall jaringan global atau regional secara bersyarat ke node GKE. Anda harus menetapkan
tujuan GCE_FIREWALL
untuk tag yang ingin digunakan dengan
kebijakan firewall jaringan. Saat Anda menerapkan tag tujuan firewall
ke cluster atau node pool GKE, GKE akan otomatis
melampirkan tag tersebut ke virtual machine (VM) Compute Engine
yang sesuai.
Tag untuk kebijakan firewall jaringan menggantikan kebutuhan untuk menggunakan tag jaringan, yang merupakan metadata yang dapat dilampirkan oleh siapa saja ke VM Compute Engine yang mendasarinya untuk penerapan aturan firewall Virtual Private Cloud, dan yang tidak mendukung kontrol akses IAM. Jika saat ini Anda menggunakan tag jaringan dengan aturan firewall VPC, sebaiknya Anda bermigrasi ke kebijakan firewall jaringan dan menggunakan tag firewall yang aman. Untuk perbandingan mendetail, lihat Membandingkan tag jaringan dengan Tag dalam dokumen ini.
Alur kerja tag untuk kebijakan firewall jaringan
Untuk menggunakan tag dengan kebijakan firewall jaringan di GKE, lakukan tindakan berikut:
Buat tag:
- Tentukan kunci tag di tingkat organisasi atau project,
seperti
env
. - Tentukan kemungkinan nilai tag untuk kunci, seperti
dev
,staging
, danprod
. Tetapkan tag untuk penggunaan kebijakan firewall jaringan.
- Tentukan kunci tag di tingkat organisasi atau project,
seperti
Berikan akses kepada pengguna untuk berinteraksi dengan tag firewall.
Terapkan pasangan nilai kunci tag ke cluster atau node pool GKE tertentu. GKE secara otomatis memasang tag ke VM Compute Engine yang mendasarinya untuk penerapan kebijakan firewall.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan 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
gcloud components update
.
Persyaratan dan batasan
- Tag untuk kebijakan firewall jaringan didukung di GKE versi 1.28 dan yang lebih baru. Jika Anda menggunakan versi GKE sebelum 1.28, gunakan tag jaringan dengan aturan firewall VPC sebagai gantinya.
- Cluster GKE dan tag harus dikaitkan dengan jaringan VPC yang sama.
- Di cluster Standard, setiap node pool mendukung hingga lima tag firewall yang terpasang.
- Cluster Autopilot mendukung hingga lima tag firewall.
- GKE menolak kunci tag yang menggunakan awalan
gke-managed
. - Anda harus membuat pasangan nilai kunci tag sebelum dapat melampirkan tag tersebut ke cluster atau node pool.
Peran dan izin IAM
Untuk mendapatkan izin yang diperlukan guna menggunakan Tag untuk kebijakan firewall di GKE, minta administrator untuk memberi Anda peran IAM berikut:
-
Untuk memberikan izin yang diperlukan untuk tag kepada pengguna dan agen layanan GKE:
-
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) di project Anda -
Administrator Organisasi (
roles/resourcemanager.organizationAdmin
) di organisasi
-
Project IAM Admin (
-
Untuk membuat dan mengelola tag:
Administrator Tag (
roles/resourcemanager.tagAdmin
) di organisasi atau project -
Untuk melampirkan tag ke resource:
Tag User (
roles/resourcemanager.tagUser
) di project
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Membuat tag
Tag harus ada agar Anda dapat melampirkan tag ke cluster atau node. Untuk membuat tag, lihat Menggunakan Tag untuk firewall dalam dokumentasi Cloud NGFW.
Misalnya, untuk membuat tag firewall cakupan project, jalankan perintah berikut:
Buat kunci tag:
gcloud resource-manager tags keys create TAG_KEY \ --parent=projects/PROJECT_ID \ --purpose=GCE_FIREWALL \ --purpose-data=network=PROJECT_ID/NETWORK_NAME
Ganti kode berikut:
TAG_KEY
: nama kunci tag, sepertienv
PROJECT_ID
: project ID Google Cloud AndaNETWORK_NAME
: nama jaringan VPC yang akan Anda gunakan dengan tag
Dapatkan ID kunci tag:
gcloud resource-manager tags keys describe PROJECT_ID/TAG_KEY \ --format="value(name)"
Outputnya adalah
tagKeys/KEY_ID
, denganKEY_ID
adalah ID numerik untuk kunci. Catat ID ini untuk nanti.Tambahkan nilai tag ke kunci tag:
gcloud resource-manager tags values create TAG_VALUE \ --parent=tagKeys/KEY_ID
Ganti
TAG_VALUE
dengan nama nilai yang diizinkan untuk kunci tag tersebut, sepertidev
.
Sintaksis tag dalam perintah gcloud CLI
Saat merujuk ke tag menggunakan gcloud CLI, Anda harus memformat pasangan nilai kunci menggunakan salah satu sintaksis berikut:
Sintaksis tag | |
---|---|
tagKeys/KEY_ID=tagValues/VALUE_ID |
Ganti kode berikut:
Misalnya, |
ORGANIZATION_ID/TAG_KEY=TAG_VALUE |
Ganti kode berikut:
Misalnya, |
PROJECT_ID/TAG_KEY=TAG_VALUE |
Ganti kode berikut:
Misalnya, |
PROJECT_NUMBER/TAG_KEY=TAG_VALUE |
Ganti kode berikut:
Misalnya, |
Menargetkan tag dengan kebijakan firewall
Setelah membuat tag, Anda dapat merujuk ke pasangan nilai kunci tertentu dalam aturan kebijakan firewall. Untuk mengetahui petunjuknya, lihat Menggunakan Tag untuk firewall.
Memberikan izin IAM ke agen layanan
Agar GKE dapat otomatis melampirkan tag ke node baru selama peristiwa penskalaan, Anda harus memberikan peran IAM yang sesuai ke akun layanan yang dikelola Google Cloud, yang juga disebut agen layanan.
Berikan peran Tag User (
roles/resourcemanager.tagUser
) ke Agen Layanan Kubernetes Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Ganti
PROJECT_NUMBER
dengan nomor project Google Cloud cluster. Untuk menemukan nomor project, jalankan perintah berikut:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
Berikan peran Administrator Tag Holds (
roles/resourcemanager.tagHoldAdmin
) ke Agen Layanan Kubernetes Engine untuk pasangan nilai kunci tag:gcloud resource-manager tags values add-iam-policy-binding PROJECT_ID/TAG_KEY/TAG_VALUE \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagHoldAdmin
Peran ini memungkinkan agen layanan mencegah penghapusan tag jika pasangan nilai kunci masih digunakan di GKE.
Berikan peran Pengguna Tag (
roles/resourcemanager.tagUser
) kepada Agen Layanan Google API:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Memberikan peran IAM tambahan untuk tag di luar project
Untuk menggunakan tag yang dimiliki oleh organisasi atau project yang berbeda dengan project cluster, lakukan langkah-langkah tambahan berikut:
Berikan peran Tag User (
roles/resourcemanager.tagUser
) ke Agen Layanan Kubernetes Engine untuk akses tag di resource induk:gcloud resource-manager tags keys add-iam-policy-binding PARENT_RESOURCE/TAG_KEY \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Ganti kode berikut:
PARENT_RESOURCE
: project ID atau ID organisasi resource yang memiliki tag tersebutPROJECT_NUMBER
: nomor project project cluster
Berikan peran Tag User (
roles/resourcemanager.tagUser
) ke akses Agen Layanan Google API untuk tag di resource induk:gcloud resource-manager tags keys add-iam-policy-binding PARENT_RESOURCE/TAG_KEY \ --member=serviceAccount:PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Berikan peran Administrator Tag Holds (
roles/resourcemanager.tagHoldAdmin
) ke Agen Layanan Kubernetes Engine untuk pasangan nilai kunci tag:gcloud resource-manager tags values add-iam-policy-binding PARENT_RESOURCE/TAG_KEY/TAG_VALUE \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagHoldAdmin
Melampirkan tag firewall ke cluster Autopilot
Anda melampirkan tag firewall ke cluster Autopilot di tingkat cluster. GKE secara otomatis menerapkan tag tingkat cluster ini ke setiap node.
Melampirkan tag saat membuat cluster Autopilot baru
Jalankan perintah berikut:
gcloud beta container clusters create-auto CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Ganti kode berikut:
CLUSTER_NAME
: nama cluster baru.LOCATION
: region Compute Engine cluster.TAG1,TAG2,...
: kumpulan key-value pair yang dipisahkan koma untuk dilampirkan. Setiap pasangan nilai kunci harus menggunakan sintaksis yang didukung, seperti yang dijelaskan di Bagian sintaksis tag dalam perintah. Contohnya,example-project/env=dev,1234567901/team=sre
.
Melampirkan tag ke cluster Autopilot yang ada
Jalankan perintah berikut:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Saat Anda memperbarui tag di cluster, GKE akan menimpa tag yang ada di semua node.
Melampirkan tag firewall ke cluster dan node pool Standard
Metode yang Anda gunakan untuk melampirkan tag bergantung pada apakah Anda ingin node pool lain di cluster mewarisi tag, sebagai berikut:
Tag firewall cluster standar | |
---|---|
--autoprovisioning-resource-manager-tags |
Setelan tingkat cluster GKE menerapkan tag ke semua node pool baru yang disediakan secara otomatis di cluster. Jika Anda menggunakan flag ini di cluster yang ada, GKE tidak akan menerapkan tag ke node pool yang ada di cluster. Node pool yang ada mempertahankan tag apa pun yang telah diterapkan sebelum update. Untuk
memperbarui tag node pool yang ada, gunakan
flag |
--resource-manager-tags |
Setelan tingkat kumpulan node GKE menerapkan tag ke node pool yang ditentukan. Jika Anda menggunakan flag ini selama pembuatan cluster, GKE akan menerapkan tag ke node pool default yang dibuat GKE. Jika Anda menggunakan flag ini di node pool yang disediakan secara otomatis, GKE akan menimpa tag yang ada di node pool. |
Melampirkan tag firewall ke cluster Standard
Anda dapat melampirkan tag ke cluster Standard baru atau yang sudah ada. Saat Anda melampirkan tag ke seluruh cluster, GKE menganggap tag ini ditetapkan di level cluster.
Melampirkan tag ke cluster Standard baru dengan penyediaan otomatis node
GKE menggunakan tag tingkat cluster untuk node baru yang disediakan otomatis secara default. Node pool default yang dibuat GKE di cluster tidak disediakan secara otomatis dan tidak mendapatkan tag tersebut.
gcloud beta container clusters create CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,... \
--enable-autoprovisioning \
--max-cpu=MAX_CPU \
--max-memory=MAX_MEMORY
Ganti kode berikut:
CLUSTER_NAME
: nama cluster baruLOCATION
: region atau zona Compute Engine untuk clusterTAG1,TAG2,...
: kumpulan key-value pair yang dipisahkan koma untuk dilampirkan. Setiap pasangan nilai kunci harus menggunakan sintaksis yang didukung, seperti yang dijelaskan di Bagian sintaksis tag dalam perintah. Contohnya,example-project/env=dev,1234567901/team=sre
.MAX_CPU
: jumlah maksimum core untuk clusterMAX_MEMORY
: kapasitas memori maksimum untuk cluster dalam gigabyte
Melampirkan tag saat Anda mengaktifkan penyediaan otomatis node di cluster yang ada
GKE hanya menerapkan tag ini ke node pool baru yang disediakan secara otomatis. Node pool yang ada akan mempertahankan tag yang dimilikinya sebelum update.
Lampirkan tag ke cluster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Aktifkan penyediaan otomatis node di cluster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --enable-autoprovisioning \ --max-cpu=MAX_CPU \ --max-memory=MAX_MEMORY
Melampirkan tag firewall ke node pool
Anda dapat melampirkan tag ke node pool baru atau yang sudah ada, terlepas dari apakah node pool tersebut menggunakan penyediaan otomatis node atau tidak. GKE menganggap tag ini sebagai setelan level node pool.
Melampirkan tag ke node pool default
GKE akan melampirkan tag yang Anda tentukan menggunakan
flag --resource-manager-tags
saat Anda membuat cluster
ke node pool default yang dibuat GKE di cluster.
gcloud beta container clusters create CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Ganti kode berikut:
CLUSTER_NAME
: nama cluster baruLOCATION
: region atau zona Compute Engine untuk clusterTAG1,TAG2,...
: kumpulan key-value pair yang dipisahkan koma untuk dilampirkan. Setiap pasangan nilai kunci harus menggunakan sintaksis yang didukung, seperti yang dijelaskan di Bagian sintaksis tag dalam perintah. Contohnya,example-project/env=dev,1234567901/team=sre
.
Melampirkan tag ke node pool baru
Saat Anda menggunakan flag --resource-manager-tags
selama pembuatan node pool, GKE akan melampirkan tag yang Anda tentukan ke node pool tersebut.
gcloud beta container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Ganti kode berikut:
NODE_POOL_NAME
: nama node pool baruCLUSTER_NAME
: nama clusterLOCATION
: region atau zona Compute Engine clusterTAG1,TAG2,...
:kumpulan key-value pair yang dipisahkan koma untuk dilampirkan. Setiap pasangan nilai kunci harus menggunakan sintaksis yang didukung, seperti yang dijelaskan di Bagian sintaksis tag dalam perintah. Contohnya,example-project/env=dev,1234567901/team=sre
.
Melampirkan tag ke node pool yang ada
Saat Anda memperbarui tag di node pool yang ada menggunakan
flag --resource-manager-tags
, GKE akan menimpa tag yang ada
di node pool tersebut. Anda dapat menggunakan perintah ini untuk memperbarui tag di node pool yang disediakan secara otomatis.
gcloud beta container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Ganti NODE_POOL_NAME
dengan nama node pool yang akan diupdate.
Mengalihkan setelan penyediaan otomatis di cluster dan node pool yang ada
Saat Anda memperbarui tag di tingkat cluster, GKE akan menerapkan tag baru tersebut ke semua node pool baru di cluster dan mempertahankan tag yang dilampirkan ke node pool yang ada.
Saat Anda memperbarui node pool yang ada untuk mengaktifkan atau menonaktifkan penyediaan otomatis node, pertimbangkan implikasi berikut untuk tag:
- Saat Anda mengaktifkan atau menonaktifkan penyediaan otomatis node, node pool akan mempertahankan tag yang ada. GKE tidak menimpa tag ini dengan tag tingkat cluster, bahkan selama pembuatan ulang node.
- Jika Anda memperbarui tag secara manual di node pool tertentu, GKE akan menimpa tag yang ada dengan tag yang Anda tentukan untuk node pool tersebut.
Memverifikasi tag firewall di cluster
Cantumkan tag di cluster Autopilot:
gcloud beta container clusters describe CLUSTER_NAME \ --location=LOCATION \ --format="value(nodePoolAutoConfig.resourceManagerTags)"
Cantumkan tag di node pool tertentu:
gcloud beta container node-pools describe NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --format="value(config.resourceManagerTags)"
Melepaskan tag firewall dari cluster dan node pool
Untuk menghapus tag firewall dari cluster dan node pool, perbarui resource dengan nilai kosong untuk tag.
Melepaskan tag dari cluster Autopilot
Jalankan perintah berikut:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=
Melepaskan tag dari node pool
Lepaskan tag penyediaan otomatis node tingkat cluster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --autoprovisioning-resource-manager-tags=
GKE tidak akan melampirkan tag ke node pool baru yang disediakan secara otomatis.
Lepaskan tag node pool:
gcloud beta container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --resource-manager-tags=
GKE akan menghapus tag yang ada dari node pool tersebut.
Menghapus kunci dan nilai tag
Untuk menghapus kunci atau nilai tag, pastikan tag tersebut dilepaskan dari semua resource. Kemudian, lihat Menghapus tag dalam dokumentasi Resource Manager.
Membandingkan tag jaringan dengan Tag
Menggunakan Tag untuk penerapan kebijakan firewall memiliki manfaat keamanan dan kegunaan yang signifikan dibandingkan dengan tag jaringan. Demikian pula, kebijakan firewall jaringan meningkatkan kemampuan aturan firewall VPC dengan memfasilitasi penegakan aturan firewall di seluruh organisasi, folder, project, atau jaringan.
Menggunakan Tag dengan kebijakan firewall jaringan adalah cara yang lebih aman dan skalabel untuk mengelola akses ke lingkungan GKE di seluruh organisasi Anda. Anda dapat menggunakan tag jaringan di cluster yang sama dengan Tag, meskipun Anda tidak dapat menggunakan tag jaringan untuk menerapkan kebijakan firewall jaringan.
Untuk perbandingan mendetail antara Tag dan tag jaringan, lihat Perbandingan Tag dan tag jaringan dalam dokumentasi Cloud NGFW.
Perbedaan fungsional di node pool yang disediakan secara otomatis
Di cluster Autopilot dan di node pool Standard yang tidak menggunakan penyediaan otomatis node, tag jaringan dan Tag menunjukkan perilaku yang serupa. Tabel berikut menunjukkan perbedaan fungsional antara tag jaringan dan Tag di node pool yang disediakan otomatis di cluster Standard:
Tindakan | Perilaku tag jaringan | Perilaku tag |
---|---|---|
GKE menyediakan node pool secara otomatis | GKE menerapkan tag jaringan tingkat cluster | GKE menerapkan tag tingkat cluster |
Anda memperbarui tag atau tag jaringan di node pool yang disediakan secara otomatis |
|
GKE menimpa tag yang ada untuk node pool, terlepas dari apakah tag tingkat cluster ada atau tidak |
Anda memperbarui tag atau tag jaringan untuk seluruh cluster | GKE menimpa tag jaringan untuk node pool yang disediakan secara otomatis baru dan yang sudah ada di cluster. | GKE menerapkan tag level cluster baru ke node pool baru yang disediakan otomatis. Node pool yang disediakan secara otomatis yang sudah ada akan mempertahankan tag yang dimiliki sebelum update. |
Langkah selanjutnya
- Menggunakan Tag untuk pelacakan penggunaan dan penegakan kebijakan IAM
- Pelajari Tag untuk firewall lebih lanjut
- Pelajari Tag