Mengamankan aplikasi non-Google Cloud menggunakan konektor aplikasi

Halaman ini menjelaskan cara menyiapkan dan menggunakan konektor aplikasi Chrome Enterprise Premium untuk mengamankan aplikasi non-Google Cloud.

Ringkasan

Anda dapat menggunakan konektor aplikasi Chrome Enterprise Premium untuk memberikan akses berbasis identitas dan konteks ke aplikasi HTTPS yang berjalan di lingkungan non-Google Cloud. Konektor aplikasi Chrome Enterprise Premium adalah antarmuka yang aman dan diautentikasi antara platform penegakan Chrome Enterprise Premium dan aplikasi yang berjalan di cloud dan lingkungan lokal lainnya.

Manfaat menggunakan konektor aplikasi Chrome Enterprise Premium adalah Anda tidak perlu membuka firewall atau menyiapkan koneksi Cloud VPN site-to-site.

Arsitektur

Berikut adalah diagram arsitektur tingkat tinggi yang menggambarkan komponen utama konektor aplikasi Chrome Enterprise Premium.

Komponen konektor aplikasi Chrome Enterprise Premium

Komponen konektor aplikasi Chrome Enterprise Premium diatur menggunakan tiga resource API utama: konektor aplikasi, koneksi aplikasi, dan gateway aplikasi.

Konektor Aplikasi
Resource konektor menentukan remote agent konektor aplikasi yang unik. Agen jarak jauh konektor aplikasi di-deploy di lingkungan perusahaan jarak jauh, seperti di cloud dan lingkungan lokal lainnya. Agen jarak jauh memulai dan mempertahankan 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 mengelola 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. Remote agent konektor aplikasi terhubung ke satu atau beberapa gateway yang memungkinkan koneksi aplikasi dan konektor aplikasi untuk meneruskan traffic dari pengguna akhir ke remote agent. 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 akan dibuat dan dikelola secara implisit 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 agar memungkinkan isolasi aplikasi.

Setiap gateway aplikasi dapat mendukung total throughput maksimum hingga 1 Gbps untuk maksimal 200.000 koneksi serentak. Sebaiknya buat gateway khusus untuk aplikasi penting yang memerlukan performa tinggi. Anda dapat mengalokasikan maksimal 10 aplikasi per gateway.

Untuk mendukung hingga 200.000 koneksi serentak dan total throughput hingga 1 Gbps, sebaiknya gunakan VM khusus dengan 8 core dan memori 8 GB untuk menjalankan agen jarak jauh konektor aplikasi. Misalnya, Anda dapat menyediakan 2 agen jarak jauh konektor aplikasi di cluster HA dengan 8 core dan memori 8 GB masing-masing 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 hanya dapat menggunakan konektor aplikasi Chrome Enterprise Premium 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 Chrome Enterprise Premium, Anda harus memiliki hal berikut:

Setiap agen konektor aplikasi Chrome Enterprise Premium 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, sebaiknya gunakan minimal 2 CPU dengan RAM 2 GB.

Anda dapat menyiapkan dan mengaktifkan konektor aplikasi menggunakan gcloud dan API, atau 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 yang akan digunakan dengan konektor aplikasi Chrome Enterprise Premium, Anda harus mengaktifkan Chrome Enterprise Premium API. Aktifkan API dengan menyelesaikan langkah-langkah berikut:

gcloud CLI

Sebelum menyelesaikan langkah-langkah berikut, pastikan Anda telah menginstal gcloud CLI SDK.

  1. Tetapkan variabel lingkungan yang diperlukan dengan menjalankan perintah berikut:

    PROJECT_ID=my-project
    

    Ganti my-project dengan project ID Google Cloud.

  2. Aktifkan API dengan menjalankan perintah berikut:

    gcloud config set project $PROJECT_ID
    gcloud services enable beyondcorp.googleapis.com
    

API

  1. Dapatkan token akses dan tetapkan variabel lingkungan dan alias yang diperlukan dengan menjalankan perintah berikut:

    PROJECT_NUMBER=my-project-number
    ACCESS_TOKEN=my-access-token
    

    Ganti my-project dengan project ID Google Cloud.

  2. Siapkan alias yang mudah digunakan untuk menggunakan token akses Anda:

    alias gcurl="curl -H 'Authorization: Bearer ${ACCESS_TOKEN}' -H 'Content-Type: application/json'"
    

  3. 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 agen jarak jauh konektor aplikasi untuk setiap lingkungan jaringan yang menghosting aplikasi yang ingin Anda lindungi dengan Chrome Enterprise Premium. Anda harus memiliki VM khusus, atau server Bare Metal apa pun yang menginstal Docker, untuk setiap remote agent yang Anda buat.

Untuk membuat agen jarak jauh, selesaikan langkah-langkah berikut:

  1. Buat instance VM di lingkungan aplikasi Anda.
    1. 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 Memverifikasi konfigurasi firewall untuk domain lain yang harus diizinkan oleh firewall VM agen jarak jauh untuk traffic keluar.
  2. Instal remote agent:

    1. Pastikan DNS Anda dikonfigurasi dengan benar dan Anda dapat mengakses aplikasi menggunakan curl.
    2. Instal Docker Engine.
      1. Opsional: Jika Anda menggunakan proxy, pastikan daemon Docker dikonfigurasi dengan benar.
    3. Opsional: Jika Anda menggunakan proxy, pastikan variabel lingkungan proxy HTTP dan HTTPS ditetapkan dan menggunakan skema http://.
    4. Jalankan perintah berikut di VM agen jarak jauh untuk menginstal agen jarak jauh:
      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
      
    5. Untuk menambahkan alias bce-connctl ke shell, jalankan perintah berikut:
       source ~/.bce_alias
       
    6. 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: project ID Google Cloud.
      • us-central1: region tempat men-deploy koneksi dan gateway.
      • my-connector: nama konektor.
    7. Daftarkan konektor menggunakan salah satu jenis kredensial berikut:

    Akun layanan

    1. Daftarkan konektor dengan menjalankan perintah berikut di bce-connctl CLI:

      bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
      

    2. Ikuti petunjuk di layar untuk menyalin dan menempelkan skrip pendaftaran ke project Google Cloud Anda menggunakan Cloud Shell atau gcloud CLI, lalu selesaikan pendaftaran konektor Anda. Untuk menjalankan skrip pendaftaran, Anda harus memiliki izin Owner di project.

      Setelah skrip pendaftaran selesai, runtime akan menyinkronkan konfigurasi konektor secara otomatis.

    Identitas gabungan

    1. Ikuti panduan workload identity federation untuk memberikan akses identitas eksternal Anda ke Google Cloud menggunakan peniruan identitas akun layanan.
    2. Download konfigurasi library klien dan tempatkan file di VM agen jarak jauh di /var/beyondcorp/credentials/credentials.json.
      1. Jika menggunakan instance AWS EC2 sebagai VM agen jarak jauh, lakukan salah satu tindakan berikut:
        1. Buat IMDSv2 bersifat opsional di instance EC2.
        2. Tambahkan baris berikut ke objek credential_source dalam file konfigurasi library klien:
          "imdsv2_session_token_url": "http://169.254.169.254/latest/api/token"
          
    3. Di VM agen jarak jauh, 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
      
    4. Jalankan perintah berikut untuk memulai ulang agen dan memintanya mengambil kredensial:
      sudo systemctl restart beyondcorp
      
    5. 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.
    6. Berikan peran BeyondCorp Connection Agent ke akun layanan Google Cloud dengan menjalankan perintah berikut:

      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member="serviceAccount:$SERVICE_ACCOUNT" \
          --role="roles/beyondcorp.connectionAgent"
      
    7. 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 agen jarak jauh akan menyinkronkan konfigurasi konektor secara otomatis.

  3. Verifikasi penginstalan agen jarak jauh:

    1. Jalankan perintah berikut untuk memastikan layanan berjalan:
      sudo systemctl status beyondcorp
      
    2. Agen jarak jauh terdiri dari tiga penampung Docker: bce-control-runtime, bce-logagent, dan bce-connector. Pastikan ketiga penampung berjalan dengan menjalankan perintah berikut:
      docker ps --filter name=bce
      
    3. Opsional: Anda dapat memeriksa file log penampung Docker dengan menjalankan perintah berikut:
      docker logs -f CONTAINER_NAME
      
      Ganti CONTAINER_NAME dengan nama penampung Docker.

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.

  1. 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: project ID Google Cloud.
    • us-central1: region tempat men-deploy koneksi dan gateway.
    • APP_HOST: alamat IP lokal atau FQDN yang menghosting aplikasi Anda.
    • APP_PORT: nomor port untuk terhubung ke aplikasi Anda.
  2. Untuk membuat koneksi antara aplikasi 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 untuk selesai.

  3. Setelah membuat koneksi, jalankan perintah berikut untuk mengambil URI gateway:

    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 Chrome Enterprise Premium menggunakan Private Service Connect untuk menautkan project konsumen ke resource terkelola dalam project terkelola Google.

API

  1. 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: project ID Google Cloud.
    • us-central1: region tempat men-deploy koneksi dan gateway.
    • my-app-host: alamat IP lokal atau FQDN yang menghosting aplikasi Anda.
    • my-app-port: nomor port untuk terhubung ke aplikasi Anda.
  2. Untuk membuat koneksi antara aplikasi 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 untuk selesai.

  3. Setelah membuat koneksi, jalankan perintah berikut untuk mengambil URI gateway:

    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 Chrome Enterprise Premium menggunakan Private Service Connect untuk menautkan project konsumen ke resource terkelola dalam project terkelola 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.

  1. 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: project ID Google Cloud.
    • us-central1: region tempat koneksi dan gateway akan di-deploy.
    • app.example.com: nama domain aplikasi Anda.
  2. Buat Network Endpoint Group (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 bagi endpoint jaringan di NEG. Jika tidak ditentukan, jaringan project default akan digunakan.
    • Tetapkan tanda --subnet untuk menentukan nama subnetwork bagi endpoint jaringan di NEG. Jika tidak ditentukan, endpoint jaringan dapat menjadi bagian dari subnetwork mana pun di region tempat grup endpoint jaringan dibuat.
  3. 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
    
  4. 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)')"
    
  5. 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 dengan alamat IP tersebut.

  6. 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 Anda untuk mengetahui cara mengaitkan alamat IP dengan nama DNS. Jalankan perintah berikut untuk memeriksa status penyediaan:

    1. Tampilkan alamat IP yang akan disiapkan di penyedia DNS:
      echo "Load Balancer ip address - $LB_IP"
      
    2. Setelah Anda menetapkan DNS, periksa apakah nama domain ditetapkan ke alamat IP atau tidak dengan menjalankan perintah berikut:
      dig $DOMAIN_NAME
      
    3. 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 akan dapat mengakses aplikasi menggunakan nama DNS.

API

  1. 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: project ID Google Cloud.
    • us-central1: region tempat koneksi dan gateway akan di-deploy.
    • app.example.com: nama domain aplikasi Anda.
  2. Buat Network Endpoint Group (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 bagi endpoint jaringan di NEG. Jika tidak ditentukan, jaringan project default akan digunakan.
    • Tetapkan kolom subnetwork untuk menentukan URL subnetwork bagi endpoint jaringan di NEG. Jika tidak ditentukan, endpoint jaringan dapat menjadi milik subnetwork apa pun di region tempat grup endpoint jaringan dibuat.
  3. 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' \
        }] \
    }"
    
  4. 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')
    
  5. 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 dengan alamat IP tersebut.

  6. 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 Anda untuk mengetahui cara mengaitkan alamat IP dengan nama DNS. Jalankan perintah berikut untuk memeriksa status penyediaan:

    1. Tampilkan alamat IP yang akan disiapkan di penyedia DNS:
      echo "Load Balancer ip address - $LB_IP"
      
    2. Setelah Anda menetapkan DNS, periksa apakah nama domain ditetapkan ke alamat IP atau tidak dengan menjalankan perintah berikut:
      dig $DOMAIN_NAME
      
    3. 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 akan dapat mengakses aplikasi menggunakan nama DNS.

Mengaktifkan Identity-Aware Proxy

Ikuti dokumentasi Identity-Aware Proxy (IAP) untuk menyiapkan Identity-Aware Proxy. Setelah Anda menyiapkan IAP, aktifkan IAP untuk layanan backend dengan menyelesaikan langkah-langkah berikut:

  1. Buka halaman IAP:
    IAP

  2. Di bagian HTTPS RESOURCES, temukan $LB_PREFIX-backend-service. Untuk mengaktifkan IAP untuk resource ini, klik tombol di kolom IAP. Di jendela Aktifkan IAP yang muncul, pilih kotak centang untuk mengonfirmasi persyaratan konfigurasi resource ini dan klik AKTIFKAN untuk mengonfirmasi bahwa Anda ingin IAP mengamankan resource Anda.

  3. Untuk mengizinkan pengguna mengakses aplikasi Anda, Anda harus memberi mereka peran Pengguna Aplikasi Web yang Dilindungi IAP untuk project dengan menyelesaikan langkah-langkah berikut:

    1. Centang kotak $LB_PREFIX-backend-service.
    2. Di panel Info, pilih TAMBAHKAN PEMILIK, lalu masukkan alamat email grup atau individu yang harus memiliki akses ke aplikasi Anda.
    3. Di menu drop-down Select a role, pilih Cloud IAP > IAP-secured Web App User, lalu klik Save.

Aplikasi on-premise Anda kini akan dipublikasikan ke internet dan dilindungi oleh Chrome Enterprise Premium.

Menyiapkan konektor aplikasi menggunakan konsol Google Cloud

Selesaikan prosedur di bagian ini untuk men-deploy konektor aplikasi Chrome Enterprise Premium menggunakan Konsol Google Cloud.

Masukkan detail permohonan Anda

Tambahkan detail aplikasi Anda dengan menyelesaikan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman IAP.
    Buka IAP

  2. Klik tombol CONNECT NEW APPLICATION, lalu pilih Connect via App Connector.

  3. Untuk Nama aplikasi, masukkan nama aplikasi yang ingin Anda amankan.

  4. Untuk URL aplikasi yang terbuka untuk eksternal, masukkan URL yang dapat diakses secara publik agar pengguna dapat mengakses aplikasi Anda.

  5. Klik Berikutnya.

Menyiapkan koneksi ke Google Cloud

Selesaikan langkah-langkah berikut untuk membuat konektivitas antara Google Cloud dan lingkungan non-Google Cloud Anda.

  1. Klik tombol CREATE APP CONNECTOR, lalu masukkan informasi berikut:

    • Nama konektor aplikasi: Nama untuk konektor.
    • Region: Region tempat gateway dan konektor koneksi akan di-deploy.
  2. Klik tombol CREATE.

  3. Ikuti petunjuk di panel Menyediakan virtual machine untuk men-deploy agen jarak jauh di VM Anda.

  4. Klik tombol UJI STATUS KONEKSI untuk menguji koneksi.

  5. Konfigurasikan konektor yang Anda buat di langkah sebelumnya dengan memasukkan informasi berikut di Di mana Google Cloud dapat menemukan aplikasi Anda?:

    • Nama host internal: Alamat IP lokal atau FQDN yang menghosting aplikasi Anda.
    • Port: Nomor port untuk terhubung ke aplikasi Anda.

Memberikan akses ke aplikasi Anda (opsional)

  1. Di kolom New principals, 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 memberikan akses kepada semua pengguna
    • Semua Akun Google: allAuthenticatedUsers untuk memberikan akses kepada pengguna yang sudah login ke Akun Google
  2. Pilih satu atau beberapa tingkat akses, lalu klik BERIKUTNYA.

Publikasikan aplikasi Anda

  1. Untuk memublikasikan aplikasi, klik tombol PUBLIKASIKAN APLIKASI DENGAN AMAN.

  2. 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 - Perbarui DNS, salin alamat IP dari kolom Alamat IP. Gunakan alamat tersebut untuk membuat data DNS dengan mengikuti petunjuk penyedia DNS Anda tentang cara mengaitkan alamat IP dengan nama DNS.
  3. Setelah membuat data DNS, uji dengan mengklik tombol TEST. Anda akan menerima konfirmasi Pengujian DNS lulus.

  4. Klik SELESAI.

Mengaktifkan IAP

  1. Buka halaman IAP.
    Buka IAP

  2. Dari daftar resource, temukan aplikasi Anda, lalu pilih tombol di kolom IAP.

  3. Pada dialog Aktifkan IAP yang muncul, centang kotak Saya telah membaca persyaratan konfigurasi dan mengonfigurasi Layanan Backend saya sesuai dengan dokumentasi., lalu klik AKTIFKAN.

Aplikasi on-premise Anda kini akan dipublikasikan ke internet dan dilindungi oleh Chrome Enterprise Premium.

Membuat gateway aplikasi (Opsional)

Gateway aplikasi dibuat dan dikelola secara implisit saat Anda menghubungkan aplikasi menggunakan konektor aplikasi. Anda juga dapat membuat gateway aplikasi Anda sendiri untuk mengatur resource koneksi aplikasi ke dalam grup. Traffic untuk koneksi aplikasi yang dihosting di gateway aplikasi yang berbeda dirutekan melalui infrastruktur virtual terpisah.

Untuk membuat dan menentukan gateway aplikasi, selesaikan langkah-langkah berikut.

gcloud CLI

  1. 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: project ID Google Cloud.
    • REGION: region tempat men-deploy gateway aplikasi, seperti us-central1.
    • APP_HOST: alamat IP lokal atau FQDN yang menghosting aplikasi Anda.
    • APP_PORT: nomor port untuk terhubung ke aplikasi Anda.
  2. Buat gateway aplikasi dengan menjalankan perintah berikut:

    gcloud beta beyondcorp app gateways create $GATEWAY_NAME \
    --project=$PROJECT_ID --location=$REGION --display-name=$GATEWAY_NAME
    
  3. Tentukan gateway aplikasi dalam panggilan buat koneksi 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

  1. 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: project ID Google Cloud.
    • REGION: region tempat men-deploy gateway aplikasi, seperti us-central1.
    • APP_HOST: alamat IP lokal atau FQDN yang menghosting aplikasi Anda.
    • APP_PORT: nomor port untuk terhubung ke aplikasi Anda.
  2. 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}' \
    }"
    
  3. Tentukan gateway aplikasi dalam panggilan buat koneksi 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

Pemecahan masalah

Tidak dapat menemukan resource 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 pada resource lama.

Konfigurasi yang menggunakan resource lama akan terus berfungsi untuk saat ini, tetapi tidak akan digunakan lagi pada masa mendatang.

  • 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 yang 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 menampilkan error ERR_SSL_VERSION_OR_CIPHER_MISMATCH atau error TLS/SSL serupa dan tidak mengalihkan ke halaman login.

  • 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 serupa setelah mengalihkan ke halaman login.

  • Pastikan endpoint aplikasi yang digunakan dalam Koneksi adalah HTTPS.
  • Verifikasi bahwa endpoint aplikasi dapat diakses dari VM agen jarak jauh menggunakan curl:

    curl https://$APP_ENDPOINT
    

    Anda mungkin perlu menggunakan flag -k jika sertifikat aplikasi Anda ditandatangani sendiri.

Memverifikasi konfigurasi firewall

Pastikan firewall antara agen jarak jauh 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

  1. 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: project ID Google Cloud.
  2. 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

  1. 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: project ID Google Cloud.
  2. 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 dari output:

    gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections/${CONNECTION_NAME}
    

Proxy

Dukungan untuk proxy diperkenalkan pada awal 2024 dan memerlukan perubahan pada file systemd BeyondCorp. Jika Anda menginstal agen jarak jauh lebih awal dari waktu ini dan ingin menggunakan proxy, instal ulang agen jarak jauh.

  • Pastikan daemon Docker dikonfigurasi dengan benar agar berfungsi dengan proxy.

  • Pastikan variabel lingkungan proxy HTTP dan HTTPS ditetapkan, dan keduanya menggunakan skema http://. Skema https:// dan skema lainnya tidak didukung.

  • Pastikan variabel lingkungan proxy diekspor ke subproses dengan menjalankan perintah env.

  • Hanya HTTP_PROXY, HTTPS_PROXY, NO_PROXY, dan padanan huruf kecilnya yang didukung.

  • Jika Anda perlu memperbarui setelan proxy setelah penginstalan, perbarui variabel lingkungan di /var/beyondcorp/env/PROXY jika menggunakan pengguna beyondcorp default. Jika menggunakan pengguna kustom, perbarui /home/$USER/.docker/config.json sesuai dengan petunjuk untuk mengonfigurasi klien Docker. Untuk menerapkan perubahan proxy, mulai ulang agen jarak jauh 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 agen jarak jauh Anda diinstal, terdaftar, dan responsif dengan benar. Setelah berhasil membuat app connection dan menetapkannya ke agen jarak jauh (konektor), buka VM agen jarak jauh, dan jalankan run-post-install-checks dengan perintah berikut:

sudo /var/beyondcorp/scripts/run-post-install-checks

Skrip akan mencetak pesan berhasil jika semuanya sudah beres.

run-diagnostics

run-diagnostics adalah skrip yang diinstal di /var/beyondcorp/scripts/ yang mendiagnosis masalah umum di VM agen jarak jauh dan mencetak laporan yang dapat Anda bagikan kepada tim dukungan Chrome Enterprise Premium. 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 agen jarak jauh untuk berinteraksi dengan agen jarak jauh secara lokal. CLI ini mendukung berbagai perintah, seperti untuk mendaftarkan agen jarak jauh, memeriksa status, dan menetapkan nilai konfigurasi.

Perintah init

Anda dapat menggunakan perintah Init untuk melakukan inisialisasi agen jarak jauh 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 agen jarak jauh.

  • List: Gunakan perintah ini untuk mencantumkan status keseluruhan agen jarak jauh, serta status koneksi apa pun yang didukung oleh agen ini. Contoh: bce-connctl status list

Perintah konfigurasi

Anda dapat menggunakan perintah Config untuk mengelola nilai konfigurasi bagi agen jarak jauh.

  • List: Gunakan perintah ini untuk mencantumkan nilai konfigurasi agen jarak jauh. Contoh: bce-connctl config list
  • Set: Gunakan perintah ini untuk menetapkan nilai konfigurasi agen jarak jauh. Contoh: bce-connctl config set <key> <value>

Perintah pendaftaran

Anda dapat menggunakan perintah Pendaftaran untuk mengelola pendaftaran agen jarak jauh.

  • Deskripsi: Gunakan perintah ini untuk mendapatkan status pendaftaran agen jarak jauh. Contoh: bce-connctl enrollment describe

    Jika skrip pendaftaran dari bce-connctl init berhasil diselesaikan, dan kunci publik berhasil diupload, statusnya adalah ENROLLED.

Bantuan

Anda dapat menambahkan flag -h atau --help ke perintah bce-connctl untuk mencetak informasi penggunaan.

bce-connctl init -h