Akses yang aman ke aplikasi SaaS

Halaman ini memandu Anda melalui proses mengamankan aplikasi SaaS Anda melalui gateway aman Chrome Enterprise Premium.

Gateway aman Chrome Enterprise Premium berfungsi sebagai proxy penerusan, yang menerapkan framework akses zero trust dan memberikan kontrol kontekstual yang terperinci atas siapa yang mengakses aplikasi SaaS Anda.

Cara kerja pengamanan akses ke aplikasi SaaS

Berikut adalah ringkasan umum tentang cara gateway aman melindungi aplikasi SaaS Anda:

  1. Setelan browser sisi klien merutekan traffic aplikasi melalui proxy gateway yang aman.
  2. Gateway yang aman memeriksa kebijakan akses kontekstual untuk mengizinkan akses klien (pengguna dan perangkat).
  3. Jika akses klien diizinkan, gateway meneruskan traffic ke aplikasi menggunakan alamat IP sumber unik yang ditetapkan ke gateway dan Google Cloud region tersebut. Alamat IP yang ditetapkan ini dicadangkan secara eksklusif untuk gateway yang Anda buat dan tidak dapat digunakan oleh pengguna atau gateway lain. Untuk mengontrol akses, Anda dapat menambahkan alamat IP sumber khusus ini ke daftar yang diizinkan di aplikasi SaaS Anda.

Sebelum memulai

Sebelum menyiapkan gateway aman, pastikan Anda memiliki hal berikut:

Batasan

Gateway aman Chrome Enterprise Premium memiliki batasan berikut: Gateway aman tidak mendukung aplikasi SaaS yang hanya mengizinkan konektivitas IPv6.

Menyiapkan lingkungan shell

Untuk menyederhanakan proses penyiapan dan berinteraksi dengan API gateway aman, tentukan variabel lingkungan berikut di shell kerja Anda.

  • Parameter umum

    API="beyondcorp.googleapis.com"
    API_VERSION=v1
    PROJECT_ID=MY_PROJECT_ID
    APPLICATION_ID=MY_APPLICATION_ID
    APPLICATION_DISPLAY_NAME="MY_APPLICATION_DISPLAY_NAME"
    HOST_NAME=MY_HOST_NAME

    Ganti kode berikut:

    • MY_PROJECT_ID: ID project tempat gateway aman dibuat.
    • MY_APPLICATION_ID: ID aplikasi Anda, seperti github. Nama dapat berisi hingga 63 karakter, dan dapat berisi huruf kecil, angka, dan tanda hubung. Karakter pertama harus berupa huruf, dan karakter terakhir dapat berupa huruf atau angka.
    • MY_APPLICATION_DISPLAY_NAME: Nama yang dapat dibaca manusia untuk ditampilkan.
    • MY_HOST_NAME: Nama host aplikasi Anda. Contoh, github.com. Panjang nama host maksimal 253 karakter, dan harus mengikuti salah satu format berikut:

      • Alamat IPv4 yang valid
      • Alamat IPv6 yang valid
      • Nama DNS yang valid
      • Tanda bintang (*)
      • Tanda bintang (*) diikuti dengan nama DNS yang valid
  • Parameter gateway yang aman

    SECURITY_GATEWAY_ID=MY_SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="MY_SECURITY_GATEWAY_DISPLAY_NAME"

    Ganti kode berikut:

    • MY_SECURITY_GATEWAY_ID: ID gateway aman. ID dapat terdiri dari maksimal 63 karakter, dan dapat berisi huruf kecil, angka, dan tanda hubung. Karakter pertama harus berupa huruf, dan karakter terakhir dapat berupa huruf atau angka.
    • MY_SECURITY_GATEWAY_DISPLAY_NAME: Nama gateway aman yang dapat dibaca manusia. Panjang nama maksimal 63 karakter dan hanya boleh berisi karakter yang dapat dicetak.

Membuat gateway yang aman

Gateway aman Chrome Enterprise Premium adalah elemen penyusun mendasar untuk membuat koneksi yang aman ke aplikasi Anda. Hal ini mengalokasikan project dan jaringan khusus, sehingga memberikan isolasi dan keamanan.

Untuk membuat resource gateway aman, gunakan salah satu metode berikut.

gcloud

Jalankan perintah berikut. Untuk tanda --hubs, tentukan satu atau beberapa wilayah dari daftar berikut.

gcloud beta beyondcorp security-gateways create ${SECURITY_GATEWAY_ID} \
  --project=${PROJECT_ID} \
  --location=global \
  --display-name="MY_SECURITY_GATEWAY_DISPLAY_NAME" \
  --hubs=us-central1
      

REST

Panggil metode Create API dengan detail gateway dalam isi permintaan. Untuk objek hubs, tentukan satu atau beberapa wilayah dari daftar berikut.

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d '{ "display_name": "MY_SECURITY_GATEWAY_DISPLAY_NAME", "hubs": { "us-central1": {} } }' \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways?security_gateway_id=${SECURITY_GATEWAY_ID}"
      

hubs merepresentasikan resource regional yang diperlukan untuk mengaktifkan konektivitas keluar ke aplikasi target. Anda dapat memiliki satu hub untuk setiap region, dan setiap hub menyediakan dua alamat IP. Anda dapat menentukan wilayah berikut:

  • africa-south1
  • asia-east1
  • asia-south1
  • asia-south2
  • asia-southeast1
  • europe-central2
  • europe-north1
  • europe-southwest1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west8
  • europe-west9
  • northamerica-northeast1
  • northamerica-northeast2
  • northamerica-south1
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-east1
  • us-east4
  • us-east5
  • us-west1

Mengonfigurasi aplikasi SaaS

Setelah membuat gateway yang aman, Anda dapat mengonfigurasi aplikasi SaaS untuk menggunakan gateway yang aman untuk akses yang aman.

  1. Dapatkan alamat IP yang dialokasikan oleh gateway aman untuk setiap hub. Dua alamat IP dialokasikan untuk suatu region.

    gcloud

    gcloud beta beyondcorp security-gateways describe ${SECURITY_GATEWAY_ID} \
    --project=${PROJECT_ID} \
    --location=global
        

    REST

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}"
        

    Berikut adalah contoh respons GET dari gateway aman dengan hubs. Dalam contoh ini, hubs dibuat di region us-central1 dan us-east1, dan semua alamat IP yang ditampilkan dalam respons harus diizinkan di aplikasi SaaS.

    gcloud

    createTime: 'CREATE_TIME'
    displayName: My security gateway
    hubs:
      us-central1:
        internetGateway:
          assignedIps:
          - IP_ADDRESS_1
          - IP_ADDRESS_2
      us-east1:
        internetGateway:
          assignedIps:
          - IP_ADDRESS_1
          - IP_ADDRESS_2
    name: projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}
    state: RUNNING
    updateTime: 'UPDATE_TIME'
        

    REST

    {
      "securityGateways": [
        {
          "name": "projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}",
          "createTime": "CREATE_TIME",
          "updateTime": "UPDATE_TIME",
          "displayName": "My security gateway",
          "state": "RUNNING",
          "hubs": {
            "us-central1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            },
            "us-east1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            }
          }
        }
      ]
    }
        
  2. Tambahkan alamat IP ke daftar yang diizinkan IP aplikasi SaaS Anda. Misalnya, untuk aplikasi GitHub, Anda dapat mengikuti panduan ini: Mengelola alamat IP yang diizinkan untuk organisasi Anda.

Membuat resource aplikasi

Informasi berikut akan memandu Anda melalui proses penyiapan dan konfigurasi resource aplikasi gateway yang aman.

Buat resource aplikasi gateway aman di Google Cloud

Resource aplikasi Google Cloud adalah sub-resource dari resource gateway yang aman. Buat resource aplikasi dengan memanggil Create API.

gcloud

gcloud beta beyondcorp security-gateways applications create ${APPLICATION_ID} \
  --project=${PROJECT_ID} \
  --security-gateway=${SECURITY_GATEWAY_ID} \
  --location=global \
  --display-name="${APPLICATION_DISPLAY_NAME}" \
  --endpoint-matchers="hostname=${HOST_NAME},ports=[443]"
      

REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d "{ \"display_name\": \"${APPLICATION_DISPLAY_NAME}\", \"endpoint_matchers\": [{hostname: \"${HOST_NAME}\", ports: [443]}] }" \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications?application_id=${APPLICATION_ID}"
      

Mengonfigurasi mode proxy Google Chrome

Untuk merutekan traffic resource aplikasi melalui gateway yang aman, konfigurasikan Chrome dengan menerapkan file PAC di setelan Chrome di konsol Google Admin.

  1. Buat atau perbarui file PAC.

    • Jika Anda membuat aplikasi pertama, buat file pac_config.js menggunakan contoh file PAC berikut.

    • Jika Anda membuat aplikasi kedua atau berikutnya, perbarui file pac_config.js yang ada dan tambahkan domain aplikasi baru ke array situs, seperti yang ditunjukkan dalam contoh file PAC berikut.

    function FindProxyForURL(url, host) {
     const PROXY = "HTTPS ingress.cloudproxy.app:443";
     const sites = ["MY_HOST_NAME"];
    
     for (const site of sites) {
       if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) {
         return PROXY;
       }
     }
    return 'DIRECT';
    }

    Jika Anda menggunakan file PAC yang sudah ada dan tidak khusus untuk gateway yang aman, gabungkan file PAC dengan menambahkan domain aplikasi Anda ke array situs.

  2. Upload file agar dapat didownload secara publik. Misalnya, Anda dapat mengupload file ke Cloud Storage, dan membuat file dapat didownload secara publik dengan memberikan peran Storage Object User kepada semua pengguna di bucket.

  3. Untuk memverifikasi bahwa file yang diupload selalu merupakan versi terbaru, Anda dapat menyesuaikan perilaku caching-nya dengan menyetel header Cache-Control ke no-cache. Setelan ini mencegah browser dan server perantara menyimpan salinan file, sehingga Chrome selalu mendownload versi terbaru.

    Untuk mengetahui informasi selengkapnya tentang Cache-Control dan pengaruhnya terhadap caching browser, lihat Header Cache-Control.

  4. Salin URL publik file yang diupload.

Memperbarui setelan mode proxy

  1. Buka konsol Google Admin.
  2. Klik Perangkat -> Chrome -> Setelan.
  3. Pilih unit organisasi atau grup, lalu klik Mode proxy.
  4. Di halaman Mode proxy, pilih Selalu gunakan konfigurasi otomatis proxy yang ditetapkan di bawah dan masukkan URL file PAC dari Cloud Storage.

Mengonfigurasi kebijakan akses

Anda dapat menerapkan kebijakan akses untuk mengontrol akses di tingkat gateway aman, yang memengaruhi semua aplikasi terkait, atau di tingkat aplikasi individual untuk kontrol yang lebih terperinci.

Memperbarui kebijakan akses dengan aman

Perintah setIamPolicy akan menggantikan seluruh kebijakan yang ada dengan kebijakan yang Anda berikan. Untuk menghindari penghapusan izin yang ada secara tidak sengaja, sebaiknya Anda mengikuti pola "baca-ubah-tulis". Hal ini memastikan bahwa Anda hanya menambahkan ke kebijakan yang ada, bukan menimpanya.

  1. Baca: Pertama, dapatkan kebijakan akses saat ini.

  2. Ubah: Edit file kebijakan secara lokal untuk menambahkan atau mengubah izin.

  3. Tulis: Terapkan file kebijakan yang telah diperbarui.

Mendapatkan kebijakan saat ini

Ambil kebijakan saat ini sebelum melakukan perubahan.

Kolom etag dalam kebijakan berfungsi sebagai ID versi. Hal ini mencegah konflik pembaruan jika beberapa administrator melakukan perubahan secara bersamaan.

Perintah berikut mengambil kebijakan dan menyimpannya ke file bernama policy.json.

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications/${APPLICATION_ID}:getIamPolicy" > policy.json

Setelah Anda menjalankan perintah, file policy.json yang berisi kebijakan saat ini akan dibuat.

Ubah file kebijakan

Buka file policy.json di editor teks. Untuk memberikan akses grup agar dapat menggunakan gateway aman, tambahkan grup ke daftar members untuk peran roles/beyondcorp.securityGatewayUser.

policy.json Anda akan mirip dengan contoh berikut:

{
  "policy": {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
          "group:existing-group@example.com"
        ]
      }
    ],
    "etag": "BwXN8_d-bOM="
  }
}

Untuk menambahkan grup baru, tambahkan entri baru ke array members. Sertakan koma setelah entri sebelumnya.

Contoh berikut menambahkan new-group@example.com:

{
  "policy": {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
          "group:existing-group@example.com",
          "group:new-group@example.com"
        ]
      }
    ],
    "etag": "BwXN8_d-bOM="
  }
}

Anda juga dapat menambahkan jenis anggota lain, seperti serviceAccount, user, group, principal, dan principalSet, dalam pengikatan kebijakan. Lihat Akun utama IAM untuk mengetahui informasi selengkapnya.

Menerapkan kebijakan yang diperbarui

Setelah mengedit dan menyimpan file policy.json, terapkan ke resource menggunakan perintah setIamPolicy. Perintah ini menggunakan etag dari file Anda untuk memastikan Anda mengupdate versi yang benar.

jq '{policy: .}' policy.json | curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d @- \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications/${APPLICATION_ID}:setIamPolicy"

Menambahkan kebijakan akses bersyarat

Anda juga dapat menetapkan kebijakan akses dengan ketentuan. Kondisi menentukan persyaratan, seperti alamat IP pengguna yang berasal dari lokasi tertentu.

Contoh berikut menunjukkan kebijakan yang memberikan akses hanya jika alamat IP sumber berada dalam tingkat akses tertentu:

{
  "policy": {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
          "group:group@example.com"
        ],
        "condition": {
          "expression": "request.auth.access_levels.contains('accessPolicies/1234567890/accessLevels/in_us')",
          "title": "Source IP must be in US"
        }
      }
    ],
    "etag": "BwXN8_d-bOM="
  }
}

Untuk menerapkan kebijakan ini, ikuti langkah-langkah yang dijelaskan sebelumnya.

Menginstal ekstensi Chrome Enterprise Premium

Ekstensi Chrome Enterprise Premium adalah bagian integral dari gateway yang aman dan membantu melakukan autentikasi. Instal ekstensi untuk semua pengguna gateway aman. Untuk mengetahui informasi tentang cara men-deploy ekstensi, lihat Melihat dan mengonfigurasi aplikasi dan ekstensi.

  1. Buka konsol Google Admin.
  2. Klik Browser Chrome -> Aplikasi & Ekstensi.
  3. Klik tab Pengguna & browser.
  4. Untuk menambahkan ekstensi Chrome, klik tombol +.
  5. Telusuri ekajlcmdfcigmdbphhifahdfjbkciflj, lalu paksa penginstalan ke semua pengguna di unit organisasi atau grup.
  6. Klik ekstensi yang diinstal, lalu buka kolom Kebijakan untuk ekstensi dan berikan nilai JSON berikut:

    {
     "securityGateway": {
       "Value": {
         "authentication": {},
         "context": { "resource": "projects/MY_PROJECT_ID/locations/global/securityGateways/MY_SECURITY_GATEWAY_ID" }
       }
     }
    }

Pengalaman pengguna akhir

Setelah penyiapan selesai, pengguna akhir yang mengakses aplikasi SaaS yang dilindungi akan diberi atau ditolak aksesnya berdasarkan kebijakan akses yang diterapkan ke aplikasi.

Mengakses aplikasi di Chrome

Ekstensi Chrome Enterprise Premium diperlukan untuk mengarahkan traffic melalui gateway yang aman. Ekstensi ini menangani autentikasi antara pengguna dan gateway aman. Ekstensi diinstal secara otomatis melalui kebijakan domain.

Saat pengguna mengakses aplikasi SaaS yang Anda konfigurasi, traffic mereka akan melewati gateway yang aman, yang memeriksa apakah mereka memenuhi kebijakan akses. Jika pengguna lulus pemeriksaan kebijakan akses, mereka akan diberi akses ke aplikasi.

Jika akses browser ke aplikasi ditolak oleh kebijakan otorisasi, pengguna akan menerima pesan Access denied.

Langkah berikutnya