Cakupan akses di GKE


Halaman ini menjelaskan cakupan akses default yang diberikan ke node di cluster Google Kubernetes Engine (GKE).

Apa itu cakupan akses?

Cakupan akses adalah metode lama untuk memberikan izin bagi node Anda, dan untuk workload yang berjalan pada node Anda jika workload menggunakan kredensial default aplikasi (ADC). Cakupan akses menentukan cakupan OAuth yang digunakan dalam panggilan API dari library klien atau gcloud CLI.

Sebaiknya Anda tidak menetapkan cakupan akses Anda sendiri. Sebagai gantinya, Anda harus menggunakan izin IAM atau kontrol akses berbasis peran (RBAC) Kubernetes untuk memberikan akses ke akun layanan IAM atau akun layanan Kubernetes tertentu.

Cakupan akses default

Saat Anda membuat cluster GKE baru, Google Cloud menetapkan serangkaian cakupan akses default ke node berdasarkan akun layanan yang digunakan oleh node. Cakupan akses ini memungkinkan fungsionalitas tertentu untuk GKE. Anda juga dapat menetapkan cakupan akses secara manual menggunakan flag --scopes saat membuat Cluster standar. Cluster Autopilot, atau node pool. Anda tidak dapat mengubah cakupan akses pada kumpulan node yang ada. Sebagai gantinya, buat kumpulan node baru dengan cakupan baru dan migrasikan workload ke kumpulan node tersebut.

Bagian berikut menjelaskan cakupan akses default yang ditambahkan GKE ke node berdasarkan apakah Anda menentukan akun layanan kustom atau tidak, dan apakah Anda menentukan cakupan akses secara manual.

Cluster Autopilot

Akun layanan Apakah Anda menentukan cakupan akses secara manual? Cakupan akses yang ditambahkan GKE
Compute Engine default service account Tidak
  • https://www.googleapis.com/auth/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write: ditambahkan jika Cloud Logging diaktifkan
  • https://www.googleapis.com/auth/monitoring: ditambahkan jika Cloud Monitoring diaktifkan
Ya Cakupan yang ditentukan secara manual
Akun layanan kustom Tidak https://www.googleapis.com/auth/cloud-platform
Ya Cakupan yang ditentukan secara manual

Cluster standar

Akun layanan Cakupan akses yang ditentukan secara manual? Cakupan akses GKE
Compute Engine default service account Tidak
  • https://www.googleapis.com/auth/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write: ditambahkan jika Cloud Logging diaktifkan
  • https://www.googleapis.com/auth/monitoring: ditambahkan jika Cloud Monitoring diaktifkan
Ya
  • Cakupan yang ditentukan secara manual
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: ditambahkan jika Cloud Logging diaktifkan
  • https://www.googleapis.com/auth/monitoring: ditambahkan jika Cloud Monitoring diaktifkan
Akun layanan kustom Tidak
  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/cloud-platform
Ya
  • Cakupan yang ditentukan secara manual
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: ditambahkan jika Cloud Logging diaktifkan
  • https://www.googleapis.com/auth/monitoring: ditambahkan jika Cloud Monitoring diaktifkan

Mengonfigurasi akun layanan kustom untuk workload

IAM adalah sistem kontrol akses untuk memberikan peran yang diizinkan kepada pengguna dan akun layanan dalam project Google Cloud Anda. Akun layanan adalah Akun Google khusus yang melakukan tugas, seperti men-deploy aplikasi, atas nama Anda. Anda menggunakan IAM untuk membuat akun layanan, lalu menggunakan binding kebijakan IAM untuk mengamankan akun.

Jika workload Anda memerlukan akses ke Compute Engine, berikan peran Admin Compute Engine kepada akun layanan. Jika workload Anda perlu mengambil image pribadi dari Artifact Registry, lihat Mengonfigurasi kontrol akses untuk repositori Artifact Registry.

Membuat akun layanan

Untuk membuat akun layanan kustom bernama kubernetes-engine-node-sa, jalankan perintah berikut:

export NODE_SA_NAME=kubernetes-engine-node-sa
gcloud iam service-accounts create $NODE_SA_NAME \
  --display-name "GKE Node Service Account"
export NODE_SA_EMAIL=`gcloud iam service-accounts list --format='value(email)' \
  --filter='displayName:GKE Node Service Account'`

Memberikan peran minimal

Untuk mengonfigurasi akun layanan dengan peran dan izin minimal yang diperlukan agar node GKE Anda dapat berfungsi, jalankan perintah berikut, dengan $PROJECT sebagai ID project:

export PROJECT=`gcloud config get-value project`
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/monitoring.metricWriter
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/monitoring.viewer
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/logging.logWriter

Memberikan peran tambahan

Untuk memberikan peran Admin Compute Engine kepada akun layanan, jalankan perintah berikut:

gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/compute.admin

Untuk mempelajari cara memberi akun layanan akses ke image pribadi yang disimpan di Artifact Registry, lihat Memberikan akses ke cluster Google Kubernetes Engine.

Membuat cluster atau node pooldengan akun layanan kustom

Untuk membuat cluster yang menggunakan akun layanan kustom, jalankan perintah berikut:

gcloud container clusters create --service-account=$NODE_SA_EMAIL

Untuk membuat node pooldi cluster yang ada:

gcloud container node-pools create --service-account=$NODE_SA_EMAIL