Halaman ini menunjukkan cara menerapkan kebijakan firewall jaringan Cloud Next Generation Firewall secara selektif di Google Kubernetes Engine (GKE) menggunakan Tag. Guna mempelajari cara menggunakan Tag di GKE untuk tujuan lain, seperti pengelolaan penagihan atau kebijakan IAM bersyarat, baca artikel Mengelola resource GKE menggunakan Tag.
Tentang Tag
Tag adalah key-value pair yang dapat Anda gunakan untuk menganotasi dan mengelola resource Google Cloud di level organisasi atau project. Anda dapat menggunakan tag untuk mengatur resource dan menerapkan kebijakan secara kondisional, seperti kebijakan firewall atau 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 kondisional ke node GKE Anda. Anda harus menentukan tujuan GCE_FIREWALL
untuk tag yang ingin digunakan dengan kebijakan firewall jaringan. Saat Anda menerapkan tag tujuan firewall ke cluster GKE atau node pool, 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 lakukan migrasi ke kebijakan firewall jaringan dan gunakan tag firewall yang aman. Untuk perbandingan yang lebih mendetail, baca artikel Membandingkan tag jaringan dengan Tag dalam dokumen ini.
Tag untuk alur kerja kebijakan firewall jaringan
Untuk menggunakan tag dengan kebijakan firewall jaringan di GKE, Anda perlu melakukan hal-hal berikut:
Buat tag:
- Tentukan kunci tag di level 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 level organisasi atau project, seperti
Memberi pengguna akses untuk berinteraksi dengan tag firewall.
Terapkan key-value pair tag ke cluster GKE atau node pool 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
initialize
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 GKE versi yang lebih lama dari 1.28, gunakan tag jaringan dengan aturan firewall VPC.
- Cluster GKE seharusnya dibuat menggunakan GKE versi 1.28 atau yang lebih baru. Mengupgrade cluster dari versi yang lebih lama dari 1.28 ke versi 1.28 atau yang lebih baru tidak akan mengaktifkan Tag.
- Cluster GKE dan tag harus dikaitkan dengan jaringan VPC yang sama.
- Dalam cluster Standar, setiap kumpulan node 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 key-value pair tag sebelum dapat menambahkannya ke cluster atau node pool.
Peran dan izin IAM
Untuk mendapatkan izin yang diperlukan agar dapat menggunakan Tag untuk kebijakan firewall di GKE, minta administrator untuk memberi Anda peran IAM berikut:
-
Untuk memberikan izin yang diperlukan atas 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 pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Membuat tag
Tag harus ada agar Anda dapat melampirkannya ke cluster atau node. Untuk membuat tag, lihat artikel 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)"
Output-nya adalah
tagKeys/KEY_ID
, denganKEY_ID
adalah ID numerik untuk kunci tersebut. 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 CLI gcloud
Saat merujuk ke tag menggunakan gcloud CLI, Anda harus memformat key-value pair 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 key-value pair tertentu dalam aturan kebijakan firewall. Untuk mengetahui petunjuknya, lihat Menggunakan Tag untuk firewall.
Memberikan izin IAM kepada agen layanan
Agar GKE dapat otomatis melampirkan tag ke node baru selama peristiwa peningkatan skala, Anda harus memberikan peran IAM yang sesuai ke akun layanan yang dikelola Google Cloud, yang juga disebut sebagai 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 di cluster. Untuk menemukan nomor project, jalankan perintah berikut:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
Berikan peran Administrator Tag Hold (
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 key-value pair masih digunakan di GKE.
Berikan peran Tag User (
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 akses untuk 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 Agen Layanan Google API akses 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 Hold (
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
Memasang tag firewall ke cluster Autopilot
Anda melampirkan tag firewall ke cluster Autopilot di tingkat cluster. GKE secara otomatis menerapkan tag level cluster ini ke setiap node.
Lampirkan 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 yang akan dilampirkan. Setiap pasangan nilai kunci harus menggunakan sintaksis yang didukung, seperti yang dijelaskan di Sintaksis tag di bagian perintah. Contohnya,example-project/env=dev,1234567901/team=sre
.
Memasang 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 standar dan node pool
Metode yang Anda gunakan untuk melampirkan tag bergantung pada apakah Anda ingin kumpulan node lain dalam cluster mewarisi tag atau tidak, sebagai berikut:
Tag firewall cluster standar | |
---|---|
--autoprovisioning-resource-manager-tags |
Setelan level cluster GKE menerapkan tag ke semua node pool baru yang disediakan secara otomatis di cluster. Jika Anda menggunakan flag ini pada cluster yang ada, kumpulan node yang ada akan mempertahankan tag yang diterapkan sebelum update. |
--resource-manager-tags |
Setelan level 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 tanda ini digunakan pada kumpulan node yang disediakan secara otomatis, GKE akan menimpa tag yang ada di kumpulan node. |
Melampirkan tag firewall ke cluster Standar
Anda dapat melampirkan tag ke cluster Standar baru atau yang sudah ada. Jika Anda melampirkan tag ke seluruh cluster, GKE menganggap tag tersebut ditetapkan pada level cluster.
Lampirkan tag ke cluster Standar baru dengan penyediaan otomatis node
GKE menggunakan tag level cluster untuk node baru yang disediakan secara otomatis secara default. Kumpulan node 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 yang akan dilampirkan. Setiap pasangan nilai kunci harus menggunakan sintaksis yang didukung, seperti yang dijelaskan di Sintaksis tag di bagian perintah. Contohnya,example-project/env=dev,1234567901/team=sre
.MAX_CPU
: jumlah maksimum core untuk clusterMAX_MEMORY
: kapasitas memori maksimum untuk cluster dalam gigabyte
Lampirkan tag saat Anda mengaktifkan penyediaan otomatis node di cluster yang ada
GKE hanya menerapkan tag ini ke node pool baru yang disediakan secara otomatis. Kumpulan node yang ada akan mempertahankan tag yang dimiliki 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 kumpulan node
Anda dapat melampirkan tag ke kumpulan node baru atau yang ada, terlepas dari apakah tag tersebut menggunakan penyediaan otomatis node. GKE menganggap tag ini sebagai setelan level kumpulan node.
Melampirkan tag ke kumpulan node default
GKE melampirkan tag yang Anda tentukan menggunakan flag --resource-manager-tags
saat membuat cluster ke kumpulan node 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 yang akan dilampirkan. Setiap pasangan nilai kunci harus menggunakan sintaksis yang didukung, seperti yang dijelaskan di Sintaksis tag di bagian perintah. Contohnya,example-project/env=dev,1234567901/team=sre
.
Melampirkan tag ke kumpulan node baru
Saat Anda menggunakan flag --resource-manager-tags
selama pembuatan node pool,
GKE akan melampirkan tag yang Anda tentukan ke kumpulan node 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 kumpulan node baruCLUSTER_NAME
: nama clusterLOCATION
: region atau zona Compute EngineTAG1,TAG2,...
:kumpulan key-value pair yang dipisahkan koma yang akan dilampirkan. Setiap pasangan nilai kunci harus menggunakan sintaksis yang didukung, seperti yang dijelaskan di Sintaksis tag di bagian perintah. Contohnya,example-project/env=dev,1234567901/team=sre
.
Melampirkan tag ke kumpulan node yang ada
Saat Anda memperbarui tag pada kumpulan node yang ada menggunakan tanda --resource-manager-tags
, GKE akan menimpa tag yang ada di kumpulan node tersebut. Anda dapat menggunakan perintah ini untuk memperbarui tag pada 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 kumpulan node yang akan diperbarui.
Mengaktifkan/menonaktifkan setelan penyediaan otomatis di cluster dan node pool yang ada
Saat Anda memperbarui tag pada level cluster, GKE akan menerapkan tag baru tersebut ke semua node pool baru dalam cluster dan mempertahankan tag yang telah disertakan ke node pool yang ada.
Saat Anda mengupdate kumpulan node yang ada untuk mengaktifkan atau menonaktifkan penyediaan otomatis node, pertimbangkan implikasi berikut untuk tag:
- Saat Anda mengaktifkan atau menonaktifkan penyediaan otomatis node, kumpulan node akan mempertahankan tag yang ada. GKE tidak menimpa tag ini dengan tag level cluster, bahkan selama pembuatan ulang node.
- Jika Anda mengupdate tag secara manual pada 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 pada cluster Autopilot:
gcloud beta container clusters describe CLUSTER_NAME \ --location=LOCATION \ --format="value(nodePoolAutoConfig.resourceManagerTags)"
Cantumkan tag pada kumpulan node 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, update resource dengan nilai kosong untuk tag tersebut.
Lepaskan tag dari cluster Autopilot
Jalankan perintah berikut:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=
Melepaskan tag dari kumpulan node
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 kumpulan node:
gcloud beta container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --resource-manager-tags=
GKE menghapus tag yang sudah ada dari kumpulan node tersebut.
Hapus kunci dan nilai tag
Untuk menghapus kunci atau nilai tag, pastikan tag dilepas dari semua resource. Selanjutnya, lihat Menghapus tag di dokumentasi Resource Manager.
Bandingkan 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 penerapan 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 dalam cluster yang sama seperti Tag, meskipun Anda tidak dapat menggunakan tag jaringan untuk menerapkan kebijakan firewall jaringan.
Untuk perbandingan mendetail antara Tag dan tag jaringan, baca Perbandingan Tag dan tag jaringan dalam dokumentasi Cloud NGFW.
Perbedaan fungsi pada node pool yang disediakan secara otomatis
Di cluster Autopilot dan kumpulan node Standar yang tidak menggunakan penyediaan otomatis node, tag jaringan dan Tag menunjukkan perilaku yang serupa. Tabel berikut menunjukkan perbedaan fungsional antara tag jaringan dan Tag dalam kumpulan node yang disediakan secara otomatis di Cluster Standar:
Tindakan | Perilaku tag jaringan | Perilaku tag |
---|---|---|
GKE menyediakan node pool secara otomatis | GKE menerapkan tag jaringan level cluster | GKE menerapkan tag level cluster |
Anda memperbarui tag atau tag jaringan pada kumpulan node yang disediakan secara otomatis |
|
GKE menimpa tag yang sudah ada untuk kumpulan node, terlepas dari apakah tag level cluster ada atau tidak |
Anda memperbarui tag atau tag jaringan untuk seluruh cluster | GKE menimpa tag jaringan untuk node pool yang disediakan otomatis oleh baru dan lama dalam cluster. | GKE menerapkan tag level cluster baru ke node pool baru yang disediakan secara otomatis. Kumpulan node yang disediakan secara otomatis yang 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