Menyiapkan gateway Connect
Panduan ini ditujukan bagi administrator platform yang perlu menyiapkan gateway Connect untuk digunakan oleh pengguna project dan akun layanan mereka. Penyiapan ini memungkinkan pengguna:
Gunakan konsol Google Cloud untuk login ke cluster terdaftar di luar Google Cloud dengan Google Cloud Identity-nya.
Gunakan
kubectl
untuk mengakses cluster melalui gateway Connect.
Konfigurasi ini hanya memungkinkan autentikasi pengguna dan layanan berdasarkan tanda pengenal perorangan, bukan keanggotaan mereka di Google Grup. Untuk menyiapkan dukungan grup, lihat Menyiapkan gateway Connect dengan Google Grup.
Jika Anda belum terbiasa dengan gateway Connect, lihat ringkasan untuk penjelasan konsep dasar dan cara kerjanya.
Sebelum memulai
Pastikan Anda telah menginstal alat command line berikut:
- Versi terbaru Google Cloud CLI, command line untuk berinteraksi dengan Google Cloud.
kubectl
untuk menjalankan perintah terhadap cluster Kubernetes. Jika Anda ingin instalkubectl
, ikuti ini petunjuk
Jika Anda menggunakan Cloud Shell sebagai lingkungan shell untuk berinteraksi Google Cloud, alat ini sudah diinstal untuk Anda.
Lakukan inisialisasi gcloud CLI untuk digunakan dengan project Anda, atau jalankan perintah berikut untuk memberikan otorisasi ke gcloud CLI dan menetapkan project sebagai default:
gcloud auth login gcloud config set project PROJECT_ID
Peran IAM yang diperlukan untuk penyiapan
Panduan ini mengasumsikan bahwa Anda memiliki izin roles/owner
di project Anda.
Jika Anda bukan pemilik project, mintalah pemilik project untuk memberi Anda
izin pada project sehingga Anda dapat melakukan tugas-tugas berikut:
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable
, yang disertakan dalam Admin Penggunaan Layanan peran (roles/serviceusage.serviceUsageAdmin
). Pemilik proyek dapat buat peran khusus denganserviceusage.services.enable
izin diaktifkan, atau memberi Andaroles/serviceusage.serviceUsageAdmin
, sebagai berikut:gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:USER_EMAIL_ADDRESS \ --role='roles/serviceusage.serviceUsageAdmin'
Untuk memberikan izin IAM ke pengguna dan akun layanan sehingga mereka dapat menggunakan gateway Connect, Admin IAM Project peran (
roles/resourcemanager.projectIamAdmin
), yang dapat dilakukan oleh pemilik project berikan perintah berikut:gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:USER_EMAIL_ADDRESS \ --role='roles/resourcemanager.projectIamAdmin'
Mengaktifkan API
Untuk menambahkan gateway ke project Anda, aktifkan Connect gateway API dan
API dependensi yang diperlukan. Jika pengguna hanya ingin melakukan autentikasi ke cluster
menggunakan Konsol Google Cloud, Anda tidak perlu mengaktifkan
connectgateway.googleapis.com
, tetapi Anda harus mengaktifkan API lainnya.
gcloud services enable --project=PROJECT_ID \
connectgateway.googleapis.com \
anthos.googleapis.com \
gkeconnect.googleapis.com \
gkehub.googleapis.com \
cloudresourcemanager.googleapis.com
Memverifikasi cluster terdaftar
Hanya cluster yang terdaftar ke fleet project Anda yang dapat diakses melalui gateway Connect. Cluster GKE lokal dan di cloud publik lainnya akan otomatis terdaftar saat dibuat. Namun, cluster GKE di Google Cloud dan cluster yang terpasang harus didaftarkan secara terpisah. Jika Anda perlu mendaftarkan cluster, ikuti petunjuk di panduan pendaftaran cluster kami. Perlu diperhatikan bahwa cluster GKE harus didaftarkan ke fleet untuk menggunakan gateway.
Untuk memastikan cluster telah didaftarkan, jalankan perintah berikut:
gcloud container fleet memberships list
Anda akan melihat daftar semua cluster yang terdaftar, seperti dalam contoh ini {i>output<i}:
NAME EXTERNAL_ID
cluster-1 0192893d-ee0d-11e9-9c03-42010a8001c1
cluster-2 f0e2ea35-ee0c-11e9-be79-42010a8400c2
Memberikan peran IAM ke pengguna
Akses ke cluster dikontrol oleh Identity and Access Management (IAM). Diperlukan
Peran IAM untuk mengakses cluster menggunakan kubectl
sedikit berbeda
dari peran untuk mengakses cluster di Konsol Google Cloud, seperti yang dijelaskan
di bagian berikut ini.
Berikan peran untuk akses melalui kubectl
Setidaknya, pengguna dan akun layanan memerlukan
peran IAM berikut untuk menggunakan kubectl
guna berinteraksi dengan cluster
melalui gateway Connect, kecuali jika pengguna memiliki roles/owner
dalam project:
roles/gkehub.gatewayAdmin
: Peran ini memungkinkan pengguna mengakses gateway Hubungkan API untuk menggunakankubectl
guna mengelola cluster.Jika pengguna hanya memerlukan akses hanya baca ke cluster yang terhubung, Anda dapat memberikan Sebagai gantinya,
roles/gkehub.gatewayReader
.Jika pengguna membutuhkan akses baca / tulis ke cluster yang terhubung, Anda dapat berikan
roles/gkehub.gatewayEditor
.
roles/gkehub.viewer
: Peran ini memungkinkan pengguna mengambil clusterkubeconfigs
.
Untuk detail tentang izin yang disertakan dalam peran ini, lihat Peran GKE Hub di dokumentasi IAM.
Anda dapat menggunakan perintah berikut untuk memberikan peran ini:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=MEMBER \
--role=GATEWAY_ROLE
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=MEMBER \
--role=roles/gkehub.viewer
dengan:
MEMBER
adalah pengguna atau akun layanan, yang ada di memformatuser|serviceAccount:emailID
, misalnya:user:alice@example.com
serviceAccount:test_sa@example-project.iam.gserviceaccount.com
GATEWAY_ROLE
adalahroles/gkehub.gatewayAdmin
,roles/gkehub.gatewayReader
atauroles/gkehub.gatewayEditor
.
Anda dapat mengetahui lebih lanjut cara memberikan izin dan peran IAM dalam Memberikan, mengubah, dan mencabut akses ke resource.
Memberikan peran untuk akses melalui konsol Google Cloud
Pengguna yang ingin berinteraksi dengan cluster di luar Google Cloud menggunakan konsol Google Cloud memerlukan peran IAM berikut minimal untuk melihat cluster:
roles/container.viewer
. Peran ini memungkinkan pengguna melihat GKE Halaman cluster dan resource container lainnya di Konsol Google Cloud. Sebagai detail tentang izin yang disertakan dalam peran ini, lihat Peran Kubernetes Engine dokumentasi IAM.roles/gkehub.viewer
. Peran ini memungkinkan pengguna melihat cluster di luar Google Cloud di Konsol Google Cloud. Perhatikan bahwa ini adalah salah satu peran yang diperlukan untuk akseskubectl
. Jika Anda sudah memberikan izin ini peran kepada pengguna, Anda tidak perlu memberikannya lagi. Untuk mengetahui detail tentang yang tercakup dalam peran ini, lihat Peran GKE Hub di dokumentasi IAM.Dalam perintah berikut, ganti
PROJECT_ID
dengan project ID dari project host fleet. Selain itu, gantiMEMBER
dengan alamat email atau akun layanan pengguna menggunakan formatuser|serviceAccount:emailID
, misalnya:user:alice@example.com
serviceAccount:test_sa@example-project.iam.gserviceaccount.com
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=MEMBER \ --role=roles/container.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=MEMBER \ --role=roles/gkehub.viewer
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran IAM, lihat Mengelola akses ke project, folder, dan organisasi dokumentasi IAM.
Mengonfigurasi otorisasi RBAC
Setiap server Kubernetes API cluster harus dapat memberikan otorisasi
permintaan yang berasal dari Konsol Google Cloud atau perintah kubectl
yang masuk melalui gateway Connect dari pengguna dan layanan yang Anda tentukan
menggunakan akun layanan. Untuk memastikan hal ini, Anda perlu memperbarui kontrol akses berbasis peran
(RBAC) di setiap cluster yang ingin Anda sediakan melalui
gateway. Anda perlu menambahkan atau memperbarui kebijakan berikut:
- Kebijakan peniruan identitas yang mengizinkan agen Connect untuk mengirim permintaan ke server Kubernetes API atas nama pengguna.
- Kebijakan izin yang menentukan izin yang dimiliki pengguna di
. Peran ini dapat berupa peran level cluster seperti
clusterrole/cluster-admin
atauclusterrole/cloud-console-reader
, atau peran level namespace sepertirole/default/pod-reader
.
(Opsional) Buat peran cloud-console-reader
Pengguna yang telah diautentikasi yang ingin mengakses resource cluster di Konsol Google Cloud
harus memiliki izin Kubernetes yang relevan untuk melakukannya. Jika tidak ingin memberikan izin yang lebih luas kepada pengguna tersebut, seperti admin cluster, Anda dapat membuat peran RBAC kustom yang menyertakan izin minimum untuk melihat node, volume persisten, pod, dan kelas penyimpanan cluster. Anda dapat mendefinisikan rangkaian
izin dengan membuat resource ClusterRole
RBAC,
cloud-console-reader
, di cluster.
cloud-console-reader
memberikan get
, list
, dan watch
kepada penggunanya
izin pada node cluster, volume persisten, pod, dan kelas penyimpanan,
yang memungkinkan mereka melihat
detail tentang sumber daya ini.
kubectl
Untuk membuat cloud-console-reader
ClusterRole
dan menerapkannya ke cluster, jalankan metode
perintah berikut:
cat <<EOF > cloud-console-reader.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: cloud-console-reader
rules:
- apiGroups: [""]
resources: ["nodes", "persistentvolumes", "pods"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
EOF
kubectl apply -f cloud-console-reader.yaml
Kemudian, Anda dapat memberikan peran ini kepada pengguna saat menyiapkan kebijakan izin, seperti yang dijelaskan di bagian berikutnya.
Membuat dan menerapkan kebijakan RBAC yang diperlukan
Berikut adalah cara membuat dan menerapkan kebijakan RBAC yang diperlukan. Cara paling mudah
Caranya adalah dengan menggunakan
gcloud CLI untuk membuat dan menerapkan
kebijakan yang sesuai untuk Anda. Atau, jika mau, Anda dapat membuat
file kebijakan RBAC dan menerapkannya dengan kubectl
.
gcloud
Untuk membuat dan menerapkan kebijakan ke cluster yang Anda pilih dengan gcloud CLI, jalankan perintah berikut:
gcloud container fleet memberships generate-gateway-rbac \
--membership=MEMBERSHIP_NAME \
--role=ROLE \
--users=USERS \
--project=PROJECT_ID \
--kubeconfig=KUBECONFIG_PATH \
--context=KUBECONFIG_CONTEXT \
--apply
Ganti kode berikut:
- MEMBERSHIP_NAME: nama yang digunakan untuk mewakili cluster secara unik dalam armadanya. Anda dapat mengetahui cara memeriksa nama keanggotaan cluster Anda di Mendapatkan status keanggotaan fleet.
- ROLE: peran Kubernetes yang ingin Anda berikan kepada pengguna di
cluster, misalnya,
clusterrole/cluster-admin
,clusterrole/cloud-console-reader
, ataurole/mynamespace/namespace-reader
. Peran ini harus sudah ada sebelum Anda jalankan perintah tersebut. - USERS: alamat email pengguna (akun pengguna atau
akun layanan) yang ingin Anda berikan izin, sebagai
comma separated list. Contoh:
--users=foo@example.com,test-acct@test-project.iam.gserviceaccount.com
. - PROJECT_ID: project ID tempat cluster didaftarkan.
- KUBECONFIG_PATH: jalur file lokal tempat kubeconfig Anda
yang berisi entri untuk cluster akan disimpan. Dalam kebanyakan kasus adalah
$HOME/.kube/config
. KUBECONFIG_CONTEXT: konteks cluster seperti yang terlihat di file {i>kubeconfig<i}. Anda bisa mendapatkan konteks saat ini dari command line dengan menjalankan
kubectl config current-context
. Baik Anda menggunakan konteks atau tidak, pastikan bahwa kode itu berfungsi untuk mengakses cluster dengan menjalankan perintah berikut:kubectl get namespaces \ --kubeconfig=KUBECONFIG_PATH \ --context=KUBECONFIG_CONTEXT
Setelah menjalankan gcloud container fleet memberships generate-gateway-rbac
,
Anda akan melihat sesuatu seperti berikut di akhir output:
connectgateway_example-project-12345_global_example-membership-name
Ini adalah konteks untuk mengakses cluster melalui gateway Connect.
Untuk detail selengkapnya tentang perintah generate-gateway-rbac
, lihat
Panduan referensi gcloud CLI.
Jika Anda melihat error seperti ERROR: (gcloud.container.hub.memberships)
Invalid choice: 'generate-gateway-rbac'
saat menjalankan perintah ini, update
Google Cloud CLI dengan mengikuti
panduan update.
kubectl
Contoh berikut menunjukkan cara membuat kebijakan yang sesuai untuk pengguna (foo@example.com
) dan akun layanan (test@example-project.iam.gserviceaccount.com
), yang memberi mereka izin cluster-admin
di cluster dan menyimpan file kebijakan sebagai /tmp/gateway-rbac.yaml
. Selanjutnya, kebijakan tersebut akan diterapkan ke cluster yang terkait dengan konteks saat ini:
cat <<EOF > /tmp/gateway-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: gateway-impersonate
rules:
- apiGroups:
- ""
resourceNames:
- foo@example.com
- test@example-project.iam.gserviceaccount.com
resources:
- users
verbs:
- impersonate
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: gateway-impersonate
roleRef:
kind: ClusterRole
name: gateway-impersonate
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: connect-agent-sa
namespace: gke-connect
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: gateway-cluster-admin
subjects:
- kind: User
name: foo@example.com
- kind: User
name: test@example-project.iam.gserviceaccount.com
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
EOF
# Apply policies to the cluster.
kubectl apply --kubeconfig=KUBECONFIG_PATH -f /tmp/gateway-rbac.yaml
Anda dapat mengetahui lebih lanjut tentang menentukan izin akses RBAC di Menggunakan otorisasi RBAC.
Dukungan Kontrol Layanan VPC
Kontrol Layanan VPC menyediakan lapisan pertahanan keamanan tambahan Layanan Google Cloud yang tidak bergantung pada Identity and Access Management (IAM). IAM memungkinkan analisis terperinci berbasis identitas akses kontrol, Kontrol Layanan VPC memungkinkan perimeter berbasis konteks yang lebih luas keamanan, termasuk mengontrol traffic keluar data di seluruh perimeter Anda dapat menentukan bahwa hanya project tertentu yang dapat mengakses data BigQuery. Anda dapat mempelajari lebih lanjut cara kerja Kontrol Layanan VPC untuk melindungi data Anda di Ringkasan Kontrol Layanan VPC.
Anda bisa menggunakan Kontrol Layanan VPC dengan gateway Connect untuk setelah Anda memastikan bahwa API yang diperlukan untuk menggunakan gateway dapat diakses dari dalam perimeter layanan yang ditentukan.
Apa langkah selanjutnya?
- Pelajari cara menggunakan gateway Connect untuk terhubung ke cluster dari command line.
- Lihat contoh cara menggunakan gateway Connect sebagai bagian dari otomatisasi DevOps dalam tutorial Mengintegrasikan dengan Cloud Build kami.