Halaman ini menjelaskan cara menyiapkan dan menggunakan penerusan TCP Identity-Aware Proxy (IAP) dengan fitur alamat IP atau nama host.
Ringkasan
Anda dapat menggunakan Google Cloud CLI untuk membuat tunnel ke resource menggunakan alamat IP pribadi atau nama host resource. Jika Anda memiliki resource eksternal di non-Google Cloud terhubung ke Google Cloud melalui Cloud Interconnect atau VPN, Anda dapat menggunakan penerusan TCP IAP dengan resource tersebut.
Sebelum memulai
Jika perlu membuat tunnel ke resource di luar Google Cloud, Anda harus mengonfigurasi konektivitas hybrid. Konektivitas hybrid diperlukan untuk menghubungkan resource non-Google Cloud eksternal Anda keGoogle Cloud. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Cloud Interconnect atau Cloud VPN.
Router cloud Anda harus mengiklankan rentang IP IAP-TCP
35.235.240.0/20
, sehingga tujuan mengirim traffic respons kembali melalui
Cloud VPN atau Cloud Interconnect, bukan melalui internet. Jika tidak
memiliki konfigurasi ini, Anda tidak dapat membuat tunnel ke resource eksternal untuk
project Google Cloud .
Untuk mengonfigurasi cloud router agar mengiklankan rentang IP IAP-TCP 35.235.240.0/20
, ikuti petunjuk di Mengiklankan rentang IP kustom.
Prosedur berikut memberikan contoh gcloud untuk menyelesaikan tugas. Untuk mengetahui 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 region. Untuk hasil terbaik, region yang Anda tentukan harus cocok dengan lokasi resource tujuan. Misalnya, jika resource terhubung melalui VPN, Anda harus menggunakan region gateway VPN.
Untuk membuat grup tujuan, Anda harus memiliki izin iap.tunnelDestGroups.create
, yang dapat Anda berikan melalui peran iap.tunnelDestGroupEditor
. Untuk memberikan satu peran, lihat Memberikan satu peran dalam dokumentasi IAM.
Konsol
Buka halaman IAP dan pilih project jika belum dipilih.
Di tab SSH and TCP resources, klik Create destination group.
Masukkan nama untuk nama grup Anda. Nama grup hanya boleh berisi huruf kecil (a-z) dan tanda hubung (-).
Dari menu dropdown, pilih region tempat Anda ingin membuat grup tujuan.
Di bagian Alamat IP, klik Tambahkan baris, lalu masukkan alamat IP atau Nama Domain yang Memenuhi Syarat (FQDN) 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.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: Region 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 apa pun dengan akhiran yang ditentukan. Jika tidak, pencocokan harus sama persis. Jika permintaan cocok dengan rentang IP atau FQDN, permintaan tersebut dianggap cocok.
Jika Anda tidak yakin dengan grup yang sudah ada, jalankan perintah berikut untuk melihat daftar grup:
gcloud iap tcp dest-groups list \ --region=REGION
Mengelola grup tujuan tunnel
Anda dapat melihat detail grup tujuan, mengubah grup tujuan, dan menghapusnya.
Konsol
Buka halaman IAP, lalu klik tab SSH and TCP resources.
Untuk melihat detail grup tujuan, klik nama grup tujuan.
Untuk mengubah grup tujuan, pilih grup tujuan, lalu klik ikon pensil untuk membuka panel Edit grup tujuan. 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
di grup tujuan yang relevan. Anda dapat memberikan izin melalui
peran iap.tunnelResourceAccessor
.
Untuk mengonfigurasi izin di grup tujuan, Anda harus memiliki izin iap.tunnelDestGroups.setIamPolicy
, yang dapat Anda berikan melalui peran iap.admin
.
Konsol
Buka halaman IAP.
Di tab SSH and TCP resources, pilih grup tujuan yang izinnya ingin Anda konfigurasi.
Di panel yang terbuka, klik Tambahkan akun utama, lalu masukkan alamat email untuk pengguna.
Di bagian Tetapkan peran, pilih peran yang akan ditetapkan ke akun utama.
Klik Save.
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 region, seperti
us-central1
.
Memahami penggunaan tunnel
Ada tiga perintah gcloud CLI yang dapat Anda gunakan saat menggunakan 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 berupa alamat IP pribadi tujuan.
Anda tidak dapat menggunakan IAP-TCP dengan alamat IP publik. Jika Anda menggunakan
FQDN, FQDN tersebut harus me-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
akan terjadi dalam konteks jaringan VPC.
Region yang Anda tentukan harus cocok dengan region grup tujuan.
Jaringan yang Anda tentukan harus cocok dengan nama jaringan VPC yang memiliki akses ke
tujuan. Nama jaringan yang umum adalah default
. Anda dapat melihat daftar nama jaringan
di 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.
Perhatikan bahwa --plain
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 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 dalam 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 hanya menentukan IP:
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 yang berbeda, 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 mesin 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 mengirim file ke 172.16.1.2
menggunakan SCP, 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
Perhatikan bahwa --plain
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 tunneling 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 diterapkan saat Anda menjalankan perintah berikut: ssh example
Anda juga dapat menyiapkan ProxyCommand untuk menangani banyak nama host, seperti yang ditunjukkan dalam 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 diterapkan saat Anda menjalankan perintah berikut: ssh example.internal.company.com