Menyiapkan penerusan TCP IAP dengan alamat IP atau nama host di lingkungan Google Cloud atau non-Google Cloud

Halaman ini menjelaskan cara menyiapkan dan menggunakan penerusan TCP Identity-Aware Proxy (IAP) dengan fitur alamat IP atau nama host.

Untuk menggunakan penerusan TCP IAP dengan fitur alamat IP atau nama host, Anda harus memiliki lisensi BeyondCorp Enterprise.

Ringkasan

Anda dapat menggunakan Google Cloud CLI untuk membuat tunnel ke resource menggunakan alamat IP atau nama host pribadi resource. Jika Anda memiliki resource eksternal di non-Google Cloud yang terhubung ke Google Cloud melalui Cloud Interconnect atau VPN, Anda dapat menggunakan penerusan TCP IAP dengan resource tersebut.

Sebelum memulai

Jika perlu melakukan tunnel ke resource di luar Google Cloud, Anda harus mengonfigurasi konektivitas hybrid. Konektivitas hybrid diperlukan untuk menghubungkan resource eksternal non-Google Cloud ke Google Cloud. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Cloud Interconnect atau Cloud VPN.

Router cloud Anda harus memberitahukan rentang IP IAP-TCP 35.235.240.0/20, sehingga tujuan tersebut mengirimkan traffic respons kembali melalui Cloud VPN atau Cloud Interconnect, bukan melalui internet. Jika tidak memiliki konfigurasi ini, Anda tidak dapat membuat tunnel ke resource di luar project Google Cloud.

Untuk mengonfigurasi router cloud Anda agar mengiklankan rentang IP IAP-TCP 35.235.240.0/20, ikuti petunjuk di Rentang IP kustom iklan.

Prosedur berikut memberikan contoh gcloud untuk menyelesaikan tugas. Untuk mendapatkan informasi tentang cara berinteraksi dengan grup tujuan menggunakan API, lihat Resource REST: projects.iap_tunnel.locations.destGroups

Membuat grup tujuan tunnel

Saat mengonfigurasi tunnel, Anda menentukan grup tujuan yang akan digunakan untuk pemeriksaan izin. Grup tujuan tunnel mewakili resource yang memiliki batasan akses tunnel yang sama. Anda dapat membuat sejumlah grup tujuan, masing-masing dengan sejumlah rentang IP atau FQDN yang cocok. Grup tujuan dapat tumpang-tindih untuk fleksibilitas yang lebih besar.

Saat membuat grup tujuan, Anda harus menentukan wilayah. Untuk hasil terbaik, region yang Anda tentukan harus cocok dengan lokasi resource tujuan. Misalnya, jika resource terhubung dengan VPN, Anda harus menggunakan region gateway VPN.

Untuk membuat grup tujuan, Anda harus memiliki izin iap.tunnelDestGroups.create, yang dapat diberikan melalui peran iap.tunnelDestGroupEditor. Untuk memberikan satu peran, baca bagian Memberikan satu peran dalam dokumentasi IAM.

Konsol

  1. Buka halaman IAP, lalu pilih project jika belum dipilih.

  2. Pada tab SSH and TCP resources, klik Create destination group.

  3. Masukkan nama untuk nama grup Anda. Nama grup hanya boleh berisi huruf kecil (a-z) dan tanda hubung (-).

  4. Dari menu drop-down, pilih wilayah untuk membuat grup tujuan.

  5. Di bagian IP address, klik Add row, lalu masukkan alamat IP atau Fully Qualified Domain Names (FQDN) untuk resource.

    Rentang IP terdiri dari rentang yang dipisahkan koma menggunakan notasi CIDR, seperti 10.1.2.0/24,172.0.0.0/8.

    Daftar FQDN adalah daftar nama host yang dipisahkan koma, seperti *.internal.company.com. Anda dapat menggunakan karakter pengganti dengan entri FQDN.

  6. Klik Buat grup tujuan.

gcloud CLI

gcloud iap tcp dest-groups create YOUR_GROUP_NAME \
  --region=REGION \
  --ip-range-list=IP_RANGE_LIST \
  --fqdn-list=FQDN_LIST

Ganti kode berikut:

  • YOUR_GROUP_NAME: Nama grup Anda. Nama grup hanya boleh berisi huruf kecil (a-z) dan tanda hubung (-).
  • REGION: Wilayah tempat membuat grup tujuan, seperti us-central1.
  • IP_RANGE_LIST: Opsional. Daftar rentang IP, yang terdiri dari rentang yang dipisahkan koma menggunakan notasi CIDR, seperti 10.1.2.0/24,172.0.0.0/8.
  • FQDN_LIST: Opsional. Daftar FQDN adalah daftar nama host yang dipisahkan koma, seperti *.internal.company.com. Jika entri FQDN memiliki awalan karakter pengganti, entri tersebut akan cocok dengan nama host dengan akhiran yang ditentukan. Jika tidak, kolom ini memerlukan kecocokan persis. Jika permintaan cocok dengan rentang IP atau FQDN apa pun, permintaan akan dianggap cocok.

Jika Anda tidak yakin tentang grup apa yang sudah ada, jalankan perintah berikut untuk menampilkan grup tersebut:

gcloud iap tcp dest-groups list \
  --region=REGION

Mengelola grup tujuan tunnel

Anda dapat melihat detail grup tujuan, mengubah grup tujuan, dan menghapusnya.

Konsol

  1. Buka halaman IAP, lalu klik tab Resource SSH dan TCP.

    • Untuk melihat detail grup tujuan, klik nama grup tujuan.

    • Untuk mengubah grup tujuan, pilih grup tujuan, lalu klik ikon pensil untuk membuka panel Edit destination group. Anda juga dapat menghapus grup tujuan dari panel ini.

    • Untuk menghapus grup tujuan, pilih grup tujuan, lalu klik ikon tempat sampah.

gcloud CLI

Untuk mengetahui detail tentang cara mengelola grup tujuan menggunakan gcloud CLI, lihat perintah gcloud grup tujuan.

Mengonfigurasi izin tunnel

Untuk membuat tunnel, Anda harus memiliki izin iap.tunnelDestGroups.accessViaIAP pada grup tujuan yang relevan. Anda dapat memberikan izin melalui peran iap.tunnelResourceAccessor.

Untuk mengonfigurasi izin pada grup tujuan, Anda harus memiliki izin iap.tunnelDestGroups.setIamPolicy, yang dapat diberikan melalui peran iap.admin.

Konsol

  1. Buka halaman IAP.

  2. Pada tab SSH and TCP resources, pilih grup tujuan yang izinnya ingin Anda konfigurasi.

  3. Di panel yang terbuka, klik Tambahkan akun utama, lalu masukkan alamat email untuk pengguna.

  4. Di bagian Tetapkan peran, pilih peran yang akan ditetapkan ke akun utama.

  5. Klik Simpan.

gcloud CLI

gcloud iap tcp dest-groups add-iam-policy-binding \
  --member=MEMBER \
  --role=ROLE \
  --dest-group=GROUP_NAME \
  --region=REGION

Ganti kode berikut:

  • MEMBER: Alamat email untuk pengguna, seperti user:exampleuser@company.com.
  • ROLE: Peran IAP yang diperlukan, roles/iap.tunnelResourceAccessor.
  • GROUP_NAME: Nama grup tujuan.
  • REGION: Nama wilayah, seperti us-central1.

Memahami penggunaan tunnel

Ada tiga perintah gcloud CLI yang dapat Anda gunakan saat menangani IAP-TCP: start-iap-tunnel, ssh, dan scp.

Perintah IAP-TCP telah diperbarui untuk mendukung tunneling berbasis IP dan FQDN. Untuk beralih ke alamat IP atau FQDN, lakukan hal berikut saat menggunakan perintah:

  • Tentukan alamat IP atau FQDN, bukan nama instance.
  • Gunakan --region, bukan --zone.
  • Gunakan --dest-group untuk menentukan grup tujuan yang akan digunakan.
  • Gunakan --network untuk menentukan nama jaringan VPC yang akan digunakan.

Alamat IP yang Anda tentukan harus merupakan alamat IP pribadi tujuan. Anda tidak dapat menggunakan IAP-TCP dengan alamat IP publik. Jika Anda menggunakan FQDN, parameter tersebut harus di-resolve ke alamat IP pribadi tujuan. Perhatikan bahwa resolusi nama dilakukan dari dalam jaringan VPC yang Anda tentukan, bukan dari jaringan klien. Misalnya, jika Anda mencoba membuat tunnel ke vm.corp.company.com, langkah yang mengonversi vm.corp.company.com menjadi alamat IP terjadi dalam konteks jaringan VPC.

Wilayah yang Anda tentukan harus cocok dengan wilayah grup tujuan.

Jaringan yang Anda tentukan harus cocok dengan nama jaringan VPC yang memiliki akses ke tujuan. Nama jaringan biasanya adalah default. Anda dapat melihat daftar nama jaringan pada halaman jaringan VPC di konsol Google Cloud, atau Anda dapat mengambil daftar nama jaringan dengan menjalankan perintah berikut:

gcloud compute networks list --format='value(name)'

Contoh

Contoh berikut menggunakan contoh alamat IP 172.16.1.2. Setiap perintah juga dapat menggunakan FQDN (misalnya, example.internal.company.com) sebagai pengganti alamat IP.

Contoh SSH

Untuk memulai sesi SSH ke 172.16.1.2, jalankan perintah berikut:

gcloud compute ssh 172.16.1.2 \
    --region=us-central1 \
    --dest-group=DESTINATION_GROUP_NAME \
    --network=default \
    --tunnel-through-iap

Ganti DESTINATION_GROUP_NAME dengan nama grup tujuan.

Perlu diperhatikan bahwa --plain bersifat tersirat, sehingga tidak ada upaya untuk otomatis mengelola dan mendorong kunci SSH saat menggunakan alamat IP.

Jika Anda menerima error Permission denied (publickey), perintah tidak akan menemukan file yang berisi kunci SSH. Untuk mengatasi masalah ini, tambahkan jalur ke file yang berisi kunci pribadi SSH sebagai parameter untuk perintah SSH, seperti yang ditunjukkan pada contoh berikut:

gcloud compute ssh 172.16.1.2 \
    --region=us-central1 \
    --dest-group=DESTINATION_GROUP_NAME \
    --network=default \
    --tunnel-through-iap \
    -- -i ~/.ssh/google_compute_engine

Ganti DESTINATION_GROUP_NAME dengan nama grup tujuan.

Jika Anda ingin login sebagai pengguna tertentu, gunakan format USER@IP, bukan menentukan IP saja:

gcloud compute ssh user@172.16.1.2 \
    --region=us-central1 \
    --dest-group=DESTINATION_GROUP_NAME \
    --network=default \
    --tunnel-through-iap

Jika akun dilindungi sandi, Anda harus memasukkan sandi. Jika akun dilindungi oleh pasangan kunci SSH pribadi atau publik, Anda harus menentukannya menggunakan flag -- -i seperti yang ditentukan di atas.

Contoh tunnel

Untuk membuat tunnel ke port TCP lain, gunakan perintah start-iap-tunnel. Untuk membuat tunnel dari localhost:8022 ke port 172.16.1.2:8085, jalankan perintah berikut:

gcloud compute start-iap-tunnel 172.16.1.2 8085 \
    --local-host-port=localhost:8022 \
    --region=us-central1 \
    --dest-group=destination-group-name \
    --network=default

Perhatikan bahwa komputer tujuan harus memproses port 8085 dalam contoh ini.

Setelah membuat tunnel, Anda dapat menggunakan alat apa pun, seperti PuTTy, untuk membuat koneksi.

Contoh SCP

Untuk melakukan SCP file ke 172.16.1.2, jalankan perintah berikut:

gcloud compute scp file.txt 172.16.1.2:~/ \
    --region=us-central1 \
    --dest-group=destination-group-name \
    --network=default \
    --tunnel-through-iap

Perlu diperhatikan bahwa --plain bersifat tersirat, sehingga tidak ada upaya untuk otomatis mengelola dan mendorong kunci SSH saat menggunakan alamat IP.

Contoh ProxyCommand SSH

Untuk menggunakan perintah sebagai ProxyCommand yang selalu melakukan tunnel ke 172.16.1.2, tambahkan entri ke konfigurasi ~/.ssh/config atau yang setara, seperti yang ditunjukkan dalam contoh berikut:

Host example
ProxyCommand gcloud compute start-iap-tunnel 172.16.1.2 '%p' \
    --listen-on-stdin \
    --region=us-central1 \
    --dest-group=destination-group-name \
    --network=default \
    --verbosity=warning
  

ProxyCommand akan berlaku saat Anda menjalankan perintah berikut: ssh example

Anda juga dapat menyiapkan ProxyCommand untuk menangani banyak nama host, seperti yang ditunjukkan pada contoh berikut:

Host *.internal.company.com
ProxyCommand gcloud compute start-iap-tunnel '%h' '%p' 
--listen-on-stdin
--region=us-central1
--dest-group=destination-group-name
--network=default --verbosity=warning

ProxyCommand akan berlaku saat Anda menjalankan perintah berikut: ssh example.internal.company.com