Menyiapkan IAP untuk Compute Engine

Panduan ini menjelaskan cara menyiapkan instance Compute Engine dengan Identity-Aware Proxy (IAP). Jika Anda telah menyiapkan instance Compute Engine dan hanya perlu mengaktifkan IAP, lihat Mengaktifkan IAP untuk Compute Engine.

Tujuan

Dalam tutorial ini, Anda akan mempelajari hal-hal berikut:

  • Membuat template instance Compute Engine dan grup instance terkelola (MIG).
  • Mendapatkan nama domain dan sertifikat.
  • Membuat load balancer HTTPS dengan sertifikat.
  • Mengaktifkan IAP.
  • Menguji apakah IAP berfungsi.

Biaya

Tutorial ini menggunakan komponen Google Cloudyang dapat ditagih, termasuk:

  • Compute Engine
    • 4 Mesin Virtual (VM)
  • Networking
    • Aturan Penerusan Load Balancer Global
    • Traffic Ingress

Untuk perkiraan biaya berdasarkan proyeksi penggunaan, lihat Kalkulator Harga ini.

Pengguna Cloud Platform baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

Sebelum memulai tutorial ini, Anda memerlukan hal berikut:

  1. Pilih atau buat Google Cloud project.
    BUKA HALAMAN PROJECT

  2. Aktifkan penagihan untuk project Anda. Baca cara Mengubah setelan penagihan project

Langkah 1: Buat template Compute Engine

Di konsol Google Cloud , buka halaman Compute Engine > Create an instance template lalu pilih project tempat Anda ingin membuat template.

BUKA HALAMAN CREATE AN INSTANCE TEMPLATE

Gunakan nilai default kecuali untuk hal berikut:

  • Jenis mesin:
    • micro (f1-micro)
  • Cakupan akses:
    • Tetapkan akses untuk setiap API
    • Compute Engine: Hanya Baca
  • Firewall:
    • Izinkan traffic HTTP
  • Di bagian Management, di bagian Automation > Startup script, salin dan tempel skrip berikut:
    # Copyright 2021 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #      http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    apt-get -y update
    apt-get -y install git
    apt-get -y install virtualenv
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    cd python-docs-samples/iap
    virtualenv venv -p python3
    source venv/bin/activate
    pip install -r requirements.txt
    cat example_gce_backend.py |
      sed -e "s/YOUR_BACKEND_SERVICE_ID/$(gcloud compute backend-services describe my-backend-service --global --format="value(id)")/g" |
      sed -e "s/YOUR_PROJECT_ID/$(gcloud config get-value account | tr -cd "[0-9]")/g" > real_backend.py
    gunicorn real_backend:app -b 0.0.0.0:80
    

Setelah selesai memperbarui nilai, klik Create untuk membuat template.

Langkah 2: Buat Managed Instance Group

Di konsol Google Cloud , buka halaman Compute Engine > Create a new instance group dan pilih project tempat Anda ingin membuat Grup Instance Terkelola.

BUKA HALAMAN CREATE AN INSTANCE GROUP

Gunakan nilai default kecuali untuk hal berikut:

  • Nama: my-managed-instance-group
  • Lokasi: Multi-zona
  • Template instance: Pilih template instance yang Anda buat pada Langkah 1
  • Jumlah instance: Untuk mengubah jumlah instance, Anda harus menonaktifkan penskalaan otomatis terlebih dahulu.
  • Mode penskalaan otomatis: Jangan lakukan penskalaan otomatis
  • Health check: pilih Create a health check, lalu masukkan nilai berikut:

    • Name: my-health-check
    • Protokol: HTTP

    Gunakan health check baru Anda dengan mengklik Simpan dan lanjutkan.

Setelah selesai memperbarui nilai, klik Buat untuk membuat Managed Instance Group (MIG).

Langkah 3: Dapatkan nama domain dan sertifikat

Untuk menggunakan Load Balancer dengan traffic HTTPS, Anda memerlukan nama domain dan sertifikat yang ditandatangani. Anda dapat mendaftarkan domain di Cloud Domains, atau menggunakan registrar domain pilihan Anda. Daftarkan domain Anda sebelum Anda melanjutkan.

Menyiapkan sertifikat

Buat sertifikat yang mengidentifikasi situs Anda kepada pengguna Anda. Untuk mengetahui informasi tentang cara membuat sertifikat, lihat Menggunakan sertifikat SSL yang dikelola Google.

CA Anda harus memverifikasi bahwa Anda adalah pemilik nama domain yang Anda daftarkan. Pada langkah-langkah berikut, Anda akan membuat VM untuk mengautentikasi domain Anda dengan CA.

Membuat VM untuk mengautentikasi kepemilikan domain Anda

Di konsol Google Cloud , buka halaman Compute Engine > Create an instance.

BUKA HALAMAN CREATE AN INSTANCE

Gunakan nilai default kecuali untuk hal berikut:

  • Nama: certbot-vm
  • Jenis mesin: micro (f1-micro)
  • Cakupan akses:
    • Tetapkan akses untuk setiap API
    • Compute Engine: Baca/Tulis
  • Boot disk image:
    • Debian GNU/Linux 9 (stretch)
  • Firewall:
    • Izinkan traffic HTTP
    • Izinkan traffic HTTPS

Setelah selesai memperbarui nilai, klik Buat untuk membuat instance VM. Catat alamat IP eksternal VM yang baru saja Anda buat. Anda akan memerlukannya di langkah berikutnya.

Menyiapkan domain Anda agar mengarah ke VM

Untuk menyiapkan domain agar mengarah ke VM, ikuti langkah-langkah berikut untuk mengonfigurasi A record:

  1. Login ke akun domain di host domain Anda.
  2. Temukan halaman untuk memperbarui data DNS domain Anda. Halaman ini mungkin bernama seperti Pengelolaan DNS, Pengelolaan Server Nama, atau Setelan Lanjutan.
  3. Ubah data A Anda ke nilai berikut:
    • Name/Host/Alias: @
    • Value: alamat IP eksternal VM yang Anda buat untuk mengautentikasi kepemilikan domain Anda di atas.
    • TTL: default untuk registrar Anda, atau 86400 (satu hari).
  4. Tunggu hingga data DNS diperbarui. Mungkin perlu waktu hingga satu hari agar data yang Anda tambahkan diterapkan.

Untuk mempelajari lebih lanjut, lihat artikel Tentang catatan A.

Menguji server Anda

Untuk menguji apakah server Anda berfungsi dengan benar, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Compute Engine > VM Instances.
    BUKA HALAMAN VM INSTANCES

  2. Di bagian Connect untuk certbot-vm, klik SSH.

  3. Jalankan perintah berikut untuk menjalankan server web kecil di VM Anda:

      mkdir web
      cd web
      echo "Hello" > index.html
      sudo busybox httpd -v -f
    
  4. Di browser web, buka nama domain yang Anda daftarkan sebelumnya. Browser web Anda akan menampilkan Hello, dan sesi SSH Anda akan menampilkan pesan yang berisi ... response:200. Jika belum, tunggu beberapa menit, lalu ulangi langkah ini.

  5. Setelah pengujian berhasil, tekan Ctrl+C untuk menghentikan server web.

Membuat sertifikat

Untuk membuat sertifikat, daftar ke Let's Encrypt dengan menjalankan perintah berikut di VM tempat YOUR_DOMAIN adalah nama domain Anda, tidak termasuk protokol:

sudo pkill busybox
sudo apt-get install -y certbot
sudo certbot certonly --standalone -d YOUR-DOMAIN

Selama proses ini, Let's Encrypt mungkin meminta alamat email untuk mengirimkan pengingat saat masa berlaku sertifikat Anda berakhir (secara default, 3 bulan setelah diterbitkan). Anda juga harus menyetujui Persyaratan Layanan Let's Encrypt.

Setelah Anda berhasil mendaftar, pesan yang bertuliskan Congratulations! Your certificate and chain have been saved at... akan muncul.

Tambahkan sertifikat ke project Anda

Untuk menambahkan sertifikat ke project Anda, jalankan perintah berikut di VM:

sudo su
cd /etc/letsencrypt/live/YOUR_DOMAIN
gcloud compute ssl-certificates create my-cert --certificate=fullchain.pem --private-key=privkey.pem

Setelah Anda berhasil membuat sertifikat, pesan yang mirip dengan: Created [https://www.googleapis.com/compute/v1/projects/example-project/global/sslCertificates/my-cert] akan muncul.

Sebelum melanjutkan, tutup sesi SSH.

Langkah 4: Buat load balancer

Sebelum memulai langkah ini, pastikan Anda telah menutup sesi SSH yang dimulai pada langkah sebelumnya. Jika sudah siap, ikuti langkah-langkah di bawah untuk membuat load balancer:

  1. Di konsol Google Cloud , buka halaman Network Services > Create a load balancer lalu pilih project tempat Anda ingin membuat load balancer.
    BUKA HALAMAN CREATE A LOAD BALANCER

  2. Pada HTTP(S) Load Balancing, klik Start configuration.

  3. Pilih From Internet to my VMs.

  4. Di halaman New external Application Load Balancer yang muncul, masukkan Name untuk load balancer Anda.

  5. Klik Backend configuration.

  6. Di bagian Backend services & backend buckets, pilih Create a backend service.

  7. Tambahkan nama untuk layanan backend Anda, seperti my-backend-service.

  8. Buka bagian Security, lalu pilih Enable IAP to secure access to your applications.

    Cloud CDN dan IAP tidak kompatibel. Jika Anda telah mengaktifkan Cloud CDN dan Anda memilih untuk mengaktifkan IAP, Cloud CDN akan otomatis dinonaktifkan.

  9. Klik Buat. Halaman Load balancing dimuat, dengan load balancer baru Anda ditampilkan dalam daftar load balancer.

  10. Setelah konsol Google Cloud selesai membuat load balancer baru, klik nama load balancer dan catat alamat IP eksternal di bagian Details > Frontend. Anda akan menggunakannya pada langkah berikutnya.

Menyiapkan domain Anda untuk mengarah ke load balancer

Untuk menyiapkan domain agar mengarah ke load balancer, konfigurasikan data A menggunakan langkah-langkah berikut:

  1. Login ke akun domain di host domain Anda.
  2. Temukan halaman untuk memperbarui data DNS domain Anda. Halaman ini mungkin bernama seperti Pengelolaan DNS, Pengelolaan Server Nama, atau Setelan Lanjutan.
  3. Ubah data A Anda ke nilai berikut:
    • Name/Host/Alias: @
    • Nilai: alamat IP eksternal load balancer yang Anda buat sebelumnya. Jangan sertakan port :443 dalam data DNS Anda.
    • TTL: default untuk registrar Anda, atau 86400 (satu hari).
  4. Tunggu hingga data DNS diperbarui. Mungkin perlu waktu hingga satu hari agar data yang baru saja Anda tambahkan diterapkan.
  5. Untuk menguji load balancer, gunakan browser web untuk membuka domain Anda dengan protokol https://.
    • Jika load balancer belum disiapkan, Anda akan melihat error "HTTP 502".
    • Saat load balancer siap, Anda akan melihat "Permintaan tidak sah".

Untuk mempelajari lebih lanjut, lihat artikel Tentang catatan A.

Mulai ulang VM Anda

Untuk mengautentikasi permintaan dari IAP dengan benar, Anda harus memulai ulang VM di MIG.

  1. Di konsol Google Cloud , buka Compute Engine > Instance groups page.
    BUKA HALAMAN GRUP INSTANCE
  2. Klik my-managed-instance-group.
  3. Di bagian atas detail grup instance yang muncul, klik Rolling Restart/Replace.
  4. Di halaman Restart/replace instances of my-managed-instance-group, tetapkan nilai berikut:
    • Operation: Restart
    • Maksimum tidak tersedia: 3 instance dari 3 instance
    • Waktu tunggu minimum: 0 dtk
  5. Setelah selesai memperbarui nilai, klik Mulai Ulang.

Langkah 5: Siapkan IAP

Mengonfigurasi firewall

Selanjutnya, konfigurasi firewall Anda untuk memblokir akses ke VM pokok dan hanya mengizinkan akses melalui IAP:

  1. Buka Google Cloud konsol VPC network > Firewall rules.
    BUKA HALAMAN ATURAN FIREWALL
  2. Centang kotak di samping aturan berikut:
    • default-allow-http
    • default-allow-https
    • default-allow-internal
  3. Klik Hapus.
  4. Klik Create firewall rule dan tetapkan nilai berikut:
    • Name: allow-iap-traffic
    • Target: Semua instance dalam jaringan
    • Rentang IP sumber (tekan Enter setelah Anda menempelkan setiap nilai di dalam kotak). Rentang IP dimasukkan dalam daftar yang diizinkan karena merupakan prasyarat untuk komunikasi load balancer ke backend.
      • 130.211.0.0/22
      • 35.191.0.0/16
    • Protocols and ports:
      • Protokol dan port yang ditentukan
      • tcp:80
  5. Setelah selesai memperbarui nilai, klik Create.

Menyiapkan IAP

Untuk menyiapkan IAP untuk project Anda, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Security > Identity-Aware Proxy lalu pilih project yang ingin Anda aktifkan IAP-nya.
    BUKA HALAMAN IDENTITY-AWARE PROXY
  2. Jika belum mengonfigurasi layar izin OAuth project Anda, Anda akan diminta untuk melakukannya:

    1. Buka OAuth consent screen.
      Konfigurasi layar izin
    2. Di bagian Email dukungan, pilih alamat email yang ingin Anda tampilkan sebagai kontak publik. Alamat email harus milik akun pengguna yang saat ini login atau milik Grup Google yang pengelola atau pemiliknya adalah pengguna yang saat ini login.
    3. Masukkan Nama aplikasi yang ingin ditampilkan.
    4. Tambahkan detail opsional yang Anda inginkan.
    5. Klik Save.

    Untuk mengubah informasi di layar izin OAuth nanti, seperti nama produk atau alamat email, ulangi langkah-langkah sebelumnya untuk mengonfigurasi layar izin.

  3. Di samping my-backend-service,

  4. Di jendela Turn on IAP yang muncul, centang kotak di samping "I have read the configuration requirements and configured my Compute Engine resource according to documentation".

  5. Klik Aktifkan.

Menambahkan akun utama ke daftar akses

Selanjutnya, tambahkan principal ke daftar akses IAP untuk project Anda.

  1. Di sisi kanan bagian IAM & admin > Identity-Aware Proxy Akses, klik Tambahkan.
  2. Masukkan akun utama yang ingin Anda beri akses, termasuk diri Anda, lalu tetapkan peran IAP-secured Web App User ke akun utama tersebut. Kepala sekolah dapat:
    • Akun Google: user@gmail.com
    • Google Grup: admins@googlegroups.com
    • Akun layanan: server@example.gserviceaccount.com
    • Domain Google Workspace: example.com

Langkah 6: Uji IAP

Untuk menguji apakah IAP berfungsi dengan benar, ikuti langkah-langkah berikut:

  1. Di browser web Anda, buka domain Anda.
    1. Jika Anda melihat "Permintaan tidak sah", coba lagi dalam beberapa menit.
  2. Saat Anda melihat layar login Google, login menggunakan Akun Google yang Anda beri akses pada langkah sebelumnya.
  3. Pesan akan muncul seperti "Hai, user@example.com. Saya adalah my-managed-instance-group-29z6."
  4. Coba muat ulang halaman. Browser Anda akan menampilkan nama 3 mesin di grup instance terkelola Anda. Load balancer ini mendistribusikan traffic di seluruh VM dalam grup.

Selamat! Anda telah berhasil mengaktifkan layanan yang di-load balanced menggunakan IAP.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Setelah selesai menyiapkan IAP untuk Compute Engine, Anda dapat membersihkan resource yang dibuat di Google Cloud agar Anda tidak ditagih untuk resource tersebut di masa mendatang. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.

Menghapus project

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

Untuk menghapus project:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Menghapus instance

Untuk menghapus instance Compute Engine:

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. Select the checkbox for the instance that you want to delete.
  3. To delete the instance, click More actions, click Delete, and then follow the instructions.

Menghapus aturan firewall untuk jaringan default

Untuk menghapus aturan firewall:

  1. In the Google Cloud console, go to the Firewall page.

    Go to Firewall

  2. Select the checkbox for the firewall rule that you want to delete.
  3. To delete the firewall rule, click Delete.

Langkah berikutnya

  • Coba ubah aplikasi contoh yang kita gunakan dalam tutorial ini untuk menyalurkan data lain.
  • Baca Praktik Terbaik untuk memahami cara menulis aplikasi Anda sendiri dan mengamankannya dengan IAP.