Halaman ini menjelaskan cara menyiapkan dan menggunakan konektor aplikasi BeyondCorp Enterprise untuk mengamankan aplikasi non-Google Cloud.
Ringkasan
Anda dapat menggunakan konektor aplikasi BeyondCorp Enterprise untuk memberikan akses kontekstual dan identitas ke aplikasi HTTPS yang berjalan di lingkungan non-Google Cloud. Konektor aplikasi BeyondCorp Enterprise adalah antarmuka yang aman dan diautentikasi antara bidang penerapan BeyondCorp Enterprise dan aplikasi yang berjalan di lingkungan cloud dan lokal lainnya.
Manfaat menggunakan konektor aplikasi BeyondCorp Enterprise adalah Anda tidak perlu membuka firewall atau menyiapkan koneksi Cloud VPN site-to-site.
Arsitektur
Berikut ini adalah diagram arsitektur tingkat tinggi yang menggambarkan komponen utama konektor aplikasi BeyondCorp Enterprise.
Komponen konektor aplikasi BeyondCorp Enterprise diatur menggunakan tiga resource API utama: konektor aplikasi, koneksi aplikasi, dan gateway aplikasi.
- Konektor Aplikasi
- Resource konektor menentukan remote agent konektor aplikasi unik. Agen jarak jauh konektor aplikasi di-deploy di lingkungan perusahaan jarak jauh, seperti di cloud lainnya dan lingkungan lokal. Agen jarak jauh memulai dan mengelola sesi tunnel ke Google Cloud, menerima traffic dari Google Cloud, dan meneruskan traffic ke endpoint aplikasi jarak jauh di lingkungan yang sama.
- Koneksi Aplikasi
- Resource koneksi menentukan koneksi logis dari Google Cloud ke endpoint aplikasi tertentu yang diidentifikasi menggunakan alamat IP:Port atau FQDN:Port. Resource koneksi mengatur serangkaian gateway konektor aplikasi terkelola yang dialokasikan untuk endpoint aplikasi tertentu. Gateway dikelola di Google Cloud dan menghentikan sesi tunnel dari agen jarak jauh saat tidak lagi diperlukan.
- Gateway Aplikasi
Gateway aplikasi adalah penawaran layanan terkelola Google. Agen jarak jauh konektor aplikasi terhubung ke satu atau beberapa gateway yang memungkinkan koneksi aplikasi dan konektor aplikasi untuk meneruskan traffic dari pengguna akhir ke agen jarak jauh. Traffic untuk koneksi aplikasi yang dihosting di gateway aplikasi yang sama dirutekan melalui infrastruktur virtual umum.
Saat Anda menghubungkan aplikasi menggunakan konektor aplikasi, gateway aplikasi secara implisit dibuat dan dikelola untuk Anda. Anda juga dapat membuat gateway aplikasi tambahan jika ingin mengatur resource koneksi aplikasi ke dalam grup. Gateway aplikasi memberikan fleksibilitas untuk mengelompokkan atau memisahkan koneksi aplikasi guna memungkinkan isolasi aplikasi.
Setiap gateway aplikasi dapat mendukung throughput maksimum hingga 1 Gbps untuk total hingga 200.000 koneksi serentak. Sebaiknya buat gateway khusus untuk aplikasi penting yang memerlukan performa tinggi. Anda dapat mengalokasikan maksimum 10 aplikasi per gateway.
Untuk mendukung hingga 200.000 koneksi serentak dan total throughput hingga 1 Gbps, sebaiknya gunakan VM khusus yang terdiri dari 8 core dan memori sebesar 8 GB untuk menjalankan remote agent konektor aplikasi. Misalnya, Anda dapat mendedikasikan 2 agen jarak jauh konektor aplikasi dalam cluster HA dengan masing-masing 8 core dan 8 GB memori untuk mendukung aplikasi web berperforma tinggi (app1.examplecompany.com) dengan gateway aplikasi khusus (app_gateway1). Buat cluster lain yang terdiri dari 2 VM masing-masing dengan 8 core dan memori 8 GB untuk mendukung kombinasi 10 aplikasi dengan penggunaan rendah dengan gateway aplikasi khusus lainnya (app_gateway2).
Resource konektor aplikasi, koneksi aplikasi, dan gateway aplikasi bersifat regional. Anda hanya dapat menggunakannya dalam konteks regional. Misalnya, Anda tidak dapat menetapkan konektor aplikasi di region A ke koneksi aplikasi atau gateway aplikasi yang dibuat di region B.
Sebelum memulai
Anda dapat menggunakan konektor aplikasi BeyondCorp Enterprise hanya dengan aplikasi HTTPS. Selain itu, load balancer HTTPS tidak menggunakan ekstensi Server Name Indication (SNI) untuk koneksi ke backend. Untuk mengetahui detail selengkapnya, lihat Enkripsi dari load balancer ke backend.
Untuk menggunakan konektor aplikasi BeyondCorp Enterprise, Anda harus memiliki hal berikut:
- Lisensi BeyondCorp Enterprise.
- Google Cloud CLI versi 392 atau yang lebih baru.
Setiap agen konektor aplikasi BeyondCorp Enterprise memerlukan VM Linux yang menjalankan Docker. Sebaiknya gunakan distribusi Linux berikut:
- Debian 10.7 (buster)
- Red Hat Enterprise Linux Server 7.8 (Maipo) x86_64
- Ubuntu 16.04 atau yang lebih baru
Untuk hardware VM Linux, kami merekomendasikan minimal 2 CPU dengan RAM 2 GB.
Anda dapat menyiapkan dan mengaktifkan konektor aplikasi menggunakan gcloud dan API, atau dengan menggunakan Konsol Google Cloud. Untuk menggunakan gcloud dan API, selesaikan langkah-langkah berikut. Untuk menggunakan konsol Google Cloud, buka Menyiapkan konektor aplikasi menggunakan Konsol Google Cloud.
Menyiapkan project Google Cloud
Untuk menyiapkan project Google Cloud untuk digunakan dengan konektor aplikasi BeyondCorp Enterprise, Anda harus mengaktifkan BeyondCorp Enterprise API. Aktifkan API dengan menyelesaikan langkah-langkah berikut:
gcloud CLI
Sebelum menyelesaikan langkah-langkah berikut, pastikan Anda telah menginstal gcloud CLI SDK.
Tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:
PROJECT_ID=my-project
Ganti my-project dengan project ID Google Cloud.
Aktifkan API dengan menjalankan perintah berikut:
gcloud config set project $PROJECT_ID gcloud services enable beyondcorp.googleapis.com
API
Dapatkan token akses dan tetapkan variabel serta alias lingkungan yang diperlukan dengan menjalankan perintah berikut:
PROJECT_NUMBER=my-project-number ACCESS_TOKEN=my-access-token
Ganti my-project dengan project ID Google Cloud.
Siapkan alias yang mudah digunakan untuk menggunakan token akses Anda:
alias gcurl="curl -H 'Authorization: Bearer ${ACCESS_TOKEN}' -H 'Content-Type: application/json'"
Aktifkan API dengan menjalankan perintah berikut:
gcurl https://serviceusage.googleapis.com/v1/projects/${PROJECT_NUMBER}/services/beyondcorp.googleapis.com:enable -d "{}"
Menginstal remote agent konektor aplikasi
Anda harus men-deploy VM remote agent konektor aplikasi untuk setiap lingkungan jaringan yang menghosting aplikasi yang ingin Anda lindungi dengan BeyondCorp Enterprise. Anda harus memiliki VM khusus, atau server Bare Metal dengan Docker yang terinstal, untuk setiap remote agent yang Anda buat.
Untuk membuat remote agent, selesaikan langkah-langkah berikut:
- Buat instance VM di lingkungan aplikasi Anda.
- Pastikan firewall jaringan VM remote agent mengizinkan semua traffic keluar yang dimulai di port 443 untuk rentang IP IAP-TCP 35.235.240.0/20. Lihat artikel Memverifikasi konfigurasi firewall untuk domain lain yang harus diizinkan oleh firewall VM remote agent untuk traffic keluar.
Instal remote agent:
- Pastikan DNS Anda sudah dikonfigurasi dengan benar dan Anda dapat mengakses aplikasi menggunakan curl.
- Instal Docker Engine.
- Opsional: Jika Anda menggunakan proxy, pastikan daemon Docker dikonfigurasi dengan benar.
- Opsional: Jika Anda menggunakan proxy, pastikan variabel lingkungan proxy HTTP dan HTTPS telah ditetapkan dan menggunakan
skema
http://
. - Jalankan perintah berikut di VM remote agent untuk menginstal remote agent:
curl https://raw.githubusercontent.com/GoogleCloudPlatform/beyondcorp-applink/main/bash-scripts/install-beyondcorp-runtime -o ./install-beyondcorp-runtime && chmod +x ./install-beyondcorp-runtime && ./install-beyondcorp-runtime
- Untuk menambahkan alias
bce-connctl
ke shell, jalankan perintah berikut:source ~/.bce_alias
Tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:
PROJECT_ID=my-project REGION=us-central1 CONNECTOR_NAME=my-connector
Ganti kode berikut:- my-project: ID project Google Cloud.
- us-central1: region tempat untuk men-deploy koneksi dan gateway.
- my-connector: nama konektor.
Daftarkan konektor menggunakan salah satu jenis kredensial berikut:
Akun layanan
Daftarkan konektor dengan menjalankan perintah berikut di CLI
bce-connctl
:bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
Ikuti petunjuk di layar untuk menyalin dan menempelkan skrip pendaftaran ke project Google Cloud Anda menggunakan Cloud Shell atau gcloud CLI, dan menyelesaikan pendaftaran konektor Anda. Untuk menjalankan skrip pendaftaran, Anda harus memiliki izin
Owner
pada project.Setelah skrip pendaftaran selesai, runtime akan otomatis menyinkronkan konfigurasi konektor.
Identitas gabungan
- Ikuti panduan penggabungan identitas workload untuk memberikan akses identitas eksternal Anda ke Google Cloud menggunakan peniruan akun layanan.
- Download konfigurasi library klien
dan tempatkan file di VM remote agent di
/var/beyondcorp/credentials/credentials.json
.- Jika menggunakan instance AWS EC2 sebagai VM remote agent, lakukan salah satu tindakan berikut:
- Jadikan IMDSv2 opsional pada instance EC2.
- Tambahkan baris berikut ke objek
credential_source
di file konfigurasi library klien:"imdsv2_session_token_url": "http://169.254.169.254/latest/api/token"
- Jika menggunakan instance AWS EC2 sebagai VM remote agent, lakukan salah satu tindakan berikut:
- Di VM remote agent, jalankan perintah berikut di CLI
bce-connctl
:bce-connctl config set project $PROJECT_ID bce-connctl config set region $REGION bce-connctl config set connector $CONNECTOR_NAME
- Jalankan perintah berikut untuk memulai ulang agen dan membuatnya mengambil kredensial:
sudo systemctl restart beyondcorp
- Di endpoint Cloud Shell atau gcloud CLI, tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:
SERVICE_ACCOUNT=my-service-account
Ganti kode berikut:- my-service-account: akun layanan Google Cloud yang terkait dengan identitas eksternal.
Berikan peran
BeyondCorp Connection Agent
kepada akun layanan Google Cloud dengan menjalankan perintah berikut:gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --role="roles/beyondcorp.connectionAgent"
Jalankan perintah berikut untuk membuat resource konektor aplikasi Google Cloud.
gcloud alpha beyondcorp app connectors create $CONNECTOR_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --display-name=$CONNECTOR_NAME
Setelah resource konektor aplikasi dibuat, runtime remote agent akan menyinkronkan konfigurasi konektor secara otomatis.
Verifikasi penginstalan remote agent:
- Jalankan perintah berikut untuk memastikan layanan berjalan:
sudo systemctl status beyondcorp
- Remote agent terdiri dari tiga container Docker:
bce-control-runtime
,bce-logagent
, danbce-connector
. Pastikan ketiga penampung berjalan dengan menjalankan perintah berikut:docker ps --filter name=bce
- Opsional: Anda dapat memeriksa file log container Docker dengan menjalankan perintah berikut:
docker logs -f CONTAINER_NAME
Ganti CONTAINER_NAME dengan nama container Docker.
- Jalankan perintah berikut untuk memastikan layanan berjalan:
Menghubungkan aplikasi jarak jauh ke VPC
gcloud CLI
Sebelum menyelesaikan langkah-langkah berikut, pastikan Anda telah menginstal gcloud CLI SDK dan login dengan akun yang memiliki peran beyondcorp.admin
.
Tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection PROJECT_ID=my-project REGION=us-central1 APP_ENDPOINT=APP_HOST:APP_PORT
Ganti kode berikut:
- my-connector: nama konektor, yang ditentukan pada langkah sebelumnya.
- my-connection: nama unik untuk koneksi.
- my-project: ID project Google Cloud.
- us-central1: region tempat untuk men-deploy koneksi dan gateway.
- APP_HOST: alamat IP lokal atau FQDN yang menghosting aplikasi Anda.
- APP_PORT: nomor port yang akan dihubungkan ke aplikasi Anda.
Untuk membuat koneksi antara aplikasi Anda dan VPC, jalankan perintah berikut:
gcloud alpha beyondcorp app connections create $CONNECTION_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --application-endpoint=$APP_ENDPOINT \ --type=tcp \ --connectors=$CONNECTOR_NAME \ --display-name=$CONNECTION_NAME
Perhatikan bahwa langkah ini mungkin memerlukan waktu beberapa menit.
Setelah Anda membuat koneksi, jalankan perintah berikut untuk mengambil gateway URI:
GATEWAY_URI="$(gcloud alpha beyondcorp app connections describe $CONNECTION_NAME --project=$PROJECT_ID --location=$REGION --format='get(gateway.uri)')" GATEWAY_URI_L7="${GATEWAY_URI/bce-psc/bce-ps7}"
GATEWAY_URI_L7
digunakan untuk membuat aturan penerusan. Konektor aplikasi BeyondCorp Enterprise menggunakan Private Service Connect untuk menautkan project konsumen ke resource terkelola di project yang dikelola Google.
API
Tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection PROJECT_ID=my-project REGION=us-central1 APP_HOST=my-app-host APP_PORT=my-app-port
Ganti kode berikut:
- my-connector: nama konektor, yang ditentukan pada langkah sebelumnya.
- my-connection: nama unik untuk koneksi.
- my-project: ID project Google Cloud.
- us-central1: region tempat untuk men-deploy koneksi dan gateway.
- my-app-host: alamat IP lokal atau FQDN yang menghosting aplikasi Anda.
- my-app-port: nomor port yang akan dihubungkan ke aplikasi Anda.
Untuk membuat koneksi antara aplikasi Anda dan VPC, jalankan perintah berikut:
gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/appConnections?app_connection_id=${CONNECTION_NAME} \ -d "{ \ 'application_endpoint': \ { \ 'host': '${APP_HOST}', \ 'port': '${APP_PORT}' \ }, \ 'type': 'TCP_PROXY', \ 'display_name': '${CONNECTION_NAME}' \ }"
Perhatikan bahwa langkah ini mungkin memerlukan waktu beberapa menit.
Setelah Anda membuat koneksi, jalankan perintah berikut untuk mengambil gateway URI:
GATEWAY_URI=$(gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/appConnections/${CONNECTION_NAME} | jq -r '.gateway.uri') GATEWAY_URI_L7="${GATEWAY_URI/bce-psc/'bce-ps7'}"
GATEWAY_URI_L7
digunakan untuk membuat aturan penerusan. Konektor aplikasi BeyondCorp Enterprise menggunakan Private Service Connect untuk menautkan project konsumen ke resource terkelola di project yang dikelola Google.
Mengonfigurasi Load Balancer Aplikasi eksternal
Anda hanya dapat menghubungkan aplikasi HTTPS ke Load Balancer Aplikasi eksternal. Aplikasi HTTP tidak didukung.
gcloud CLI
Sebelum menyelesaikan langkah-langkah berikut, pastikan Anda telah menginstal gcloud CLI SDK dan login dengan akun yang memiliki peran beyondcorp.admin
.
Tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:
LB_PREFIX=web-app PROJECT_ID=my-project REGION=us-central1 DOMAIN_NAME=app.example.com
Ganti kode berikut:- web-app: awalan yang ditambahkan ke nama semua resource load balancer.
- my-project: ID project Google Cloud.
- us-central1: region tempat koneksi dan gateway akan di-deploy.
- app.example.com: nama domain aplikasi Anda.
Buat Grup Endpoint Jaringan (NEG) menggunakan perintah berikut:
gcloud beta compute network-endpoint-groups create $LB_PREFIX-neg \ --region=$REGION \ --network-endpoint-type=private-service-connect \ --psc-target-service=$GATEWAY_URI_L7
Flag opsional:
- Tetapkan flag
--network
untuk menentukan nama jaringan untuk endpoint jaringan di NEG. Jika tidak ditentukan, jaringan project default akan digunakan. - Tetapkan flag
--subnet
untuk menentukan nama subnetwork untuk endpoint jaringan di NEG. Jika tidak ditentukan, endpoint jaringan dapat menjadi bagian dari subnetwork mana pun di region tempat grup endpoint jaringan dibuat.
- Tetapkan flag
Buat layanan backend berbasis NEG dan hubungkan ke lampiran layanan Private Service Connect dengan menjalankan perintah berikut:
gcloud beta compute backend-services create $LB_PREFIX-backend-service \ --global \ --protocol=HTTPS \ --load-balancing-scheme=EXTERNAL_MANAGED gcloud beta compute backend-services add-backend $LB_PREFIX-backend-service \ --global \ --network-endpoint-group=$LB_PREFIX-neg \ --network-endpoint-group-region=$REGION
Buat sertifikat yang dikelola Google untuk domain Anda dengan menjalankan perintah berikut:
gcloud compute addresses create $LB_PREFIX-static-ip \ --ip-version=IPV4 \ --global gcloud compute ssl-certificates create $LB_PREFIX-ssl-cert \ --domains=$DOMAIN_NAME \ --global LB_IP="$(gcloud compute addresses describe $LB_PREFIX-static-ip --global --format='value(address)')"
Buat Load Balancer Aplikasi eksternal berdasarkan backend dari langkah sebelumnya dengan menjalankan perintah berikut:
gcloud compute url-maps create $LB_PREFIX-map-https \ --default-service=$LB_PREFIX-backend-service gcloud compute target-https-proxies create $LB_PREFIX-https-lb-proxy \ --url-map=$LB_PREFIX-map-https \ --ssl-certificates=$LB_PREFIX-ssl-cert gcloud beta compute forwarding-rules create "$LB_PREFIX-https-lb-forwarding-rule" \ --global \ --target-https-proxy=$LB_PREFIX-https-lb-proxy \ --address=$LB_IP \ --ports=443 \ --load-balancing-scheme=EXTERNAL_MANAGED
Setelah Load Balancer Aplikasi eksternal dibuat, aplikasi Anda dapat diakses melalui internet oleh alamat IP tersebut.
Setelah Load Balancer Aplikasi eksternal dibuat, Anda harus mengaitkan alamat IP-nya dengan nama domain agar Google Cloud dapat menyediakan sertifikat SSL. Gunakan petunjuk penyedia DNS tentang cara mengaitkan alamat IP dengan nama DNS. Jalankan perintah berikut untuk memeriksa status penyediaan:
- Tampilkan alamat IP yang akan disiapkan di penyedia DNS:
echo "Load Balancer ip address - $LB_IP"
- Setelah Anda menetapkan DNS, periksa apakah nama domain menghasilkan alamat IP atau tidak dengan menjalankan perintah berikut:
dig $DOMAIN_NAME
- Dapatkan status penyediaan dengan menjalankan perintah berikut:
gcloud compute ssl-certificates describe $LB_PREFIX-ssl-cert \ --global \ --format="get(name,managed.status, managed.domainStatus)"
Setelah Sertifikat SSL disediakan, Anda seharusnya dapat mengakses aplikasi menggunakan nama DNS.
- Tampilkan alamat IP yang akan disiapkan di penyedia DNS:
API
Tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:
LB_PREFIX=web-app PROJECT_ID=my-project REGION=us-central1 DOMAIN_NAME=app.example.com
Ganti kode berikut:- web-app: awalan yang ditambahkan ke nama semua resource load balancer.
- my-project: ID project Google Cloud.
- us-central1: region tempat koneksi dan gateway akan di-deploy.
- app.example.com: nama domain aplikasi Anda.
Buat Grup Endpoint Jaringan (NEG) menggunakan perintah berikut:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/regions/${REGION}/networkEndpointGroups \ -d "{ \ 'name': '${LB_PREFIX}-neg', \ 'network_endpoint_type': 'private-service-connect', \ 'psc_target_service': '${GATEWAY_URI_L7}' \ }"
Kolom opsional:
- Tetapkan kolom
network
untuk menentukan URL jaringan endpoint jaringan di NEG. Jika tidak ditentukan, jaringan project default akan digunakan. - Tetapkan kolom
subnetwork
untuk menentukan URL subnetwork untuk endpoint jaringan di NEG. Jika tidak ditentukan, endpoint jaringan dapat menjadi bagian dari subnetwork apa pun di region tempat grup endpoint jaringan dibuat.
- Tetapkan kolom
Buat layanan backend berbasis NEG dan hubungkan ke lampiran layanan Private Service Connect dengan menjalankan perintah berikut:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices \ -d "{ \ 'name': '${LB_PREFIX}-backend-service', \ 'service_protocol': 'HTTPS', \ 'port_name': 'https', \ 'load_balancing_scheme': 'EXTERNAL_MANAGED' \ }" gcurl -X PATCH https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices/${LB_PREFIX}-backend-service \ -d "{ \ 'backends': \ [{ \ 'group': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/regions/${REGION}/networkEndpointGroups/${LB_PREFIX}-neg' \ }] \ }"
Buat sertifikat yang dikelola Google untuk domain Anda dengan menjalankan perintah berikut:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/addresses \ -d "{ \ 'name': '${LB_PREFIX}-static-ip', \ 'ip_version': 'IPV4' \ }" gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates \ -d "{ \ 'name': '${LB_PREFIX}-ssl-cert', \ 'managed': \ { \ 'domains': '${DOMAIN_NAME}' \ }, \ 'type': 'MANAGED' \ }" LB_IP=$(gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/addresses/${LB_PREFIX}-static-ip | jq -r '.address')
Buat Load Balancer Aplikasi eksternal berdasarkan backend dari langkah sebelumnya dengan menjalankan perintah berikut:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/urlMaps \ -d "{ \ 'name': '${LB_PREFIX}-map-https', \ 'default_service': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices/${LB_PREFIX}-backend-service' \ }" gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/targetHttpsProxies \ -d "{ \ 'name': '${LB_PREFIX}-https-lb-proxy', \ 'url_map': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/urlMaps/${LB_PREFIX}-map-https', \ 'ssl_certificate': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates/${LB_PREFIX}-ssl-cert' \ }" gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/forwardingRules \ -d "{ \ 'name': '${LB_PREFIX}-https-lb-forwarding-rule', \ target: 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/targetHttpsProxies/${LB_PREFIX}-https-lb-proxy', \ 'ip_address': '${LB_IP}', \ 'port_range': '443-443', \ 'load_balancing_scheme': 'EXTERNAL_MANAGED' \ }"
Setelah Load Balancer Aplikasi eksternal dibuat, aplikasi Anda dapat diakses melalui internet oleh alamat IP tersebut.
Setelah Load Balancer Aplikasi eksternal dibuat, Anda harus mengaitkan alamat IP-nya dengan nama domain agar Google Cloud dapat menyediakan sertifikat SSL. Gunakan petunjuk penyedia DNS tentang cara mengaitkan alamat IP dengan nama DNS. Jalankan perintah berikut untuk memeriksa status penyediaan:
- Tampilkan alamat IP yang akan disiapkan di penyedia DNS:
echo "Load Balancer ip address - $LB_IP"
- Setelah Anda menetapkan DNS, periksa apakah nama domain menghasilkan alamat IP atau tidak dengan menjalankan perintah berikut:
dig $DOMAIN_NAME
- Dapatkan status penyediaan dengan menjalankan perintah berikut:
echo $(gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates/${LB_PREFIX}-ssl-cert \ | jq -r '.name + " " + .managed.status + " " + (.managed.domainStatus | keys[]) + "=" + .managed.domainStatus[]')
Setelah Sertifikat SSL disediakan, Anda seharusnya dapat mengakses aplikasi menggunakan nama DNS.
- Tampilkan alamat IP yang akan disiapkan di penyedia DNS:
Mengaktifkan Identity-Aware Proxy
Ikuti dokumentasi Identity-Aware Proxy (IAP) untuk menyiapkan Identity-Aware Proxy. Setelah menyiapkan IAP, aktifkan IAP untuk layanan backend dengan menyelesaikan langkah-langkah berikut:
Buka halaman IAP:
IAPDi bagian REFERENSI HTTPS, cari
$LB_PREFIX-backend-service
. Guna mengaktifkan IAP untuk resource ini, klik tombol di kolom IAP. Di jendela Aktifkan IAP yang muncul, centang kotak untuk mengonfirmasi persyaratan konfigurasi resource ini, lalu klik AKTIFKAN untuk mengonfirmasi bahwa Anda ingin IAP mengamankan resource.Untuk mengizinkan pengguna mengakses aplikasi, Anda harus memberi mereka peran IAP-secured Web App User untuk project tersebut dengan menyelesaikan langkah-langkah berikut:
- Pilih kotak centang
$LB_PREFIX-backend-service
. - Di Panel info, pilih TAMBAHKAN PRINSIP, lalu masukkan alamat email grup atau individu yang akan memiliki akses ke permohonan Anda.
- Di menu drop-down Select a role, pilih Cloud IAP > IAP-secured Web App User, lalu klik Save.
- Pilih kotak centang
Aplikasi lokal Anda kini harus dipublikasikan ke internet dan dilindungi oleh BeyondCorp Enterprise.
Menyiapkan konektor aplikasi menggunakan Konsol Google Cloud
Selesaikan prosedur di bagian ini untuk men-deploy konektor aplikasi BeyondCorp Enterprise dengan menggunakan Konsol Google Cloud.
Masukkan detail permohonan Anda
Tambahkan detail permohonan Anda dengan menyelesaikan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman IAP.
Buka IAPKlik tombol CONNECT NEW APPLICATION, lalu pilih Connect via App Connector.
Untuk Application name, masukkan nama aplikasi yang ingin diamankan.
Untuk URL aplikasi yang dapat dilihat eksternal, masukkan URL yang dapat diakses secara publik agar pengguna dapat mengakses aplikasi Anda.
Klik Next.
Menyiapkan koneksi ke Google Cloud
Selesaikan langkah-langkah berikut untuk membangun konektivitas antara Google Cloud dan lingkungan non-Google Cloud Anda.
Klik tombol BUAT KONEKTOR APLIKASI, dan masukkan informasi berikut:
- Nama konektor aplikasi: Nama untuk konektor.
- Region: Region tempat gateway dan konektor koneksi di-deploy.
Klik tombol CREATE.
Ikuti petunjuk di panel Menyediakan virtual machine untuk men-deploy remote agent di VM Anda.
Klik tombol UJI STATUS KONEKSI untuk menguji koneksi.
Konfigurasikan konektor yang Anda buat di langkah sebelumnya dengan memasukkan informasi berikut di bagian Di mana Google Cloud dapat menemukan aplikasi Anda?:
- Nama host internal: Alamat IP lokal atau FQDN yang menghosting aplikasi Anda.
- Port: Nomor port yang akan dihubungkan ke aplikasi Anda.
Berikan akses ke aplikasi Anda (opsional)
Untuk Akun utama baru, masukkan satu atau beberapa hal berikut:
- Email Akun Google: pengguna@gmail.com
- Google Grup: admin@googlegroups.com
- Akun layanan: server@example.gserviceaccount.com
- Domain Google Workspace: example.com
- siapa saja: masukkan
allUsers
untuk memberi semua akses kepada semua pengguna - semua Akun Google:
allAuthenticatedUsers
untuk memberikan akses kepada pengguna yang login ke Akun Google
Pilih satu atau beberapa tingkat akses, lalu klik BERIKUTNYA.
Publikasikan aplikasi Anda
Untuk memublikasikan aplikasi Anda, klik tombol PUBLIKASIKAN APLIKASI secara aman.
Setelah memublikasikan aplikasi dan menerima konfirmasi Aplikasi yang dipublikasikan dengan aman, Anda harus membuat data DNS untuk mengarahkan URL aplikasi eksternal Anda ke alamat IP proxy. Selesaikan langkah-langkah berikut:
- Dari bagian LANGKAH 2 - Update DNS, salin alamat IP dari kolom IP address. Gunakan alamat untuk membuat data DNS dengan mengikuti petunjuk penyedia DNS tentang cara mengaitkan alamat IP dengan nama DNS.
Setelah membuat data DNS, uji dengan mengklik tombol TEST. Anda akan menerima konfirmasi uji DNS lulus..
Klik DONE.
Aktifkan IAP
Buka halaman IAP.
Buka IAPDari daftar resource, temukan aplikasi Anda, lalu pilih tombol tersebut di kolom IAP.
Pada dialog Turn on IAP yang muncul, pilih kotak centang Saya telah membaca persyaratan konfigurasi dan mengonfigurasi Layanan Backend saya sesuai dokumentasi, lalu klik AKTIFKAN.
Aplikasi lokal Anda kini harus dipublikasikan ke internet dan dilindungi oleh BeyondCorp Enterprise.
Membuat gateway aplikasi (Opsional)
Gateway aplikasi dibuat dan dikelola secara implisit saat Anda menghubungkan aplikasi menggunakan konektor aplikasi. Anda juga dapat membuat gateway aplikasi sendiri untuk mengatur resource koneksi aplikasi ke dalam grup. Traffic untuk koneksi aplikasi yang dihosting di gateway aplikasi yang berbeda diarahkan melalui infrastruktur virtual terpisah.
Untuk membuat dan menentukan gateway aplikasi, selesaikan langkah-langkah berikut.
gcloud CLI
Tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:
CONNECTOR_NAME=CONNECTOR_NAME CONNECTION_NAME=CONNECTION_NAME GATEWAY_NAME=GATEWAY_NAME PROJECT_ID=PROJECT_ID REGION=REGION APP_ENDPOINT=APP_HOST:APP_PORT
Ganti kode berikut:
- CONNECTOR_NAME: nama konektor, yang ditentukan pada langkah sebelumnya.
- CONNECTION_NAME: nama unik untuk koneksi.
- GATEWAY_NAME: nama gateway aplikasi.
- PROJECT_ID: ID project Google Cloud.
- REGION: region tempat gateway aplikasi di-deploy, seperti
us-central1
. - APP_HOST: alamat IP lokal atau FQDN yang menghosting aplikasi Anda.
- APP_PORT: nomor port yang akan dihubungkan ke aplikasi Anda.
Buat gateway aplikasi dengan menjalankan perintah berikut:
gcloud beta beyondcorp app gateways create $GATEWAY_NAME \ --project=$PROJECT_ID --location=$REGION --display-name=$GATEWAY_NAME
Tentukan gateway aplikasi dalam panggilan create connection dengan menjalankan perintah berikut:
gcloud beta beyondcorp app connections create $CONNECTION_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --application-endpoint=$APP_ENDPOINT \ --type=tcp \ --connectors=$CONNECTOR_NAME \ --display-name=$CONNECTION_NAME \ --app-gateway=$GATEWAY_NAME
API
Tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:
CONNECTOR_NAME=CONNECTOR_NAME CONNECTION_NAME=CONNECTION_NAME GATEWAY_NAME=GATEWAY_NAME PROJECT_ID=PROJECT_ID REGION=REGION APP_ENDPOINT=APP_HOST:APP_PORT
Ganti kode berikut:
- CONNECTOR_NAME: nama konektor, yang ditentukan pada langkah sebelumnya.
- CONNECTION_NAME: nama unik untuk koneksi.
- GATEWAY_NAME: nama gateway aplikasi.
- PROJECT_ID: ID project Google Cloud.
- REGION: region tempat gateway aplikasi di-deploy, seperti
us-central1
. - APP_HOST: alamat IP lokal atau FQDN yang menghosting aplikasi Anda.
- APP_PORT: nomor port yang akan dihubungkan ke aplikasi Anda.
Buat gateway aplikasi dengan menjalankan perintah berikut:
gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appGateways?app_gateway_id=${GATEWAY_NAME} \ -d "{ \ 'type': 'TCP_PROXY', \ 'display_name': '${CONNECTION_NAME}' \ }"
Tentukan gateway aplikasi dalam panggilan create connection dengan menjalankan perintah berikut:
gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections?app_connection_id=${CONNECTION_NAME} \ -d "{ \ 'application_endpoint': \ { \ 'host': '${APP_HOST}', \ 'port': '${APP_PORT}' \ }, \ 'gateway': { 'app_gateway' : 'projects/${PROJECT_ID}/locations/${REGION}/appGateways/${GATEWAY_NAME}'}, \ 'connectors':['projects/${PROJECT_ID}/locations/${REGION}/appConnectors/${CONNECTOR_NAME}'], \ 'type': 'TCP_PROXY', \ 'display_name': '${CONNECTION_NAME}' \
Langkah berikutnya
- Lihat Kontrol Layanan VPC untuk mengetahui informasi tentang cara mengamankan VPC.
- Tetapkan aturan konteks yang lebih lengkap dengan menerapkan tingkat akses.
- Lihat permintaan akses dengan mengaktifkan Cloud Audit Logs.
Pemecahan masalah
Tidak dapat menemukan materi yang dibuat sebelumnya
Saat menggunakan gcloud CLI versi 392.0.0 atau yang lebih baru, gunakan resource default konektor aplikasi baru AppConnector
dan AppConnection
. Misalnya, gcloud alpha beyondcorp app connectors
dan gcloud alpha beyondcorp app connections
merujuk ke resource baru.
Untuk mengakses resource lama yang dibuat menggunakan versi gcloud CLI sebelum versi 392.0.0, gunakan kata kunci legacy
. Misalnya, gcloud alpha beyondcorp app legacy connectors
dan gcloud alpha beyondcorp app legacy connections
merujuk ke resource lama.
Konfigurasi yang menggunakan resource lama tetap berfungsi untuk saat ini, tetapi tidak akan digunakan lagi di masa mendatang.
Tindakan yang disarankan
- Ikuti prosedur dalam panduan ini untuk mengonfigurasi resource baru.
- Jika konfigurasi Anda menggunakan resource lama, gunakan kata kunci
legacy
untuk menemukan resource tersebut dan menghapusnya. Buat ulang resource dengan mengikuti prosedur dalam dokumen ini. - Jika Anda memiliki konfigurasi tidak lengkap yang menggunakan resource lama, gunakan kata kunci
legacy
untuk menemukan resource tersebut dan menghapusnya. Buat ulang resource dengan mengikuti prosedur dalam dokumen ini.
Error TLS/SSL
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
Browser menunjukkan error ERR_SSL_VERSION_OR_CIPHER_MISMATCH
atau error TLS/SSL yang serupa dan tidak mengalihkan ke halaman login.
Tindakan yang disarankan
Verifikasi status sertifikat di halaman detail load balancer Google Cloud.
CATATAN: Penyediaan sertifikat yang dikelola Google mungkin memerlukan waktu hingga 60 menit.
TLS error
Browser menampilkan error upstream connect error or disconnect/reset before headers. retried and the latest reset reason: connection failure, transport failure reason: TLS error
atau error TLS/SSL yang serupa setelah mengalihkan ke halaman login.
Tindakan yang disarankan
- Pastikan endpoint aplikasi yang digunakan di Koneksi adalah HTTPS.
Pastikan endpoint aplikasi dapat diakses dari VM remote agent menggunakan curl:
curl https://$APP_ENDPOINT
Anda mungkin perlu menggunakan flag
-k
jika sertifikat aplikasi Anda ditandatangani sendiri.
Memverifikasi konfigurasi firewall
Pastikan firewall antara remote agent dan internet mengizinkan koneksi keluar ke domain berikut:
Jenis Koneksi | Domain | Port |
TCP | raw.githubusercontent.com | 443 |
TCP | gcr.io | 443 |
TCP | *.googleapis.com | 443 |
TCP | tunnel.cloudproxy.app | 443 |
TCP | *.tunnel.cloudproxy.app | 443 |
TCP | accounts.google.com | 443 |
TCP | oauth2.googleapis.com | 443 |
Mengubah konektor yang terkait dengan koneksi
gcloud
Tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection REGION=us-central1 PROJECT_ID=my-project
Ganti kode berikut:
- my-connector: nama konektor. Ini juga dapat berupa daftar yang dipisahkan koma seperti
connector1,connector2
. - my-connection: nama koneksi yang akan diperbarui.
- us-central1: region tempat koneksi di-deploy.
- my-project: ID project Google Cloud.
- my-connector: nama konektor. Ini juga dapat berupa daftar yang dipisahkan koma seperti
Untuk mengubah konektor yang terkait dengan koneksi, jalankan perintah berikut:
gcloud alpha beyondcorp app connections update $CONNECTION_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --connectors=$CONNECTOR_NAME
API
Tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection REGION=us-central1 PROJECT_ID=my-project
Ganti kode berikut:
- my-connector: nama konektor.
- my-connection: nama koneksi yang akan diperbarui.
- us-central1: region tempat koneksi di-deploy.
- my-project: ID project Google Cloud.
Untuk mengubah konektor yang terkait dengan koneksi, jalankan perintah berikut:
gcurl -X PATCH \ https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections/${CONNECTION_NAME}?update_mask=connectors \ -d "{ \ 'connectors': ['projects/${PROJECT_ID}/locations/${REGION}/appConnectors/${CONNECTOR_NAME}'], \ }"
Anda dapat memverifikasi update dengan menjalankan perintah berikut dan memeriksa kolom
connectors
pada output:gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections/${CONNECTION_NAME}
Proxy
Dukungan untuk proxy diperkenalkan pada awal tahun 2024 dan memerlukan perubahan pada file bersistem BeyondCorp. Jika Anda menginstal remote agent lebih awal dari waktu ini dan ingin menggunakan proxy, instal ulang remote agent.
Pastikan daemon Docker dikonfigurasi dengan benar agar dapat berfungsi dengan proxy.
Pastikan variabel lingkungan proxy HTTP dan HTTPS telah ditetapkan dan keduanya menggunakan skema
http://
. Skemahttps://
dan skema lainnya tidak didukung.Pastikan variabel lingkungan proxy diekspor ke subproses dengan menjalankan perintah
env
.Hanya
HTTP_PROXY
,HTTPS_PROXY
,NO_PROXY
, dan huruf kecil yang setara yang didukung.Jika Anda perlu memperbarui setelan proxy setelah penginstalan, perbarui variabel lingkungan di
/var/beyondcorp/env/PROXY
jika menggunakan penggunabeyondcorp
default. Jika menggunakan pengguna kustom, update/home/$USER/.docker/config.json
sesuai dengan petunjuk untuk mengonfigurasi klien Docker. Untuk menerapkan perubahan proxy, mulai ulang remote agent menggunakan perintah berikut:sudo systemctl restart beyondcorp
Alat diagnostik
run-post-install-checks
run-post-install-checks
adalah skrip yang diinstal di /var/beyondcorp/scripts/
yang memverifikasi apakah remote agent Anda diinstal dengan benar, terdaftar, dan responsif. Setelah Anda berhasil membuat app connection
dan menetapkannya ke remote agent (konektor), buka VM remote agent, lalu jalankan run-post-install-checks
dengan perintah berikut:
sudo /var/beyondcorp/scripts/run-post-install-checks
Skrip akan mencetak pesan berhasil jika semuanya sudah sesuai.
run-diagnostics
run-diagnostics
adalah skrip yang diinstal di /var/beyondcorp/scripts/
yang mendiagnosis masalah umum pada VM remote agent dan mencetak laporan yang dapat Anda bagikan kepada tim dukungan BeyondCorp Enterprise. Untuk menjalankan skrip diagnostik ini, jalankan perintah berikut:
sudo /var/beyondcorp/scripts/run-diagnostics
Laporan diagnostik ditulis ke konsol serta ke ./diagnostics-report.txt
CLI Agen Jarak Jauh
bce-connctl
adalah antarmuka command line (CLI) admin remote agent untuk berinteraksi dengan remote agent secara lokal. CLI ini mendukung berbagai perintah, seperti untuk mendaftarkan remote agent, memeriksa status, dan menyetel nilai konfigurasi.
Perintah init
Anda dapat menggunakan perintah Init untuk melakukan inisialisasi remote agent dan membuat skrip untuk mendaftarkan agen.
Contoh:
bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
Perintah status
Anda dapat menggunakan perintah Status untuk mengelola status remote agent.
- Daftar: Gunakan perintah ini untuk menampilkan daftar status remote agent secara keseluruhan, serta status koneksi yang didukung oleh agen ini. Contoh:
bce-connctl status list
Perintah konfigurasi
Anda dapat menggunakan perintah Config guna mengelola nilai konfigurasi untuk remote agent.
- List: Gunakan perintah ini untuk menampilkan nilai konfigurasi remote agent. Contoh:
bce-connctl config list
- Setel: Gunakan perintah ini untuk menetapkan nilai konfigurasi remote agent. Contoh:
bce-connctl config set <key> <value>
Perintah pendaftaran
Anda dapat menggunakan perintah Pendaftaran untuk mengelola pendaftaran remote agent.
Jelaskan: Gunakan perintah ini untuk mendapatkan status pendaftaran remote agent. Contoh:
bce-connctl enrollment describe
Saat skrip pendaftaran dari
bce-connctl init
berhasil diselesaikan, dan kunci publik berhasil diupload, statusnya adalahENROLLED
.
Bantuan
Anda dapat menambahkan flag -h
atau --help
ke perintah bce-connctl
apa pun untuk mencetak informasi penggunaan.
bce-connctl init -h